はじめに
この記事では、新人のAさんとベテランのBさんが協力してAmazon ECSのEC2起動タイプを使用し、Amazon Linux 2ベースのコンテナイメージからAmazon Linux 2023ベースのコンテナイメージへのブルーグリーンデプロイメントを実現する過程を紹介します。ブルーグリーンデプロイメントは、システムの停止時間を最小限に抑えながら新しいバージョンのリリースを行うための手法であり、今回のプロジェクトではAmazon Linux 2023への移行を目指します。
用語解説
Amazon ECS (Elastic Container Service)
Amazon ECSは、Dockerコンテナを管理するためのフルマネージドサービスです。EC2起動タイプとFargate起動タイプの2種類があり、今回はEC2起動タイプを使用します。例えば、EC2起動タイプでは、ユーザーがEC2インスタンスの管理を行い、コンテナをその上で実行します。
EC2 (Elastic Compute Cloud)
Amazon EC2は、クラウド上でスケーラブルなコンピューティング容量を提供するサービスです。ユーザーは必要なコンピューティングリソースを簡単に起動、管理できます。例えば、ウェブサーバーやデータベースサーバーを起動し、スケールアップやスケールダウンを簡単に行うことができます。
AmazonLinux2
Amazon Linux 2は、AWSが提供するLinuxディストリビューションの一つで、セキュリティと安定性に優れています。これは、長期的なサポートと高いパフォーマンスを提供します。
AmazonLinux2023
Amazon Linux 2023は、最新のセキュリティアップデートや機能を備えたAmazonの新しいLinuxディストリビューションです。例えば、新しいカーネルバージョンやセキュリティ機能が含まれています。
ブルーグリーンデプロイメント
ブルーグリーンデプロイメントは、アプリケーションの新しいバージョンをリリースする際に、2つの環境(ブルーとグリーン)を使用して、ダウンタイムを最小限に抑える手法です。新しいバージョンをグリーン環境にデプロイし、動作確認後にトラフィックをブルー環境からグリーン環境に切り替えます。これにより、問題が発生した場合に迅速に元の環境に戻すことができます。
このプロジェクトでは、これらの技術や手法を駆使して、AmazonLinux2からAmazonLinux2023への移行を安全かつ効率的に行います。それでは、AさんとBさんの挑戦を見ていきましょう。
プロジェクトの概要
このプロジェクトの目的は、既存のAmazon Linux 2ベースのECSサービスをAmazon Linux 2023にアップグレードし、ブルーグリーンデプロイメントを通じて安全かつ効率的に移行することです。新人のAさんは初めてのECSプロジェクトに挑戦し、ベテランのBさんがそのサポートを行います。
プロジェクトの背景
Amazon Linux 2のサポートは2025年で終了する予定です。このため、システムの安定性とセキュリティを確保するために、Amazon Linux 2023への移行が必要です。新しいバージョンには最新のセキュリティアップデートや機能強化が含まれており、これを利用することで、システムのパフォーマンスと安全性を向上させることができます。
Aさん「Bさん、Amazon Linux 2のサポートが2025年で終了するため、早めにAmazon Linux 2023に移行する必要があると聞きました。今回のプロジェクトでその準備を進めることが重要なんですね。」
Bさん「その通りです。移行プロジェクトを通じて、システムの安定性を保ちながら最新のセキュリティ対策を講じることができます。では、具体的なステップに進みましょう。」
ECSクラスターの確認と準備
Aさんのチャレンジ
Aさん「Bさん、既存のAmazon Linux 2ベースのECSサービスがあります。これをAmazon Linux 2023にアップグレードするにはどうすればいいですか?」
Bさん「まず、既存のECSクラスターと『タスク定義』を確認しましょう。現在の設定を把握することが大事です。」
AさんはAWSコンソールにログインし、ECSサービスに移動して既存の『クラスター』と『タスク定義』を確認しました。
新しいタスク定義の作成
Aさんの学び
Aさん「既存の『タスク定義』を基に、新しいAmazon Linux 2023ベースの『タスク定義』を作成します。」
新しいタスク定義の作成は、システムの安定性とセキュリティを向上させるために重要です。Amazon Linux 2023は最新の機能とセキュリティアップデートを提供しますので、これを利用することでコンテナの動作がより安全かつ効率的になります。
{
"family": "my-task-family",
"containerDefinitions": [
{
"name": "my-container",
"image": "amazonlinux:2023",
"memory": 512,
"cpu": 256,
"essential": true,
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-group": "my-log-group",
"awslogs-region": "ap-northeast-1",
"awslogs-stream-prefix": "my-app"
}
}
}
]
}
Bさん「いいですね。ログ設定もそのまま引き継ぎましたね。」
Aさん「完了しました!これで新しいタスク定義ができました。」
新しいサービスとターゲットグループの作成
共同作業
Aさん「次は新しいサービスを作成します。新しい『タスク定義』を使用して、ターゲットグループを指定します。」
Bさん「ターゲットグループの設定も忘れずに。ALBに新しいターゲットグループを追加しましょう。」
手順
-
新しいサービスの作成
- AWSコンソールでECSサービスに移動し、クラスターを選択します。
- 「サービスの作成」をクリックし、新しい『タスク定義』を選択します。
- サービス名、起動タイプ(EC2)、タスクの数を設定します。
- ロードバランシングオプションで、「Application Load Balancer (ALB)」を選択します。
- 新しいターゲットグループを指定し、必要な設定を完了します。
-
ターゲットグループの作成
- EC2コンソールで「ターゲットグループ」を選択し、「ターゲットグループの作成」をクリックします。
- 新しいターゲットグループの名前とVPCを指定し、設定を完了します。
-
ALBの設定
- EC2コンソールで「ロードバランサー」を選択し、既存のALBに移動します。
- 新しいターゲットグループをALBに追加し、リスナー設定でルールを設定します(例:新しいタスクへのトラフィックのルーティング)。
新しいサービスとターゲットグループの作成は、トラフィックのスムーズな移行とシステムの可用性を確保するために重要です。これにより、新しいAmazon Linux 2023ベースのタスクが安全に動作することを確認できます。
Aさん「了解です。サービス設定とALB設定が完了しました。」
ブルーグリーンデプロイメントの設定
Bさんの実践知識
次に、BさんがCodeDeployを使ってブルーグリーンデプロイメントを設定します。
Bさん「CodeDeployでブルーグリーンデプロイメントを設定します。新しい『アプリケーション』を作成し、『デプロイグル
ープ』を設定しましょう。」
手順
-
アプリケーションの作成
- AWSコンソールでCodeDeployに移動し、「アプリケーションの作成」をクリックします。
- アプリケーション名を入力し、コンピューティングプラットフォームを「ECS」に設定します。
-
デプロイグループの作成
- 作成したアプリケーションを選択し、「デプロイグループの作成」をクリックします。
- デプロイグループ名を入力し、サービスの詳細を設定します。
- ECSクラスターとサービス名を指定します。
-
デプロイ設定の選択
- 「デプロイ設定」で『ブルー/グリーン(ターゲットグループスイッチング)』を選択します。
- トラフィックの切り替え方法や停止時間などの詳細設定を行います。
Aさん「デプロイ設定で『ブルー/グリーン(ターゲットグループスイッチング)』を選びました。」
-
ロードバランサーの設定
- ターゲットグループの設定で、トラフィックのルーティングを設定します。
- 既存のターゲットグループと新しいターゲットグループを指定します。
-
デプロイメント設定の完了
- 設定内容を確認し、「デプロイグループの作成」をクリックして設定を完了します。
Bさん「いいですね。設定が完了したら、デプロイを実行しましょう。」
ブルーグリーンデプロイメントの設定は、システムのダウンタイムを最小限に抑え、安全に新しいバージョンをリリースするために重要です。これにより、ユーザーに影響を与えずに新しい環境に移行できます。
デプロイの実行と確認
デプロイの成功
AさんとBさんが共同でデプロイを実行し、トラフィックを新しいタスクに段階的に切り替えます。
手順
-
デプロイの開始
- AWSコンソールでCodeDeployに移動し、新しい『デプロイ』を開始します。
- 対象の『アプリケーション』と『デプロイグループ』を選択し、デプロイを実行します。
-
デプロイの監視
- デプロイの進行状況をCodeDeployコンソールで監視します。
- デプロイのステータスが「In Progress」になったことを確認します。
Aさん「デプロイを開始しました。トラフィックが新しいタスクに段階的に切り替わるのを確認します。」
- トラブルシューティング
- デプロイ中に問題が発生した場合、CodeDeployのログを確認し、エラーの原因を特定します。
- 必要に応じて、ECSコンソールやCloudWatchログを確認して、詳細なデバッグ情報を取得します。
Bさん「デプロイ中に何か問題が発生した場合は、トラブルシューティングを行いましょう。」
- デプロイの確認
- デプロイが完了し、ステータスが「Succeeded」になったことを確認します。
- ALBのターゲットグループを確認し、新しいタスクが正常に登録されているかを確認します。
デプロイの実行と確認は、システムの移行が問題なく行われているか確認し、必要に応じて迅速に対応するために重要です。
Aさん「トラフィックが正常に新しいタスクに切り替わりました!成功です。」
Bさん「良かったです。これで新しい環境への移行が完了しましたね。」
古いリソースのクリーンアップ
Aさんの成長
デプロイが成功した後、Aさんが古いAmazon Linux 2ベースの『サービス』と『リソース』を削除します。
Aさん「古いサービスとリソースを削除します。これでプロジェクトが完了です!」
Bさん「よくやりましたね。プロジェクトを通じて多くのことを学びましたね。」
手順
-
古いサービスの削除
- AWSコンソールにログインし、ECSサービスに移動します。
- 既存のAmazon Linux 2ベースの『サービス』を選択し、「削除」をクリックします。
- 削除の確認ダイアログが表示されるので、確認して削除を実行します。
-
古いタスク定義の削除
- ECSサービス内で『タスク定義』を選択します。
- 古いAmazon Linux 2ベースのタスク定義を選び、「アクション」メニューから「削除」を選択します。
-
ターゲットグループのクリーンアップ
- EC2ダッシュボードに移動し、左メニューから「ターゲットグループ」を選択します。
- 古いターゲットグループを選び、「削除」をクリックします。
-
不要なEC2インスタンスの停止と削除
- EC2ダッシュボードで、古いAmazon Linux 2ベースのEC2インスタンスを選択します。
- 「インスタンスの状態」から「停止」を選び、続いて「削除」を行います。
古いリソースのクリーンアップは、不要なリソースを整理し、システムの効率とセキュリティを維持するために重要です。この作業を通じて、Aさんはプロジェクト全体の管理能力を向上させることができました。
まとめ
Amazon Linux 2からAmazon Linux 2023への移行が成功したことを振り返り、AさんとBさんが今回のプロジェクトから学んだことを共有します。
Aさんの学び
Aさん「今回のプロジェクトで、ブルーグリーンデプロイメントの重要性とその実践方法を学びました。特に、システムのダウンタイムを最小限に抑えながら新しいバージョンをリリースする手法は、今後のプロジェクトでも役立つと思います。」
Bさんの教え
Bさん「ECSのEC2起動タイプに関する理解が深まりました。また、Amazon Linux 2からAmazon Linux 2023への移行における具体的な手順を再確認する良い機会となりました。次のプロジェクトに向けて、新たな挑戦が楽しみですね。」
学びの振り返り
-
ブルーグリーンデプロイメントの手法
- 新しい環境への移行を安全かつ効率的に行う方法。
- システムのダウンタイムを最小限に抑える重要性。
-
ECSとEC2の理解
- ECSの基本的な設定と管理方法。
- EC2インスタンスを利用したECSの運用。
-
Amazon Linux 2023への移行
- 最新のセキュリティアップデートや機能を利用する利点。
- 古いリソースのクリーンアップ手順とその重要性。
読者の皆さんも、ぜひこの手順を参考にして、効果的なデプロイメントを実現してください。このプロジェクトの成功は、皆さんの環境でも同様に達成可能です。成功を祈っています。
【番外編】USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話
プログラミング塾に半年通えば、一人前になれると思っているあなた。それ、勘違いですよ。「なぜ間違いなの?」「正しい勉強法とは何なの?」ITを学び始める全ての人に知って欲しい。そう思って書きました。是非読んでみてください。
「フリーランスエンジニア」
近年やっと世間に浸透した言葉だ。ひと昔まえ、終身雇用は当たり前で、大企業に就職することは一種のステータスだった。しかし、そんな時代も終わり「優秀な人材は転職する」ことが当たり前の時代となる。フリーランスエンジニアに高価値が付く現在、ネットを見ると「未経験でも年収400万以上」などと書いてある。これに釣られて、多くの人がフリーランスになろうとITの世界に入ってきている。私もその中の1人だ。数年前、USBも知らない状態からITの世界に没入し、そこから約2年間、毎日勉学を行なった。他人の何十倍も努力した。そして、企業研修やIT塾で数多くの受講生の指導経験も得た。そこで私は、伸びるエンジニアとそうでないエンジニアをたくさん見てきた。そして、稼げるエンジニア、稼げないエンジニアを見てきた。
「成功する人とそうでない人の違いは何か?」
私が出した答えは、「量産型エンジニアか否か」である。今のエンジニア市場には、量産型エンジニアが溢れている!!ここでの量産型エンジニアの定義は以下の通りである。
比較的簡単に学習可能なWebフレームワーク(WordPress, Rails)やPython等の知識はあるが、ITの基本概念を理解していないため、単調な作業しかこなすことができないエンジニアのこと。
多くの人がフリーランスエンジニアを目指す時代に中途半端な知識や技術力でこの世界に飛び込むと返って過酷な労働条件で働くことになる。そこで、エンジニアを目指すあなたがどう学習していくべきかを私の経験を交えて書こうと思った。続きはこちらから、、、、
エンベーダー編集部
エンベーダーは、ITスクールRareTECHのインフラ学習教材として誕生しました。 「遊びながらインフラエンジニアへ」をコンセプトに、インフラへの学習ハードルを下げるツールとして運営されています。
関連記事
2020.02.25
完全未経験からエンジニアを目指す爆速勉強法
USBも知らなかった私が独学でプログラミングを勉強してGAFAに入社するまでの話
- キャリア・学習法
- エンジニア
2024.10.29
AWSでアプリケーションの可観測性を高めよう!CloudWatch LogsとX-Rayの活用法
ユーザー体験を向上させ、ビジネスへの影響を最小限に抑えるためには、可観測性の強化が重要です。
- AWS
- インフラエンジニア
2024.07.31
どっちを選ぶ?AWS ECS on EC2とFargateの違い
ECSには、インフラを自分で管理するEC2モードと、サーバーレスで運用できるFargateモードがあります。どちらを選べば良いか迷うことも多いため、この記事ではECS on EC2とFargateの違いについて詳しく解説し、それぞれのメリットとデメリットを比較します。
- AWS
2024.03.18
AmazonLinux2023にWordPressをインストールする
この記事では、初心者でもわかるように、Amazon Linux 2023にWordPressをインストールして、ブログやサイトを立ち上げるまでの手順を丁寧に解説します。
- AWS
- Linux
- ハンズオン