AWS re:Invent 2020 注目リリース5選 〜2020開催分より〜

こんにちは、CTO室兼SRE部テックリードの光野(kotatsu360)です。AWS・ウィスキー・葉巻が好きです。

普段はAWSのアカウントが複数ある状況(マルチアカウント環境)において、セキュリティや品質の維持をどのように行うかについて取り組んでいます。色々と資料も公開しているので、よろしければご覧ください。

speakerdeck.com

さて、本記事ではAWS re:Invent 2020を取り上げます。今年もre:Inventに合わせ大量のリリース・アップデートが行われました。リリースは180を超え、楽しくもキャッチアップに奔走しております。この大量のリリースの中から、弊社の状況を鑑みて特に目を引いたものをピックアップします。

AWS re:Invent 2020

簡単にAWS re:Inventについて触れたいと思います。AWS re:InventはAWSが主催する、一年で最大のイベントです。

今年で9回目を迎える「AWS re:Invent」は、 AWSのクラウドサービスに関わる技術的なセミナー・ハンズオンセッションなど、 2,500を超えるセッション(2019年実績)を提供しており、お客様が主体的に体験できる、学習機会が豊富なグローバルカンファレンスです。

AWS re:Invent 今回はオンラインで無料開催!|AWS

例年、この開催直前より既存サービスのアップデートが増え、期間中は基調講演を中心に新規サービスの公開が繰り返されます。AWSに関わるエンジニアとしては目が逃せません。これまでは一貫してアメリカはラスベガスのホテルを借りてのイベントでしたが、今年はオンライン開催となりました。

re:Invent 2019は1週間のイベントでしたが、今年はオンラインということもあってか11月30日 ~ 12月18日(+ 1月12日 ~ 14日)と3週間に渡って開催されました。2021年1月にも3日間の追加開催が決まっています。

なお、ZOZOテクノロジーズは2018、2019と現地にてイベント参加を行い、2019では現地から参加レポートを公開しております。

techblog.zozo.com

今年のアツいアップデート5選

まさかのMacインスタンス提供1から始まったre:Invent 2020ですが、ここでは特に私個人としてアツいアップデートを紹介したいと思います。

記事の量・新鮮さでいえば期間中ほぼリアルタイムで更新をされ続けているクラスメソッドさんのDevelopers.IOが何よりも圧倒的です2。ここでは、ZOZOテクノロジーズという組織にとってそれはどのような課題を解決するのか、どのような意味を持つのかについて着目してまとめています。日常業務で、マルチアカウント管理に携わっているということもあり、コンプラや運用系サービスが多めです。予めご了承ください。

VPC Reachability Analyzer

aws.amazon.com

1つ目はVPC Reachability Analyzerです。VPC内のリソース同士を指定して、その間が到達可能かを検証するためのサービスです。以下の画像はVPCを2つ用意し、VPC Peeringから一方のVPCに存在するEC2インスタンスまでの疎通を確認するものです。Network ACLやSecurity Group、ENIといった複数の要素を経てEC2インスタンスへ到達しています。経路上のどこかに問題があり到達できない場合、それをエラーとして表示してくれます。

弊社は、現在クラウド移行の真っ最中であり、AWS Direct Connectによるデータセンターとの閉域網接続を多用しています。一部ではAWS Transit Gatewayの利用も始まり、オンプレミスとAWS間のネットワークの到達性を確保するのが課題となっています。これまで検証用インスタンスを立ててtracerouteによる地道な確認をしていた部分も、これによってどこからどこまでなら到達するのか、その検証が簡易になることを期待しています3

また、AWSらしくサービス間連携による新しい自動化についても期待が持てます。CloudWatch EventsからLambdaを経由すれば定期分析からの疎通性監視が可能となります。深夜帯に動くバッチがあるが、日中の何気ない操作で疎通が切れており、深夜の実行時に判明する。そんな問題を日中帯に検知することも可能になるやもしれません。

S3で強い書き込み後の読み込み整合性がサポート

aws.amazon.com

2つ目はS3から。御存知の通り、S3では新規オブジェクトのPUTに対しては書き込み後の読み込み整合性、オブジェクトの更新・削除については結果整合性を提供してきました。そのため、オブジェクトを更新する場合、その直後のGETでは新旧2つのオブジェクトが混在する可能性を許容する必要がありました。

(上記ブログエントリより引用)

しかし、今回のアップデートでこの制約が取り払われ、更新・削除についても強い書き込み後の読み込み整合性が保証されることとなります。ブログエントリには、DELETEに関する記述がありませんが公式ドキュメントにはDELETEでも強い整合性が保証されると記載されています。

Amazon S3 provides strong read-after-write consistency for PUTs and DELETEs of objects in your Amazon S3 bucket in all AWS Regions. This applies to both writes to new objects as well as PUTs that overwrite existing objects and DELETEs. In addition, read operations on Amazon S3 Select, Amazon S3 Access Control Lists, Amazon S3 Object Tags, and object metadata (e.g. HEAD object) are strongly consistent.

Introduction to Amazon S3 - Amazon Simple Storage Service

弊社でもログや分析用データの保存先として必ずS3が登場します。上書きをするケースはそれほど多くないものの、アプリケーション設計においてしばしば見逃されがちな部分で手戻りの原因ともなっていました。昔からのS3ユーザとして驚くべきリリースであると同時に今後S3を利用する開発者に対してより優しいサービスになったと考えています。

