CDK v2 の導入でハピタスのインフラが進化!
株式会社オズビジョン ハピタス事業部 開発グループ SRE 所属の卜部です。
ハピタスの基盤には Amazon Web Services(以下、AWS)を使用しています。その基盤の運用には AWS Cloud Development Kit(以下、CDK)を 2023 年 1 月から導入しました。今回は、CDK v2 を使用している経験を共有し、どれだけ運用が向上したかについてお話しします。
メリット
- TypeScript と CDK の組み合わせを活用することで、プログラムの記述がスムーズに行え、エディターで補完機能が利用でき、関数の説明などが即座に確認できます。
- 単体テストが容易に実行でき、デグレーションのリスクが低減します。
- 既存のデプロイ済みリソースとの差分を手元で確認できるため、運用中のトラブルシューティングが効率的に行えます。
- リソース間の依存関係や呼び出し関係を視覚的に理解しやすくなりました。
導入前の課題
導入前、手動で AWS コンソール上にリソースを作成する作業と、CloudFormation テンプレートを使用してリソースの作成、更新、削除を行う作業が混在していました。
また、リソースの命名規則が統一されておらず、リソースの用途が明確でない状態でした。
これにより、どのリソースがどのような目的で構築されたのかを理解することが難しく、調査と運用に余計な時間がかかっていました。
導入のタイミングで行ったこと
- 言語の選定
- フロントエンドで TypeScript を使用していることもあり、エディターの補完機能が優れている TypeScript を採用しました。
- 導入理由
- AWS が主要なインフラであり、AWS がメンテナンスしている点、プログラミング言語でインフラ構成を記述できるため。
TypeScript + CDK の組み合わせ
TypeScript はフロントエンドやサーバーサイドのエンジニアにとっても馴染み深い言語であり、リソースの状態を共有するのに適しています。
SRE メンバーも TypeScript や Node.js に抵抗がないため、CDK の導入はスムーズに進行しました。
また、リソースの作成時に補完機能が利用でき、必要な定義が明確になるため、リソースの作成作業が迅速に進行できるようになりました。
CDK v2 の導入により、ハピタスのインフラストラクチャが大幅に向上し、運用効率が飛躍的に向上しました。
Unit Test が使えるため、デグレの心配が減る
CDK 構築時にすぐ導入したのが Snapshot test です。
これを使うことでリファクタリングを恐れず実施できることと、変更のあった差分がテスト失敗の差分になるので実装者にその差分であっているのか意識させることができます。
既存のデプロイ済みのリソースと diff で手元で差分を確認できる
既存のリソースとの差分を確認できる機能は CloudFormation にも備わっていますが、CDK の場合、ただ cdk diff
と入力するだけで済みます。
このわずかなコマンドだけで、AWS コンソールを開くことなく、手元で全体のリソースの差分を確認できます。
AWS コンソールで差分を確認する手順と手元での確認の速さとの間には圧倒的な差があり、これに感銘を受けました。
リソース間の依存関係を可視化しやすい
スタック管理、リソースの定義、ディレクトリ構造など、どのように整理すべかを一度整理すれば、それに従ってリソースがどこで管理されているかが直感的に理解できます。
まとめ
運用を安全かつ安定的に行うために、CDK は非常に有用であることが確認されました。導入から 1 年以上経過しましたが、社内では CDK が不可欠なツールとなっています。
最終的には CDK を使用して、あらゆるリソースをわかりやすく運用管理したいと考えています。
Discussion