AWS re:Invent 2019 参加レポート-現地ラスベガスから弊社エンジニアが今知りたいテーマをピックアップ!-

f:id:vasilyjp:20191206220037j:plain

こんにちは、開発部SREチームの西郷です。普段は生産管理のシステムやWEARのインフラに携わっています。弊社では多数のサービスでAWSを採用しており、更なる利活用と学びのため、12/2〜12/6に開催されたAWS re:Invent 2019へ参加してきました。本記事では、Keynoteの内容に加え、一緒に参加した開発部のメンバーが気になったSessionやWorkshop等についてもレポートしたいと思います。

AWS re:Inventとは

1年に1回ラスベガスで行われるAWS最大のカンファレンスで、8回目の今年は65,000人以上が参加しました。AWSの新サービスや既存サービスのアップデート発表が目玉ではありますが、3,000以上の技術セッションやワークショップ、ハッカソン等が用意されている学習型カンファレンスです。6つのホテルで構成された会場が"Campus(キャンパス)"と呼ばれていることからも、学習の場として強く位置付けられていることがわかります。

Keynote

KYN201: Monday Night Live

新規事業部の茨木です。専門はフロントエンドですが、プラットフォームにとらわれずプロトタイプ開発や技術検証に取り組んでいます。最初のセッションにあたるこのKeynoteでは、Amazon社の大規模計算に関する取り組みが紹介されました。大規模計算を行うスーパーコンピュータは専用のネットワークにより接続された複数のサーバーから構成されます。複数台のサーバーによる大規模な計算を高速・安全に実行するための具体的な取り組みとして、以下が紹介されました。

  • サーバー間ネットワークの改善
  • EC2の仮想化に最適化されたハードウェア(Nitro Controller)の導入
  • アプリケーション通信の改善(EFA)

現状、弊社でスーパーコンピュータを利用する場面はありませんが、機械学習などでは分散コンピューティングが登場します。この発表で紹介されたネットワーク改善のアプローチは、機械学習における計算速度の向上に寄与するかもしれません。

KYN202: Keynote by Andy Jassy

SREチームのテックリード光野です。普段は、弊社におけるAWS利用のフォローやアーキテクトをしています。re:Inventでは例年3回のKeynoteが開催されますが、その中でもDay2はAWS CEO Andy Jassyが登場し、会期中もっとも盛り上がる舞台の1つです。今年も大変多くの、そして大きな発表が行われました。

まず、例年以上にデジタル・トランスフォーメーションについての言及が多かったように感じました。エンタープライズにおけるオンプレミスからクラウドへの移行、そして「オンプレミス」の壁を壊すためのリリース報告が行われました。

弊社にも倉庫という巨大な資産があり、その中で動くシステムがまた存在します。ハードウェア・ソフトウェア両面で、耐用年数を迎えれば入れ替える必要があるものの、一般的なWebサービスと同じ手段で入れ替えることはできません。

AWSのインフラをオンプレミスに持ち込むOutposts、リージョンの枠を超え地理的に近い場所へAWSを展開するLocal Zones、5GのエッジコンピューティングとなるWavelength。オンプレミスとクラウドの垣根をなくすプロダクトがあることは、将来の選択肢が増えるという点で、とてもうれしく思います。

そして、昨年に引き続き機械学習周りのリリースが怒涛のように行われました。IDEのSageMaker Studio、実験管理を行うSageMaker Experiments、モデルを決定づける要素を調査するSageMaker Debuggerなど。Keynote外での発表も含めればSageMakerだけで10近い新サービス・機能が発表されているのではないでしょうか。弊社はAWS Summit Tokyo 2019にてSageMaker利用における工夫を発表させていただきましたが、殆どがマネージドで提供されてしまったのではと感じるほどのアップデートです。

最後に、機械学習などに比べれば一見地味ではあるものの、Nitro Systemによるネットワークの高速化やAQUA for Amazon Redshiftによるスループットの改善など増大するデータを正しく快適に扱う下支えについての発表が何よりも魅力的に映りました。

今後もユーザーが必要とするサービス・機能、そしてユーザーを快適にする改善の両面で目が離せないと感じさせる、そんなKeynoteでした。

KYN203: Global Partner Summit Keynote

