前置き
6/22,23日とAWS DEV DAYがありました。こうした大規模なオフラインイベントに参加するのは、4月末にあったAWS Summit以来でとてもワクワクしていました。以下自分が聴講したセッションの概要、資料リンク、感想等々載せていこうと思うので気になるセッションがあった方は、チェックしていただけるといいと思います。
参加した全セッション(敬略,twitter)
一日目
- AWS CDKで学ぶGoFデザインパターン〜IaCにもコード設計〜/後藤 健太 @365_step_tech
- BLEA開発チームが学んだAWS CDKの開発プラクティス 2023年版/高野 賢司 @konokenj
- 成長を続けるSaaSのAWSコスト管理について開発者としてできること/佐々木真也 @taishin
- Amazon ECSデプロイツールecspresso開発5年の歩み/藤原俊一郎 @fujiwara
二日目
-
モダンアプリケーションにおける分散トランザクションの動機と実装パターン/Yuji Nomura@ugnomura
-
Amazon S3・Amazon Cognito・AWS Lambdaのアンチパターンで学ぶセキュリティ・バイ・デザイン/Norihide Saito @a_zara_n
-
モダンフロントエンドデザインパターン 〜 優れたUXを実現するには 〜/淡路 大輔 @gee0awa
概要と感想
一日目
1.AWS CDKで学ぶGoFデザインパターン〜IaCにもコード設計
GoFデザインパターンのうち10個をCDK/TSを通して学ぼうといった趣旨のセッションでした。抽象的なものを説明、理解する時に具体的なものに落とし込んで行うというのは良くやられることですが、今回でいえばその具体例が普段よく使うもの(CDK)で「抽象概念の理解を目的としつつも、そもそもその具体例自体が勉強になる」という一石二鳥のセッションでした。「いつもやってたあのタグの付け方はCompositeパターンが使われてそうだなぁ」とか思ったり、普段使っているだけだったCDKの中身の設計を垣間見ることができたりして、非常に実りある時間でした。個人的にAbstract Factoryは直近でCDKの設計に活かせそうで非常に勉強になりました。
2. BLEA開発チームが学んだAWS CDKの開発プラクティス 2023年版
AWSさんはCDKを用いた開発におけるセキュアなベーステンプレートとしてBLEA(Baseline Enviornment on AWS)を提供しています。
このBLEAのv3が今年の4月末にリリースされたのですが、その設計思想であったり、そもそもBLEA開発チームがどのようなモチベーションでBLEAを提供しているかを知ることができたセッションでした。ちょうど1ヶ月前にJAWS-UG CDK支部が主催しているAWS CDK Conference Japan 2023に出た時にこのBLEAの存在を知り、その時に「コンテキストの渡し方とか結構変わったよね」とか話されている方がいて、そのあたりのBLEA(v3)公式解説がこのセッションだったといった感じでしょうか。このセッションがある前からBLEAはとても参考にさせていただいていて、ちょうど同じルームの前の時間帯のセッションが後藤さんの前掲のセッションで、それと合わせると中身をより深く理解できました。
3. 成長を続けるSaaSのAWSコスト管理について開発者としてできること
チャットワークスさんがチーム内でAWSコスト管理にどのような課題を持ち、そしてどのようにしてその可視化を行っているのかを具体的に利用しているサービスを挙げながら説明してくださるセッションでした。開発者は「構築して終わり」ではなく、その運用コストが提供しているサービスの価値に見合ったものであるのか、事業の成長に見合っているかということを、しっかりと自社内で基準を設けて指標化し、継続的に改善していく姿勢が特に重要であると感じました。AWS Summitの時もそうでしたが、こういうコスト管理とかobservabilityの話って大事だよね。やらなきゃだよね。って思って、イベントには出るけど「まぁ情報収集はできたし」といって後回しになりがちじゃないですか?私だけかな。しっかりとプロジェクトのタスクに組み込んでいきたいですね。
4. Amazon ECSデプロイツールecspresso開発5年の歩み
ecspressoは、Amazon ECSのデプロイに特化したOSSです。特徴としてタスク定義とサービスをファイルで管理でき、基本的にそれ以外のリソースは管理しないというシンプルなコンセプトが挙げられると思います。本セッションはそのecspressoがどのような課題感から生まれ、どう進化してきたのか。そしてなぜ多くの人に利用されてきたのか。その魅力に迫るものだったと思います。ecspressoのことを知ったのは、AWS Summitでそれこそ紹介にもあったニンテンドーアカウントのリノベーションプロジェクトのセッションを見た時で、その時から個人的にすごく気になっていました。ちょっとCodeDeployでのECSデプロイに限界や辛さを感じたら、handhookを購入して使用を検討してみようかなと思います。
二日目
1.モダンアプリケーションにおける分散トランザクションの動機と実装パターン
昨今のアプリケーション開発では、顧客側の要求やビジネス状況の変化に応じて、柔軟にかつ迅速にアプリケーションへ新しい変更を加える必要性が生じてきています。そうした要求に応えるには、まず適切なサービス単位の分割、そしてそれを担当する各チームが自律性を持ち、独立したデプロイパイプラインを組めることが良いとされています。そのようなマイクロサービス化したアプリケーションにおいて、気を配らなければいけないのが、分散したトランザクションの最終的な結果整合性をいかにして保つかというところです。このセッションでは、そうした結果整合性を保つためのトランザクションの分割パターンを紹介しています。私は未だ、サーバレスをゴリゴリ使うような非同期的なトランザクションが多く生じるマイクロサービスの開発経験に乏しいので、具体的にイメージするのはなかなか難しかったのですが、非常に勉強になるセッションでした。
2.Amazon S3・Amazon Cognito・AWS Lambdaのアンチパターンで学ぶセキュリティ・バイ・デザイン
各種AWSサービスの登場により、誰でも比較的容易にインフラ設計ができるようになりました。一方で、そうしたインフラを大衆化したクラウドサービスの設定ミスなどをつく攻撃者も増えてきています。本セッションでは、
S3、Cognito、Lambdaに焦点を当てて、そうした攻撃者からサービスを守るためにアンチパターンを知ろうというのが目的でした。特にS3における画像アップロードで、ユーザ指定のContent-Typeをそのまま利用することや、アップロードしたものと配信設定したものを同一オリジンから配信することの危険性については、これからしっかり意識していこうと思いました。
3.モダンフロントエンドデザインパターン 〜 優れたUXを実現するには 〜
先週以下のような記事を書きました。
私自身、遅まきながらようやく真面目にモダンフロントエンドの流れに追いつこうと学習を始めた所に、ちょうどぴったりなセッションでした。モダンフロントエンドの英語3文字レンダリング手法(CSR,SSR,SSG,ISG,ISR)が分かりやすくスライドにまとまっているので、自分の記事から色々文字ベースで潮流を追って行った後に、本セッションのスライドを見るとかなり頭の中が整理されると思います。改めて、自分が扱うアプリケーションの特徴に合わせて技術選定をするべきだなと強く思いました。裏でどういったレンダリング手法が使われているのかということを知らずに、下手に「Reactだからモダンだねぇ〜」という感覚でいると、後々痛い目みる気がします。(ReactにしたのにUX改善されてなくない...?的な、何ならサーバー言語フレームワーク+JQueryでちょっと頑張ってた時の方がいい感じなんですけどみたいな。)
最後に
こうしたオフラインイベントはとても良いです。オンラインの勉強会とかで気になるものを見たりするのもいいのですが、やっぱりオフラインの方がテンション上がりますね。皆さんもぜひ気になったイベント等は実際に現地に出向いてみると、良かったりするかもですね。
その他資料