Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
社内AWSインフラのIaC化にCDKを提案する資料
Search
ryosuke-horie
May 25, 2024
Technology
56
0
Share
社内AWSインフラのIaC化にCDKを提案する資料
ryosuke-horie
May 25, 2024
More Decks by ryosuke-horie
See All by ryosuke-horie
バックエンドエンジニアがデザインとフロントエンドに挑戦してみた
hreryosuke03
0
280
Other Decks in Technology
See All in Technology
AWS運用におけるAI Agent活用術 / JAWS-UG 神戸 #11 LT大会
genda
1
310
マンション備え付けのネットワークとLTE回線を組み合わせた ネットワークの安定化の考案
harutiro
1
140
パーソルキャリア IT/テクノロジー職向け 会社紹介資料|Company Introduction Deck
techtekt
PRO
0
230
インプロセスQAのための要因から捉えるプロジェクトリスクマネジメントnano #1 開発リソース効率状態への対処 #jasstnano
barus_qa
0
210
Oracle AI Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
4
2.6k
【関西製造業祭り2026春】現場を変える技術はここまで来た〜世界最大の製造業見本市から持って帰ってきたもの〜
tanakaseiya
0
190
TypeScript の型で副作用の実行順序を制御する
yanaemon
0
110
Databricks 月刊サービスアップデートまとめ 2026年04月号
tyosi1212
0
140
障害対応のRunbookは作った、でも本当に動くの? AWS FIS で EKS の AZ 障害を再現してみた
tk3fftk
0
120
Purview Endpoint DLP 動かしてみた
kozakigh
1
450
エンタープライズの厳格な制約を開発者に意識させない:クラウドネイティブ開発基盤設計/cloudnative-kaigi-golden-path
mhrtech
0
460
なぜ、IAMロールのプリンシパルに*による部分マッチングが使えないのか? / 20260518-ssmjp-iam-role-principal
opelab
2
140
Featured
See All Featured
Technical Leadership for Architectural Decision Making
baasie
3
370
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
790
Discover your Explorer Soul
emna__ayadi
2
1.1k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
340
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.2k
ラッコキーワード サービス紹介資料
rakko
1
3.3M
Joys of Absence: A Defence of Solitary Play
codingconduct
1
360
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Writing Fast Ruby
sferik
630
63k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
800
Transcript
社内AWSインフラのIaC化に CDKを提案する資料
目次 1. はじめに 2. サンプルアプリ「予約受付システム」を利用 a. 概要 b. 構成図 c.
技術構成 d. CDKを採用したメリット 3. IaCツールについて a. IaCを推奨する理由 4. その他
1.はじめに - CDK、TypeScriptが社内のAWSインフラのIaC化の選択肢の有力候補に上がっていると伺っています - TypeScript, CDKは個人的に注目している技術で、すでにいくつかのアプリを個人開発しているいます。 - そのメリットをその辺に転がっている技術記事ではなく、一社員の目線から、激押しします。 - (個人的には第一候補でいいと思っている
IaCツールです。) - サンプルのアプリ・リポジトリを通してご紹介します。
2.サンプルアプリ「予約受付システム」 - ⇒の添付画像のような週間スケジュールから予約を受けつけ、自動でメールを送 信し通知するようなシステムで CDKを紹介します。 - GitHub リポジトリも公開しています。 - https://github.com/ryosuke-horie/cdk-sample-serverless-reserve-form
- (見たらスターいただけるとうれしいです) - 半年前に作ったシステムを公開用にカスタムした物なのであくまでもサンプルとし て見ていただければと思います。 2-1. 概要
2.サンプルアプリ「予約受付システム」 - (手書きで失礼します) - シンプルな実装でS3+CloudFront でフロントエンドの構築、Lambdaに よってバックエンドのメール送信部 分を構築しています。サーバレス構 成です。 -
社内でいうとMITSのHPが近い構 成かと思います。 2-2. 構成図
2.サンプルアプリ「予約受付システム」 インフラ - AWS CDK - API Gateway + Lambda+SESをデプロイするスタック
- Route53, ACM, S3, CloudFrontをデプロイするスタック - GitHub AcitonsからのS3への自動デプロイと CloudFrontのキャッシュ削除を許可するための OICD用IAMをデプロイするスタック アプリケーション - Vue.js v3 - TypeScript その他ライブラリ ESLint, Prettier, Biome を静的解析、コード成型のために採用 最低限レベルのシンプルな実装になっています。 2-3. 技術構成
2.サンプルアプリ「予約受付システム」 - マネジメントコンソールでの操作が圧倒的に少ない - ACM, Route53の部分はマネジメントコンソールで作成したものを ARNで指定してCloudFront等と関連付けを行っていますが、そ れ以外はCDKで記述してコマンドでデプロイするだけで構築が完了します - 一度実装してしまえばコードとして使いまわすことが可能。つまり
開発環境・検証環境・本番環境の構築の手間を削減することが でき実装コストを下げつつ、手動での操作によって発生する設定ミスを防ぐことができます 。 - リポジトリでインフラ構築をコード管理できる - レビュー・履歴の確認・バージョン管理など数多くのメリットを享受することが可能になります。 - 仮に設定をミスしたとしてもコードを復元してデプロイしなおすことによって簡単に戻すことが可能になります。 - Excel管理しているパラメーターシートの管理は非常に手間で設定変更後に更新されなかった場合、実環境と差異が生まれド キュメントとしての価値を失いがちですが、 CDKは実装と直接結びついており、コードがドキュメントとなります。 - CDKをTypeScriptで記述することでライブラリを活用できる - Linter, FormatterとなるESLint, Prettier, Biomeやテスト用のJest, Vitestなどを利用できます。モダンフロントエンドは js系のフレー ムワークを採用することが多いため設定も使いまわすことが可能な場合も多く効率的です。 - cdk-nagのようなCDK専用のセキュリティ用のライブラリも公開されており品質向上のための施策を打つことが可能です。 2-4. CDKを採用するメリット( ITS社員目線)
IaCツールについて - 選択肢として挙げられる物はだいたい以下の3つ。 - CloudFormation - Teraform - AWS CDK
- CDK特有のメリットは以下が思い当たります。 - JAWS-UG CDK支部という勉強会が頻繁に行われており、注目度の高さがうかがえます。 - Tips的な内容などの学習コンテンツとして活用できます。 - Qiita, Zenn, クラスメソッドなど記事が大量に転がっていてキャッチアップが容易 - 公式ドキュメントが充実しておりコード例も記載されており助かる。 - CDKをTypeScriptで記述できるということは WEBチームはTypeScriptが書けるので実質的なインフラ人員増を考えることが可 能。 - 他ツールと比較してIaCを推す理由をいくつか述べます。
3.IaCツールについて - CloudFormationと比較 - コードの記述量が圧倒的に少ない。 - CDKはメソッドやクラスを活用して高いレベルで抽象化しているため、それらを利用することで保守性の高い、簡潔なコー ディングを行うことができるメリットがあります。 - NPMのライブラリの恩恵を受けることができる
- 保守性・効率性の向上が期待できます。 - Terraformとの比較 - Google Trendで比較するとCDKのほうが人気です。 (2024年度で比較) - より情報を集めやすく、利用できるエンジニアのパイが大きいメリットがあると考えられます。 - HCLという専用の言語で記述します - コードの記述方法の自由度が少ないと言われており、誰が書いても同じようなスタイルになることで保守性の観点でのメ リットがあるかと思います。 - 逆にTerraform以外で使わない言語のため、新たに学習する必要があります。 TypeScriptはWEBでも使えますがHCLで は応用が効きません。 Lambdaを記述するときなど結局別言語を使う羽目になります。 3-1. IaCを推奨する理由
4.参考記事 - なぜCDKを使うべきなのだろう? - https://tech.uzabase.com/entry/2024/03/29/112719 - VSCodeなどのエディタによってサポートされる - TypeScriptと相性がよくシンタックスレベルのエラーが静的にチェックされる -
コードの補完が効く - 少ない労力で本質的なことができる - スタートアップで”より生かせる”AWS CDKのいいところ3つ - https://logmi.jp/tech/articles/329752
5.私がCDKのキャッチアップのために利用した教材 - CDK Workshopの TypeScriptのセクションを通してハンズオンで構築しました。 - https://cdkworkshop.com/ja/20-typescript.html - 動くものができるのでイメージがわいて丁度いいです。 -
上記を作った後、自分が作りたいアプリや構築が比較的簡単に済みやすい静的サイト、サーバレスアプリなどを実装し て学習を継続しています。
6.最後に - おさらいです - CDK TypeScriptによるIaCが最もおすすめです - ドキュメントが充実 - トレンドとして注目されており情報のキャッチアップが容易
- コードとして実装しリポジトリでバージョン管理できる - 再利用しやすく効率的 - TypeScriptなら扱えるエンジニアが多い - ライブラリを活用してさらに効率化を図れる - コードがドキュメントとなり管理されないパラメーターシートから解放される