ZOZOのSREが行くAWS Summit Japan 2024参加レポート

ZOZOのSREが行くAWS Summit Japan 2024レポート

こんにちは。SRE部プラットフォームSREブロックの高塚です。

6月20日、21日の2日間に渡って幕張メッセで開催されたAWS Summit Japanに、SRE部から10名以上のエンジニアが参加しました。この記事では熱気あふれる会場の様子と面白かったセッションについてご紹介します!

AWS Summit Japanとは

www.youtube.com

AWS Summit Japanは延べ3万人以上が参加する日本最大の「AWSを学ぶイベント」です。今年は昨年に引き続き幕張メッセで2日間にわたり開催されました。ライブ配信も行われたほか、2024年7月5日まではオンデマンド配信を視聴できます。

aws.amazon.com

ちなみに2023年と2019年以前はAWS Summit Tokyo、2020年から2022年まではAWS Summit Onlineという名称でした。

会場の様子

入口

朝から大賑わいの幕張メッセ。

撮影:花房

撮影:花房

EXPO

250以上のブースが並びます。

撮影:花房

撮影:高塚

撮影:高塚

基調講演

今年は座席指定券が配布されました。

撮影:鈴木

撮影:鈴木

セッション

2日間で150以上のセッションが行われます。

AWS Summit Japan 2024公式サイトのスケジュールより引用

撮影:高塚

撮影:高塚

お弁当

両日先着4,000名にはお弁当が配られました。

撮影:鈴木

撮影:鈴木

AWS認定者ラウンジ

AWS 認定の保有者が使える休憩スペースです。

撮影:高塚

保有資格に応じたSWAGがもらえます。写真は全冠の江島のもの。

撮影:江島

その他

自由に描けるボード。

撮影:江島

AWS Deep Racerの日本一を決める戦い。

撮影:江島

QuizKnockによるクイズ大会は大盛況でした。

撮影:鈴木

セッションレポート

ここからはSRE部のメンバーが気になったセッションを紹介します。

AWS 環境におけるセキュリティ調査の高度化と生成 AI 活用(AWS-18)

基幹プラットフォームSREブロックの鈴木です。普段はZOZOの持っている倉庫システムやブランド様が触る管理ページなどのサービスのSREとして活動しつつ、社内のAWS管理者としてGuardDutyやOrganizationsの対応を担っています。

内容のまとめ

セキュリティインシデントが発生した際の対応について、AWSの「高い可視性」と「柔軟かつ多様な自動化と機能連携」を活かして、セキュリティ調査の高度化を図ることができます。

これまではセキュリティの調査においてログを分析し、頭の中で攻撃の流れをイメージしながら分析していく必要がありました。生成AIの活用によって、このログ分析の際に発生する調査の本質ではない「クエリの作成」がAWS Config、CloudWatch Logs Insightにおいてサポートされました。

またAmazon Detectiveがあらゆるサービスを統合し、いままで分析者の頭の中で構築する必要があった攻撃の流れを構築し、調査をサポートしてくれるようになりました。この調査に関しても生成AIによって内容を要約して担当者の理解をサポートしてくれるため、セキュリティ調査の高度化が図れるようになりました。

感想

ログの分析において、自身がクエリの作成に時間を費やしてしまうことがあったため、生成AIによってこの部分をサポートしてくれるのは非常に有用だと感じました。Athenaのサポートも早く来てほしいと思います。

インシデントの対応はかなり専門性が高く、専任のチームではなく社内でAWSの管理をサービス運用の片手間で行っている弊社においては「どのように知見を共有していくか」「有事の際、いかにラクに調査ができる状態にするか」などが課題だと感じていました。

サービスの進化と生成AIによって、これらの課題に対して一歩解決に近づいたことを感じることができました。Detectiveに関しては正直費用もかかるものとなるのでこれから検討していくことになりますが、セキュリティの重要性を考えると検討する価値はあると感じます。

もしものときのためにどれだけ備えられるかがこの分野では重要だと考えているので、現在AWSが提供する備えについて幅広くどのような連携があるかを知れた点でよいセッションでした。

AWSコスト管理の最前線(AWS-05)

カート決済SREブロックの伊藤です。私はコスト最適化に興味があったため、コスト管理についてのセッションに参加しました。こちらはCloud Financial Management(CFM: クラウド財務管理)を実現するにあたり、どのようなツールを使えば良いのかをユースケースを基にして紹介するセッションです。

クラウド財務管理(CFM、財務業務、FinOps とも呼ばれる)とは、クラウドリソースのプロビジョニング、デプロイ、モニタリングに対するコスト意識を浸透させ、説明責任を推進するための一連の原則や実践を指します。

