Monolith to CloudNative (CNDT2020)

Ae03eb47606f4e0125268d39f8aebfad?s=47 ymmt2005
September 08, 2020

Monolith to CloudNative (CNDT2020)

This is the presentation slides used at CloudNative Days Tokyo 2020.
https://cndt2020.cloudnativedays.jp/

Ae03eb47606f4e0125268d39f8aebfad?s=128

ymmt2005

September 08, 2020
Tweet

Transcript

  1. モノリスからクラウドネイティブへ 設計思想の違いを知り乗り越える サイボウズ株式会社 山本泰宇 1

  2. 自己紹介 ▌山本泰宇 @ymmt2005 ▌サイボウズ株式会社で 20 年ほど ▌cybozu.com の立ち上げ責任者 ☞現在は↑のインフラ刷新PjM 2

  3. 本日のテーマ アーキテク チャスタイル プロジェクト 運営 人材育成 OSS エコシス テムの活用 3

  4. cybozu.com ▌2010年、国内 DC で開発開始 ▌現在 150 万契約ユーザー ▌サーバー 2,000 台

    4
  5. 単調に規模が拡大 -10000 0 10000 20000 30000 40000 50000 60000 2011

    2012 2013 2014 2015 2016 2017 2018 2019 契約社数 契約社数 二次回帰 線形回帰 需要予測が容易 強気の投資が可能 5
  6. 抱えた問題 ▌長大な手順書による変更操作 ▌規模に比例する管理コスト ▌乏しい拡張性 6

  7. スケールする基盤が欲しい Photo by Carmine Savarese on Unsplash 7

  8. 2018年、基盤刷新プロジェクト開始 ▌プロジェクト名: Neco ▌当初メンバー ⚫インフラ系開発者×3 ⚫アプリ系開発者×3 ▌Kubernetes経験ほぼゼロ 8

  9. 2020 2019 2018 9

  10. 2020年9月時点 ▌クラウドネイティブな DC × 3 が稼働 ▌Neco メンバー 12 名

    ▌現行基盤からの移行プロジェクトも開始 ⚫名称:Maneki 10
  11. Neco システム図 GitHub Argo CD Neco CD Ubuntu 管理サーバー Sabakan

    CKE 管理サーバーを自動更新 Node Coil Node Coil Node Coil ネット ブート Kubernetes 自動管理 Prometheus Rook/Ceph MetalLB Teleport Contour アプリを 自動管理 Made by ECK 利用者 OSS 11 プロプライ エタリ
  12. 主要な開発成果 12 ▌仮想データセンターによる CI/CD ▌実用的なマルチテナント Kubernetes ▌BGPを活用したSDN ▌SDSを実現するための TopoLVM ▌Kubernetes

    を宣言的に管理する CKE
  13. クラウドネイティブに至る道 アーキテク チャスタイル プロジェクト 運営 人材育成 OSS エコシス テムの活用 13

  14. アーキテクチャスタイル Photo by Denys Nevozhai on Unsplash 14

  15. クラウドネイティブ=スタイル CNCF Cloud Native Definition v1.0 より (前略) このアプローチの代表例に、コンテナ、サービ スメッシュ、マイクロサービス、イミュータブルイ

    ンフラストラクチャ、および宣言型APIがあります。 これらの手法により、回復性、管理力、および可観 測性のある疎結合システムが実現します。(後略) 16
  16. なぜスタイルが重要か ▌Kubernetes != クラウドネイティブ ⚫モニタリングの欠如 ⚫アップグレードが困難 ⚫… ▌なにを使うかより、どう使うか DO IT

    RIGHT! 17
  17. 原則駆動開発 (PDD) ▌以下三カ条の設計原則を徹底 ⚫Be Declarative ⚫Define by Software ⚫Test Everything

    18
  18. 誘導された開発成果 ▌仮想データセンターによる CI/CD ⚫Node OS 更新による不具合も検知可能 ⚫Kubernetes 自体 GitOps で更新

    ▌ストレージ・ネットワーク on K8S Test Everything から Define by Software から Be Declarative から 19
  19. プロジェクト運営 Photo by Patrick Perkins on Unsplash 20

  20. 開発モデル ▌インクリメンタル+プロトタイピング ▌下層から順次積み上げ開発 ⚫物理サーバー管理⇒k8sインストーラ⇒… ▌コンセプト検証(PoC) ⚫新機能開発時はほぼ実施 21

  21. 難しいところ ▌工数が読みにくい ⚫PoC 自体に工数がかかるケースも多々 ▌クラウドネイティブ界隈は日進月歩 ⚫作り直しや改良がしばしば求められる 22

  22. 対策 ▌工数は読まない ⚫何をやるか順番だけ決める ⚫積み上げた成果を利用者に順次提供 ▌カイゼン作業専任のサブチーム ⚫雑多な割り込みを一手に引き受け 23

  23. 人材育成 Photo by Iñaki del Olmo on Unsplash 24

  24. 採用 ▌クラウドネイティブ人材 ⚫たくさん採用できるほどいません ☺ ⚫関心がある人を育てていくのが基本 25

  25. 組織 ▌新基盤には基本的に専任で人員を配置 ⚫クラウドネイティブ専門家として育成 ▌現行基盤から新基盤の移行にも人員を配置 現行基盤 チーム 移行 チーム 新基盤 チーム

    26
  26. 学習 ▌輪講や勉強会を業務時間に組み込み ▌KubeCon に Neco チーム全員派遣 27

  27. アウトプット ▌ブログやミートアップで多数成果発表 ⚫アウトプットすることでさらにレベルアップ 28

  28. OSSエコシステムの活用 Photo by Dmitry Grigoriev on Unsplash 29

  29. 魅力的なエコシステム https://landscape.cncf.io/ 30

  30. 活用する上での課題 ▌アップストリームへの貢献 ⚫不自由なく OSS 活動できる環境の整備 ▌頻繁なアップデートへの対応 ⚫Kubernetes は3か月毎にリリース ⚫更新試験の自動化はほぼ必須 31

  31. OSSポリシー&推進チーム ▌OSS活動を支援する目的規定を整備・公開 ⚫https://cybozu-oss-policy.readthedocs.io ▌社員のOSS活動を支援する常設チーム創設 ⚫CNCF 加盟手続きや寄付活動も 32

  32. 自動テストの整備 ▌Neco の開発活動の半分は自動テスト関連 ⚫仮想データセンター構築ツール ⚫バージョンアップや再起動のシナリオテスト ⚫テストの安定化・高速化 33

  33. まとめ 34

  34. クラウドネイティブへの方法論 アーキテクチャ スタイル なにを使うかより、どう使うかが重要 プロジェクト 運営 作って終わりではなく、作り続ける 人材育成 専門家を育成する組織作り OSS

    エコシステ ムの活用 社員の支援と、テストの充実 35