はじめに
こんにちは。ブランドソリューション開発本部バックエンド部SREブロックの山岡(@ymktmk)です。
11/27〜12/1にラスベガスで開催されたAWS re:Invent 2023に、弊社から7名のエンジニアが参加しました。この記事では現地の様子とセッションについて紹介します!
AWS re:Invent 2023とは
re:InventはAmazon Web Services(AWS)が主催する大規模な技術カンファレンスです。
AWSが提供する様々なクラウドサービスに関する新サービスやアップデートが発表されます。参加者はセッションやワークショップを通じて、最新のクラウド技術に触れることができます。
内容は非常に多岐にわたり、コンピューティング、データベース、人工知能(AI)、機械学習(ML)、セキュリティ、開発ツールなど、さまざまな分野にわたるトピックが取り上げられます。
今年のre:Inventは、ChatGPTを中心とする生成AIが流行ったこともあり、その色がセッションや企業ブース、新サービス発表等に表れていました。
現地の様子
Keynoteでは、AWSの新サービスとしてAmazon Qが発表されました。
Amazon QはChatGPTのようなAIチャットボットで、AWSに関する質問をすると回答してくれるサービスです。まさに、生成AIと言わんばかりのサービスがリリースされましたね。
AWSの最新情報をいち早く知ることができるのも、re:Inventに参加する楽しみの1つだと思います。
ElastiCache Serverlessも今回の目玉アップデート。
会場内をAmazon S3 Express One Zone君が歩いていました。こちらも今回のアップデートの1つです。
こちらがExpoです。各企業のブースが設置されており、ノベルティを貰うことができます。国内ではまだまだ知られていないサービスを知る良い機会でした。
イベント期間中は朝食と昼食が提供されます。各会場で食事が用意されており、特に美味しい会場があるそうです。また、至る所に飲み物、軽食が提供されていました。
最終夜には「re:Play」というパーティーが開催されました。ライブステージやドッジボールなど音楽からアクティビティまで楽しめます。
re:Inventのオブジェと写真撮影できるコーナーがあったので集合写真を撮りました。
セッション紹介
ここからは各メンバーが気になったセッションなどを1つずつ紹介します。
- Workshop
- Chalk Talk
- Breakout Session
- Gamified Learning
- Expo
Workshop
Build a web-scale application with purpose-built databases & analytics (DAT403)
ブランドソリューション開発本部ZOZOMO部OMOバックエンドブロックの岡元です。
普段はZOZOTOWNとブランド実店舗をつなぐOMOプラットフォームである「ZOZOMO」のブランド実店舗の在庫確認・在庫取り置きサービスの開発、保守をしています。
このワークショップの目的は以下のとおりです。
The goal of this workshop is to understand that modern applications have a diverse set of access patterns, and the requirements imposed by those access patterns will determine which database can best serve those requirements.
ワークショップではまず、完全に動作する書店アプリケーションに触れ、様々な機能が提供されていることを確認します。次に、不完全な書店アプリケーションにそれらの機能を実装していくことでAWSが提供する様々な目的別データベースについて学びます。
目的に適したデータベースを利用することでスケール、パフォーマンス、コストに関して妥協することなく機能を実現できます。ワークショップで提供されていた書店アプリケーションでは、以下の機能がそれぞれのデータベースで提供されていました。
機能 | データベース |
---|---|
商品カタログ/ショッピングカート | Amazon DynamoDB |
注文処理 | Amazon Aurora PostgreSQL |
検索 | Amazon Amazon OpenSearch Service |
推薦 | Amazon Neptune |
トップセラーリスト | Amazon ElastiCache for Redis |
個人的にはこれまでAmazon Neptuneに触る機会がなかったので、これに触ることができたのは新鮮でした。
また、我々が普段開発しているブランド実店舗の在庫確認・在庫取り置きサービスでも目的ごとにデータベースを使い分けています。アプリケーションへの更新リクエストを処理する記録のシステム(Systems of Record)にAmazon DynamoDBを、参照リクエストや集計リクエストを処理する導出データシステムにAmazon Auroraを利用しています。このワークショップを通して改めてAWSが提供している目的ごとのデータベースの豊富さを知り、今後のサービス拡充においては導出データシステムを構成するコンポーネントとしても幅広く活用できることを実感しました。
ワークショップの内容はこちらからも見ることができます。
また、ワークショップで使用したアプリケーションはGitHubでも公開されています。
Make applications highly resilient with AWS Fault Injection Service (FSI304)
ブランドソリューション開発本部ZOZOMO部OMOバックエンドブロックの木目沢です。
最近、カオスエンジニアリングという言葉を聞くことが多くなりました。
しかし、実践となると本番環境を壊す必要があるということで躊躇しているチームは多いと思います。
このワークショップはAWS Fault Injection Service(AWS FIS)を使って、事前に用意されたAPIを壊してみるというものです。そして結果を確認しながら実験テンプレート実施中でもAPIのリクエストが通るように環境を修正します。うまく修正できれば点数が加算され、分からず答えを見ると減点です。参加者全員で点数を競うというゲーミフィケーションが取り入れており、楽しいワークショップでした。
実験テンプレートは事前に用意されており、内容は以下のようなものでした。
- 1台しかないRDBのインスタンスを落とす
- あるAZへのALBの通信を落とす
- ECSのタスクを落とす
- AZの一部をすべて落とす
それぞれの実験テンプレートを実行されながらもAPIが動作するようAWS環境を修正していきます。
今回実験テンプレートは用意されておりましたが、実際に自分のプロダクトで使う場合、実験テンプレートを作ること自体は難しくなさそうです。AWS Fault Injection Service(AWS FIS)を作成し、実行する流れは次の図のとおりです。
ただし、実際に使う場合は以下のような点を検討しておく必要があると感じました。
- 現在の構成を再確認し、どこをテストするのかを考え、実験テンプレートを作成する。
- 予期せぬことを検知するためにテストするのがカオスエンジニアリングですが、事前にできるだけ環境を壊しても問題ないよう対策を取っておく。
- 本番環境で実施する場合、サービスへの影響を最小限に抑えるための回復策を検討しておく。
検討事項は多いですが、AWSだからこそ容易に実施できるサービスですのでぜひ利用してみてください。
最後にre:Inventにおけるワークショップについて補足します。
私が参加したワークショップでは、資料・実施手順はすべてブラウザで確認できるものが用意されていましたのでGoogle翻訳などで確認しながら進めることが可能でした。講師に質問する場合など英語が必要な場面もありますが、ワークショップはYouTubeに公開されないという点もありますので、参加される方はぜひチャレンジしてみてください。
Chalk Talk
A capability-oriented approach to defining your cloud architecture (ARC210)
技術本部SRE部ECプラットフォームサービスSREブロックの姫野です。
私はクラウドアーキテクチャに関するChalk Talkを紹介します。
Chalk Talkとは最大100名くらいが入れるre:Inventでは比較的小さいサイズの会場で講師2名が講義形式で行うセッションです。
前半はセッションのテーマに関するAWSサービス等についての概要をスライドを使って説明し、後半はホワイトボードを使ったりしながらより詳細な内容を深掘りしていきます。
このセッションの特徴は講師と参加者が活発にコミュニケーションを取ることです。
講師が説明した内容について、参加者が手を挙げて質問して答える、というやり取りが他のセッションに比べて頻繁に行われます(時には質問がたくさん出過ぎて講義が全く進まないことも…)。
当然、質問者と講師のやりとりは英語ですし、資料もないので、内容を理解するためにはある程度の英語力が必要になります。
私が紹介するChalk Talkのタイトルは「A capability-oriented approach to defining your cloud architecture」です。直訳すると「クラウドアーキテクチャを定義する能力指向アプローチ」です。
サービスに求められる能力(機能)の観点からAWSサービスの特徴にフォーカスしてアーキテクチャを考えようというアプローチです。
アーキテクチャを考える具体的な流れは以下の通りです。
- サービスに求められる能力(機能)を明らかにする(例:ECサイトなら商品の検索機能・カート投入機能・決済機能等)
- それぞれの機能に求められる要件(特徴)を決める(例:パフォーマンス・スケーラビリティ・セキュリティ・コスト等)
- 候補となるAWSサービスの特徴を理解(抽出)して評価する
- 使用するAWSサービス(アーキテクチャ)を決める
- 実際にアーキテクチャを試して有効性を確認する
ポイントとなるのは1と2で機能に求められる特徴を明確にして、3と4でその特徴に合致する特徴を持つAWSサービスを選ぶことです。
例えばECサイトの商品の検索機能を設計する際、この機能に求められる特徴は以下のようになったとします。
- スケーラビリティ
- パフォーマンス
- 可用性
この機能における商品のメタデータを保管するデータストアを選ぶ際にはスケーラビリティとパフォーマンス、可用性を特徴とするDynamoDBを選ぶことが望ましいと言えます。なお、実際はこれ以外にも細かい要件があるはずなのでこんなに単純な話ではありません。
要は機能に優先的に必要な特徴とAWSサービスの特徴をよく理解してアーキテクチャを考えることが重要だと言っています。
当たり前と言えば当たり前な内容ですが、アーキテクチャの考え方を改めて言語化して整理できたセッションでした。
Chalk Talkの醍醐味は講師(そのセッションで扱うテーマやAWSサービスのプロフェッショナル)とのインタラクティブなコミュニケーションです。
良い質問がたくさん出ればその分内容も充実するため、参加者次第で満足度がより高くなる魅力的なセッションです。
内容を聞き取ったり質問するにはとにかく英語力は必要ですが、ぜひ一度トライしてみてください!
Breakout Session
Dive deep into Amazon ECR (CON405)
技術本部SRE部ECプラットフォーム基盤SREブロックの高塚です。
毎年re:Inventでは「Dive deep 〜」または「Deep dive 〜」のタイトルでAWSサービスの裏側を解説するセッションがたくさん開かれます。
私は今回Amazon ECRの裏側について学んできました。
ECR Registryは次のようなアーキテクチャです。docker push
などのコマンドをProxy Serviceが受け取り、内部用のAPI Callに変換します。イメージのタグやメタデータはDynamoDBに保存され、イメージのBlob(マニフェストや各レイヤー)はS3に保存されます。
また、すべての通信には認証・認可とスロットリングが適用されます。
PushとPullの両方について詳しい解説がありましたが、ここではPullのみ紹介します。Pullは全部で3ステップです。
クライアントは最初にマニフェストを要求します。タグ等を元にMetadata ServiceがDynamoDBを検索し、それを元にS3上のマニフェストを返します。
クライアントはマニフェストを見て必要なレイヤーをDigestで指定し要求します。ECRは先ほどと同様に、DynamoDBからレイヤーの保存場所を検索しますが、今度は307 Redirect
でS3の署名付きURLを返します。
あとはクライアントがレイヤーをS3から直接ダウンロードするだけです。
このほかに
- リージョン間のレプリケーション
- 脆弱性のスキャン
- 古いイメージを削除するライフサイクルポリシー
の3つの機能の仕組みが紹介されました。内部でLambdaやSQS、Inspectorなどが使われており、とても面白い内容でした!
なお、アドベントカレンダーにてその他のセッションについてもレポートしています。よろしければお読みください!
Gamified Learning
AWS Jam: Security (sponsored by Fortinet and Palo Alto Networks) (GHJ205)
技術本部SRE部ZOZOSREブロックの鈴木です。
普段はZOZOTOWNのSREエンジニアとして、ZOZOTOWNの裏で動いているオンプレミス環境の運用・保守をしつつAWSへの移行を進めています。また社内のAWS環境の管理者として全社にまたがるAWS環境の改善等々も行っています。
参加した「AWS Jam」について、体験できたことと得た学びについて紹介します。
Jamについて
Jamの概要については下記リンクにて詳細が書かれていたため引用します。
AWS Jam とは、AWS re:Invent や AWS re:Inforce、AWS Summit などのグローバルで展開されているイベント、または AWS クラスルームトレーニング などで提供されている人気コンテンツの 1 つです。AWS のユースケースに沿って用意された様々なテーマの課題 (チャレンジと我々は呼んでいます) を解決していく実践型のイベントで、「AWS を楽しく学ぶ」ことができます。参加者はチームを組み、AWS やシステム開発の知識と経験を活用したりその場で調べたりしながら、与えられた複数のチャレンジを AWS マネジメントコンソールなどを利用してクリアしていきます。チャレンジごとに獲得点数やヒントが設定されており、時間内にクリアしたチャレンジと使用したヒントを総合して計算されたチームの得点を競い合います。
AWS Jam は、主に 3 つの目的で提供しています。
・Play (遊ぶ): 得点を競うゲーミング形式のイベントを通じて、楽しみながら課題解決に挑戦します。チーム内でのコミュニケーションの促進にもつながります。
・Learn (学ぶ): シナリオに沿った課題を解決することで、AWS サービスの知識やスキルを身につけていきます。普段扱っていない AWS のサービスや機能を新たに学んだり調べたりする機会にもなります。
・Validate (検証する): 課題解決を通して、参加者自身の AWS サービスに対するスキルや理解度を確認できます。
2023 年 AWS Summit Tokyo で実施する AWS Jamのご案内
1チーム4人で与えられた課題を解いていく実践型のイベントです。各チームに与えられたAWS環境へアクセスして環境を修正、構築することで得点を得ることができます。
Jamにはテーマがあり、「DevOps」「GenAI」など様々中で、今回は「Security」がテーマのJamに参加しました。
4人でチームを組んでいくこともその場で出会ったメンバーと組むこともできます。日本人の参加者もちらほらおり、会場にて出会った日本人同士でチームを組んでいる方が多いように見えました。その場で会った海外エンジニアと組んで出ることもよい経験となりそうです。自分はちょうど知り合いがいたため日本人4人チームで参加しました。Jamのゲーム画面にはチーム内で連携をするためのチャット機能がついており、なんとこちらは自動翻訳がついていました。メンバーそれぞれの表示設定に合わせて翻訳されるためあまり言語の壁を感じる必要はなさそうです。
チャレンジの内容については今後参加される方が楽しめるように控えますが、様々なサービスに対するチャレンジが用意されていました。普段触ったことがあるサービスからそんなのあったのかというサービスまで用意されており、知っているものであれば復習に、未経験のものは新たに学ぶ機会となりました。
チャレンジによってはAWSのサービスのみならず、AWSのサービスと連携するsponsored by Fortinet and Palo Alto Networksなサービスを体験でき、新たに知ることができました。
解いた際の得点が減ってしまいますがClue(ヒント)が2つ用意されています。すべては見ていないですが1つ目は取っ掛かりを教えてくれ、2つ目は解法を教えてくれるような内容でした。解き方が分からず、詰まった際にはClueを見て手を動かすだけでも体験、学びがあったため、参加される際には恐れずにClueを使っていただきたいです。
AWS Security Jamでは一気に様々なサービスで検討すべきSecurityをGamifiedに楽しく知ることができました。AWSのサービスは日々増えており、キャッチアップだけでも大変ですがJamを通して検討、気をつけるべき箇所の手札を増やすことに繋がったことが大きな収穫でした。この規模であるかはわかりませんが、日本でJamが開催されることも、AWS スキルビルダーページからJamの体験もできるようなのでぜひ一度体験してみてください。
Expo
Firefly (Automatically turn any cloud into IaC)
生産プラットフォーム開発本部生産プラットフォーム開発部生産開発ブロックの八代です。
私からはExpo内で気になったサービスがあったためご紹介します。Expoでは日本であまり見かけないサービスが多く展示されていました。特にAI技術を前面に押し出している企業を多く見かけました。
そんな中で私が特に注目したのは、「Firefly.ai」というサービスです。この記事では、Firefly.aiの特徴を紹介します。
Fireflyの概要
Fireflyは、AWSやGCPなどの主要クラウドプロバイダーでのインフラリソース管理を強化するSaaSサービスです。このサービスは、TerraformなどのIaCを使用してクラウドインフラのリソースを管理すると共に、GitHub連携を通じて、クラウド上で管理されていないリソースをコード化できます。また、TerraformやCloudFormationなどを管理画面上から実行しリソースを作成する機能も備えているため、このサービス上でリソース管理などを完結できます。
主な特徴と機能
- リソースの可視化とコード化
- クラウド上で見過ごされがちなリソースを可視化し、IaCに変換してくれます。
- プルリクエストの自動生成
- クラウド上で作成されたリソースとコード管理されているものに差異が発生した際に、対象リソースに対して自動的にIaC化したコードのプルリクエストを出してくれます。
- マルチクラウド対応
- AWSやGCPなど複数のクラウドプラットフォームに対応し、一元管理できます。
- AIを活用したコード生成
- AI技術を利用して、より効率的かつ精度の高いコード生成ができます。
ユーザーインタフェースと体験
製品デモを体験した際、サービスの導入から運用までのプロセスが非常にスムーズであることが印象的でした。管理画面も直感的でわかりやすいユーザーインタフェースだったので、初心者でも容易に扱える設計がされていました。
感想
Fireflyは、事業拡大に伴いインフラ管理が複雑化している企業に最適なサービスだと感じています。AIによるコード生成の精度に関しては導入してみないとわかりませんが、既存のリソースをコード化する「Terraformer」や「Former2」などのサービスと同等以上だと思います。まだ日本企業で導入している事例は見かけていませんが、その機能性と利便性から、今後大きな注目を集めるサービスになると思います。
おわりに
re:Inventは私にとって初めての海外カンファレンスで、その経験は非常に特別でした。KeynoteやBreakout Sessionを通じて、世界の最先端技術を学ぶことで新たな視点やアイデアを得ることができました。
さらに、日本では経験できない規模のカンファレンスで、そのスケールに圧倒されました。現地のセッションの一部はYouTubeを通じてオンラインで視聴できますが、現地にいるからこそ感じる雰囲気や直接のコミュニケーションでしか得られない貴重な経験がたくさんあります。
今回の経験から得た知見を社内外に共有し、これからもAWSを使ってビジネスを拡大していきます。
ZOZOではAWSが大好きなエンジニアを募集しています。ご興味のある方は、以下のリンクからぜひご応募ください!