こんにちは。メルカリアドベントカレンダー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内部で使用しているツールのデータストアとしても使用しています。
Amazon CloudFront
いわゆるCDNとしての使い方よりも、自社製URL短縮サービスのフロントエンド部分として使っています。CloudFrontを使いグローバルで一つのエンドポイントのドメインとしつつ、短縮後のURLパスのサフィックスを条件にして、短縮前のURLと短縮後のマッピングを持っているオリジンのDBへリクエストを振り分けています。
IAM SAML2.0フェデレーティッドユーザによるマネージメントコンソールログイン
メルカリグループ全体で数十のAWSアカウントを運用しています。IAMのSAML2.0フェデレーティッドユーザとの連携機能を利用して、各AWSアカウントを担当しているチームメンバーが社内で利用しているSSOミドルウェアと組み合わせSAML2.0を使用してログインできる環境を用意しています。
CloudFront Pre-Signed URL
お客さまからのお問い合わせ画像をカスタマーサポートメンバーのみ閲覧できるようにする仕組みを用意しています。お問い合わせ画像を表示するURLは安全に扱う必要があるため、短時間で有効期限切れになります。これを実現するためにこのサービスを使用しています。
docs.aws.amazon.com
AWS WAF
メルカリチャンネルを提供していた時、社内では配信動画を監視するシステムを独自に構築していました。WAFは社外からのアクセスを防ぐためのFirewallとして使っていました。
Amazon RedShift
会計レポートシステムでマイクロサービス化する前までのシステムで使用されています。
Amazon EKS,AWS Fargate
商品画像検索における特にトレーニングのためのインフラとして使用しています。speakerdeck.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からオンコール当番呼び出し機能のみを切り出したような仕組みです。
現在はリンク先の資料とは構成が変わっておりまして、API Gateway が GitHub webhook からのリクエストを受ける仕組みに変更しています。
Lambda@Edge
たまにあります、CloudFrontでヘッダを加工したくなること。そんな時ちょっとしたロジックを組み込む時に使っています。
Amazon Elasticsearch Service
ログの監視基盤の一つとしてこれまで自前のサーバでKibanaを運用していましたが、最近 Amazon Elasticsearch Service 側へ移動しました。
他にも現在進行形で…
その他、私は追えていないのですが、Amazon connectの導入や、Amazon Echo のスキル開発を試しているチームもあるようです。またメルペイ社ではAML(Anti-Money Laundering)システムの稼働インフラとしてAWSを使用しています。
そして現在、ちょっと未来
そして現在。私は re:Invent 2019の会場に来ております。
AWS CEO、Andy Jassy によるKeyNoteが終了したところです。既にたくさんの新技術の発表がありました。
上記はほんの一部ですが、ピックアップしてみました。Amazonがついに量子コンピュータ出してきたのも大きなニュースですが、Amazon ConnectがAIを導入して進歩していたり、S3をデータレイクとして使用する機能が充実しているのも良いなという感想です。
日程的にはre:Inventの折り返し地点です。まだ新技術の発表があると思います。来年、そして未来のメルカリはどんなAWSの技術と向き合うことになるかな。ワクワクしながら後半戦キャッチアップしていきたいと思います。
明日の執筆担当は、SREチームの @cookie-s さんです。それでは引き続きお楽しみください。