Mercari Engineering Blog

We're the software engineers behind Mercari. Check out our blog to see the tech that powers our marketplace.

メルカリとAWS:振り返り、そして今

こんにちは。メルカリアドベントカレンダー4日目担当、JPメルカリ SREチーム @siroken3 です。

本日はメルカリで利用されているAWSの技術について、どんなことに使ってきたか、2019年末までのふりかえりと現在そしてちょっと未来(?)についてお送りしたいと思います。

2019年末までのふりかえり

メルカリでは2014年の創業以来、Amazon Web Services、AWSを採用しそのマネージドサービスを活用してきました。

Amazon S3

みんな信頼しているS3。当社ではお客さまが出品時に投稿した商品画像を格納している他、アクセスログのバックアップ先、MySQLのバックアップ先として活用しています。その他あまり表には出てこないのですが、パートナー企業様とのデータ連携でS3を使う場面が多いです。特にSFTPで連携する場合はAWS Transfer for SFTPが使えるようになり、これまでhttps://github.com/kahing/goofysを使って独自に構築していた時よりも随分と楽になりました。aws.amazon.com

Amazon EC2

主にメルカリUSで使用しています。MySQL、Webサーバー、バッチ/非同期処理サーバ、memcachedを稼働させています。成長し続けるインフラストラクチャとメルカリの挑戦/mercari infrastructure and software - Speaker Deckが参考になるかと思います。aws.amazon.com

Amazon Relational Database Service (RDS),Aurora

メルカリUSのサブシステム用DBMSとして利用しています。一部SRE内部で使用しているツールのデータストアとしても使用しています。

aws.amazon.com

Amazon CloudFront

いわゆるCDNとしての使い方よりも、自社製URL短縮サービスのフロントエンド部分として使っています。CloudFrontを使いグローバルで一つのエンドポイントのドメインとしつつ、短縮後のURLパスのサフィックスを条件にして、短縮前のURLと短縮後のマッピングを持っているオリジンのDBへリクエストを振り分けています。

f:id:siroken3:20191202121744p:plain

IAM SAML2.0フェデレーティッドユーザによるマネージメントコンソールログイン

メルカリグループ全体で数十のAWSアカウントを運用しています。IAMのSAML2.0フェデレーティッドユーザとの連携機能を利用して、各AWSアカウントを担当しているチームメンバーが社内で利用しているSSOミドルウェアと組み合わせSAML2.0を使用してログインできる環境を用意しています。

docs.aws.amazon.com

CloudFront Pre-Signed URL

お客さまからのお問い合わせ画像をカスタマーサポートメンバーのみ閲覧できるようにする仕組みを用意しています。お問い合わせ画像を表示するURLは安全に扱う必要があるため、短時間で有効期限切れになります。これを実現するためにこのサービスを使用しています。 docs.aws.amazon.com

AWS WAF

メルカリチャンネルを提供していた時、社内では配信動画を監視するシステムを独自に構築していました。WAFは社外からのアクセスを防ぐためのFirewallとして使っていました。

Amazon RedShift

会計レポートシステムでマイクロサービス化する前までのシステムで使用されています。

aws.amazon.com

Amazon EKS,AWS Fargate

商品画像検索における特にトレーニングのためのインフラとして使用しています。speakerdeck.com

aws.amazon.com

aws.amazon.com

AWS CloudTrail, Amazon GuardDuty, AWS Config

メルカリでは数十のAWSアカウントを扱っており、これらのAPIアクセス監査ログ(CloudTrail)、不審なアクセスのチェック(GuardDuty)、システム構成コンプライアンス監査のための構成管理(AWS Config)の情報を収集しセキュリティ監査チームにて監査できるようにしています。 aws.amazon.com aws.amazon.com aws.amazon.com

AWS Organizations

数十のAWSアカウントを管理するために AWS Organizations を使用しています。コンソリデーティッドビリングで支払いを統合していた頃はアカウント作成時には電話によるコールバックが必要だったりクレジットカードの登録が必須で大変でした。^^; しかし、この機能が使えるようになってから随分アカウント登録の敷居が下がりました。

Amazon Athena

管理しているAWSアカウント群から収集したセキュリティ監査ログに対し調査クエリを発行するため、Athenaを利用しています。特にCloudTrailのログ形式はAthenaで扱うには工夫が必要で、公式の解説を参考にしました。docs.aws.amazon.com

AWS Lambda

ソースコード監査のためのGitHub botをLambdaで構築しました。 その他 slackコマンドからオンコール当番を電話呼び出しするための仕組みを構築しています。PagerDutyからオンコール当番呼び出し機能のみを切り出したような仕組みです。

speakerdeck.com

現在はリンク先の資料とは構成が変わっておりまして、API Gateway が GitHub webhook からのリクエストを受ける仕組みに変更しています。

Lambda@Edge

たまにあります、CloudFrontでヘッダを加工したくなること。そんな時ちょっとしたロジックを組み込む時に使っています。

Amazon Elasticsearch Service

ログの監視基盤の一つとしてこれまで自前のサーバでKibanaを運用していましたが、最近 Amazon Elasticsearch Service 側へ移動しました。

他にも現在進行形で...

その他、私は追えていないのですが、Amazon connectの導入や、Amazon Echo のスキル開発を試しているチームもあるようです。またメルペイ社ではAML(Anti-Money Laundering)システムの稼働インフラとしてAWSを使用しています。tech.mercari.com

そして現在、ちょっと未来

そして現在。私は re:Invent 2019の会場に来ております。

f:id:siroken3:20191202135348j:plain
re:Invent会場Las Vegasにある MCCARRAN 空港に設置されたレジストレーションスポット

AWS CEO、Andy Jassy によるKeyNoteが終了したところです。既にたくさんの新技術の発表がありました。

aws.amazon.com

aws.amazon.com

aws.amazon.com

aws.amazon.com

上記はほんの一部ですが、ピックアップしてみました。Amazonがついに量子コンピュータ出してきたのも大きなニュースですが、Amazon ConnectがAIを導入して進歩していたり、S3をデータレイクとして使用する機能が充実しているのも良いなという感想です。

日程的にはre:Inventの折り返し地点です。まだ新技術の発表があると思います。来年、そして未来のメルカリはどんなAWSの技術と向き合うことになるかな。ワクワクしながら後半戦キャッチアップしていきたいと思います。

f:id:siroken3:20191202135936j:plain
キーノートが行われているThe Venetian

明日の執筆担当は、SREチームの @cookie-s さんです。それでは引き続きお楽しみください。