2019年9月27日、アマゾン ウェブ サービス ジャパン(AWSジャパン)はコンテナに関する技術説明会を開催した。前半はAWSジャパンの塚田朗弘氏がコンテナの基礎やAWSのコンテナサービスを紹介。後半はメルカリ取締役CTOの名村卓氏が登壇し、おもに機械学習を支えるコンテナの活用について語った。
課題にフィットするAWSのコンテナ関連サービス
技術説明会に登壇したAWSジャパンのシニアソリューションアーキテクトの塚田朗弘氏は、コンテナについてのおさらいからスタートした。従来、システム開発においてはローカル、ステージング・QA、本番などで環境が異なっていたため、テストで動いても、本番で動かないということがあった。こうした課題を解消すべく生まれたのがコンテナ。コンテナのライフサイクル管理を行なうDockerは、2013年3月にOSSとしてリリースされた。Dockerが実行エンジンとして常駐することで、すべての環境で同じコンテナイメージを動作させることが可能になった。
しかし、コンテナに関しては、Dockerの外で必要になることも多い。たとえば、実行環境が複数サーバーのクラスターになった場合は、「Dockerコンテナをどこで動かすのか」「どうやってロードバランスするか」といった問題が生まれてくる。こうした課題を解決するのがAWSのコンテナサービスで、マネージド型のオーケストレーターである「Amazon Elastic Container Service (Amazon ECS) 」を使えば、Dockerコンテナのデプロイを一括で行なえる。週で数億単位のコンテナ、数百万インスタンスを管理できる高いスケーラビリティを持つほか、多様なワークロードを「タスク」や「サービス」などのシンプルなリソース表現で扱える。
OSSのオーケストレーターであるKubernetesもサポートしている。現在、CNCF(Cloud Native Computing Foundation)の調べでは半分以上のKubernetesユーザーがAWS上でワークロードを動かしているが、このKubernetesをマネージドサービスとして提供するのが「Amazon Elastic Kubernetes Service (Amazon EKS) 」だ。Amazon EKSではKubernetes自体のソースコードを変更していないため、エコシステムのOSSやツールをそのまま利用でき、CNCFの認定も得ている。
その他、AWSではコンテナイメージをセキュアに保管できる「Amazon ECR(Amazon Elastic Container Registry)」やEC2インスタンスの管理を不要とするサーバーレスのコンテナ実行環境「AWS Fargate」も提供、サービスディスカバリの「AWS Cloud Map」、サービスメッシュの「App Mesh」、コンテナワークロードをモニタリングできる「Amazon Cloud Watch Container Insight」など、コンテナを簡単に安全に利用するためのサービスが用意されているという。
とはいえ、「コンテナありきでシステムを設計するのは本末転倒。コンテナを見るだけではなく、全体を見た上でのシステム設計が必要になる」と塚田氏は指摘する。その上で、システム要件や運用に合わせてLambdaのようなFaaS、コンテナ、仮想マシンなどのサービスを選択することが重要だという。
AWSを使い続ける理由は実績が積み上がっているから
続いてコンテナとAWSのサービスの活用について説明したのは、メルカリ 取締役CTOの名村卓氏だ。
個人間取引の代表的なサービスとなったメルカリだが、現在流通総額は4902億円、売上高は462億円、月間アクティブユーザー(MAU)は1357万人を超える。このように拡がる取引を支えているのが、安全・安心への取り組みだ。現在、メルカリではステークホルダーと連携し、違反者の発見や排除を迅速に行なっている。また、人手やAIによる商品や取引、アクセスなどの解析も実施。決済サービスのメルペイを軸にアパレル、飲食、小売りなどさまざまな業界とエコシステムを構築していくという。
コンテナの活用としてまず挙げたのは、機械学習を用いた画像検索だ。一般的なマーケットに比べ、メルカリのような個人間取引はゆらぎのあるデータを扱う。「たとえば、iPhoneひとつとってみても、ガラスの割れているもの、割れていないものがある」(名村氏)とのことで、メルカリでは写真を使った類似検索が可能になっている。
この機械学習を支えるのがAmazon EKSで、Amazon S3内から送られた大量の画像データをEKSクラスターでトレーニングし、画像検索用のインデックスを作っている。EKSを採用したのはメルカリのデータを保存しているAmazon S3との相性のよさもあるが、複雑なリソース定義を容易にするKubernetesのCRD(Custom Resource Definition)が利用したかったという。名村氏は「Kubernetesのクラスターを運用するのはノウハウが必要で、非常に骨が折れる。マネージドkubernetesのEKSを使えば、そこを勝手に管理してくれる」と語る。
また、写真に応じて商品名やスペックの候補を出したり、カテゴリ設定などを自動で行なってくれる「AI出品」、マネーロンダリングや詐欺取引を防止するため取引のログを収集・解析する作業でもECSやFargateなどのコンテナ関連サービスが用いられている。名村氏は、「ログの量は時期によって流量が変動するので、スケールしながら対応するのは大変。でも、Fargateを使えば、インスタンスの管理も不要だし、自動的にスケールしてくれる」と評価した。
メルカリがコンテナを推進している理由としては、「不要なものが多かったサーバーに対して、コンテナであれば役割ごとに最小限かつ最適な環境を構築できる」「開発から本番まで統一したイメージが利用可能」「マニュフェストベースの運用自動化と再現性が実現できる」「マネージドサービスによるコストと属人性の削減」の4つが挙げられた。現在はマニュフェストとして定義づけられた運用やマネージドサービスの活用により、インフラエンジニアがコストや負荷をかけることなく、クオリティの高いインフラ運用が実現しているという。
また、メルカリがAWSのサービスを使う理由としては、クラウドサービスとして信頼と実績が積み上がり続けていることを挙げた。また、新機能がつねにリリースされ続けるほか、「Customer Obsession」と呼ばれる顧客重視の姿勢とサポートもAWSを利用し続けているポイントだという。
週刊アスキーの最新情報を購読しよう
本記事はアフィリエイトプログラムによる収益を得ている場合があります