Construct your constructs: AWS CDK を使用して大規模なアーキテクチャを作成する#AWSreInvent #BWP302
re:Invent 2023 で行われた BreakOut セッション Construct your constructs: Use AWS CDK to create architecture at scale (BWP302) のセッションレポートです。
概要
Learn how to rapidly scale your organization’s cloud strategy with AWS CDK. Hear the story of how Amazon’s Buy with Prime created secure-by-default CDK components to provide engineers with the building blocks needed to create incredibly secure and extensible ecommerce systems, cutting down on costs, delivery time, and overhead. (日本語訳)
AWS CDK を使用して組織のクラウド戦略を迅速に拡張する方法を学びます。 Amazon の Buy with Prime がデフォルトで安全な CDK コンポーネントを作成し、驚くほど安全で拡張可能な e コマース システムを構築するために必要な構成要素をエンジニアに提供し、コスト、配送時間、諸経費を削減した経緯を聞いてください。
動画
YouTubeで公開されていますので、詳しくみたい方はぜひご参照ください!
見どころ
Amazon が直近でリリースした Buy with Prime のサービスで AWS CDK を活用しており、その中で得た知見を紹介しています。
特にビジネス観点でのメリットについては、新鮮でとても興味深いものになっています。
また、実際に Buy with Prime で利用したソースコードとドキュメントも公開されているため、一緒に覗いてみると良いです。
セッション内容
Buy with Prime での AWS CDK の活用
Buy with Primeとは、 Amazon の配送システムを利用した支払いサービスです。
現在は、日本では利用できませんが、アメリカの一部で利用できるようになったサービスで、Amazon Prime ユーザは、通常Amazonで商品を購入した際と同じ体験を受けることができます。
詳しくは以下をご参考ください。
この Buy with Prime では、多くのサービスが複雑に連携しており、これらを迅速に構築するために AWS CDK を活用しました。
ただ、CDK package を作成するためには、コーディング、テスト、デバッグといった多くの労力と時間がかかります。
また、Buy with Prime のような大規模なシステムの場合には、多くの CDK package が必要となります。
これらを効率よく行うために、チームから個人を集めて、横断的なCDKチームを作成します。
これにより、それぞれのサービスのバックグラウンドを活かすことで、CDKの標準化に成功しました。
AWS CDK の活用例
Layer1(Dynamo DB)
CloudFormation のリソースと1対1で対応しており、CloudFormationと同じ感覚で記載できます。
ただし、抽象化できていないため、開発の効率化に繋がりにくいです。
Layer2(Dynamo DB)
課金モードと暗号化をパラメータにしており、各チームでは、パラメータを活用することで、最適なリソースの構築ができるようになります。
Layer3(AWS Fargate)
さらに、抽象化されており、Fargate と合わせてよく利用する Network Load Balancer や CloudWatch なども一緒にデプロイし、パターン化します。
これにより、同じユースケースでは、そのまま活用することができるため、大きく開発の効率化に繋がります。
最後に
AWS CDK を利用することでのメリットについては、以前からも知ってはいましたが、ビジネス面でのメリットという観点はあまり考えたことはありませんでした。
L2, L3 Constructでは、まとめて必要なリソースを構築でき、ユースケースに合致している場合は、そのまま利用できるため、大きく時間と労力の削減につながりそうです。
ビジネスの観点から考えると、確かに高Layer Construct を積極的に活用したいものですね。
最後に Buy with Prime で作成した documentation や service-constructs が公開されているので参考にしてみると良さそうです!