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

Monolith to CloudNative (CNDT2020)

ymmt2005
September 08, 2020

Monolith to CloudNative (CNDT2020)

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

ymmt2005

September 08, 2020
Tweet

More Decks by ymmt2005

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  5. 単調に規模が拡大
    -10000
    0
    10000
    20000
    30000
    40000
    50000
    60000
    2011 2012 2013 2014 2015 2016 2017 2018 2019
    契約社数
    契約社数 二次回帰 線形回帰
    需要予測が容易
    強気の投資が可能
    5

    View Slide

  6. 抱えた問題
    ▌長大な手順書による変更操作
    ▌規模に比例する管理コスト
    ▌乏しい拡張性
    6

    View Slide

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

    View Slide

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

    View Slide

  9. 2020
    2019
    2018
    9

    View Slide

  10. 2020年9月時点
    ▌クラウドネイティブな DC × 3 が稼働
    ▌Neco メンバー 12 名
    ▌現行基盤からの移行プロジェクトも開始
    ⚫名称:Maneki
    10

    View Slide

  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
    プロプライ
    エタリ

    View Slide

  12. 主要な開発成果
    12
    ▌仮想データセンターによる CI/CD
    ▌実用的なマルチテナント Kubernetes
    ▌BGPを活用したSDN
    ▌SDSを実現するための TopoLVM
    ▌Kubernetes を宣言的に管理する CKE

    View Slide

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

    View Slide

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

    View Slide

  15. クラウドネイティブ=スタイル
    CNCF Cloud Native Definition v1.0 より
    (前略)
    このアプローチの代表例に、コンテナ、サービ
    スメッシュ、マイクロサービス、イミュータブルイ
    ンフラストラクチャ、および宣言型APIがあります。
    これらの手法により、回復性、管理力、および可観
    測性のある疎結合システムが実現します。(後略)
    16

    View Slide

  16. なぜスタイルが重要か
    ▌Kubernetes != クラウドネイティブ
    ⚫モニタリングの欠如
    ⚫アップグレードが困難
    ⚫…
    ▌なにを使うかより、どう使うか
    DO IT
    RIGHT!
    17

    View Slide

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

    View Slide

  18. 誘導された開発成果
    ▌仮想データセンターによる CI/CD
    ⚫Node OS 更新による不具合も検知可能
    ⚫Kubernetes 自体 GitOps で更新
    ▌ストレージ・ネットワーク on K8S
    Test Everything から
    Define by Software から
    Be Declarative から
    19

    View Slide

  19. プロジェクト運営
    Photo by Patrick Perkins on Unsplash
    20

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  33. まとめ
    34

    View Slide

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

    View Slide