OutSystems Platformでは、デプロイとステージングをどのように行いますか?

OutSystems Platformでは、本稼働環境への複雑なアプリケーションのデプロイがシンプルになっており、特殊なスキルセット(スクリプト作成などの専門技術)を必要としません。複数の環境にわたって自動化されたステージング機能のほか、完全な依存関係の解析機能、、自動ロールバック機能を提供します。また、すべての環境に対するロール、パーミッション、およびセキュリティポリシーを管理することにより、ガバナンスと責務区分の仕組みも提供します。OutSystems Platformのバージョン管理システムを使うことにより、タグ付けとホットフィックス検知が可能になります。  

これに加え、OutSystems Platformは、デプロイ管理のためのAPI(例えば、特定のデプロイにおける変更の一覧が記載されたレポートの作成)や、ユーザ管理のためのAPI(例えば、SOXに準拠したデプロイプロセスの進行中における開発者へのデプロイ権限付与)を提供します。

 

影響分析を伴う自動デプロイ

OutSystems Platformでは、アプリケーションとそのモジュールのスナップショットを取得し、それにバージョン番号をタグ付けして、デプロイ作業時に使用することができます。この処理は通常、アプリケーション開発が安定したとき、あるいはマイルストーンに達したときに行われ、アプリケーションとそのモジュールの状態をいつでも検索できるようにしています。マイナーバージョン、メジャーバージョン、またはカスタムのタグを付けることを促す忠告が自動的に発行されます。

以下の例は、OutSystemsアプリケーションのデプロイパッケージを構成している様子を表しています。

デプロイ要求が出されると影響分析が実行され、ターゲット環境で実行中の他のアプリケーションに影響を与えることなく、そのデプロイが実行できるかが検証されます。影響を与えてしまう場合、OutSystems Platformはコンフリクトや依存関係が解決されるまで、デプロイの実行を中止します。 

その後、OutSystems Platformは、デプロイを要求した担当者にその旨をフィードバックします。これによって、以下のように、提示された問題の解決のためのアクションを十分な情報に基づいて選択することができます。

依存関係が存在せず、影響分析で問題がないと判断された場合、ユーザはアプリケーションのデプロイ(または再デプロイ)の実行を承認することができます。この時点から自動デプロイが開始し、以下の処理に必要なタスクがすべて自動的に実行されます。

  • バージョン管理機能からアプリケーションを回復させる。
  • 実行中のビジネスプロセスに関する影響分析を行う。
  • 最適化されたコードを生成し、コンパイルする。
  • データベースを解析し、差分SQLスクリプトを作成する。
  • コンパイルしたアプリケーションをフロントエンドサーバに配信する。
  • データベースの変更を更新し、新しいバージョンをホットデプロイする。
  • 環境を同期する。 

これらのタスクはすべて、運用チームの手作業を介在することなく、自動的に実行、監視されるため、デリバリは高速化し、デプロイメにおけるリスクが最小化します。

 

サーバーファーム全体にわたるアプリケーションのゼロダウンタイムデプロイ

通常は、ウェブアプリケーションの新バージョンをデプロイするタスクにはリスクがあります。データモデルの変更がフロントエンドサーバで実行中のウェブアプリケーションのロジックと同期していない場合、アプリケーションのユーザはランタイムエラーまたはより悪い状況にさらされる可能性があります。しかし、OutSystems Platformを利用すれば、高負荷環境でもダウンタイムなしでアプリケーションの新バージョンをデプロイすることができます。

データモデルの変更は、デプロイの失敗や、関連して生じるダウンタイムの主な原因の一つです。データモデルの変更に通常関連しているリスクを排除するため、OutSystemsのデプロイプロセスは精緻に調整されており、すべてのフロントエンドノードにおけるアプリケーションロジックの更新とデータモデルの更新の間の時間をなくしています。

この高度なデプロイプロセスはOutSystems Platform Serverにより集中管理されています。アプリケーションの新バージョンをデプロイする間、ウェブアプリケーションロジックの新バージョンはすべてのフロントエンドノードの保護領域にデプロイされ、エンドユーザに対してデータモデルの更新と同時に利用可能になります。

 

ユーザのガバナンスと管理

OutSystems Platformは、開発および運用向けのユーザ管理のため、セキュリティガバナンスの機能をサポートしています。セキュリティルールによって、特定のアプリケーション、サービス、またはAPIに対するアクセスレベルと環境に対する権限を定義されます。一般的には、一人の開発者がコードを本番環境に移行したり、デプロイの計画を用意したりして、運用チームが実際の作業を行うことが多いでしょう。OutSystems Platformの場合、これらの作業は自動化される上、制御を加えることも可能になります。

以下の例で、Brooklynさんは自身のデフォルトのロールで、開発中のアプリケーションのリストを参照することができます。しかし、Vacationsアプリケーションに関しては、BrooklynさんにDeveloper(開発者)ロールを割り当てています。この場合、Brooklynさんは、開発中のVacationsアプリケーションを変更することはできますが、他のことは何もできません。

以下の例では、ユーザが運用チームによるデプロイを計画しています。

 

バージョン管理

OutSystems Platformは、統合的なバージョン管理システムを提供しています。このシステムを利用すると、ユーザは、アプリケーションとそのモジュールのスナップショットを取得し、バージョン番号をタグ付けし、それを複数環境におけるデプロイ作業時に使用することができます。

以下の例は、Campaignsアプリケーションにバージョン番号をタグ付けしている様子を表しています。

以下の例は、タグ付けしたバージョンをデプロイしている様子を表しています。

バージョン管理について、詳しくはこちらの記事をお読みください。(英語)

 

デプロイ管理のためのAPI

OutSystems Platformには、デプロイを管理するためのAPIが含まれています。例えば、次のような機能を持ったAPIです。

  • 特定のデプロイにおける変更点の一覧が記載されたレポートを作成する。
  • SOXに準拠したデプロイプロセスの進行中に、開発者にデプロイ権限を付与する。

これらのAPIを使うことで、OutSystems Platformが提供するデプロイ機能をオペレーションにおいてプログラム的に使用することができ、そのため特定の要件に合わせて拡張することもできます。