AWS公式トレーニング「DevOps Engineering on AWS」受講レポート

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

こんにちは、あべいかです。
AWSは様々な目的とレベルのトレーニングを提供しています。
12月は「Security Operations on AWS」の受講レポートをお伝えしました。
今回は「DevOps Engineering on AWS」のレポートをお届けします。日本では12月15日-17日に初めて開催されたトレーニングです。

トレーニングの概要

公式ページから説明をお借りました。

「DevOps Engineering on AWS」では、 DevOps の基本概念を理解して、AWS 上でアプリケーションを開発、デプロイ、継続的改善していく方法を説明します。このコースでは、DevOps メソドロジーの基本原則を取り上げ、スタートアップ、中小企業、エンタープライズ企業の開発シナリオに適したさまざまなユースケースを紹介します。

説明からアプリケーション開発者向けのトレーニングのように感じるかたが多いかと思いますが、安心してください。AWSでのアプリケーション開発と運用に携わる、アプリケーション、インフラなど役割を問わず全てのエンジニアに受けて欲しいトレーニングなんです。
DevOpsは個々のエンジニアだけでは達成出来ません。DevOpsは様々な役割を持つエンジニアが協力し成果を出す為の思想です。本コースを受講する方は、ぜひトレーニングの内容を現場のエンジニアや上長に伝えて頂きたいです。

カリキュラム

第 1 日
・DevOps とは何か?
・コードとしてのインフラストラクチャ、パート 1: 設計とセキュリティ
・コードとしてのインフラストラクチャ、パート 2: CloudFormation と構成管理

第 2 日
・クラウドでの継続的インテグレーション
・AWS での継続的デプロイ
・AWS でアプリケーションをデプロイする、パート1

第 3 日
・AWS でアプリケーションをデプロイする、パート2
・すべてをつなげる(Deployment Pipeline)
・デプロイメントのパフォーマンス調整
・インフラストラクチャの管理と自動化

トレーニングは3日間行われます。会場は東京目黒にあるAWSオフィスで、ノートパソコンと外部ディスプレイが用意されていました。私は使い慣れたノートPCを持ち込みました。

注:会場や設備は回によって異なります。

本編の前に講師と参加者の自己紹介があり、参加者の同士のコミュニケーションがとりやすい雰囲気でした。
カリキュラムはAWSに限らずDevOpsに関連する一般的な内容を含みます。DevOpsが何のことかわからないという方でも大丈夫です。

前提知識

