AWS re:Invent 2023に参加してきました
この記事は、Finatextグループ10周年記念アドベントカレンダーの6日目の記事です。昨日は翁長さんが「Amazon AuroraとSnowflakeをDynamic Tableを用いてリアルタイム連携したお話」という記事を公開しています。
こんにちは、エンジニアの大木です。
先日、ラスベガスで開催された AWS re:Invent 2023 に参加してきました。弊社からは合計3人での参加で、自分自身は初めての参加でした。
弊社CTOをはじめ、既に多くの方が参加レポートを書いていますが、初参加のエンジニアが現地で具体的にどんな体験をしたのか、自分の記録も兼ねて記事にしたいと思います。
Keynote
4日間に渡って毎日実施される Keynote では、それぞれでAWSの新しいサービスや機能が発表されます。新サービスについては特に Amazon Q が今後の仕事の進め方を大きく変えていく可能性がある、という意味で最も気になりました。
ただ技術者としては、新サービスの発表が最も少なかった、最終日の Dr. Werner Vogels の Keynote が現地で聞けて良かったな、と感じます。内容は各所で書かれているのでスキップしますが、技術者としてどういうスタンスでいるべきか、どういう考え方をすべきか、深く考えさせられました。
Sessions
re:InventでAWSが提供するSessionには複数のtypeがあります。
私は、GameDay, Chalk Talk, Workshop, Breakout Sessionに参加しました。
- GameDay … 3–4人のチームで、課題を解いていくセッション
- Chalk Talk … 100人程度の参加者で、ホワイトボードでスピーカーと対話形式で進めるセッション
- Workshop … 各自、ハンズオンで課題を進めていくセッション
- Breakout Session … 数百人に対して、スピーカーが発表するセッション
以下は参加したSessionのメモです。
GameDay
GHJ302: AWS GameDay Championship: Network topology Titans
Unicorn Rentalsという会社のエンジニアとして、ネットワーク周りのタスクを進めていくものでした。
個人的にはVPC IPAMやTransit Gateway, Network Firewall等、普段は触ることが無いサービスを利用するのは良い経験になったと同時に、最後に時間が足りなくなったこともあり少しくらいは事前知識を仕入れてきたら良かったな〜と思うこともありました。
Chalk Talk
FSI313: Build highly resilient multi-Region databases for financial services
- component failoverではなく、full-stack failoverの話。
- 最初はUDR(Uni-directional replication), active-passiveが基本となるという話だったが、質問者との対話の中で最後はBDR(Bi-directional Replication), active-activeについてのセッションになった。
- UDR, active-passiveにおいてのfailover
1. application trafficをregion1で止める
2. region2でreplication lagが0になるのを待つ
3. region2のdatabaseをprimary databaseにpromoteする
4. reconcileして、必要に応じてtransactionをregion2に反映する
5. DNS Cutoverする
6. region1にread replicaを作成する - BDR, active-activeの選択肢
- VPC Peeringでcross-regionの書き込みを実施する
- AuroraのWrite Forwardingを利用 - AWS Secrets Managerでdatabase credentialsだけで無く、endpoint等を保持することでFailover時にまとめて更新可能
WorkShop
SAS403: SaaS survivor: Building a rich multi-tenant operations experience
API Gateway/Lambda/DynamoDBを利用しているSaaSにおいて、以下の課題をハンズオン形式で解いていきました。
- 監視と通知をtenantごと分割する
- API Gateway Lambda AuthorizerにてtenantID/tenantNameをログ出力し、Metrics FilterでDimensionを設定 - tenantのパフォーマンスがお互いに影響しないようにする
- API GatewayのUsage PlanとLambdaのConcurrency Limitを利用 - インフラレベルでtenant分離を実現する
- API Gateway Lambda AuthorizerにてCognito Identity Poolとget_credentails_for_identityを利用して、tenantに特化したcredentialsを取得
- このcredentialsのaccess keyを、実際の処理を実行するLambdaに渡し、Lambdaはそれをもってresourceにアクセスする - tenant分離の監査
- Step Functionsを利用して、定期的にAthenaでクエリを実行し、違反したものをCloudWatchへ送信
Breakout Session
SAS308: SaaS anywhere: Designing distributed multi-tenant architectures
- SaaS anywhereとは、アプリケーションの一部をproviderではなくtenantに配置する形式で、近年増えているtopic
- SaaS anywhereは設計が複雑になるが、その中でもSaaSのCore Valuesを維持することが大事
- Agility, Economy of scale, Operational efficiency, Growth, Reduced Cycle time - Distributed data stores
- databaseのみtenantに配置するモデル
- compliance文脈で、tenantがdataを自らcontrolしたい場合など
- アクセスはassume roleでやりましょう - Distributed application services
- 一部のapplicationをtenantに配置するモデル
- tenant分離には有効
- PrivateLinkを利用するとよりreliableになる - Remote application plane
- Control Planeのみproviderに配置するモデル
- compliance文脈や、tenantにLegacyな文化がある場合など
- providerのCloudFormationで各環境に同じようにデプロイする
ARC309: Using zonal autoshift to automatically recover from an AZ impairment
- Hard FailureとGray Failure
- Hard Failureは1つのAZが完全にダウンするもので、過去10年で起きたのは、ある小さなregionでの1回限り
- Gray FailureはあるAZの一部の調子が少し遅くなったり、一部処理がエラーとなるもの。ちょくちょく起きている - AWSのShared Responsibility ModelにおけるAZ impairment
- Lambda/DynamoDB/S3/API Gatewayに関しては、AZ impairmentからの復旧はAWSが完全に責任を持つ
- AWSは、AZ impairmentが起きても良いように、常に1つのAZ分のcapacityを空けている
- Lambda Patternがよく利用されるのは、customerがAZ impairmentについて考えなくても良いためというのもある
- 反対にEC2/RDS/ELBに関しては、customerが復旧に責任を持つ - マイクロサービスアーキテクチャにおけるAZ impairment
- siloedモデルはdetectionもrecoveryも容易
- non-siloedはより疎結合で、スケーラブル - zonal shiftとzonal autoshift
- ELBではzonal shiftとzonal autoshiftが利用できる
- zonal autoshiftでは、practice runがrequired(1週間に30分zonal shiftがapplyされる) - 最終的には、cost(capacity)とuser experience(復旧時間)のtradeoff
API401: Advanced serverless workflow patterns and best practices
- Step Functionsが実は様々なユースケースで利用できるよという話
- Lambdaでの簡単な処理は、Step Functionsに移行できるものがある
- 例えばDynamoDBへの操作をStep Functionsは提供している
- 自身でコードを書かなくて良いというメリットがある - StandardとExpressの話
- Step Functionsは料金が高いと言われるが、Expressを利用すれば(Standardに比べて)とても安くなる
- idempodentな処理で5分以内に完了するものはExpressが良い可能性が高い - その他便利機能・パターン
- Intrinsic functions, Callback Pattern, Saga Pattern, redrive, http request, distributed map state…
- https://serverlessland.com/workflows
- https://serverlessland.com/explore/reinvent2023-api401
EBC (Executive Briefing Center)
出発前にAWSの方にアレンジしていただき、Amazon Cognitoに関するEBCを開いていただきました。
EBCは、少人数でAWSのExpertと直接議論ができる場で、弊社からは渡米した3人、AWSからExpertが3人参加しました。
内容はNDAのため記載できませんが、弊社からはユースケースの説明や機能要望等、AWSからは現状の開発の状況、ロードマップ、内部のアーキテクチャについて共有をしていただきました。
EXPO
re:Invent では、たくさんの企業がブースを出して自社の宣伝をしています。
DatadogやSentry, SonarCloud等、既に利用しているサービスのブースも出ていましたが、初めて知るサービスのブースが非常に多く、数時間にわたって気になったブースをアプローチし、デモを見せてもらったり内容を聞いたりしていました。
TIPS
ホテル
私は The LINQ Hotel + Experience に泊まりました。
re:Inventのメイン会場であり、毎朝Keynoteが行われる The Venetian からは徒歩10分ほどで移動可能で、値段もリーズナブルなので、とてもおすすめです。
AWSが提供するホテルによっては The Venetian まで1時間弱かかることもあり、少しでも夜間の睡眠時間を稼ぐためには、The Venetian から近いホテルが良いと思います。
なお、 The LINQ Hotel + Experience からは駐車場を通ると The Venetian までのショートカットもありました。
持ち物
毎日10キロ以上は歩くので、履き慣れたスニーカーは必須です。
また、現地では忙しくなるため、飛行機では少しでも長く寝たほうが良く、快眠グッズも持っていくのをおすすめします。
自分は、ノイズキャンセリングヘッドフォンと、質の良いアイマスクを持っていきました。
また、各所でswag(お土産)をもらうことが多いため、スーツケースは半分程度空けていくことをおすすめします。
交通
空港との行き帰りはタクシーと路線バス、会場間の移動ではモノレール、シャトルバス、Uberを利用しました。
モノレールやシャトルバスは無料で利用できますが、一部会場からはモノレールが遠かったり、シャトルバスも大規模Sessionの後だと長蛇の列ができていたりするので、計画的な移動が大事です。
シャトルバスに関しては、夕方は渋滞もしていました(直前に行われていたF1の影響で、道も狭くなっていたようです)
空港との行き帰りはタクシーやUberがおすすめではありますが、路線バスに乗れば1/10以下の値段で移動することができます。
英語
現地では英語のやり取りが多く発生します。KeynoteやSessionでは特にリスニング力が重要ですが、例えばEXPOでは企業の出展ブースで現地のエンジニアと1対1で会話することになるため、スピーキング力も必要です。
弊社では週に一度、福利厚生で英会話レッスンを受けることができます。自分は元々英会話には比較的自信があったことに加えて、このレッスンを数年間受講していたこともあり、現地のコミュニケーションでも大きく困ることはありませんでした。
最後に
以上、AWS re:Invent 2023の参加記でした。
この1週間は、普段の業務から離れて、技術的な事に頭を全力で使う事ができて、とても贅沢な体験だったなと思います。
なお、Finatextでは一緒にビジネスを成長していけるエンジニアを募集しています!
FinatextではAWSをメインのクラウドとして使っており、かつ各エンジニアの裁量も大きいため、AWSのサービスを業務として使い倒せる環境が整っています。
re:Inventに参加された方も参加されていない方も、ご興味がある方はぜひお声がけください!
明日は六車さんによる「GitHub ActionsのみでAtlantis likeなTerraform CICDの仕組みを構築する」の記事です。お楽しみに!