Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Cloud Functions in Go at Mercari

BABAROT
July 13, 2019

Cloud Functions in Go at Mercari

BABAROT

July 13, 2019
Tweet

More Decks by BABAROT

Other Decks in Technology

Transcript

  1. VM/Container Serverless •好きなだけ/好きなようにスケールできる •ベンダー依存がなくポータビリティがある •要件に合わせて実行環境を変更できる •実行はベアメタルほど高速に動作しないが ビルド・テスト・デプロイのサイクルを開発者 に移譲できるので高速に開発できる Containers vs

    Severless •関数の呼び出しのたびに起動され課金され るのでアイドル時間のコストを抑えられる •インフラやリソースを管理しなくてよく、
 コードを書くことだけに集中できる •テクノロジがブラックボックス •ベンダー依存でありロックインされる可能性 もある
  2. Background function Two ways to Go HTTP function HTTPリクエストによって呼び出される関数
 標準ライブラリのhttp.HandlerFunc型に従う

    イベントに応答して起動される関数
 e.g. Cloud Storageバケットのコンテンツが
 変更されたとき
  3. Background function Two ways to Go HTTP function HTTPリクエストによって呼び出される関数
 標準ライブラリのhttp.HandlerFunc型に従う

    イベントに応答して起動される関数
 e.g. Cloud Storageバケットのコンテンツが
 変更されたとき
  4. Background function Two ways to Go HTTP function HTTPリクエストによって呼び出される関数
 標準ライブラリのhttp.HandlerFunc型に従う

    イベントに応答して起動される関数
 e.g. Cloud Storageバケットのコンテンツが
 変更されたとき
  5. microservices-kubernetes Number of deploys Collector 1. call 2. trigger POST

    /deploys HTTP request マイクロサービスごとのKubernetes
 マニフェストを管理するリポジトリ
  6. microservices-kubernetes Number of deploys Collector 1. call 2. trigger POST

    /deploys HTTP request マイクロサービスごとのKubernetes
 マニフェストを管理するリポジトリ 3. produce
  7. microservices-kubernetes Number of deploys Collector 1. call 2. trigger POST

    /deploys HTTP request マイクロサービスごとのKubernetes
 マニフェストを管理するリポジトリ 3. produce 4. export
  8. microservices-kubernetes Number of deploys Collector 1. call 2. trigger POST

    /deploys HTTP request マイクロサービスごとのKubernetes
 マニフェストを管理するリポジトリ 3. produce 4. export devstats.deploys env service corp tool kubectl
  9. Spinnaker webhook Number of deploys Collector 1. call 2. trigger

    POST /deploys HTTP request 3. produce 4. export devstats.deploys env service corp tool Kubernetesリソースを
 GUI経由で扱えるコンポーネント spinnaker
  10. Cloud Scheduler Cloud Pub/Sub Number of developers Collector 1. message

    2. trigger microservices-terraform マイクロサービスごとの開発者
 を定義したTerraformリポジトリ
  11. Cloud Scheduler Cloud Pub/Sub Number of developers Collector 1. message

    2. trigger microservices-terraform 3. produce マイクロサービスごとの開発者
 を定義したTerraformリポジトリ
  12. Cloud Scheduler Cloud Pub/Sub Number of developers Collector 1. message

    2. trigger microservices-terraform 3. produce 4. export マイクロサービスごとの開発者
 を定義したTerraformリポジトリ
  13. Cloud Scheduler Cloud Pub/Sub Number of developers Collector 1. message

    2. trigger microservices-terraform マイクロサービスごとの開発者
 を定義したTerraformリポジトリ 3. produce 4. export devstats.developers env service corp