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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
ryosuke-horie
May 25, 2024
Technology
57
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
280
Other Decks in Technology
See All in Technology
日本 Fintech 未来予測レポート 2027〜2028年(オリジナル版)
8maki
0
2k
Claude Codeをどのように キャッチアップしているか
oikon48
12
6.6k
タクシーアプリ『GO』の実践的データ活用
mot_techtalk
3
190
連合学習と機密コンピューティング
lycorptech_jp
PRO
0
110
作って終わりにしない タイミーのセマンティックレイヤー育成の現在地
chanyou0311
4
2.2k
Android の公式 Skill / Android skills
yanzm
0
130
非エンジニアがClaudeと挑んだ「1ヶ月間プロダクト30本ノック」
askokc
0
390
Claude Code の Sandbox 機能を Anthropic Sandbox Runtime(srt) で試そう!/lets-play-anthropic-sandbox-runtime
tomoki10
1
560
就職⽀援サービスにおけるキャリアアドバイザーのシフトスケジューリング
recruitengineers
PRO
1
140
機械学習を「社会実装」するということ 2026年夏版 / Social Implementation of Machine Learning June 2026 Version
moepy_stats
5
1.7k
フロンティアAIのゲート化と地政学リスク
nagatsu
0
130
やさしいA2A入門
minorun365
PRO
12
1.8k
Featured
See All Featured
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.3k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.1k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.8k
How to Talk to Developers About Accessibility
jct
2
230
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
200
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
YesSQL, Process and Tooling at Scale
rocio
174
15k
sira's awesome portfolio website redesign presentation
elsirapls
0
280
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
62
44k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
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なら扱えるエンジニアが多い - ライブラリを活用してさらに効率化を図れる - コードがドキュメントとなり管理されないパラメーターシートから解放される