[OutSystems]Professional Platform Ops Engineerのサンプル問題について解説 1/2(#1-#5)

各問題を確認し、解説をまとめます。

全部で10問で、この記事では1問目-5問目が対象。

試験問題は、
https://www.outsystems.com/learn/certifications/
の、「Professional Platform Ops Engineer (OutSystems 11)」項目のリンク「Exam Details (.pdf)」でダウンロードできる資料から。解凍したら、Japaneseフォルダにあるファイルを開いてください。

#1 サーバーロール
OutSystemsをインストールするときに、各サーバーにインストールする単位がサーバーロールです。
- フロントエンド：これがメインとなるロール。アプリケーションの実行はこのロールの担当
- デプロイメントコントローラ：OutSystemsのモジュールを実行ファイルにコンパイルする機能とライセンスチェックするのが担当。各環境（開発/QA/本番など）に１台だけ配置する
- スケジューラ：TimerやBPT Process、メール送信を担当する

というわけで、「ユーザーインタラクションなしでバックグラウンドで実行されるアクション」はTimerかBPT Processですから、選択肢C「スケジューラ」が正解です。

RabbitMQはOutSystemsとは別のオープンソースソフトウェアですが、OutSystemsでは、キャッシュ無効化の仕組みで使われています。
[Platform Serverインストールページ](https://www.outsystems.com/Downloads/ScreenDetails.aspx?MajorVersion=11&ReleaseId=19644&ComponentName=Platform+Server)のInstallation Checklistにも記述がありますが、OutSystemsインストール時に同時にセットアップします。

#2 LifeTime
OutSystemsの管理用コンソールは２つあります。
- Service Center: 各環境（開発/QA/本番など）の管理・運用で使用する。開発者が主に使うのはこちら
- LifeTime: 全環境に１つ。ITユーザー管理・リリース・分析などで使用する

選択肢内の管理対象を個別に見ていくと、

1. 環境のセキュリティ：LifeTimeで管理。Service CenterにもAdministrationタブの下にSecurityというページがありますが、アクセスすると「Environment Security is now managed in LifeTime.」と表示されます
2. アプリケーション：LifeTimeにもService Centerにもアプリケーションのページはあります。LifeTimeでは、ゾーンやセキュリティの設定とリリース、Service Centerでは各環境内にあるアプリケーションの設定変更やPublishなどができます
3. キャッシュ無効化：OutSystemsのキャッシュは各フロントエンドのメモリに格納されます。設定された一定時間が経過するか、キャッシュを無効化するActionを実行すると無効になります。キャッシュを無効化するのは専用のサービスです
4. 非同期プロセス：ワークフロー等をOutSystemsで実現するBPT Processのことですね。Service Studioで作成し、Service Centerで管理を行います
5. ITユーザーの管理：ITユーザーというのは開発者や運用者のアカウント。LifeTimeで行います
6. OutSystems環境：LifeTimeで管理
7. 外部システムとの連携：これは基本的には、開発ツール（Service StudioかIntegration Studio）で開発するものです。Service Centerでは、対象環境にPublishされている外部連携について、データベース接続やREST/SOAP APIのアクセス先URLの管理を行うことができます

よって選択肢Cが、OutSystems環境：6、アプリケーション：2、ITユーザー：5、セキュリティ：1のとおりLifeTimeで管理するものなので正解。

#3 コンパイル
まず、OutSystemsにおいて、コンパイルを担当するサーバーロールはデプロイメントコントローラです。
また、デプロイメントコントローラは各環境に１台しかセットアップできないため、性能を上げるにはスケールアップしかありません。
よって正解はB。

[OutSystemsプラットフォームのサーバーの拡張性と高可用性](https://success.outsystems.com/ja-jp/Support/Enterprise_Customers/Maintenance_and_Operations/Designing_OutSystems_Infrastructures/03_Scaling_and_high_availability_for_OutSystems_Platform_servers#.E3.83.87.E3.83.97.E3.83.AD.E3.82.A4.E3.83.A1.E3.83.B3.E3.83.88.E3.82.B3.E3.83.B3.E3.83.88.E3.83.AD.E3.83.BC.E3.83.A9)に記述があります。
> このサービスは、クラスタ機能がないため垂直方向にのみ拡張できます。CPUコア、メモリを増設し、ディスクI/Oを増やすことで、大規模なチームや非常にアクティブなチームはコンパイル時間を短縮できます。

#4 データベースのパフォーマンス改善策（インフラレベルでの）
問題は、インフラのデータベースが低速になった場合なので、明らかにアプリケーションレベルの対応である選択肢CとDは異なりますね。

選択肢B定期的なバックアップは、リストア速度は向上させそうですが、実行速度にはあまり関係ないのでは。
選択肢Aは「すべてのデータベースでメンテナンス機能を実行する。」ですが、[パフォーマンスのベストプラクティス - インフラ](https://success.outsystems.com/ja-jp/Documentation/Best_Practices/Performance_and_Monitoring/Performance_Best_Practices_-_Infrastructure#.E3.83.87.E3.83.BC.E3.82.BF.E3.83.99.E3.83.BC.E3.82.B9.E3.81.AE.E4.BF.9D.E5.AE.88.E8.A8.88.E7.94.BB.E3.82.92.E7.AB.8B.E3.81.A6.E3.82.8B)の「データベースの保守計画を立てる」という項目に合致しているのでこれが正解ですね。
英語のpdfの選択肢では「Implement maintenance plans for all databases.」なのでSQL Serverの機能の事を指していそうですが。

#5 モバイルアプリケーションのパフォーマンス
モバイルアプリケーションからネットワーク経由で取得している静的リソースが多いために、パフォーマンスの問題がおきているケースで対応策を聞く問題。
静的リソースなので処理速度の問題ではなく、選択肢Bは選べない。ロードバランサはサーバーの処理性能がボトルネックであれば対象ですが、この場合はネットワークなので対象外。

AもDも効果がありそうですが……。
モバイルアプリケーションの場合、通常は、端末の回線→インターネット→OutSystemsのサーバー側の回線と通るはず。
Aはもしかしたら、端末の回線を高速なものに変えたり、サーバー側の回線がボトルネックであればこれを強化することで対策になりそうです。
DはCDNにすると、端末からネットワーク的に近い位置にファイルのキャッシュをおいてそこからダウンロードすることで、通信経路を短くできるので、こちらのほうが効果が高そうです。
比較してD。