System Operations on AWS コースの受講(必須)
Developing on AWS コースの受講(推奨)
1 つ以上の上級プログラム言語(C#、Java、PHP、Ruby、Python など)の実務的知識
コマンドライレベルでの Linux システムや Windows システムの管理の中程度の知識
AWS での AWS マネジメントコンソールと、AWS コマンドラインインターフェイス(AWS CLI)の両方の使用経験

他AWSコースの受講が必須と推奨条件になっていますが、弊社メンバー3人とも今回が初めてのAWSコース受講でした。特に続きものというわけではありません。
ただし、本コースを受ける前にEC2、VPC、S3、RDSといった基本的なAWSサービスを理解しておいたほうが良いでしょう。
DevOpsを達成する手段の1つとして自動化がありますが、自動化される内容について知見がないとピンとこない部分があるかと思います。

また、ラボと呼ばれる実習の難度がやや高いため、AWS初心者のかたは必須トレーニングの受講を検討しましょう。 本トレーニングは基本的なサービスを使ったことがあり、もっと賢くAWSを使いたい方にぴったりな難易度だと思います。

トレーニングで学べることと、それがどう役立つか

DevOpsが必要とされる背景

お客様の求めるソリューションを一度の要件定義で理解し全て提供する事は、多くのケースで非常に困難です。お客様からのフィードバックを継続して取り入れ、小さな機能単位で提供していく手法が注目されています。例としてソフトウェアの開発と運用について考えてみましょう。初期の開発・構築が終わったソフトウェアは運用フェーズに移りますが、以下のような問題に直面するケースがあります。

  • 不具合やバグが作りこまれ、リリースされる
  • テストでは見えなかった問題が、本番環境で見つかる
  • 障害が発生した時に、対処できるまでの時間がかかる
  • 開発時のバグや運用上のトラブルによって、追加開発の速度が落ちる

このような問題を解決するため、開発者と運用者の壁と取り去るDevOpsというアプローチが近年注目されています。 本トレーニングによって、DevOpsが解決する問題を正しく認識し、必要なアプローチを考えるための基礎知識を習得できます。講師や他の参加者の方とディスカッションすることで、様々な視点の意見を得ることができ、また問題解決のために多数あるAWSサービスをどのように組み合わせ活用するのかを知ることもできます。

セキュリティと構成管理

AWS上での実務で必須となる、IAMとCloudFormationについて、講義とラボで学びます。これらのサービスは今後の実習を行う上での前提となるため、多くの時間を割いて学びます。講習初期での重点的な座学とユースケース解説とラボで、IAMとCloudFormationを普段深く触っていない方でも、一気に実務レベルまでのスキルを身につけることができると思います。

継続的インテグレーションと継続的デリバリ

実務での継続的インテグレーション(Continuous Integration: CI)と継続的デリバリ(Continuous Derivery: CD)は、「これさえ行えばOK!」という解があるわけではありません。 組織ごとに違うのはもちろん、開発・運用の段階でも適切なアプローチは変わります。 このトレーニングを受けた参加者が自分の状況に自分で対応できるように、様々なユースケースを、実際にラボで手を動かします。 AWSをベースにして、GitやJenkinsなどモダンなCI/CD環境を自分で作成し、DevOpsを体験することができます。

オーケストレーション

トレーニングで学んだことをより実践できるレベルにするため、自動化されたCI/CDを統合するオーケストレーションを、講義とラボで学びます。 オーケストレーション自体高度な内容ですが、AWSを活用することで必要なことを簡単に実現できることを確認し、コード管理からモニタリングに至るまでの、適切なパイプラインを組み立てられるようになります。

受講したメンバーの感想

AWSコンサル部のあべいか、モバイルアプリ部の丹内、オペレーションチームのhanseが参加しました。

あべいか(インフラエンジニア)

アプリケーション開発者にとって、DevOpsやCI/CDといった考え方は常識と言えるかもしれません。AWSのコースであるものの、一般的な開発についての概念や用語定義がしっかりと扱われていました。 開発者の考えるDevOpsやCI/CDの概念を理解し、エンジニアはロールに関わらず、その目的は顧客の期待に応え続けること、価値を提供することである事を確認出来ました。

AWSサービスは開発者とシステム管理者を強力に支援してくれることがわかりました。ユースケースによりますが、インフラエンジニアが担ってきた役割をElastic BeanstalkやOpsWorksが代行してくれます。受講前は開発者向けのサービスであると認識していましたが、講義やラボで手を動かす事で認識を改めました。また、これらのサービスを使ったアーキテクチャを組み立てる基礎知識を得る事が出来ました。

DevOpsを理解するためには、インフラエンジニアであっても、一般的な開発手法についての理解が必要であると感じました。その点、講師や他の受講者の生の声をお聞きする事ができ、個人の学習では難しい経験が出来ました。

丹内(サーバーサイドエンジニア)

ラボを使った実習をたくさん行えたのは、とても良い経験になりました。 講習で取り上げるサービスの順番もよく考えられていました。IAMとCloudFormationの紹介とラボから始まりましたが、この2つはどのラボでも必ず関わってくるため、何度も手を動かして学ぶことができます。ここで習得した技術は、AWSを使うあらゆる実務ですぐに役立つでしょう。

ラボだけでなく、講義も盛りだくさんで勉強になりました。単にAWSのサービスを紹介するわけではなく、そのサービスが生まれた背景や解決する問題から分かりやすい解説を受け、その上で適切なサービスが紹介されます。DevOpsの原則やプラクティスも数多く紹介されるため、研修後の実務で自分でアーキテクチャを考える際の基盤となる知識を得ることができます。

講師の方は、どなたもソフトウェア開発や運用に携わった背景があり、AWSサービスの範囲から多少外れることでも質疑応答や議論していただけました。AWSユーザとしてはもちろん、エンジニアとしても成長できる三日間でした。

hanse(運用エンジニア)

受講前は、AWSで "DevOps"と聞くと CodeDeploy , CodePipelineといった機能が思い浮かぶ程度でした。今回DevOpsトレーニングと聞いて、単純に触ったことがない機能を触る機会となり、今後の勉強の種となる、といった思いで臨みました。 受講してさっそく気づいたのは、個人的に期待していた面は、あくまでトレーニングの側面でしかなかったことです。 "DevOps"とは何?なぜ必要なのか?その進め方は?という。"AWSの考えるDevOps"という概念の延長線上として、顧客環境に合わせたDevOpsを"AWSを使って"どのように実現するか、また、それぞれのツールがそれらをいかに強力にサポートしてくれるか、を体系立てて学ぶことができました。

また、講義とディスカッションを通じてストーリーを理解した上に、6つのラボを通じて各サービスの基本を手を動かして考えることで、より一層理解が深まりました。 個人的にサービスを触って勉強することとの違いはここにあると思います。 とても充実した3日間でした。

今後のトレーニング

最新のトレーニングの開催日程と費用は、国内のクラウドセミナー・イベントのスケジュールにある「DevOps Engineering on AWS」の項目をご確認ください。

まとめ

本コースはDevOpsが生まれた背景から、個々のAWSサービスまで体系的に学べる貴重な機会です。DevOpsの全体像と個々のサービスの働きを思い描けるようになるはずです。

業務上の役割が異なるメンバーが受講しましたが、共通して満足度の高い3日間でした。皆さんもぜひ受けてみて下さい。
それでは、また。