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

SaaS における EKS のシングルテナントクラスタ戦略とスポットインスタンス活用術 / EKS single-tenant cluster strategy and Spot Instances

SaaS における EKS のシングルテナントクラスタ戦略とスポットインスタンス活用術 / EKS single-tenant cluster strategy and Spot Instances

「コンテナ × スポットインスタンス」 活用セミナーの登壇資料です。

Manabu Sakai

June 10, 2020
Tweet

More Decks by Manabu Sakai

Other Decks in Technology

Transcript

  1. freee 株式会社
    SaaS における EKS のシングルテナント
    クラスタ戦略とスポットインスタンス活用術
    2020.06.10

    View Slide

  2. ● freee 株式会社 SRE チーム所属
    ○ 2018 年からプレイングマネージャー
    ● 複業でスタートアップの技術アドバイザー
    ● 1 児の父
    ● Twitter
    ○ @manabusakai
    ● Blog
    ○ manabusakai.dev
    Manabu Sakai
    坂井 学
    freee 株式会社
    2

    View Slide

  3. Mission
    使命
    3
    スモールビジネスを、
    世界の主役に。
    生産年齢人口が劇的に減少し、慢性的な人手不
    足となる日本で労働生産性向上は緊急の課題と
    なっています。
    freeeは「人工知能」と「統合基幹業務システ
    ム」をクラウド技術を活用し、業務効率化のサ
    ポートを続けることで、中堅中小企業のバック
    オフィス業務効率化を目指しています。

    View Slide

  4. Products
    製品・サービス 1/2
    4
    中小企業の経理業務を効率化。
    帳簿や決算書作成・請求業務に対応。リアルタイムに数字を把握できる
    給与計算や労務管理を大幅に効率化。
    給与明細作成や年末調整、入社手続きから勤怠管理まで対応
    税務申告書作成業務を効率化。
    法人税・消費税・法定調書・申請届出や電子申告にも対応

    View Slide

  5. Products
    製品・サービス 2/2
    5
    低コストでマイナンバーの収集から保管、利用、破棄までが
    クラウド上で完結
    画面に沿って入力するだけで、会社設立に必要なすべての書類を
    5分で作成できる無料サービス
    個人事業の開業手続きが無料、簡単、最速。
    ガイドに沿って質問に答えるだけで書類作成が完了
    Webで申し込みでき、最短4営業日で発行。
    創業時でも本人確認書類だけで審査可能

    View Slide

  6. マイクロサービス化の推進
    開発組織の拡大に合わせてマイクロサービス化を推進。
    本番環境で 20 以上のマイクロサービスが稼働中。
    ● 新たに作るものは基本的に Kubernetes (EKS) を採用
    ● アプリケーション開発者への権限委譲
    ○ AWS の環境構築を含めてセルフサービス化
    ● GitOps によるデプロイ


    View Slide

  7. マイクロサービス化の推進
    詳しくは builders.flash✨ の「SaaS においてマイクロサービス化は有用な
    のか?」をご覧ください(freee の事例が取り上げられています)。

    View Slide

  8. シングルテナントクラスタとは?

    View Slide

  9. シングルテナントクラスタ戦略
    K8s cluster
    Product A
    Service A-1
    Service A-2
    Service A-3
    Product B
    Service B-1
    ServiceB-2
    Service B-3
    Product C
    Service C-1
    Service C-2
    Service C-3
    K8s cluster
    Product A
    Service A-1
    Service A-2
    Service A-3
    K8s cluster
    Product B
    Service B-1
    Service B-2
    Service B-3
    K8s cluster
    Product C
    Service C-1
    Service C-2
    Service C-3
    プロダクト単位で
    EKS クラスタを分割

    View Slide

  10. Blast radius を小さくする
    K8s cluster
    Product A
    Service A-1
    Service A-2
    Service A-3
    Product B
    Service B-1
    ServiceB-2
    Service B-3
    Product C
    Service C-1
    Service C-2
    Service C-3
    K8s cluster
    Product A
    Service A-1
    Service A-2
    Service A-3
    K8s cluster
    Product B
    Service B-1
    Service B-2
    Service B-3
    K8s cluster
    Product C
    Service C-1
    Service C-2
    Service C-3
    オペミスなどによる影
    響をクラスタに留める

    View Slide

  11. シングルテナントクラスタのメリット
    リスクを分散し、心理的安全性を高める。
    ● Blast radius(障害の影響範囲)を小さくすることができる
    ● セキュリティや権限の境界線を明確化しやすい
    ● クラスタのアップデート作業がやりやすい
    リスク分散以外にも、クラスタに自由度を与えやすい。
    今回紹介するスポットインスタンスの活用も開発者の意思で選択できる。
    e.g. 機械学習基盤、GitHub Actions の self-hosted runner

    View Slide

  12. EKS とスポットインスタンス

    View Slide

  13. eksctl
    EKS でスポットインスタンスを使うなら "eksctl" がオススメ。
    https://eksctl.io/
    ● eksctl の nodegroup の実体は Auto Scaling Group
    ● スポットの指定には Auto Scaling Group に統合された EC2 Fleet の
    機能が使われる

    View Slide

  14. スポットインスタンスの活用
    本番環境以外の nodegroup にスポットインスタンスを活用。
    シングルテナントクラスタによるコスト増を抑える。
    活用のコツ
    ● オンデマンドで最低台数を確保
    ● 1 つの nodegroup に複数のインスタンスファミリーを指定
    ○ 現行世代と 1 世代前を指定
    ○ CPU を問わない場合は m5a など AMD プロセッサも検討
    ● 適正なスポットプールの指定
    ○ アベイラビリティゾーン × インスタンスタイプ × OS


    View Slide

  15. 具体的な指定方法
    cluster.yaml に instancesDistribution を指定する。

    View Slide

  16. 本番環境で使っていない理由
    コンテナはステートレスだが、中断通知を受け取ってから 2 分以内に
    drain 処理が終わらないケースがある。
    ● 大量のデータを持つユーザーの場合、2 分以内に処理を終えられない
    ケースがある
    ● お金に関するデータは一貫性のトランザクションが重要なので、単純
    に分割すれば良いというわけにはいかない
    ○ 分散システムにおけるデータ整合性担保の難しさ


    View Slide