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
58
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
社内AWSインフラのIaC化にCDKを提案する資料
ryosuke-horie
May 25, 2024
More Decks by ryosuke-horie
See All by ryosuke-horie
バックエンドエンジニアがデザインとフロントエンドに挑戦してみた
hreryosuke03
0
290
Other Decks in Technology
See All in Technology
知らん間に、回ってる
ming_ayami
0
740
AI x 開発生産性を取り巻く予算戦略と投資対効果
i35_267
1
220
LLMやAIエージェントをソフトウェアに組み込むプラクティス
shibuiwilliam
2
430
2年前に削除したPHPクラスが、 ある日突然決済をエラーにした
ykagano
1
470
Kaggleで成長するために意識したこと
prgckwb
2
420
AIが当たり前の組織で エンジニアはどう育つか
nishihira
0
110
Gen3R: 3D Scene Generation Meets Feed-Forward Reconstruction
spatial_ai_network
0
140
そのドキュメント、自動化しませんか?
yuksew
1
310
「早く出す」より「事業に効く」 ── 顧客の業務サイクルから逆算するAI時代の二重ループ開発と「変化の設計者」 / devsumi2026
rakus_dev
1
420
「守りたい体験」を渡すだけで E2E を生成させられるようになった話
hinac0
1
720
OpenTelemetryにおけるGoのゼロコード・コンパイル時計装について #fukuokago
quiver
0
130
仕様駆動開発、導入半年。「本当に速くなってるの?」にデータで答える / AICon2026_hirakawa
rakus_dev
0
130
Featured
See All Featured
Game over? The fight for quality and originality in the time of robots
wayneb77
1
220
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
660
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
490
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
500
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Believing is Seeing
oripsolob
1
170
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2.1k
Code Review Best Practice
trishagee
74
20k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
3.8k
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なら扱えるエンジニアが多い - ライブラリを活用してさらに効率化を図れる - コードがドキュメントとなり管理されないパラメーターシートから解放される