SREがAWS re:Invent 2023で参加した全セッションの概要と感想

今年もAWS re:Inventに行ってきたので参加したセッションの内容メモを残します。

自分用のメモ 兼 社内向けの出張報告なので、多くの人に読んでもらうことを想定していないのはご容赦ください:pray:

なお、筆者はZOZOTOWNのマイクロサービス基盤をEKSで構築・運用しているSREです。感想は所属チーム宛に書いています。

# Breakout Session

スライドでプレゼンする基本の形式。YouTubeでアーカイブが公開されている。

## Amazon EKSの未来 (CON203)

**The future of Amazon EKS (CON203)**

https://www.youtube.com/watch?v=c9NJ6GSeNDM

[AWS公式ブログの記事](https://aws.amazon.com/jp/blogs/news/amazon-eks-and-kubernetes-sessions-at-aws-reinvent-2023/)でも「必見」とされたセッション。スピーカーはAWSのKubernetes関連の責任者であるNate Taber氏。

![CON203](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502255/d784c378-400a-a654-c951-d533347dd334.jpeg)

いくつかあった新発表で個人的に注目なのは[EKS Pod Identity](https://docs.aws.amazon.com/eks/latest/userguide/pod-identities.html)。

従来の[IAM Role for Service Account (IRSA)](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html)では下記だった。
- OIDCプロバイダーをEKSクラスターごとに作成する必要がある
- よってEKSクラスターごとにIAM Roleを作る必要がある（つらい）
- AWSの世界でIAM Roleを作り、**k8sの世界で**それをService Accountに紐づける

EKS Pod Identityだとこうなる。
- OIDCプロバイダーは不要
- 代わりにEKS Add-onでエージェントを追加する
- AWSの世界でIAM Roleを作り、**AWSの世界で**それをService Accountに紐付ける

つまりシンプルになった。地味だが便利。

先日公開された[公式ブログ記事](https://aws.amazon.com/jp/blogs/news/amazon-eks-pod-identity-simplifies-iam-permissions-for-applications-on-amazon-eks-clusters/)も合わせてご確認いただければ。

```
感想: Blue/Greenでクラスターを分ける前にこれを入れたい！
```

## IaCの新時代: cdk8sによる効果的なKubernetesの管理 (BOA310)

**New era of IaC: Effective Kubernetes management with cdk8s (BOA310)**

https://www.youtube.com/watch?v=qwt-qxX48T8

[cdk8s](https://github.com/cdk8s-team/cdk8s)と[cdk8s-plus](https://github.com/cdk8s-team/cdk8s-plus)を紹介するセッション。

背景にあるのはYAMLのつらみ。KustomizeやHelmはYAMLから完全に目を背けることはできない。

cdk8sはTypeScriptやGoなどの言語からYAMLを生成するフレームワーク。cdk8s-plusはcdk8sで使えるライブラリ。

セッションでは2つの関係があまり説明されず混乱したが、あとで下記の記事を見て納得がいった。

https://track3jyo.com/2021/12/lets-start-cdk8s/

> CDK を触っている方なら予測がつくと思いますが、CDK8s(cdk8s-core) 自体は CDK でいう L1 Constracts を提供しています。L1 Constracts でゴリゴリ書いていくのもいいですが、CDK といえばやはり L2 Constracts の存在ですよね。そこで CDK8s+ です。CDK8s では CDK8s+ が L2 Constracts にあたります。

つまり、cdk8sだけだと各リソースの必須プロパティを全て書く必要があるが、cdk8s-plusはそれを抽象化した上でデフォルト値や便利なメソッドを提供してくれるのでコード量が圧倒的に減る。

セッションの後半は[AWS Controllers for Kubernetes(ACK)](https://github.com/aws-controllers-k8s/community)とcdk8s-plusを組み合わせる例の紹介。

ACKは30以上のAWSサービスに対応するコントローラー。それとcdk8s-plusを組み合わせて、めっちゃ少ない行数でAWSリソースを管理しようぜというデモ。

![BOA310](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502255/d4cf74af-0955-e326-2211-eecae91f0909.jpeg)

VSCodeに[CodeWhisperer](https://aws.amazon.com/jp/codewhisperer/)（AWS版GitHub Copilot）を入れることでいい感じに補完される様子も紹介された。

```
感想: ACKはきっと何かの要件で近いうちにプロダクションに入れる気がする。みんなでモブプロしたい。
```

## ニンテンドーeショップの近代化: マイクロサービスとプラットフォームエンジニアリング (GAM306)

**Modernization of Nintendo eShop: Microservice and platform engineering (GAM306)**

https://www.youtube.com/watch?v=grdawJ3icdA

先日誕生した[ニンテンドーシステムズ株式会社](https://www.nintendo-systems.com/)(サイトがオシャレ)のセッション。

![GAM306](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502255/ff58fa58-b926-ab77-d7ad-9e7e8d830df1.jpeg)


ニンテンドーeショップは昔はオンプレでJava/Tomcatのモノリスなアプリケーションとして動いていたが、2015年からそれをAWSにマイグレーションし、2019年頃からマイクロサービス化を始めた。

- なぜモジュラーモノリスではなくマイクロサービスを選んだのか
- どのようにマイクロサービスの境界線を引いたか
- チーム編成と担当区分はどのようになっているか
- コードリポジトリやCI/CDはどう管理されているか
- api-gatewayとしてOSSのkongをどう使っているか

など、任天堂ファンの自分にとって鼻血が出そうなくらい面白い内容だった。

ぜひYouTubeで資料を見ていただけると。

```
感想: 普段使っているサービスの裏側はテンションが上がるので、弊社・弊チームもますます発信していきたい
```

## [新機能] Amazon Aurora Limitless Databaseでスケールを実現する (DAT344)

**[LAUNCH] Achieving scale with Amazon Aurora Limitless Database (DAT344)**

https://www.youtube.com/watch?v=a9FfjuVJ9d8

RDBにおいて一般的なシャーディングではクエリ・一貫性・保守性の難易度が上がる。

Aurora Limitless Databaseはそれを解決するPostgreSQL互換のDB。

Aurora Serverlessのように自動でスケールするだけでなく、単一のインターフェースなのに自動で内部的にシャーディングしてくれる。

![DAT344](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502255/ccadc15c-8748-b121-1217-7dcda135e65b.jpeg)

やり方は`CREATE TABLE`前にいくつか`SET`クエリを実行するだけ。クエリの文字起こしは下記を参照いただければ。

https://dev.classmethod.jp/articles/report-achieving-scale-with-amazon-aurora-limitless-database/

後半では内部のアーキテクチャが解説された。

![DAT344](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502255/ddbce4cb-4553-d730-0dd2-c6a796094c27.jpeg)

最後に限定プレビューの[申込みURL](https://pages.awscloud.com/Aurora-Limitless-Database-Preview.html)が紹介されたので申し込んでおいた。

```
感想: 今はPostgreSQLのみ・限定プレビューだが、Aurora MySQLでGAになるのが楽しみ！
```

## Amazon VPC Latticeのアーキテクチャパターンとベストプラクティス (NET326)

**Amazon VPC Lattice architecture patterns and best practices (NET326)**

https://www.youtube.com/watch?v=zQk9AIPVdXs

昨年のre:Inventで発表された[VPC Lattice](https://docs.aws.amazon.com/vpc-lattice/latest/ug/what-is-vpc-lattice.html)のセッション。

Amazon VPC Latticeは、サービス間の通信を一貫して接続、監視、保護するアプリケーションレイヤーサービス。言わばVPCに実装されたサービスメッシュ的なもの。

まずはService, Service Network, Auth policiesといった主要コンポーネントについて説明され、具体的な導入手順が紹介された。

複数アカウント・複数VPCにまたぐことができ、インスタンス、Lambda、ALB等様々なサービスに対応。

![NET326-1](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502255/d0cb13b8-ba3b-a641-a1cd-aa70d9bf71ff.jpeg)

その後は最近の機能追加についての紹介。

![NET326-2](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502255/d1d7b86e-bb5a-110e-ad3c-f8bfe8c99890.jpeg)

後半では「よくある質問と答え」という形式で解説が行われた。気になったトピックは以下。

- VPC Latticeの内部でどのようにトラフィックが流れるか
  - YouTubeでスライドを参照
- マイクロサービス専用か
  - もちろんNo。すべてのものを抽象化できる
- サービスメッシュとの違い
  - サービスメッシュはコントロールプレーンとデータプレーンで構成され、1000個ワークロードがあれば1000個のプロキシが存在する。これにはメリットもデメリットもある。
  - VPC Latticeはコントロールプレーンもデータプレーンもフルマネージド。そしてサイドカープロキシが不要（VPC内蔵なので）

```
感想: Istioのリソース管理は、今のところ苦ではないが楽でもないので、それが不要になる世界線は魅力に感じた
```

## GitHubはチームのコラボレーションと生産性のためにAIをどう運用可能にするか (AIM203)

**How GitHub operationalizes AI for team collaboration and productivity (AIM203)**

https://www.youtube.com/watch?v=cOVvGaiusOI

GitHubのスポンサーセッション。

最初はGitHubのAI製品やそれに関する数字についての紹介。例えば...

- 92%の開発者が仕事と仕事以外の両方でAIコーディングツールを使用している（米国）
- GitHub Copilotを使うとコードレビューは67%早くなる
- GitHub Copilotを使うと初回のCIの成功率が45%上がる

![AIM203](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502255/66e9c719-c473-168e-5b04-e14ea546e75a.jpeg)

後半ではGitHub Copilotを導入したCloud Zero社・Stripe社とそれぞれ対談する形で、GitHub Copilotの導入効果をアピール。

初めてスポンサーセッションを見たが、ガッツリ宣伝という感じでこれはこれで面白かった。

```
感想: Copilotすこ
```

## 詳解 Amazon ECR (CON405)

**Dive deep into Amazon ECR (CON405)**

https://www.youtube.com/watch?v=PHuKrcsAaDw

概要と感想は下記に書きました。

https://techblog.zozo.com/entry/aws-reinvent-2023#Dive-deep-into-Amazon-ECR-CON405

# Keynote

基調講演。超でかい会場で開催され、さらに複数箇所に中継される。YouTubeにアーカイブがある。

巷にたくさん記事があるので感想のみ書く。

## Monday Night Live (KEY001)

**Monday Night Live Keynote with Peter DeSantis (KEY001)**

https://www.youtube.com/watch?v=pJG6nmR7XxI

メイン会場に行った。今年のテーマは主にサーバーレスで、発表された新サービスは次の3つ。

- Amazon Aurora Limitless Database
- Amazon ElastiCache Serverless
- Amazon RedShift Serverless Next-generation AI-driven scalling and optimizations

![KEY001](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502255/ffb60c4c-a3a1-4633-aac6-733349f5a035.jpeg)

Aurora Limitless Databaseの発表後、すぐにアプリを開いて「NEW LAUNCH」のセッションを探し、博打で予約したセッションがちゃんと翌日に「Aurora Limitless Database」になってたのが嬉しかった。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502255/aa4b0803-f0fa-5ddb-d165-ca2f25dd87c8.png" width="50%">


## CEO Keynote (KEY002)

**CEO Keynote with Adam Selipsky (KEY002)**

https://www.youtube.com/watch?v=PMfn9_nTDbM

AWS Certification Loungeでコーヒーを飲みながら優雅に中継を見た。

![key002.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502255/54bba4d3-4dcd-67c5-7203-7f4fe1c10918.jpeg)

S3 Express One Zoneや第4世代Gravitonは「すごい！でも今すぐ使う機会はないな...」と思ったが、Amazon Qは「うぉぉお！」と、自分だけでなくCertification Lounge全体が一瞬少しだけ盛り上がった。

そのあと周辺の何人かはマネジメントコンソールを開いて実際にAmazon Qを触り始め、自分や同僚もSlackでスクショを共有しあった。メイン会場だとPCを開くのは難しいので、中継だからこそできたと思う。来年もこのスタイルで行きたい。

# Code Talk

今年からできた形式。ライブコーディングやライブデモを中心に説明が行われる。アーカイブはなし。

## Athenaをカスタマイズして新しいデータソースと連携する (ANT332)

**Customize Amazon Athena to integrate with new data sources (ANT332)**

AthenaはもともとはSQLでS3のデータを分析ができるサービス。Federated Queryの登場からは様々なデータソースに対応するようになった。

Federated QueryはLambdaでデータベース等に接続する。自分でコードが書けるので、オンプレのDBに接続したり、単一のクエリで複数のDBからデータを取得したりすることもできる。下記でSDKが公開されている。

- https://github.com/awslabs/aws-athena-query-federation

コネクタの概要は下記

![ANT332](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502255/dc7b1128-b2f2-2f26-9b5f-d41a2d3e078c.jpeg)

このセッションではCloud9の画面をスクリーンに出しながら、Pythonでデータソースコネクタを書き、それをLambdaにデプロイしてAthenaで使う実演が行われた（ライブコーディング中の写真を取り忘れた...）

```
感想: AthenaのFederated Queryを触ったことがないので勉強になった
```

# Chalk Talk

最初にスライドを使ってサービスの前提知識や前提条件が説明される。そのあとはホワイトボードを使って参加者を含めてディスカッションが行われる。アーカイブはなし。

## フェイルオーバーの決断にビジネスメトリクスを使う (ANT332)

**Using buisiness metrics to make failover decisions (ANT332)**

スライドではECサイトの売上金額をCloudWatchにカスタムメトリクスとしてPUTし、それをダッシュボード化してフェイルオーバーの意思決定に活用するアイディアの紹介がされ、それに関する質疑応答からディスカッションがスタート。

![20231129_201631000_iOS.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502255/3c5b70ac-087e-9183-127f-172071d641ab.jpeg)

ただテーマが限定的すぎてディスカッションがやや難しかった感。

話が脱線してサーバーレスアーキテクチャとALB/EC2/RDS構成の違いみたいな説明が始まったところからあまり聞いていない。

```
感想: カスタムメトリクスを送るかはさておき、ビジネスへの影響度をフェイルオーバー等の意思決定に使うのは大切
```

## AWSのEUCサービスのパフォーマンスとセキュリティの強化 (EUC208)

**AWS end user computing services performance and security enhancements (EUC208)**

普段触らない領域も学びたいので、今年はAWSのend-user computingについて学んでみた（なお去年はIoTを学んだ）

まずは各サービスの比較。SAPの受験勉強で学んだ気がするが全く覚えていない。

![EUC208-1](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502255/f77a319a-d55a-ccb2-5f9c-9c5219b3a370.jpeg)

次にMicrosoft 365との連携についての紹介。

![EUC208-2](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502255/0e8012dd-02ca-7d61-7246-4fef1515776b.jpeg)

あとはどのようなケースでどのサービスを使うかを始めとするディスカッションが行われた（写真が下手すぎる）

![EUC208-3](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502255/ea751474-b4fe-b9ad-93d2-5e85620a55cb.jpeg)

```
感想: end-user computing完全に理解した()
```

# 補足: セッションIDの読み方

例: CON405: Dive deep into Amazon ECR

英字は分類(CONはContainer)を、数字の百の位がレベルを表します。
- 100 Foundational
- 200 Intermidiate
- 300 Advanced
- 400 Expert

本稿では下記のようなサフィックスはなしで記載しました。
- -S Sponsored(スポンサー)
- -R Repeat(再公演)
- -SC SIMULCAST(中継)
- -NEW NEW-LAUNCH(新発表)

# おわりに

re:Inventは本当に最高なので、ぜひ皆さんもラスベガスに足を運んでください！

![badge pickup.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502255/b69a1078-dad8-83a6-d853-7a3173be3f0d.jpeg)