S&P Global 2022年11月 Discovery Report P.5より引用。

具体的には「5月分の利用料金が上昇した原因調査とコスト最適化」を題材として、以下のようにして各問題の提起と解決方法について紹介しています。

カテゴリ 問題提起 ツール 結果例
可視化 コストが増えた要因は何か? AWS Cost Explorer 全体でどのサービスの費用が増加しているかがわかる
EC2インスタンスの費用が増加していることがわかったが、管理しているのはどこなのか? コスト配分タグ ○○というアプリによる利用料金が増えていることがわかる
もっと細かく見るには? AWS Cost and Usage Reports リソース単位や時間単位での分析が可能となる
最適化 コスト最適化をどのように行えばいいか? EventBridgeスケジューラなど 土日、夜間の開発環境停止によるコストの削減
コスト最適化ハブ インスタンスタイプの見直しやストレージの見直しによるコスト削減
予測・計画 もっと早く気づくにはどうすればよかったか? 予算の設定・予算アラート異常検知アラートの設定 コストが想定以上にかかっている場合に気付けるようになる

この中で私が本セッションを通じて初めて知ることができたのはコスト最適化ハブです。無料で使えるということもあり、早速、開発環境用アカウントで有効化してみました。有効化後、データの収集が完了してから(24時間以上が経過後)、確認した結果が次の画像です。

実際に試したコスト最適化ハブのスクリーンショット

それぞれのリソースに対してどのようなアクションが取れるかと、それによるコスト削減率、実装作業負担の高さやリソースの再起動が必要になるかなどを一覧で見ることができました。

今まで認識できていない部分もあったのでこれらを活用してコスト削減を加速させていきたいと思います。

Amazon Aurora Limitless Database 内部アーキテクチャ詳解 ~ スケーラビリティと高可用性の秘密 ~(AWS-40)

商品基盤ブロックの佐藤です。私はAmazon Aurora Limitless Databaseの背景と内部アーキテクチャについて解説するセッションに参加しました。

まず興味深かったのは、GroverとCaspianについての説明です。Aurora専用ストレージであるGroverは「The log is the Database」のコンセプトに基づき、データベースの更新ログを集め処理することでディスクI/Oを80%削減しました。Caspianはハードウェア上でオーバーサブスクリプションによりインスタンスを起動し、負荷状況に応じてリソースをダウンタイムなしでミリ秒単位で割り当てることができます。この処理中、データベースのワークロードには一切影響を与えず、さらにキャパシティが枯渇した場合は別のハードウェアへライブマイグレーションを行う機能もあります。

配布資料(PDF)のP.9より引用

配布資料(PDF)のP.10より引用

Amazon Aurora Limitless Databaseはマネージドシャーディングによりライトスケーラビリティとストレージサイズを拡張できるサービスです。アプリケーション側での開発は不要で、Limitless Database用のエンドポイントにクエリを投げるだけで透過的にシャーディングを行うことができます。数百万件のトランザクションを処理してペタバイトクラスのストレージを使用でき、複数のシャードをまたいだ分散トランザクション、シャードスケールの自動調整など、そのすべてがAuroraのプラットフォームとして提供され、既存のAuroraの機能も使うことができます。

配布資料(PDF)のP.19より引用

Limitless Databaseには2つのテーブルタイプがあります。1つはシャードキーをもとにして各シャードにテーブルが分配されるシャードテーブルです。同じシャードキーを持つ関連テーブルは同じシャードに格納され、ネットワークのスループットを減らすことでパフォーマンスを最適化します(コロケーション)。もう1つはすべてのシャードにコピーが作られるリファレンステーブルです。更新が少なくテーブルサイズも小さいテーブルを設定します。この2つのテーブルタイプを活用することでシングルシャードクエリが実行しやすくなり、パフォーマンスが向上します。

配布資料(PDF)のP.25より引用

Limitless Databaseの内部アーキテクチャは2つのレイヤーで構成されています。1つは分散トランザクションを制御するルーターで、どのシャードにどのデータがあるかというメタデータを管理し、各シャードから返ってきたデータを集約してアプリケーションに返します。もう1つはデータアクセスシャードレイヤーです。ここもメタデータだけを保持し、最終的な実行プランを立てて自身のシャードに対してクエリを実行し、結果をルーターに返します。シングルシャードトランザクションでは、コミットやロールバックの処理もこのレイヤーで行います。これにより、複数のシャードで並列クエリ実行が可能になり、スループットを向上させます。このように、いかにシングルシャードトランザクション構成にできるかがチューニングポイントのようです。