SREチームの指原です。3日目のKeynoteはAWSのHead of Worldwide Channels & AlliancesであるDoug YeumによるGlobal Partner Summitです。本KeynoteではAWSが支える、そしてAWSを支える数多くのパートナー企業に関して事例の紹介とアップデートがありました。

事例としてエネルギー事業を展開しているBP社と、レンタカー事業を展開しているAvis Budget Group社がそれぞれ登壇しました。両社は自社の大規模なシステムをオンプレミスからクラウドへ移行しています。また、単に移行するだけではなく例えばAmazon SagaMakerなどAWSのサービスをフルに活用することで、システムパフォーマンスの向上に成功しているそうです。そのようなダイナミックなデジタルトランスフォーメーションを実現できたのはAWSが認定している技術支援を行うパートナーネットワークのおかげだということでした。

弊社では事例にあったような技術支援を行うパートナー企業との取り組み自体は行っていません。しかし、社内ではZOZOTOWNやWEARのリプレイスという大きなプロジェクトが進んでおり、そのようなプロジェクトではオンプレミスからクラウドへの移行も含んでいます。そこでは事例にあったようにオンプレミスのサーバーを単にEC2に移行するようなことではなく、実際にEKSやFargateを使って再構築を行い従来より柔軟なスケールアウトや運用負荷の低減が実現しています。クラウド移行の際にはサービスをフル活用して効率化を図るという点が共感したところでした。

また、パートナーネットワークについては普段あまり意識したことはなかったのですが、多くの大企業が既に抱えているオンプレミスやレガシーなシステムをクラウドに移行する支援だったり、スタートアップが成長を加速するための支援だったり、多くのパートナー企業が存在しており、AWSが持つプラットフォーマーとしてのエコシステムの巨大さに改めて気付かされました。

KYN204: Keynote by Dr.Werner Vogels

SREチームの西郷です。4日目に行われたこのKeynoteはAmazon社のCTOであるDr.Werner Vogelsが登場し、AWSのサービスを技術的に支える部分やAWSがこれまで行ってきたアーキテクチャへの投資についてがトピックでした。

仮想化の観点では、新しいハイパーバイザであるAWS Nitro Systemによるパフォーマンス向上の話がありました。Nitro Systemを搭載したC5系のインスタンスはベアメタルに近いパフォーマンスを発揮できるそうです。また、re:Inventの前半で発表されたNitro EnclavesはNitroを使用して、AWS KMSと統合したローカル接続のみに隔離された領域を提供します。つまり、EC2インスタンス内で個人情報等の機密性の高いデータを保護し、安全に処理できるようになります。

サーバーレスの観点では、FargateやLambdaの裏側で動いているFirecrackerの話がありました。Firecrackerは昨年のre:Inventで発表されたマイクロVMで、セキュリティはもちろん速度にもフォーカスして設計されています。今回のre:InventでFargate on EKSが発表されましたが、EC2と比較して軽量なFargateが使えるようになったことで高負荷時のオーバープロビジョニングが大幅に軽減されると説明がありました。

弊社サービスでもEC2やLambda、Fargateを採用しているため、使える技術の選択肢が増え、より安全で高パフォーマンスな環境になることは非常に嬉しく楽しみです。

また、新しいサービスとしてThe Amazon Builders' Libraryが発表されました。これまでAWSが自社のサービスを開発・運用する中で培ってきたナレッジのライブラリで、どれもシニアテクニカルリーダーが書いているそうです。より簡単にそういったテクニカルな情報にアクセスできるようになったことは開発者としてありがたく、早速目を通してみたいです。

最後に、本KeynoteでもAWSを使ってビジネスに変革を起こそうとしている企業の取り組みがいくつか紹介されたのですが、Volkswagen社のThe Volkswagen Industrial Cloud(工場のクラウド化プロジェクト)はその規模の大きさに目を惹かれました。グローバル全体で1つのアーキテクチャのクラウドにあらゆる生産工程を接続させる構想で、いずれは他の企業にも公開しOSSのエコシステムのようなものにしたいとのことでした。

全体的には、ゼロトラストネットワークの概念に法って開発されたAWS Nitro SystemやIndustry 4.0を意識したVolkswagen社の取り組みなど、クラウドの新たなフェーズを感じられるKeynoteでした。

Session