Babelfish for Aurora PostgreSQL

aws.amazon.com

3つ目はAndy JassyのKeynoteで発表された、Babelfish for Aurora PostgreSQLです。SQL Serverに対するクエリのみならず、トリガ・ストアドプロシージャや関数など含めて全て透過的に変換するレイヤーを提供するものです。現在はプレビュー版のため、利用にはリクエストの許可を待つ必要があります。

Babelfish for Aurora PostgreSQL (Preview) | Amazon Web Services より引用)

Babelfish adds an endpoint to PostgreSQL that understands the SQL Server wire protocol Tabular Data Stream (TDS), as well as commonly used T-SQL commands used by SQL Server. Support for T-SQL includes elements such as the SQL dialect, cursors, catalog views, data types, triggers, stored procedures, and functions. With Babelfish enabled, you don’t have to swap out database drivers or take on the significant effort of rewriting and verifying all of your applications’ database requests.

Want more PostgreSQL? You just might like Babelfish | AWS Open Source Blog

AWS Database Migration Serviceとは異なり、あくまでもPostgreSQLのエンドポイントとして振る舞うというのが非常に興味深いプロダクトです。

弊社が提供するZOZOTOWNWEARは、いずれもSQL ServerをDBとして利用しています。またストアドプロシージャを多用し、ビジネスロジックの多くはDB上に存在します。これはZOZOTOWNができた当時主流な設計でしたが、現在ではスケーラビリティの観点からあまり採用されない形かと思います。AWSへはリファクタリングを伴うリプレイスが行われており、そこではAmazon Aurora MySQL/PostgreSQLといったOSS互換のDBエンジンを採用しています。オンプレミスに存在するSQL Serverを将来どうするかについてはまだ検討のさなかですが、切り替えコストの小さい選択肢が増えることについて、歓迎しています。GAまで目が話せません。

Amazon ECR Public

aws.amazon.com

4つ目は、コンテナイメージをパブリックに共有できるECR Publicです。11月頭にDocker Hubのrate limitsに対応するためのブログポストがありましたが、そちらでも告知されていました4

ECR Publicは、Docker Hub以外の選択肢が誕生すること以上に、これによってAWSで利用されているエージェントやツールのコンテナイメージが一箇所に集約されたことを歓迎しています。弊社では可能な限りマネージドサービスを採用することで、管理範囲を狭める努力をしています。概ね問題ありませんが、LambdaのランタイムやFargateで配置されるFluent Bitが実際どのようなものか、確認に時間をかけることがありました。

これらはAmazon ECR Public Galleryとして、コンテナイメージが公開されており、開発効率の向上に期待できます。

AWS Systems Manager Fleet Manager

aws.amazon.com

最後は、AWS Systems Manager Fleet Managerです。SSM Agentを通じて集約した情報をOSの垣根を越えて一元的に閲覧できるサービスになります。

As described in the documentation, managed instances includes those running Windows, Linux, and macOS operating systems, in both the AWS Cloud and on-premises. Fleet Manager gives you an aggregated view of your compute instances regardless of where they exist.

New – AWS Systems Manager Fleet Manager | AWS News Blog

SSM Agentのドキュメントにはまだmac1インスタンスへのインストール方法が見当たりませんが、ブログエントリを見るにMacの場合でも管理できるようです。いくつかインスタンスを追加した状態が次の画像です。

詳細を見ていくと、これまでのマネージドインスタンスやインベントリといった機能を集約した新しいUIが表示されます。

またユーザ管理が可能になりました!

弊社では、先の通りDBにSQL Serverを利用しており、そこにアクセスするアプリケーションはWindows Serverの上で動作しています。リファクタリングされLinuxベースになるアプリケーションがある一方で、負荷分散のため既存アプリケーションをそのままクラウドリフトする計画も動いています。その場合、多種多様なOSがAWS上に混在するので、OS横断で俯瞰できる機能にはとても期待しています。

なお、当初ユーザが作れると聞き「これはSSH管理が変わるか!」と思いましたが、現時点ではユーザとパスワードの設定まででした。また、CLI5を見る限りまだAPIは公開されておらず、あくまでもWeb UIから見えるという機能になっています。今後、様々なアップデートがあるはずなので、継続的に追っていきます。

まとめ

re:Inventのリリースから、独断と偏見で注目のリリースを5つ抜粋してご紹介しました。ご存じないリリースがあった場合、それらを知るきっかけになれば何よりです。

  • 日々の構築・運用作業を助けるVPC Reachability Analyzer
  • 着実に進歩を遂げるS3
  • DBエンジンの選択に新しいアプローチを提案するBabelfish for Aurora PostgreSQL
  • コンテナ界隈に新しいパブリックレジストリを提供し、オフィシャルコンテナイメージが集約されるAmazon ECR Public
  • EC2インスタンスに新しい可視性を提供するAWS Systems Manager Fleet Manager

新しいサービスをリリースしつつも、既存サービスの着実な改善を続けるAWS。エンジニアとして、また一ファンとして、キャッチアップと業務改善に取り組む所存です。

2021年1月の追加開催も今から楽しみでなりません!

We are hiring

ZOZOテクノロジーズCTO室では、世の中の情報を常に取り込み組織を変えていくことに興味がある方を探しています!

是非、以下のリンクからご応募ください!

https://hrmos.co/pages/zozo/jobs/0000040hrmos.co

カテゴリー