配布資料(PDF)のP.34より引用

配布資料(PDF)のP.35より引用

水平スケール(シャードスプリット)はユーザー側で設定することも、Aurora側に任せることもできます。Groverによりデータのクローンは高速に行われるので、ルーターやデータアクセスシャードは軽量なメタデータのやり取りだけで完結します。そのため高速なスプリットが可能になります。普段の運用でインスタンスのスケール変更を頻繁に行う自分としては非常に関心を引いた話でした。

シャード間の整合性を取る仕組みとして、EC2 TimeSync ServiceとPostgreSQLのアーキテクチャを組み合わせたバウンディッドクロックが紹介されました。EC2 TimeSync Serviceは現在時刻の他にEarliest Possible TimeとLatest Possible Timeという時間情報の信頼区間も配信しています。あるタイムスタンプでコミットしたというルーターからの情報があっても、クエリが影響を及ぼすすべてのシャードのEarliest Possible TimeとLatest Possible Timeの信頼区間内でなければコミットは待機します。これをマイクロ秒単位で処理することで、高速にトランザクション分離レベルで制御します。

配布資料(PDF)のP.48より引用

全体を通しての感想として、導入と運用のコストが低く、煩雑なタスクを減らしマネージャビリティ(管理・運用性)を向上させるマネージドデータベースの基本コンセプトに沿った魅力的なプロダクトだと思いました。ただし、料金コストがどれくらいになるか気になりました。今後、書き込みを多く行うプロダクトでのPoCを検討したいと思います。

アーキテクチャ道場 2024!(AWS-59)

フロントSREブロックの江島です。ZOZOTOWNのエンドユーザーに近い部分(フロントエンド、BFF等)を担当領域としています。私は「アーキテクチャ道場 2024!」というセッションについて紹介します。

アーキテクチャ道場について

撮影:江島

SAの方が実際に設計したアーキテクチャを題材に、チーフテクノロジストの内海さんが聴講者の前でレビューするセッションです。今回のテーマはレジリエンスでした。2つのお題に対してレジリエンスを高めるためのアーキテクチャ改善を検討します。

セッションの内容(1つ目のお題)

撮影:江島

1つ目のお題は、マルチAZ構成のシステムにおいてグレー障害やブラウンアウトが発生した場合にユーザ影響を最小化することでした。AZ障害を検知した場合にはワークロードから当該AZを切り離すという方針で検討されました。また、それを実現するためにAZ毎の独立性を高めるように設計がなされました。

セッションの内容(2つ目のお題)

撮影:江島

2つ目のお題は、信頼性の低いサードパーティサービスへ依存したアプリケーションにおいて、依存度を緩和させることにより可用性を高めることでした。両者の間に追加の緩衝機構を設ける方針で検討されました。緩衝機構は、レートリミット、リトライ、サーキットブレーカー、キャッシュや非同期処理などの機能を組み合わせる形で設計がなされました。

2つのセッションを通じて

まとめとして、クラウドにおけるレジリエンスの基本的なアプローチは障害の「原因」ではなく「影響」をコントロールすることだと説明がありました。その手段として「障害の範囲を限定するための隔壁(バルクヘッド)を設けること」と「障害の波及を遮断するための緩衝機構を設けること」が推奨されました。

感想

エキサイティングで学びの多いセッションでした。深く考え抜かれたアーキテクチャに対して、様々な視点から質疑が繰り広げられる光景に心を奪われました。私自身、マルチAZでの負荷分散を前提とした構成は幾度となく見てきましたし、それがベストだと思っていました。これをあえて崩すことによりAZ毎の独立性を高めるというアプローチには驚きを覚えました。また、緩衝機構に相当する仕組みは弊社でも導入しておりますが、その必要性や重要性を再認識する良い機会となりました。本サミットで学んだことを生かして、ZOZOTOWNのレジリエンスをより高めていきたいと思います。

ゼンリンデータコム様のAMDインスタンス導入による効率化事例(AP-24)

検索基盤SREブロックの花房です。普段はZOZOTOWNの検索関連マイクロサービスにおけるQCD改善やインフラ運用を担当しています。

現在、SRE部ではコスト削減に注力しています。その中でインスタンスタイプ変更によるリソース最適化は有用な手段の1つです。システムの用途に合わないインスタンスタイプを利用しているとコストパフォーマンスが悪いまま、無駄なコストを払い続けることになります。EC2には多様なインスタンスタイプが用意されていますが、今回は特にコストパフォーマンスに優れたM7aおよびM6aインスタンスを比較・導入した事例について学びました。そのセッションについて紹介します。