SEC207-L: Leadership session: AWS identity

改めまして、SREチームの指原です。昨今、ゼロトラストネットワークというセキュリティの概念が広がってきており、個人情報の観点でもグローバルなサービスではGDPRなど法的に対応する必要性が出てきたりしています。そのようにインターネットやクラウドの世界でもセキュリティや情報保護に関して次々と大きな変化が起きつつあると感じています。このセッションではそのような変化に対応するためのAWSでのアクセス制御、リソース管理について新機能の紹介があるということで参加しました。

本セッションの内容をサマライズすると主に以下の4つについてでした。

  1. AWS Organizationsを利用することで、複数のAWSアカウント全体の一元管理が可能
  2. AWS SSOを利用することでユーザーアクセスの集中管理が可能
  3. タグを利用することで請求の管理ができるだけでなく、セキュリティポリシーやアクセス制御の管理が可能
  4. 新サービスのIAM Access Analyzerを利用することで不必要なアクセス制御の許可を減らすことが可能

いくつか小さなアップデートと共に今回新しくリリースされた機能としては4つ目のIAM Access Analyzerが目玉として紹介されていました。IAM Access Analyzerは現在以下の5つのリソースに対応しており、これらのリソースに対して意図した通りのアクセス制御になっているかを分析ができます。

  1. S3
  2. IAM Role
  3. KMS
  4. Lambda
  5. SQS

特徴としては細かい設定をする必要がなく簡単に有効化でき、利用料金も必要ないという点です。また、IAM Access Analyzerはパターンマッチングなどに基づいて分析を行っているわけではなく、自動推論と呼ばれる数学的分析を使っているそうです。その結果、数千ポリシーを数秒で分析ができるパフォーマンスを発揮できるようです。

IAM Access Analyzerが対応している上記の5つのリソースはそれぞれ誤った設定をすると不要な外部公開をしてしまう可能性のあるサービスです。そのような誤った外部公開設定をしていないかどうかを重点的に確認できる機能がIAM Access Analyzerです。

弊社では数十のAWSアカウントを管理しており、GuardDuty等を利用して全アカウントを対象にしたセキュリティ的な脅威検知については担保しています。しかし各リソース単位での細かいセキュリティポリシーに関しては基本的には利用プロダクトに運用を一任しています。そのような事情から個別のリリースに対して外部公開設定されていないかどうをチェックすることが簡単にできるようになったことは非常に便利で、さっそく活用していきたいです。

CMY303: Using Amazon CloudFront, AWS WAF, and Lambda@Edge to keep spammers out

改めまして、SREチームの西郷です。このセッションは、あるWebサイトでユーザー登録数がスパイクしたケースにおけるCloudFront、WAF、Lambda@Edgeを使った対処法の紹介だったため、参考にできるものがあればと思い参加しました。

まとめると以下の内容でした。

  • 前提

    • スパイクしたのは非営利団体のシステムで、ブログのようなもの(ユーザーがコンテンツを追加したりコンテンツにコメントしたりする)

    • ユーザー登録のプロセスはメールアドレス認証。メールアドレスとキャプチャを入力、オプションで質問に対する答えを入力する

    • 当初のインフラ構成はユーザーからの窓口としてCloudFront、後ろにサーバーのEC2とエラーページや静的ファイルが入ったS3バケット

  • 起こったこと

    • ユーザー登録数がスパイクした(通常は1日1回もしくは2、3日に1回の頻度だったが、1分に1回になった)

    • ユーザー名とメールアドレスが普通じゃなかったので怪しいものだと気づいた

  • 実際に行った対処

    • ほとんどがロシアまたはウクライナからのアクセスだったので、まずはCloudFrontで地域制限をかけた

    • 地域制限で弾けなかったIPアドレスからの攻撃はWAFのセキュリティオートメーションで提供されているIP Reputation Listsで弾くようにする

    • それでも弾けないものは怪しいIPアドレスかどうかをLambda@Edgeで判定し、怪しい場合は303を返してセキュリティオートメーションで提供されているBad Botのブラックリストに追加する

  • その結果

    • 2回目以降のアクセスはブロックされるようになり、スパイクは99%収束した

    • Bad Botのブラックリストには1341個のIPアドレスが追加された(IP Reputation Listsで防げなかった数)

