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

Cookpad Lounge #4 SRE 座談会 コンテナ中心の構成からサーバーレスへの展望...

Cookpad Lounge #4 SRE 座談会 コンテナ中心の構成からサーバーレスへの展望 / From containers to serverless

Kohei Suzuki

June 16, 2021
Tweet

More Decks by Kohei Suzuki

Other Decks in Technology

Transcript

  1. アプリケーション実行基盤 - ほとんどが ECS - リバースプロキシ、Rails アプリ、Go・Java・Python アプリ、Chatbot、etc. - Kuroko2、Barbeque

    を使ってオフラインジョブをスケジュールし ECS タスクを起動 - https://techlife.cookpad.com/entry/2016/09/09/235007 - 一部 Lambda - API Gateway + Lambda + DynamoDB のようないわゆるサーバレスアプリ - Alexa Skill のようなケースも - 海外のチームでは EKS の導入も進んでいる
  2. ECS コンテナインスタンス - ほとんどが EC2 - ほとんどがスポットインスタンス、一部オンデマンドインスタンス - 一部 に

    Fargate (Spot) - CPU やメモリを多く必要とするバッチジョブ - 機械学習系に多い - ファイルシステムの I/O が非常に激しいケースなど
  3. コンテナ化、スポット化のその先 - 改善したいこと: - (とくに小規模、スタッフ向けのサービスの ) コスト最適化 - 運用負荷の軽減 -

    ECS から EKS に移行したい…… ではなく - サーバレスの技術を部分的に取り込んでいくことが重要なのではないか
  4. サーバレスとは 自分の考え: - リソースではなく使用に対する料金体系であること - ELB、EC2、RDS、ElastiCache ではなく API Gateway、Lambda、DynamoDB、そして SQS

    等 - 使われなければ料金がかからない - リソースのメンテナンスをせずに済むもの - EC2、RDS、ElastiCache は定期的にメンテナンスが発生するし、バージョンアップも必要 - メンテナンスタスクを言語のランタイムやライブラリの更新程度に抑えたい
  5. サーバレスへの展望 - 部分的にサーバレスを導入したい - レシピサービス (cookpad.com) の全トラフィックをサーバレスで ! とかやっても大変なだけで旨 みは小さい

    - バッチジョブを実行する基盤の運用負荷を減らしたい - EventBridge でスケジュールして SQS や SNS を通しつつ Lambda でバッチ処理できないか - Kuroko2、Barbeque の負担を減らせないか - オートスケールに悩まずに実行できないか
  6. 既存インフラとの連携 - サービスメッシュを活用できない - Lambda Extension でどうにかできる? - App Mesh

    の Lambda 連携の話はどうなっているんだろう …… https://github.com/aws/aws-app-mesh-roadmap/issues/33 - gRPC サーバを作れない - API Gateway の機能追加か gRPC 向けの API Gateway っぽいサービスが欲しい
  7. サーバレスアプリの運用 - デプロイはどうしよう - CDK に注目していて、CDK でデプロイするケースが増えてきている - モニタリングはどうしよう -

    AWS が提供する building block を色々組み合わせたシステムになりがち (a.k.a. ピタゴラス イッチ) - CloudWatch Logs 見るの大変じゃない ? - 主要なメトリクスを一覧できるダッシュボードが自動でほしい - ECS 環境では hako-console で実現できている https://techlife.cookpad.com/entry/2019/07/24/113835
  8. サーバレスアプリの開発 - 手元での開発どうしよう - コンテナサポートと Lambda Runtime Interface Emulator (RIE)

    で楽になってきている - SAM CLI が CDK をサポートし始めて sam local invoke 等を使えるようになった - 本番デプロイ前の動作確認はどうしよう - つい先日の公式ブログ記事で sandbox developer account にデプロイする方法が紹介されて いる https://aws.amazon.com/blogs/compute/getting-started-with-serverless-for-developers-p art-5-sandbox-developer-account/ - クックパッドにも dev アカウントと呼ばれている開発者なら誰でも自由に使える AWS アカウント があり、そこにデプロイして動作確認することもある