このページの本文へ

EKS、ECS、Fargateなどのサービスを用途にあわせて使い分け

メルカリの機械学習を支えるAWSのコンテナサービス

2019年09月30日 11時00分更新

文● 大谷イビサ/TECH.ASCII.jp

  • この記事をはてなブックマークに追加
  • 本文印刷

 2019年9月27日、アマゾン ウェブ サービス ジャパン(AWSジャパン)はコンテナに関する技術説明会を開催した。前半はAWSジャパンの塚田朗弘氏がコンテナの基礎やAWSのコンテナサービスを紹介。後半はメルカリ取締役CTOの名村卓氏が登壇し、おもに機械学習を支えるコンテナの活用について語った。

AWSジャパン シニアソリューションアーキテクト 塚田朗弘氏

課題にフィットするAWSのコンテナ関連サービス

 技術説明会に登壇したAWSジャパンのシニアソリューションアーキテクトの塚田朗弘氏は、コンテナについてのおさらいからスタートした。従来、システム開発においてはローカル、ステージング・QA、本番などで環境が異なっていたため、テストで動いても、本番で動かないということがあった。こうした課題を解消すべく生まれたのがコンテナ。コンテナのライフサイクル管理を行なうDockerは、2013年3月にOSSとしてリリースされた。Dockerが実行エンジンとして常駐することで、すべての環境で同じコンテナイメージを動作させることが可能になった。

 しかし、コンテナに関しては、Dockerの外で必要になることも多い。たとえば、実行環境が複数サーバーのクラスターになった場合は、「Dockerコンテナをどこで動かすのか」「どうやってロードバランスするか」といった問題が生まれてくる。こうした課題を解決するのがAWSのコンテナサービスで、マネージド型のオーケストレーターである「Amazon Elastic Container Service (Amazon ECS) 」を使えば、Dockerコンテナのデプロイを一括で行なえる。週で数億単位のコンテナ、数百万インスタンスを管理できる高いスケーラビリティを持つほか、多様なワークロードを「タスク」や「サービス」などのシンプルなリソース表現で扱える。

AWSのコンテナサービス

 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の名村卓氏だ。

メルカリ 取締役CTO 名村卓氏

 個人間取引の代表的なサービスとなったメルカリだが、現在流通総額は4902億円、売上高は462億円、月間アクティブユーザー(MAU)は1357万人を超える。このように拡がる取引を支えているのが、安全・安心への取り組みだ。現在、メルカリではステークホルダーと連携し、違反者の発見や排除を迅速に行なっている。また、人手やAIによる商品や取引、アクセスなどの解析も実施。決済サービスのメルペイを軸にアパレル、飲食、小売りなどさまざまな業界とエコシステムを構築していくという。

 コンテナの活用としてまず挙げたのは、機械学習を用いた画像検索だ。一般的なマーケットに比べ、メルカリのような個人間取引はゆらぎのあるデータを扱う。「たとえば、iPhoneひとつとってみても、ガラスの割れているもの、割れていないものがある」(名村氏)とのことで、メルカリでは写真を使った類似検索が可能になっている。

 この機械学習を支えるのがAmazon EKSで、Amazon S3内から送られた大量の画像データをEKSクラスターでトレーニングし、画像検索用のインデックスを作っている。EKSを採用したのはメルカリのデータを保存しているAmazon S3との相性のよさもあるが、複雑なリソース定義を容易にするKubernetesのCRD(Custom Resource Definition)が利用したかったという。名村氏は「Kubernetesのクラスターを運用するのはノウハウが必要で、非常に骨が折れる。マネージドkubernetesのEKSを使えば、そこを勝手に管理してくれる」と語る。

Amazon S3とAmazon EKSの相性のよさ

 また、写真に応じて商品名やスペックの候補を出したり、カテゴリ設定などを自動で行なってくれる「AI出品」、マネーロンダリングや詐欺取引を防止するため取引のログを収集・解析する作業でもECSやFargateなどのコンテナ関連サービスが用いられている。名村氏は、「ログの量は時期によって流量が変動するので、スケールしながら対応するのは大変。でも、Fargateを使えば、インスタンスの管理も不要だし、自動的にスケールしてくれる」と評価した。

 メルカリがコンテナを推進している理由としては、「不要なものが多かったサーバーに対して、コンテナであれば役割ごとに最小限かつ最適な環境を構築できる」「開発から本番まで統一したイメージが利用可能」「マニュフェストベースの運用自動化と再現性が実現できる」「マネージドサービスによるコストと属人性の削減」の4つが挙げられた。現在はマニュフェストとして定義づけられた運用やマネージドサービスの活用により、インフラエンジニアがコストや負荷をかけることなく、クオリティの高いインフラ運用が実現しているという。

 また、メルカリがAWSのサービスを使う理由としては、クラウドサービスとして信頼と実績が積み上がり続けていることを挙げた。また、新機能がつねにリリースされ続けるほか、「Customer Obsession」と呼ばれる顧客重視の姿勢とサポートもAWSを利用し続けているポイントだという。

■関連サイト

カテゴリートップへ

ASCII.jp特設サイト

クラウド連載/すっきりわかった仮想化技術

ピックアップ