$30 off During Our Annual Pro Sale. View Details »

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

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. Cookpad Lounge #4
    コンテナ中心の構成からサーバーレスへの展望

    View Slide

  2. アプリケーション実行基盤

    View Slide

  3. アプリケーション実行基盤
    - ほとんどが 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 の導入も進んでいる

    View Slide

  4. ECS コンテナインスタンス
    - ほとんどが EC2
    - ほとんどがスポットインスタンス、一部オンデマンドインスタンス
    - 一部 に Fargate (Spot)
    - CPU やメモリを多く必要とするバッチジョブ
    - 機械学習系に多い
    - ファイルシステムの I/O が非常に激しいケースなど

    View Slide

  5. EC2 インスタンス (月別)

    View Slide

  6. 課題感
    - ほとんどのワークロードはコンテナに乗ったし、スポットインスタンスもかなり活
    用できている
    - 本当にすべてのアプリがコンテナを使うことが最適なのか?
    - スタッフがたまに平日の昼間にアクセスするような社内アプリを 24時間365日動き続けるコンテ
    ナで捌く必要があるのか ?
    - バッチジョブのキャパシティ予測は非常に難しく、 EC2 インスタンスのオートスケールをがんばる
    より Lambda で実行したほうが安定する上に安価ではないか ?

    View Slide

  7. コンテナ化、スポット化のその先

    View Slide

  8. コンテナ化、スポット化のその先
    - 改善したいこと:
    - (とくに小規模、スタッフ向けのサービスの ) コスト最適化
    - 運用負荷の軽減
    - ECS から EKS に移行したい…… ではなく
    - サーバレスの技術を部分的に取り込んでいくことが重要なのではないか

    View Slide

  9. サーバレスとは
    自分の考え:
    - リソースではなく使用に対する料金体系であること
    - ELB、EC2、RDS、ElastiCache ではなく API Gateway、Lambda、DynamoDB、そして SQS 等
    - 使われなければ料金がかからない
    - リソースのメンテナンスをせずに済むもの
    - EC2、RDS、ElastiCache は定期的にメンテナンスが発生するし、バージョンアップも必要
    - メンテナンスタスクを言語のランタイムやライブラリの更新程度に抑えたい

    View Slide

  10. サーバレスへの展望
    - 部分的にサーバレスを導入したい
    - レシピサービス (cookpad.com) の全トラフィックをサーバレスで ! とかやっても大変なだけで旨
    みは小さい
    - バッチジョブを実行する基盤の運用負荷を減らしたい
    - EventBridge でスケジュールして SQS や SNS を通しつつ Lambda でバッチ処理できないか
    - Kuroko2、Barbeque の負担を減らせないか
    - オートスケールに悩まずに実行できないか

    View Slide

  11. 既存インフラとの連携
    - サービスメッシュを活用できない
    - Lambda Extension でどうにかできる?
    - App Mesh の Lambda 連携の話はどうなっているんだろう ……
    https://github.com/aws/aws-app-mesh-roadmap/issues/33
    - gRPC サーバを作れない
    - API Gateway の機能追加か gRPC 向けの API Gateway っぽいサービスが欲しい

    View Slide

  12. サーバレスアプリの運用
    - デプロイはどうしよう
    - CDK に注目していて、CDK でデプロイするケースが増えてきている
    - モニタリングはどうしよう
    - AWS が提供する building block を色々組み合わせたシステムになりがち (a.k.a. ピタゴラス
    イッチ)
    - CloudWatch Logs 見るの大変じゃない ?
    - 主要なメトリクスを一覧できるダッシュボードが自動でほしい
    - ECS 環境では hako-console で実現できている
    https://techlife.cookpad.com/entry/2019/07/24/113835

    View Slide

  13. サーバレスアプリの開発
    - 手元での開発どうしよう
    - コンテナサポートと 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 アカウント
    があり、そこにデプロイして動作確認することもある

    View Slide

  14. We are hiring
    https://cookpad.jobs

    View Slide