【AWSの基礎から学ぶ Webアプリケーション構築入門】日本CTO協会主催 新卒エンジニア合同研修潜入レポート
はじめに
こんにちは。BEMALab編集部の橋本です。
2024年6月19日(水)に第4回目の日本CTO協会主催の新卒エンジニア合同研修へ参加してきました。
第6回目は、アマゾンウェブサービスジャパン合同会社(AWS Japan)様が研修を担当し、会場はアマゾン ジャパン本社(目黒雅叙園アルコタワー・アネックス)で開催されました。
※前回研修の取材記事はこちらです。
日本CTO協会主催 新卒エンジニア合同研修とは
現代のビジネスでは、エンジニアは企業にとって重要な役割を果たしています。しかし、世間的にはエンジニアの不足が叫ばれており、その不足を解消するためには、採用だけでなく育成にも注力する必要があります。
このような課題を背景に、日本CTO協会では、各社の新卒採用の負担を分散しつつ、
多角的な研修を提供するために、合同研修企画をこの6月から始められました。
※詳細はこちらのプレスリリース記事をご覧ください!
テーマは「AWSの基礎から学ぶ Webアプリケーション構築入門」
今回のテーマは、「AWSの基礎から学ぶ Webアプリケーション構築入門」です。
AWSならではの研修テーマで、ハンズオンで学習する時間を多く取られていた印象でした。
ハンズオンタイムでは、数十名の講師が周りに待機されており、いつでも質問できる体制を整えることで疑問をリアルタイムで解消している様子が見受けられました。
ここからは研修の具体的な実践内容について紹介していきます。
(※ハンズオンの内容は、研修に参加した当社のM.Yに寄稿いただきました)
ハンズオンの内容
ハンズオンでは、CMS(Contents Management System)世界シェア数No.1である WordPressを題材に、耐障害性や堅牢性を持たせた環境を構築しました。
CMSのシェア率としては、WordPressが約62.8%と非常に高いシェアを誇っています。
企業向けのコーポレートサイトやニュースサイトはもちろん、個人ブログとしても使用しやすいため、現在高い人気を得ていると考えられます。
参考:Usage statistics of content management systems|W3Techs
ハンズオンの流れ(1~6)
以下のステップで、ハンズオンを進めていきました。
- VPCの作成
- WordPressサーバーの構築
- データベース層の分離
- WordPressに可用性を持たせる
- スケールアウト構成を活用したEC2負荷対策
- DBの可用性向上:RDSのアクティブ・スタンバイ構成
1.VPC(Virtual Private Cloud※1)の作成
まず、仮想的なクラウド上のネットワークであるVPCを作成しました。
このVPCはマルチAZの構成でも利用できるように、パブリックサブネット、プライベートサブネットの両方をAZに含めました。
AZとはリージョンをさらに小さく分割した区分で、1つまたは複数のデータセンターの集合体です。※2
2. WordPress サーバーの構築
続いて、WordPressの実行環境としてEC2を起動し、そのAMI(Amazon Machine Image)も作成しました。
AMIを作成することで、特定の環境を迅速にテンプレート化できます。
今回のハンズオンではEC2の中身を変更する度にAMIを取得することで、直前に使用していたインスタンスを別のEC2で再作成するといった使い方ができました。
AMIの作成後、EC2上に MySQLと互換性のあるMariaDBサーバーもインストールし、そのサーバー自身を意味するlocalhostにあるデータベースとして動作を確認しました。
3. データベース 層の分離
データベースの耐障害性を向上させるためにRDSへの分離を行いました。
「2.」で構築したWordPress環境でもデータベースは存在しますが、データベースの諸々がEC2と一体化した状態になります。
ここで登場するのがRDSと呼ばれるデータベースのサービスで、これを利用してデータベース単体に分離します。
「2.」のWordPressがインストール済みのEC2のAMIを利用して新たにEC2を作成し、プライベートサブネットに立ち上げたRDSと接続しました。
RDSはWordPressサーバーのEC2だけがアクセスするため、プライベートサブネットに立ち上げた点がポイントです。
4. WordPressに可用性を持たせる
データベースは RDSに切り離すことができましたが、WordPressを動かすEC2は一つだけでは耐障害性の観点で懸念が残ります。
そこで、別のアベイラビリティゾーン(AZ)にEC2を作成し、様子を見ながらリクエストを捌いてくれるロードバランサー(ALB)を作成しました。
まず別のAZに「3.」のAMIを利用してEC2を作成し、AZを跨いでRDSと接続します。作成した2つのAZにあるEC2を同じ ALB のターゲットグループに含めます。
こうして、片方のEC2がダウンした場合でもALBがもう片方のEC2にレスポンスを返すことで、同じコンテンツを表示し続けることができます。
5. スケールアウト構成を活用したEC2負荷対策
EC2の負荷が大きくなると、レスポンスがタイムアウトするといった問題が生じることもあります。この回避策には様々な方法がありますが、今回のハンズオンでは数を増やして対応するスケールアウト構成を利用しました。
方法は簡単で、まずAMIから Auto Scaling の起動テンプレートを作成します。
あとはそのテンプレートを利用してALBがインスタンスの数を自動で増減できるようにし、ALBが監視するEC2のパフォーマンスの閾値などを設定するだけでした。
6. DB の可用性向上を目的とした RDS のアクティブ・スタンバイ構成
EC2はAZを分散することで可用性や拡張性が確保されましたが、RDSは依然として単一の AZ で稼働しています。このままだと、RDSがあるAZで停電などによる障害が発生した場合、WordPressに不可欠なDBが構成から欠けてしまう恐れがあります。
最後のハンズオンでは、待機状態のRDSを別のAZに配置し、障害時に切り替えるアクティブ・スタンバイ構成を利用し、DBの可用性を向上させました。
変更はスケールアウト構成よりも簡単で、RDSの設定でスタンバイインスタンスを作成するようにラジオボタンをクリックし、変更を適用するだけでRDSをマルチ AZ構成に変更することができました。
最後に
本研修で得た学びは以下の通りです。
- クラウドインフラの設計と構築手法
- 複数名の講師によるサポートでのハンズオンで理解度の向上
- 実践的なスキルの習得
- VPCの作成から始まり、以下のステップを通じて実践的なスキルを習得しました。
- EC2の構築
- RDSへのデータベース分離
- ALBによる冗長構成
- Auto Scalingによるスケールアウト構成
- RDSのアクティブ・スタンバイ構成
- AWS上でのWordPress環境の可用性と拡張性
- 上記の各ステップを通じて、AWS上でのWordPress環境の可用性と拡張性を高めるための基盤を築くことができました。
この研修を通じて、デプロイ後の環境に対して対障害性や可用性を考慮した変更を加えることで、AWSを利用した堅牢なアーキテクチャの設計を学ぶことができました。
エレベーターが見慣れたamazonの梱包箱になっていて、遊び心満載で素敵でした。
本研修へ関わった方のコメント
参加したメンバーズ社員のコメント M.Y(エンジニア 新卒2年目)
1日の研修とはいえ、提供された内容はかなり充実していました。耐障害性や可用性を持たせた AWS ならではの堅牢な構成をブラウザだけで簡単に構築する体験ができ、非常に面白かったです。
時間の制約が厳しい中で、講師の方にはトレーニングで扱うサービスについて1つ1つ説明していただきました。直近のトピックも交えたお話で、理解が深まったと実感しています。
トレーニング中は困ったことがあった際も、運営担当の方々から素早くヘルプに入っていただきました。ヘルプの後にはフォローアップもあったので、終始高いモチベーションで取り組むことができました。
研修の締めには、自動化・抽象化が進んだ昨今のクラウド活用の状況で、様々なサービスの根底にある本質的な機能を意識してもらいたく、あえて取り上げた題材だったとのお話があり、全体像を意識することの大切さを再認識できました。
研修全体の感想
合同研修ということで様々な企業から参加されていましたが、新卒 4 ヶ月目で AWS の高度なサービスを業務レベルで活用している方もいて驚きました。
運営担当の方による LT も洗練されていて、聞きやすかったのが印象的でした。
メンバーズのエンジニアコミュニティでも LT 会などのナレッジシェアが活発化しているので、今回の研修で受けた刺激を糧に、自分もアウトプットしていければと思います!
講師からのコメント 柳氏(アマゾンウェブサービスジャパン合同会社)
「AWSの基礎から学ぶWebアプリケーション構築入門」にご参加いただきありがとうございました。
研修に参加いただいた皆さんには、真っ新なAWSアカウントを配布し、Amazon VPC でプライベートネットワークを作り、Amazon EC2 を起動しWordPress を立ち上げていただきました。普段の業務では、ゼロからアプリケーションを立ち上げるという経験はなかなかできないと思います。
今後皆さんが業務として取り組む際に、今回の経験を思い出していただき、少しでも自信をもって取り組んでいただければ幸いです。
今回の研修では、あえて流行りではなく、基礎的な Aamazon EC2 / Amazon VPC をテーマに取り上げさせていただきました。AWSには多くのサービスがありますが、これらは EC2 / VPC の基礎の上で成り立っております。ご自身の技術として身につけていただくためにも、流行りに乗っかるだけではなく、下のレイヤーまで掘り下げることで、より深く理解することができるようになります。AWSに限らず、今後、技術者として学んでいくなかで是非意識していただければと思います。
皆さんのこれからの活躍を楽しみにしています。