このSessionで知見になったのは、AWS Solutionsで提供されているAWS WAF セキュリティオートメーションの存在です。これは一般的なWebベースの攻撃をフィルタリングするように設計されたWAFのルールセットを自動的にデプロイできるもので、CloudFormationで提供されています。今回のセッションで取り上げられた2つのコンポーネントの機能を調べたところ、以下のようなものでした。

  • IP Reputation Lists: CloudWatchをトリガーにしてLambdaがサードパーティのIP評価リストを定期的にパースし、WAFのIPリストを更新する

  • Bad Bot: API GatewayとLambdaを使ったハニーポットで、Lambda FunctionがIPアドレスを検出するために検査を行いブロックするIPリストに追加する

AWS WAF セキュリティオートメーションというソリューションが提供されていることや、AWS Solutionsというサービスがあることを知らなかったので参考になりました。弊社でもWAFを使用していますが、事前にブラックリスト等を設定しておく、ということはしていないため、ブロックしたいIPアドレスが発生する毎に手動で対応を行なっています。あらかじめブラックリストをルールに適用しておくと、より安全&運用コストの削減に繋がりそうだと感じたので、機会があれば活用していきたいです。

MOB317: Speed up native mobile development with AWS Amplify

フロントエンドエンジニアの権守です。AWS Amplifyについては社内で導入を検討したことがなかったので、今後の選択肢の1つとして考えられるように使い方を学べるこのセッションに参加しました。

AWS Amplifyは、モバイルアプリケーション向けにバックエンドを提供するものです。API・認証・機械学習を使った予測などの機能から必要なものだけを選んでバックエンドを構築・利用できます。また、iOS・Android・Web・React Nativeアプリ向けにフレームワークを提供しており、UIコンポーネントや各機能を呼び出すインタフェースが用意されています。

セッションの内容はデモを中心としたもので、Amplify CLIを使ったGraphQL APIの構築や、iOS・AndroidのSDKを使った実装を見ることができました。具体的な実装としては、認証画面の呼び出し、機械学習による翻訳・ラベル付けを見ることができました。

ラベル付けのデモ

こちらは画像から写っているものを特定して、ラベルとその信頼度を出力しているものです。

セッションを通して、利用のイメージが湧いたのでGraphQLを利用するプロトタイピングなどで試してみたいと思います。モバイル開発向けのAWS公式ブログにもAWS Amplifyの導入記事が公開されたので興味の湧いた方には併せて読むことをお勧めします。

CMP323-R: [REPEAT] Optimize compute for performance and cost using AWS Compute Optimizer

バックエンド・SREチームのテックリード児島です。ZOZOSUITS及びZOZOMATの計測システムのアプリケーション構築及びアーキテクチャ設計を担当しています。

re:Inventには昨年から参加し、今年で2年目となります。例年、EC2には様々なアップデートがあり、今ではその選択肢は270以上にもなるそうです。そのような状況下で、アプリケーションに最適なインスタンスを選定する知識は、年々複雑化しています。今年も開催の1か月前には、Savings Planの発表がありましたが、これに合わせ節約術のベストプラクティスもまた年々多様化していると言えます。re:Inventでは、その節約術提供のためCost Optimizingをテーマとしたセッションが毎年いくつか用意されており、現場で活用できる知見を深めることができます。昨年も、以下のセッションに参加しました。

CMP209では、本番環境にも積極的にT系インスタンスを採用することを勧める内容で、とても興味深いものでした。

さて、CMP323-Rでは、Cost Explorerに今夏追加されたResource Optimization Recommendationsと比較して、新機能であるAWS Compute Optimizerが紹介されていました。Cost Explorerでは同一のインスタンスファミリアの中からしか最適なインスタンスタイプの推奨がなされませんでした。

これに対し、AWS Compute OptimizerではM/C/R/T/Xの5つのインスタンスファミリアを跨いで、140以上の組み合わせの中から最適なインスタンスタイプが推奨されるそうです。推奨にはMachine Learningが使われており、CPU使用率、ディスクI/O、ネットワークI/Oなどのメトリクスから、より精緻な個別の状況に応じた推奨がなされるそうです。現在は、東京リージョンでの使用は開始されていないようですが、今後のアップデートが待ち遠しいです。