M7a・M6aインスタンスタイプ

本セッションでは、先に日本AMD社からM7aとM6aについて説明がありました。M7aとM6aにはそれぞれ下記のAMD CPUが搭載されています。

インスタンスタイプ CPU
M7a 第4世代 AMD EPYC "Genoa"
M6a 第3世代 AMD EPYC "Milan"

それぞれのインスタンスタイプに搭載されているCPUのスペックと特徴を下記に示します。

配布資料(PDF)のP.9より引用

第4世代のCPUはハイパースレッディングをオフにしているためスレッドの記載はありません。第4世代のCPUの処理速度はスレッドを使用しない方が速くなるそうです。

コストパフォーマンスについて、M6iと比較すると下記のような差があります。

配布資料(PDF)のP.7より引用

M7aの単価はIntel CPUを搭載したインスタンスタイプよりも高くなったようです。しかし、CPU性能の向上に伴い必要な台数を少なくできるため結果的にコストを抑えられます。

M7aとM6aにおいて、最適なリソースを選択するには下記の図が役に立ちます。

配布資料(PDF)のP.11より引用

M7a・M6aインスタンス導入事例

次にゼンリンデータコム社からの事例紹介がありました。

ゼンリンデータコム社では、インフラ沿革の中でコストが課題になっており、コストを抑制するための取り組みとしてリソース最適化を実施しました。パフォーマンスとコストに優れるAMDインスタンスへの変更を検討し、実際に試してみた結果、M7aとM6aの導入に至ったようです。下記にコスト抑制の取り組みの図を示します。

配布資料(PDF)のP.24より引用

AMDインスタンスを導入する際の考慮点について下記が挙げられていました。

  1. 手軽さ:簡単に導入できるか
  2. 金額面:利用料金が妥当か
  3. 性能面:処理能力に問題がないか

それぞれについて詳しく見ていきます。

まずは1つ目の「手軽さ」についてです。使用中のインスタンスタイプのCPUアーキテクチャがx86互換であれば、AMDインスタンスを簡単に試すことができます。プログラムの改修なしでインスタンスタイプのみ変更すればよいためです。下記に図を示します。

配布資料(PDF)のP.27より引用

次に2つ目の「金額面」についてです。SavingPlansを使用した場合、x86互換のインスタンスタイプの利用料金は下記のようになります。

配布資料(PDF)のP.28より引用

スライドにも記載されているようにユースケースに応じて使い分けることが重要です。リソース最適なインスタンスタイプを選択すればコストは抑えられますが、そうでない場合は反対にコストが上がる可能性もあります。

最後に3つ目の「性能面」についてです。性能比較では下記の内容を実施したようです。

配布資料(PDF)のP.29より引用

性能比較の詳細を記載すると本レポートに収まらないため記載しません。性能比較の結果は、AMDインスタンスのスコアが一番高くなり、新しい世代の方が古い世代よりスコアが向上したようです。

APIサーバについてはM6aからM7aに変更したことにより、約40%の台数削減を実現したようです。性能向上に伴う台数削減により、単価が高いM7aの方がコストパフォーマンスを改善できるケースとなりました。

一方、BatchサーバについてはCPUが高負荷になる処理が少ないため、Batch処理時間は大きく変化せず、M6aの方が良いコストパフォーマンスを見込めるケースになりました。

まとめ

セッションを通して、M7aとM6aのAMD CPUについて学ぶことができました。これらのCPUはx86互換であるため、同じx86系のインスタンスを使用していればAMDインスタンスを簡単に試すことができます。

ゼンリンデータコム社のシステムを使用した性能比較においても、AMDインスタンスはコストパフォーマンスに優れていることが分かりました。性能が向上するインスタンスタイプを選択した場合、本当に性能が向上するのか試すことは大事だと感じました。また、性能が向上したとしても、コスト面でのメリットが得られるかを確認することも重要です。今回学んだことを考慮して、今後のインスタンスタイプ変更によるコスト削減に取り組んでいきたいと思います。

おわりに

セッションや展示ブースで多くのことを学べるのはもちろん、AWSのエキスパートや他社のエンジニアの方々と交流し、多くの刺激を受けられるのが現地参加の醍醐味です。

今回得た知見を社内外に共有しながら、これからもAWSを活用してプロダクトとビジネスの成長に貢献していきます。

ZOZOではAWSが大好きなエンジニアを募集しています。奮ってご応募ください!

corp.zozo.com

カテゴリー