lasciva blog

開発して得た知見やwebビジネスのストック

「Amazon Japan Tech Night #2」に参加してきた

amazonjapantechnight2.splashthat.com

Amazonのサービスを開発している方の話を聞けるのが珍しいので、参加してきました。
以下の目的で、四半期に1回ぐらいのペースでやっていく予定だそうです。

東京拠点の開発チームは主に4つあるそうです。

  • marketplace
  • INTech(小売)
  • Search
  • device(Alexa/Kindleなど)

発表内容以外の点で、他のミートアップと違うと感じたところは下記です。

  • NDA契約が必要
    • 確認したところ、スライドのシェア等は大丈夫で、懇親会等で知り得た機密情報とかが禁止という意味だそうです。
  • 閉会のときに抽選会があり、Kindle系の商品が貰える

発表

※ 客観的に記述したつもりですが、私の理解不足等で誤っている可能性もありますので、予めご了承ください。

Amazon Points

Amazon Pointsチームという、ポイント関連の開発を行ってる方々の発表でした。

登壇者

Matsuiさん

komodaさん

The Feature
  • Japan-first
  • 東京がメインのチーム
  • 顧客視点から見た機能
    • 商品ページのポイント表示
    • キャンペーン(本のまとめ買いなど、PrimeDay)
    • クレカのポイントバック
The Tech

f:id:hacking15dog:20190912121328j:plain

f:id:hacking15dog:20190912121340j:plain

デザイン

  • SOA, Microservices
  • 他のサービスと密接なcollaboration
  • 他システムと疎結合にすること
  • 求められるスキル
    • 他のサービスを含めコードを読むことが多いため、素早く理解すること
    • 大規模システムにおけるハイレベルな設計

インフラ面

  • (もちろん、)AWSフル活用
    • EC2, Lambda, S3, DynamoDB, SNS, SQS, Kinesis, SWF, Step Function, EMR, Redshift, Glue...
    • 公開されてない機能もあり
  • ほぼすべてのものがAmazon自身によって開発されたもの
    • AWSだけでない
    • OSSコミュニティと比較しても、社内の開発コミュニティは大きい
      • Web Framework, Build Tool, Monitoring, Alarming, ML...

Fulfilment By Amazon Preorder Enhancement

自己紹介

JP Seller Tech Team

  • 前職: KDDI
  • 2016年入社
  • チームは10人以上いる
Mission

Innovate on behalf of third-party sellers and to improve both cusromer and seller ecperiences across Amazon Marketplaces

最近の事例

FBAの予約注文の改善

f:id:hacking15dog:20190912121357j:plain

背景
  • 予約商品が売りづらい
    • 発売日の設定、変更がseller自身でできない

f:id:hacking15dog:20190912121405j:plain

解決方法

f:id:hacking15dog:20190912121421j:plain

f:id:hacking15dog:20190912121456j:plain

f:id:hacking15dog:20190912121501j:plain

  • SNSと SQSQueueでサーバレスなのでスケーラブル
  • Downstreamがサブスクライブして処理を行う
  • DeadLetterQueueに失敗したメッセージを突っ込む

f:id:hacking15dog:20190912121505j:plain

f:id:hacking15dog:20190912121510j:plain DynamoDBにrequestを保存することで、workflowで複数の通知を一つにまとめることができる

Customer Service By Amazon

自己紹介

JP Seller Tech Team

  • 日本に9年
  • 1年間は群馬にいた
CSBA Overview
  • sellerのCS代行サービス
    • 中国のsellerが日本で販売するときなど
Seller

f:id:hacking15dog:20190912122133j:plain

Notification

考慮したこと

  • セキュリティ
    • 個人情報などはNotificationサービスでは持たない
  • スケーラビリティ
    • Queueを使って非同期にしたり、サービスを分割して適切にリリースを調整できるように

f:id:hacking15dog:20190912122142j:plain

Tech1 Release Gating

リリース時の下のような課題に対して、QAゲートを使って解決

fn existingMethod() {
  ...
  if (releaseGate.useFeature("new_feature_42")) {
    newFeature.doStuff();
  }
  ...
}

Gradual Release

  • 何%か指定することができる
  • 本番環境でE2Eテストするために、QAだけに許可できる
  • 障害が起こった際に影響を最小限に抑えるために、徐々にリリースできる
Tech2 Service Mocking

たくさんの他のマイクロサービスに依存したり、環境が異なったりして辛い。
そこで、依存しているサービスのモックをフレームワークによって作成して解決。

f:id:hacking15dog:20190912122400j:plain

f:id:hacking15dog:20190912122405j:plain

Katana

Applied Scientist

f:id:hacking15dog:20190912120439j:plain

f:id:hacking15dog:20190912120503j:plain

f:id:hacking15dog:20190912120606j:plain

Katana はJapanese Text Tokenizerのこと。
既存のトークナイザーは辞書を持っているタイプのものが多く、以下の要件に対応できない。

  1. MultiDomain(Product,音声デバイスなど)
  2. (検索ワードなどの)新しい言葉などに対応しないといけない

f:id:hacking15dog:20190912120625j:plain

f:id:hacking15dog:20190912120647j:plain

懇親会

  • 基本的には英語を使っている
  • Javaを使ってるサービスが多く、社内専用のフレームワーク等もある
  • 中には、社内のサービスを扱うため専用の言語があったりもする
  • 攻めた開発やリリースができるような仕組みを整えられてる
    • リリース時に、段階的にリリースできる仕組み
    • 恐れずRollbackもできる仕組み
  • いわゆるSREチームはなく、アプリケーション担当が自分のサービスのインフラも見る