実際の現場において、これまでも新しいインスタンスタイプが追加される度に、利用者がその採用によるパフォーマンスを評価することはとても大きな負担だったと思います。それにより導入が遅れたり、その評価に多大な時間が奪われるなど、大きな課題を生んでいたように思います。しかし、今回のAWS Compute Optimizerは、これらの問題を解決してくれるツールとなり得そうです。今後の益々の拡張に大きな期待をしたいと思います。

Workshop

MGT305: Patch Compliance Using AWS Systems Manager And AWS Config

再び光野です。1エンジニアとしては、開発速度の底上げを図れるようなデプロイやガバナンスの仕組み作りに携わっています。re:Inventでは手を動かすWorkshop形式のセッションばかり回っており、ここで取り上げるMGT305もWorkshop形式です。課題の1つであるパッチの運用を解決すべく参加しました。常々パッチの管理と適用を自動化したいと考えており、糸口でも見つかれば、との気持ちでの参加でしたがまさにこのセッションが答えをくれました。Systems Manager(SSM)を組み合わせます。

  1. EC2インスタンスにSSMエージェントをインストール
  2. 管理用タグを付ける
  3. SSM Inventoryにインスタンスの状態が蓄積される
  4. SSM State Managerでインスタンスとパッチの有無を関連付け
  5. SSM Patch Managerでインスタンスにパッチを適用
  6. 3と4のオプション項目で実行日時を設定(自動化)

残念ながら時間切れでAWS Configまでは進めませんでしたが、こちらでは各インスタンスが有効なSSMエージェントを持っているかを継続的に確認する仕組みが説明されていました。

SSMは、その中に多数の機能が含まれており敬遠しがちだったのですが、実際に触ってみると非常に強力なツールでした。今後は、もっと積極的に触っていこうと思っています。

なお、パッチ適用に際して、気をつけなければならないのが再起動です。パッチによってはインスタンスの再起動が発生します。サポートしてくれたSAに聞いたところ、事前の予告や状態遷移1は無いため、Patch Managerに指定する日時の前にサービスアウトしておく事が必要とのことです。大事なプロセスが強制終了されないよう、導入の際にはケアをしてあげてください。

AIM223-R6 - AWS DeepComposer: Get started with generative AI

改めまして、新規事業部の茨木です。日曜日のMidnight Madnessで発表されたDeepComposerを実際に体感してきました。このWorkshopは大変人気で、開始の3時間前から並んでやっと入ることができました。

今回体験したDeepComposerは、キーボードで入力したメロディに対して自動で伴奏を生成してくれるGenerative AIです。GANと呼ばれる教師なし学習を用いており、クラシックやジャズなどのジャンルに応じたモデルが予め用意されています。Workshopでは初めにDeepComposerの講義があり、DeepComposerを構成するインフラストラクチャや機械学習を学びました。

DeepComposerのインフラ

その後、実際にキーボードを用いてメロディを入力し、DeepComposerを使って様々なジャンルの曲を作りました。

DeepComposerのキーボード

メロディによってはあまり上手くいかない場合もありますが、ハーモニーやリズムはジャンルをよく表現している印象でした。実際に会場で作った曲をSoundCloudに上げたので、是非聴いてみてください。

参加者にはDeepComposerのキーボードが配布されました。

DeepComposerのSWAG

教師なし学習によるGenerative AIのアプローチはファッション分野でもコーディネート生成などで活かせるかもしれません。

まとめ

再びSREチームの西郷です。今回初めてAWS re:Inventに参加したのですが、AWSのビジネスの大きさや今後の可能性を体感できた貴重な1週間でした。

AWSがクラウド市場でシェアを獲得している理由はサービスのバリエーションやその開発スピードにあると思っていたのですが、KeynoteやSessionに参加する中で、ユーザーが本当に求めているサービスは何かが常に考えられていること、それが実際にちゃんと形になることも支持される理由なのだと感じました。

今回得た知見を弊社サービスの提供に活かし、ビジネスの成長に繋げていきたいです。

最後に、ZOZOテクノロジーズではサービスをより良くしてくれる仲間を大募集中です。ご興味のある方は、以下のリンクからぜひご応募ください。

tech.zozo.com


  1. Spot Instanceの終了予告、Auto ScalingのTerminating:Wait相当

カテゴリー