Skip to content

Latest commit

 

History

History
104 lines (73 loc) · 9.28 KB

File metadata and controls

104 lines (73 loc) · 9.28 KB

Template for Closed Network System Workloads on AWS

View this page in English

閉域網を前提環境とし、その環境からアクセス可能な Web アプリケーションとバッチシステムを AWS 上に展開するためのテンプレートとなります。 CDK で構築されるインフラ とサンプルアプリのソースコードで構成されています。

地方自治体のようなシステムがデプロイされている環境の特性である、「閉域網」や「AWS からオンプレへの NW アクセス経路の確保」を考慮した上で、 AWS のマイグレーション戦略である 6R の一つ、REPLATFORM を採用し、既存のオンプレ環境から、コンテナを利用したコンピューティングやマネージドな DB への移行を目指します。 (ご参考:AWS への移行:ベストプラクティスと戦略 ) REPLATFORM では、サーバの運用負荷の軽減などがメリットになります。本テンプレートでも、AWS のマネージドサービスを活用した形で運用コストの軽減を目指しました。

また、Container の代わりに、AWS Lambda を利用して API を構築し、React アプリケーションを利用した、サーバーレスアプリケーション版を追加しました。 デプロイ方法については、こちらを参照ください。

テンプレートのスコープ

テンプレートで提供されるもの

  • Java アプリケーション(Spring boot)を Amazon ECS/Fargate 上で稼働させるためのコンテナ実行環境(*)
    • これに加え、上記環境下で動作する Spring boot を利用したサンプルアプリケーション
    • そのサンプルアプリケーションをコンテナイメージにするためのサンプル Dockerfile
  • 閉域網で SPA + REST API を動かすための、Amazon S3、Amazon API Gateway、AWS Lambda を利用したサーバーレスな実行環境(*)
    • React のサンプルアプリケーション
    • React サンプルアプリケーションから呼び出される REST API のサンプルコード
  • アプリケーションを継続開発するための CI/CD 環境
    • AWS CodePipeline や AWS CodeCommit, AWS CodeBuild を利用した、上記サンプルアプリケーションをビルド、デプロイするためのパイプライン
  • 簡易なジョブフローが実行できる、AWS Step Functions、Amazon ECS/Fargate を組み合わせたジョブ実行基盤
    • これに加え、上記環境下で動作する、Python のサンプルジョブスクリプト
    • サンプルジョブスクリプトをコンテナイメージにするためのサンプル Dockerfile
      • サンプルジョブスクリプトについては、batch/README.mdをご参照ください
  • アプリケーションの動作確認や RDB を管理するためのメンテナンス環境
    • SystemsManager と EC2 を組み合わせたアプリケーションのテストや DB の管理を実施できる環境
    • リモートデスクトップ接続(Windows Server Instance)と コンソール接続(Amazon Linux Instance)を提供

* コンテナ実行環境とサーバーレスな実行環境は、どちらか選んでデプロイしていただく手順をそれぞれの README に記載しています。

テンプレートで提供されないもの

  • AWS Direct Connect(DX)や AWS Site-to-Site VPN(VPN) といったオンプレとの接続に関わる AWS 側の設定や実装
    • 本番利用において必要になると思われる DX や VPN の設計・導入については、別途実施ください
  • アプリケーションの認証機能
    • 本アプリケーションはサンプルのため、ログイン・ログアウトなどの認証機能を持ちません
  • アプリケーションの運用機能
    • アプリケーションや AWS リソースのログの統合的な管理やアプリケーションに対するアラートや監視の機能は持ちません

ディレクトリ構成

ディレクトリ構成とその概要です。

ディレクトリ サブディレクトリ 概要
batch batch コンテナを作成するためのソースファイルと Dockerfile
src python のスクリプト
infra AWS リソースをプロビジョニングするための CDK のソースコード
- ネットワーク(VPC やサブネット)
- DB(Aurora)
- コンテナ向けコンピューティングリソース(Amazon ECS、Fargate)
- CI/CD ツール(CodePipeline、CodeCommit、CodeDeploy)
- バッチジョブ管理(Step Functions、DynamoDB、SNS)
が生成される。
bin CDK を実行するためのソースコード。 CDK で定義されるところの app に該当
lib/constructs AWS リソースを生成するための Stack, Construct が定義されたソースコード
Stack と Construct の違いはドキュメントをご参照ください
webapp-java Spring boot 製のウェブアプリのサンプルソースと Dockerfile

前提条件

  • Node.js >= 16.13.0
  • npm >= 9.2.0
  • aws-cdk >= 2.65.0
  • aws-cdk-lib >= 2.65.0
  • OpenSSL >= 3.0.8
  • Docker

アーキテクチャ

NW 構成の前提

オンプレミス NW と AWS とは、Direct Connect または、VPN で接続されることを前提としています。

接続方式概要図

テンプレートのアーキテクチャ図

本テンプレートでは、AWS Direct Connect(DX) や AWS Site-to-Site VPN(VPN) で接続されるアプリケーション NW 内の AWS リソースが構築されます。

アーキテクチャ図

Private Link を利用する場合

また、前述の構成において、既存 NW との CIDR 重複を回避するために、Private Link の利用を検討するケースもあるかと思います。その場合には、以下の図に示すように、オプションとして Private Link を経由した接続の構築が可能になっています。 Private Link を利用する場合には、“共有型”AWS DirectConnect でも使える AWS Transit Gatewayを参照いただき、最適な NW 設計をご検討ください。

Private Link Version

テンプレートのデプロイ方法

infra/README.mdを参照ください。 サーバーレスアプリケーション版を利用したい方は、infra/README_serverless_ja.mdを参照ください。

Security

See CONTRIBUTING for more information.

License

This library is licensed under the MIT-0 License. See the LICENSE file.