Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

Infrastructure as Codeで壁を越える技術を身につけよう!

Infrastructure as Codeで壁を越える技術を身につけよう!

AWS Developer Live Show 2023
多くのエンジニアにとって、コードを書いたり、設定をチューニングしたりするのは楽しい時間です。しかし、ある環境でしか起こらないバグの調査や、単調な繰り返しの作業、人との調整など、クリエイティブな仕事への集中を妨げる「壁」もあります。
Infrastructure as Code (IaC) はアプリケーションの可視性を向上し、自動化を可能にするため、エンジニアがこれらの壁を越えるための有効な手段となります。IaC をあなたの武器にするための方法を一緒に考えてみましょう !

Kenji Kono

July 18, 2023
Tweet

More Decks by Kenji Kono

Other Decks in Programming

Transcript

  1. INFRASTRUCTURE AS CODE で壁を越える技術を⾝につけよう︕ © 2023, Amazon Web Services, Inc.

    or its affiliates. < #AWSDevLiveShow © 2023, Amazon Web Services, Inc. or its affiliates. ⾼野 賢司 ソリューションアーキテクト アマゾンウェブサービスジャパン合同会社 Infrastructure as Code で 壁を越える技術を⾝につけよう︕ A W S D E V E L O P E R L I V E S H O W 2 0 2 3 ⼯藤 朋哉 Prototyping Engineer アマゾンウェブサービスジャパン合同会社 ⼭崎 宏紀 ソリューションアーキテクト アマゾンウェブサービスジャパン合同会社
  2. INFRASTRUCTURE AS CODE で壁を越える技術を⾝につけよう︕ © 2023, Amazon Web Services, Inc.

    or its affiliates. < #AWSDevLiveShow エンジニアの⼼理的な『壁』と Infrastructure as Code 今⽇のテーマ
  3. INFRASTRUCTURE AS CODE で壁を越える技術を⾝につけよう︕ © 2023, Amazon Web Services, Inc.

    or its affiliates. < #AWSDevLiveShow 3 ⾼野 賢司 ⼯藤 朋哉 ⼭崎 宏紀 ソリューションアーキテクト Prototyping Engineer ソリューションアーキテクト ビルドやデプロイが 成功する瞬間 新しい技術に 触れている瞬間 ⾃動化したタスクが うまく動いた瞬間 皆様の「エンジニアをやっていて楽しいと思う瞬間」を #AWSDevLiveShow でツイートしてください︕
  4. INFRASTRUCTURE AS CODE で壁を越える技術を⾝につけよう︕ © 2023, Amazon Web Services, Inc.

    or its affiliates. < #AWSDevLiveShow エンジニアの職務満⾜度と『楽しさ』 4 リーン マネジメント 継続的 デリバリー 職務満⾜度 組織の パフォーマンス 出典: LeanとDevOpsの科学[Accelerate] テクノロジーの戦略的活⽤が組織変⾰を加速する 職務満⾜度を向上させる要素 • 仕事で必要なツールとリソースを 従業員に提供する(選択の⾃由が必要) • ⾃⾝の専⾨知識を活⽤できる 有意義な仕事を従業員に提供する 出典: https://dora.dev/devops-capabilities/cultural/job-satisfaction/ アーキテクチャ設計、開発、⾃動化、ピアレビュー 監視、分析、デバッグ、ドキュメント作成 ⼿動での作業、障害対応、チーム間の調整 エンジニアにとって楽しいタスク 減らしたい ※ 個⼈の感想です
  5. INFRASTRUCTURE AS CODE で壁を越える技術を⾝につけよう︕ © 2023, Amazon Web Services, Inc.

    or its affiliates. < #AWSDevLiveShow Infrastructure as Code で壁を越える技術を⾝につけよう︕ 1. めんどうな⼿作業の壁 2. 未知の技術の壁 3. チームの⽂化の壁 今⽇話さないこと︓ Infrastructure as Code (IaC) ツールやクラウドサービスの詳細・⽐較 7 皆様の「エンジニアをやっていて壁を感じる瞬間」を #AWSDevLiveShow でツイートしてください︕
  6. INFRASTRUCTURE AS CODE で壁を越える技術を⾝につけよう︕ © 2023, Amazon Web Services, Inc.

    or its affiliates. < #AWSDevLiveShow © 2023, Amazon Web Services, Inc. or its affiliates. めんどうな⼿作業の壁 8
  7. INFRASTRUCTURE AS CODE で壁を越える技術を⾝につけよう︕ © 2023, Amazon Web Services, Inc.

    or its affiliates. < #AWSDevLiveShow ⼿作業、つらくないですか︖ • ⼿作業での環境構築、ダブルチェック • 構築⼿順書の作成、更新、レビュー • インフラの詳細設計書、パラメータシートの作成 • 設定値の指差し確認 • ⾃分だけの開発環境がない • テスト環境が本番環境と違う • 「あの環境、今どんな設定だっけ︖」 9
  8. INFRASTRUCTURE AS CODE で壁を越える技術を⾝につけよう︕ © 2023, Amazon Web Services, Inc.

    or its affiliates. < #AWSDevLiveShow Infrastructure as Code (IaC) とは︖ ⼿動ではなく、コードによって インフラストラクチャの管理やプロビジョニングを⾏うプロセス 10 ソースコード IaC ツール クラウドリソース ソフトウェア開発のプラクティスをインフラ構築の⾃動化に活かす 継続的デリバリーに必須の技術のひとつ リソースは この状態であるべき (宣⾔的) ⽬的の状態に 収束 https://docs.aws.amazon.com/whitepapers/latest/introduction-devops-aws/infrastructure-as-code.html
  9. INFRASTRUCTURE AS CODE で壁を越える技術を⾝につけよう︕ © 2023, Amazon Web Services, Inc.

    or its affiliates. < #AWSDevLiveShow IaC で⼿作業をなくそう • 作業ミスや解釈違いが発⽣しない • 作業時間を拘束されない • リソースが正しく設定されることを IaC ツールが担保 • いつでもリソースを作成・破棄 • 以前の状態にロールバック可能 • リソースの依存関係を⾃動で解決 11
  10. INFRASTRUCTURE AS CODE で壁を越える技術を⾝につけよう︕ © 2023, Amazon Web Services, Inc.

    or its affiliates. < #AWSDevLiveShow 「うちの会社では使えない…」︖ IaC が置き換えるものを理解しましょう
  11. INFRASTRUCTURE AS CODE で壁を越える技術を⾝につけよう︕ © 2023, Amazon Web Services, Inc.

    or its affiliates. < #AWSDevLiveShow インフラ構築の V 字モデルと IaC 13 要件定義 基本設計 詳細設計 実装・デバッグ 単体テスト 結合テスト 総合テスト Why What How • 要件定義書 • ⾮機能要件定義書 • 基本設計書 • 詳細設計書 • 構築⼿順書 • パラメータシート 検証 ドキュメント通りに構築・設定されたことを確認 複数のコンポーネントが期待通りに振る舞うことを確認 • IP アドレスやホスト名、OS のタイムゾーンが正しいか • HTTP サーバーのバージョンや設定が正しいか • ディレクトリの名前やパーミッションが正しいか • 定期実⾏ジョブが正しく定義されたか ...etc • ある拠点から SSH でログインできるか • インターネット経由で Web ページが正しく表⽰されるか • 定期実⾏ジョブが時刻通りに実⾏されるか ...etc システム全体が期待通りに振る舞うことを確認 • パフォーマンスは⼗分か • ⾼負荷時にも正しく応答するか • 意図しない⼈がアクセス可能でないか ..etc IaC で置き換え可能な範囲
  12. INFRASTRUCTURE AS CODE で壁を越える技術を⾝につけよう︕ © 2023, Amazon Web Services, Inc.

    or its affiliates. < #AWSDevLiveShow インフラ構築の V 字モデルと IaC 14 要件定義 基本設計 IaC 実装・デプロイ 結合テスト 総合テスト Why What • 基本設計書 検証 複数のコンポーネントが期待通りに振る舞うことを確認 • ある拠点から SSH でログインできるか • インターネット経由で Web ページが正しく表⽰されるか • 定期実⾏ジョブが時刻通りに実⾏されるか ...etc システム全体が期待通りに振る舞うことを確認 • パフォーマンスは⼗分か • ⾼負荷時にも正しく応答するか • 意図しない⼈がアクセス可能でないか ..etc マネージドサービスで設計とテストを単純化。アプリとインフラの境界が曖昧に 顧客のストーリーやアーキテクチャ決定の経緯(Why)がより重要に • コードレビュー(ピアレビュー) • ユニットテストの⾃動化 • 静的チェック(SAST) • 要件定義書 • ⾮機能要件定義書 ドキュメントとしてのコード
  13. INFRASTRUCTURE AS CODE で壁を越える技術を⾝につけよう︕ © 2023, Amazon Web Services, Inc.

    or its affiliates. < #AWSDevLiveShow Infrastructure as Code は継続的デリバリーの基礎 15 バージョン管理 環境の分離 Infrastructure as Code セキュリティの シフトレフト 継続的 インテグレーション (CI) トランクベース開発 デプロイの⾃動化 プルリクエストと ピアレビュー
  14. INFRASTRUCTURE AS CODE で壁を越える技術を⾝につけよう︕ © 2023, Amazon Web Services, Inc.

    or its affiliates. < #AWSDevLiveShow • ⼿作業での設定では ミスが避けられず再現性がない • ⼿順書を読んで状態を理解するには 脳内にインタープリタが必要 • ⼿順書にない操作を排除するには エラー処理や条件分岐が複雑になる • 詳細設計書やパラメータシートも ⾃然⾔語である必要性は薄い (理解できるのはエンジニアだけ) 本当は難しい『⼿順書』
  15. INFRASTRUCTURE AS CODE で壁を越える技術を⾝につけよう︕ © 2023, Amazon Web Services, Inc.

    or its affiliates. < #AWSDevLiveShow 個⼈の意識を変⾰する⽅法︓まずは試してみる 20 new ec2.Vpc(this, 'Vpc', { ipAddresses: IpAddresses.cidr('10.0.0.0/16'), maxAzs: 2, natGateways: 0, } TypeScript 1. VPC など をクリック 2. 名前タグの⾃動⽣成の欄に handson-ユーザ名 と⼊⼒。例) handson-user1 3. サブネット CIDR ブロックをカスタマイズを展開 4. ⼀番⽬のサブネットの CIDR ブロックのap-northeast-1aを 10.0.0.0/18 に変更 5. ⼆番⽬のサブネットの CIDR ブロックのap-northeast-1cを 10.0.64.0/18 に変更 6. 三番名のサブネットの CIDR ブロックのap-northeast-1aを 10.0.128.0/18 に変更 7. 四番⽬のサブネットの CIDR ブロックのap-northeast-1cを 10.0.192.0/18 に変更 8. NAT ゲートウェイは なし を選択 9. VPC エンドポイントは なし を選択 10. その他はデフォルトのままにする 11. VPC を作成をクリック ※ その他の項⽬はデフォルトのままにします。 ⼿順書 IaC (AWS CDK) vs
  16. INFRASTRUCTURE AS CODE で壁を越える技術を⾝につけよう︕ © 2023, Amazon Web Services, Inc.

    or its affiliates. < #AWSDevLiveShow Infrastructure as Code は エンジニアが 楽しい仕事に集中するための鍵
  17. INFRASTRUCTURE AS CODE で壁を越える技術を⾝につけよう︕ © 2023, Amazon Web Services, Inc.

    or its affiliates. < #AWSDevLiveShow © 2023, Amazon Web Services, Inc. or its affiliates. 未知の技術の壁 22
  18. INFRASTRUCTURE AS CODE で壁を越える技術を⾝につけよう︕ © 2023, Amazon Web Services, Inc.

    or its affiliates. < #AWSDevLiveShow IaC に踏み出せない要因をヒアリングしてみた • モダンなプログラミング⾔語の経験がない • プログラミングの周辺ツールがわからない • 構築するサービスの経験がない • 全部細かく設定しないと気が済まない • 勝⼿に環境が壊れてしまいそう • ユーザーにリクエストされていない • プロジェクトマネージャーの賛同を得られない 23
  19. INFRASTRUCTURE AS CODE で壁を越える技術を⾝につけよう︕ © 2023, Amazon Web Services, Inc.

    or its affiliates. < #AWSDevLiveShow IaC はアプリとインフラそれぞれの『隣』にある 24 インフラエンジニアのスキル アプリエンジニアのスキル IaC で求められるスキル ネットワーク ストレージ OS ミドルウェア データベース セキュリティ シェル スクリプト ジョブ管理・ ⾃動化 プログラミング ⾔語 フロントエンド コンテナ コンテンツ 配信 データベース セキュリティ データ分析 ソフトウェア 設計 簡単なプログラミング⾔語 または DSL Git と Pull Request クラウドサービスの基礎知識 ビルドとデプロイの⾃動化
  20. INFRASTRUCTURE AS CODE で壁を越える技術を⾝につけよう︕ © 2023, Amazon Web Services, Inc.

    or its affiliates. < #AWSDevLiveShow アプリとインフラの境界が曖昧になっている アプリケーションデータ アプリケーション処理コード サーバーサイド間通信 暗号化 冗⻑化 プラットフォーム、アプリ実⾏基盤 OS保守、パッチ適⽤ ネットワーク構成 コンピューティングリソース オンプレ インフラ 例︓EC2 コンテナ 例︓ECS サーバーレス 例︓Lambda AWSが提供するレイヤー お客様に管理いただくレイヤー コンピューティングサービス その他のサービス(200以上) Amazon SNS Amazon SQS Amazon DynamoDB Amazon RDS AWS CodePipeline AWS Amplify Amazon VPC Amazon S3 アプリとインフラをサービス単位で分けられない⼀⽅で、IaC でまとめて管理できる
  21. INFRASTRUCTURE AS CODE で壁を越える技術を⾝につけよう︕ © 2023, Amazon Web Services, Inc.

    or its affiliates. < #AWSDevLiveShow Infrastructure as Code を あなたの⼿になじんだ道具にしよう
  22. INFRASTRUCTURE AS CODE で壁を越える技術を⾝につけよう︕ © 2023, Amazon Web Services, Inc.

    or its affiliates. < #AWSDevLiveShow © 2023, Amazon Web Services, Inc. or its affiliates. 組織の⽂化の壁 27
  23. INFRASTRUCTURE AS CODE で壁を越える技術を⾝につけよう︕ © 2023, Amazon Web Services, Inc.

    or its affiliates. < #AWSDevLiveShow 組織の形はいろいろ アプリ 開発 アプリ 運⽤ プラット フォーム 運⽤ プラット フォーム 開発 従来モデル サービスチーム DevOps モデル アプリ チーム プラットフォーム チーム CloudOps モデル ほかにも・・・ • ガバナンスチームが独⽴して⼀元管理 • サービスチーム内にセキュリティガーディアンを配置 • CCoE やマネージドサービスプロバイダーが介在 など
  24. INFRASTRUCTURE AS CODE で壁を越える技術を⾝につけよう︕ © 2023, Amazon Web Services, Inc.

    or its affiliates. < #AWSDevLiveShow あなたの組織の形は︖ 29 開発 運⽤ アプリ インフラ
  25. INFRASTRUCTURE AS CODE で壁を越える技術を⾝につけよう︕ © 2023, Amazon Web Services, Inc.

    or its affiliates. < #AWSDevLiveShow 組織の⽂化を変⾰する⽅法︓メカニズムをつくる 30 プラットフォーム チーム サービス チーム App Security 内部サービス または IaC テンプレート 利⽤ 公開 Infrastructure Infrastructure as Code インフラ エンジニア アプリ エンジニア 共働 コードによる コラボレーション セルフサービスで チーム間を疎結合に チームが サービスを所有 ガードレールと 助⾔を提供 DevOps モデル アプリ全体を コードで定義
  26. INFRASTRUCTURE AS CODE で壁を越える技術を⾝につけよう︕ © 2023, Amazon Web Services, Inc.

    or its affiliates. < #AWSDevLiveShow Infrastructure as Code で チームが協働するメカニズムを作ろう
  27. INFRASTRUCTURE AS CODE で壁を越える技術を⾝につけよう︕ © 2023, Amazon Web Services, Inc.

    or its affiliates. < #AWSDevLiveShow © 2023, Amazon Web Services, Inc. or its affiliates. Thank you! ⾼野 賢司 ⼯藤 朋哉 ⼭崎 宏紀 @konokenj @yh1roki