🙆

Souzoh Tech Talk #05:Infrastructure

2021/10/01に公開

概要

2021/09/15に開催された下記勉強会のメモです
https://mercari.connpass.com/event/221980/

https://www.youtube.com/watch?v=1uCWzfaIedE

パネルディスカッション

Infrastructure

アーキテクチャの全体像はこちら参照
https://engineering.mercari.com/blog/entry/20210810-mercari-shops-tech-stack/

Cloud Run

  • 選定理由
    • エンジニアが少ないのでk8sのクラスタをマネージが大変だと思った
      • k8sのマニュフェスト書くよりお手軽
    • なんでもできないもの選ぶのは意外と良い選択
      • できない時に諦めつく
      • シンプルに仕上がる
      • 作る時に迷わない
    • 選定当初はもうちょっと柔軟性あると思ってた
      • 結果としては問題なかった
  • Google Cloud製品との連携
    • Google Workflow
      • CIのGithubActionのWorkflowと同じようなもの
      • 複数のサービスにまたぐような処理
      • ステップを定義できる
    • Google Tasks
      • バッチ処理
        • たくさんのデータを処理するとき
    • Google Scheduler
      • Cronのような定期実行
      • エンドポイント叩くとCroudRunが動くといった使い方をしている
    • Google Pub/Sub
      • メッセージパブリッシュして関心のあるサービスがサブスクライブ
  • コスト
    • ちゃんと比較できないから難しいけど、多分安いと思う
    • インスタンスを構えなくて良い
    • リクエスト来続けるようなサービスはalways on CPU allocation使うといいかも?

Q&A

  • Pub/SubとTask使い分け
    • Pub/Subはメッセージが絶対一つという保証がない
      • サブスクリプションを複数やったケースに限るが低い確率で発生
    • Taskは設定できるエンドポイントが変更できる
  • always-on CPU allocationが使える状態でもTasksでバッチ使う方が良い?
    • 処理を分けれるので良い

CloudSQL/PostgreSQL

  • 選定理由
  • なぜSpanner使っていないのか
    • スモールチームでスタートするので開発スピードが重要
    • ORMの存在が重要
      • Spannerだと弱い
        • 独自に書くか対応してるやつ選ぶ必要がある
    • 高い?
      • 安くする方法もあるのでなんとも
    • なんでPostgreSQL?
      • スケーラブルなものにしたい
      • Cockroach DBはpostgreしゃべるので後で変更できる選択肢として
      • メルカリではmysql多いけど
    • read heaveyであまり負荷来ないので他の選択肢を優先

Q&A

  • CloudSQL4半期に一度ダウンタイムが避けられないがどうしてるか?
    • マイクロサービスなのでサービスを一部使えないみたいにしてやろうかなと考えている
    • 日程調節もできる
  • GraphQL, gRPCとかリソースが少ない時、開発が大変そうだけど?
    • 今までやってたのでハードルあまりなかった
    • 自動化とか組んでる
      • 速やかにマイクロサービスが立てれるようになってる
    • 判断的には好み?
      • 考えないといけないことは増える
      • デプロイしづらいとかもある
  • アーキテクチャの将来計画について
    • CloudRunからk8sにしないといけない時が来る?
      • しばらくは変えなくてもいいかも
      • うまく動いている

CDN / Fastry

  • 選定理由
    • Fastryはメルカリで使ってる
    • CloudCDNだとコストかかるかも?
    • GCPでいけるかもと考えていた
      • NextJSの関係だったような?
        • リクエスト多い
        • SSRで捌けなくなりそうだった
      • CloudCDNは中見て細かい制御ができない
        キャッシュ戦略

Q&A

  • GraphCDN on Fastry使ってみる予定ある?
    • 今のところ予定はないかも
    • GraphQLはCDNでキャッシュしづらいというのはあるが、GraphQLの負担が問題になってない
      • 100倍とか1000倍のクエリーが来るようになったら?
  • Cloudflare WorkersなどEdgeWorkersの動向どうみてる?
    • このあたりあまり見てない
    • VCLで事足りてる感
  • FastlyのImage Optimizerなど使っていますか?
    • 今はimageproxyをCloudRunで動かしてる
      • webpのオートディティクションある
      • 同じURLに複数のオブジェクトもつとかやってる
    • Fastry最初使う予定なかったので

https://imgproxy.net

  • キャッシュ戦略によるインフラ負荷の軽減のトピック
    • めちゃくちゃ減った99.9%くらいFastryで捌いてる
    • NextJSがSSRできるのが強い
  • CloudinaryでマルチCDNとか考えていますか?
    • どういう目的でやりたいか?
    • 純粋なコンテンツデリバリーという意味ではFastryにおいてあれば基本大丈夫と考えている
    • 考えてるのはFastry障害あった時どうするか
      • 使えませんとだけ返す仕組みとか

課題と取り組み/技術選定の理由

  • 課題
    • Canary deployment
    • Terraform module
    • Cloud SQL maintenance window

その他

CI/CDの話する予定あったけどこちらの記事読んでくださいとのこと
https://engineering.mercari.com/blog/entry/20210817-mercari-shops-ci-cd-pr-env/

Discussion