コンテナというかDockerの勉強をしようと思って例のごとく2~3年してないままです。
ちょこちょこDockerの概念とかコマンドは勉強しているものの、 dockerfileを書いたり、開発っぽいことをしたりはできていないです。
今回は、このあとDockerというかコンテナを勉強するにあたって、 何をしようかというのがわかった気がする動画と記事(ワークショップ)があったので紹介しておきます。
- 動画:難しい事抜きでまずはアプリケーションをコンテナ化してみよう ! #AWSDevLiveShow - YouTube
- 記事(ワークショップ):コンテナ化のためのリアーキテクチャ(Re-Architecture for Containers)
動画
動画の簡単な概要としては、
コンテナ化を進める順序としては、
- 既存アプリケーションの調査
- 動いているアプリケーションの実行環境、どんなプロセスが動いているかを調査する
- データベース、ログの出力先など何に繋がっているかを調査する
- 使われているミドルウェアを調査する
- コンテナにするためのリファクタリング
- 無理にはおこなわない、まずは動く状態にする
- ただし、コンテナにする上での注意箇所は変更する(コンテナが停止するとコンテナ内で持っていたファイルは消えてしまう)
- The Twelve-Factor Appをもとに考えていくとうまくいく
- コンテナイメージの作成
- ミドルウェアの公式イメージを探し、Dockerfileをつくる
記事(ワークショップ)
コンテナ化のためのリアーキテクチャ(Re-Architecture for Containers)
書いてある手順通り実施していけば、苦労することなく体験することができました。 簡単な流れとしては、
- 開発環境(Cloud9)の作成
- レガシーアプリケーション(コンテナ化する対象のアプリ)の構築・デプロイ
- コンテナ化の段階的な実施
となっていました。
面白かったのは、レガシーアプリケーションのデプロイにおいて設定ファイルをちまちま変更し、ビルドのコマンドをたたき、Tomcatのディレクトリに置くということを実施したことです。
スクリプトにしたとしても面倒ですし、開発者に開発環境を用意してもらうのもかなり面倒だと体感できました。
コンテナ化の指針としては、上の動画と同じくThe Twelve-Factor Appを使っていました。
実際の開発でもこれを参考にコンテナ化したあとの理想像、どこからリアーキテクチャしていくのかを決めていくのかな、と考えました。
The Twelve-Factor App を参考にアプリケーションをリファクタリングしてコンテナ化したり、そのアプリケーションを Amazon Elastic Container Service (Amazon ECS) の環境にデプロイしたりする体験を通して、コンテナ化に必要な知識や作業を一通り学ぶことができます。
ちょっと詰まったところ
RDS、キャッシュクラスタの作成に少し時間がかかる
10分強かかりました。
Cloud9のディスクサイズの追加
コマンドを叩くと以下のようにメッセージが表示されますが、すぐに使うことができました。
手順にも説明があるので困ることは少ないと思います。
なお、以下の手順により Cloud9 で使用している EC2 マシンが再起動されるため、1、2分ほど IDE に接続できなくなります。ワークショップの進行に支障はありません。
Cloud9のプレビュー機能でのアプリへのアクセス
レガシーアプリケーションをローカルマシンでの動かしてみる場面があります。
Cloud9のプレビュー機能を使っていて、コマンドを実行するとターミナルにパーセンテージが表示されます。 100%になったらアクセスできると思って待ちましたが一向に77%から変わらず、アクセスしてみたところ画面が表示されました(ターミナルの表示が以下のような状態)。
このパーセンテージが100%にはならないのだと思います。
レガシーアプリケーションの本番環境構築でのSSHログイン
レガシーアプリケーションの本番環境を構築し、SSHでログインする操作があります。
そのさいに、以下のスクショのようにターミナルにAre you sure you want to continue connecting (yes/no)?
と聞かれることがあります。ここにはきちんとyes
と回答しましょう。適当にエンターキーを押してもアクセスできません。
アクセスできるとAmazon Linuxにログインしたときのメッセージが表示されます。
CDKは何をしているのか?
CDKを使った経験がなく、操作手順に促されるままコマンドを叩いていました。
簡単に調べてみたところ、
cdk bootstrap
:「CDK が使⽤する IAM ロール、S3 バケット、ECR リポジトリなどを作成」するためのコマンド。アカウント、リージョンで1回だけ実施すればよい。- ワークショップでは
CDKToolkit
というスタックできました。このスタックにはS3、IAMロール。ポリシーなどが含まれていました。
- ワークショップでは
cdk deploy
:アプリのデプロイ(CloudFormationテンプレートの合成、CloudFormationスタックの作成)をおこなうためのコマンド。- ワークショップでは
DocrdrAppStack
というスタックできました。
- ワークショップでは
引用元:AWS Cloud Development Kit (CDK) Basic#1 | AWS Black Belt Online Seminar
AWS Copilot CLIはAIとは関係ない
ワークショップにおいてコンテナのデプロイにはAWS Copilot CLIを利用しました。 Copilotと見て勝手にGitHub Copilotのことを連想していましたが、当然のごとく全くの無関係です。
AWS Copilot CLI は、 AWS 上でプロダクションレディなコンテナのデプロイや運用を実現するためのコマンドラインツールです。シンプルな操作でコンテナを AWS Fargate へデプロイできます。
おわりに
今回のブログは他の人のためになるような情報は非常に薄いです。 コンテナ、CDKをどういった方向で勉強するか、勉強したあとに活かすのかをイメージできたので、そのことの覚書という感じです。
ひとまず、The Twelve-Factor Appは読んでおきます。