デプロイとステージング

目次

  1. 影響分析を含む自動デプロイ
  2. サーバーファーム全体でのアプリケーションのゼロダウンタイムデプロイ
  3. ユーザーのガバナンスと管理
  4. バージョン管理
  5. デプロイ管理のためのAPI

OutSystemsを使用すると、複雑なアプリの本番環境へのデプロイが簡単になり、特別なスキル(スクリプトやMavenの熟達)も要らなくなります。環境間の自動的なステージングを、ダウンタイムなく、完全な依存関係分析と自動ロールバック機能とともに提供します。また、すべての環境向けにロール、権限、セキュリティポリシーを管理することで、作業のガバナンスと分離を実現します。OutSystemsのバージョン管理システムにより、タグ付けやホットフィックスの検出を行うことができます。

さらにOutSystemsは、SOX準拠のデプロイプロセスの間、開発者にデプロイ権限を与えるなど、デプロイの管理やユーザーのガバナンスを行うAPIを提供しています

影響分析を含む自動デプロイ


OutSystemsを使用すると、アプリケーションとそのモジュールのスナップショットをとり、それをバージョンとしてタグ付けしてデプロイに使用することができます。これは通常、アプリケーション開発が安定しているときやマイルストーンに到達したときに行われます。こうすることで、そのアプリケーションとモジュールの状態をいつでも回復させることができるようになります。マイナーバージョン、メジャーバージョン、カスタムタグなどへのタグ付けが自動的に提案されます。

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

デプロイのリクエストを受けると、影響分析が実行され、ターゲット環境で稼働中の他のアプリに影響を与えることなくデプロイを実行できるかどうかを検証します。実行できない場合、OutSystemsは、矛盾や依存関係が解消されるまで、デプロイを行わないようにします。

またOutSystemsは、問題の解消に向けてとるべきアクションについて、十分な情報に基づいて判断できるように、デプロイをリクエストしたユーザーにフィードバックを提供します。

依存関係が存在せず、影響分析が有効である場合、ユーザーはアプリケーションのデプロイまたは再デプロイについて確認します。この時点以降は自動デプロイが開始され、以下の処理を行うのに必要となるすべてのタスクを自動的に実行します。

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

これらのタスクはすべて、運用チームの手作業を必要とせずに自動的に実行・監視されます。これにより、デリバリーが高速化し、デプロイ時のリスクを最小化できます。

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


通常、Webアプリケーションの新しいバージョンをデプロイするにはリスクを伴います。データモデルの変更がフロントエンドサーバーで実行中のWebアプリケーションロジックと同期していない場合、ランタイムエラーまたはより深刻な問題が発生することがあります。OutSystemsでは、高負荷環境でも、ダウンタイムなしでアプリケーションの新しいバージョンをデプロイできます。

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

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

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


OutSystemsは、ユーザー(開発および運用)管理のためのセキュリティ ガバナンスをサポートしており、セキュリティルールによって特定のアプリやサービス、APIへのアクセスレベルおよび環境に対する権限を定義します。DevOpsの代表的な例として、開発者がコードを本番環境に移行したり、デプロイ計画を立てたりし、運用チームでその後の作業を行うというものです。OutSystemsではすべてが自動化されていますが、管理対象になっています。

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

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

バージョン管理


OutSystemsには、バージョン管理システムが組み込まれており、これによりユーザーは、アプリとそのモジュールのスナップショットをとり、バージョンをタグ付けし、複数環境間でデプロイする際に使用することができます。

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

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

バージョン管理の詳細については、こちらの記事をご覧ください。

デプロイ管理のためのAPI


OutSystemsは、APIを使用してOutSystemsアプリケーションのデプロイを既存のDevOpsツールやプロセスに統合します。

これらのAPIは、特定の要件を満たすために、OutSystemsのデプロイ機能の拡張をサポートしています。たとえば、次のような機能を提供します。

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