This is the presentation slides used at CloudNative Days Tokyo 2020. https://cndt2020.cloudnativedays.jp/
モノリスからクラウドネイティブへ設計思想の違いを知り乗り越えるサイボウズ株式会社山本泰宇1
View Slide
自己紹介▌山本泰宇 @ymmt2005▌サイボウズ株式会社で 20 年ほど▌cybozu.com の立ち上げ責任者☞現在は↑のインフラ刷新PjM2
本日のテーマアーキテクチャスタイルプロジェクト運営人材育成OSS エコシステムの活用3
cybozu.com▌2010年、国内 DC で開発開始▌現在 150 万契約ユーザー▌サーバー 2,000 台4
単調に規模が拡大-1000001000020000300004000050000600002011 2012 2013 2014 2015 2016 2017 2018 2019契約社数契約社数 二次回帰 線形回帰需要予測が容易強気の投資が可能5
抱えた問題▌長大な手順書による変更操作▌規模に比例する管理コスト▌乏しい拡張性6
スケールする基盤が欲しいPhoto by Carmine Savarese on Unsplash7
2018年、基盤刷新プロジェクト開始▌プロジェクト名: Neco▌当初メンバー⚫インフラ系開発者×3⚫アプリ系開発者×3▌Kubernetes経験ほぼゼロ8
2020201920189
2020年9月時点▌クラウドネイティブな DC × 3 が稼働▌Neco メンバー 12 名▌現行基盤からの移行プロジェクトも開始⚫名称:Maneki10
Neco システム図GitHubArgo CDNeco CDUbuntu管理サーバーSabakanCKE管理サーバーを自動更新NodeCoilNodeCoilNodeCoilネットブートKubernetes自動管理Prometheus Rook/CephMetalLB TeleportContourアプリを自動管理Made byECK利用者OSS11プロプライエタリ
主要な開発成果12▌仮想データセンターによる CI/CD▌実用的なマルチテナント Kubernetes▌BGPを活用したSDN▌SDSを実現するための TopoLVM▌Kubernetes を宣言的に管理する CKE
クラウドネイティブに至る道アーキテクチャスタイルプロジェクト運営人材育成OSS エコシステムの活用13
アーキテクチャスタイルPhoto by Denys Nevozhai on Unsplash14
クラウドネイティブ=スタイルCNCF Cloud Native Definition v1.0 より(前略)このアプローチの代表例に、コンテナ、サービスメッシュ、マイクロサービス、イミュータブルインフラストラクチャ、および宣言型APIがあります。これらの手法により、回復性、管理力、および可観測性のある疎結合システムが実現します。(後略)16
なぜスタイルが重要か▌Kubernetes != クラウドネイティブ⚫モニタリングの欠如⚫アップグレードが困難⚫…▌なにを使うかより、どう使うかDO ITRIGHT!17
原則駆動開発 (PDD)▌以下三カ条の設計原則を徹底⚫Be Declarative⚫Define by Software⚫Test Everything18
誘導された開発成果▌仮想データセンターによる CI/CD⚫Node OS 更新による不具合も検知可能⚫Kubernetes 自体 GitOps で更新▌ストレージ・ネットワーク on K8STest Everything からDefine by Software からBe Declarative から19
プロジェクト運営Photo by Patrick Perkins on Unsplash20
開発モデル▌インクリメンタル+プロトタイピング▌下層から順次積み上げ開発⚫物理サーバー管理⇒k8sインストーラ⇒…▌コンセプト検証(PoC)⚫新機能開発時はほぼ実施21
難しいところ▌工数が読みにくい⚫PoC 自体に工数がかかるケースも多々▌クラウドネイティブ界隈は日進月歩⚫作り直しや改良がしばしば求められる22
対策▌工数は読まない⚫何をやるか順番だけ決める⚫積み上げた成果を利用者に順次提供▌カイゼン作業専任のサブチーム⚫雑多な割り込みを一手に引き受け23
人材育成Photo by Iñaki del Olmo on Unsplash24
採用▌クラウドネイティブ人材⚫たくさん採用できるほどいません ☺⚫関心がある人を育てていくのが基本25
組織▌新基盤には基本的に専任で人員を配置⚫クラウドネイティブ専門家として育成▌現行基盤から新基盤の移行にも人員を配置現行基盤チーム移行チーム新基盤チーム26
学習▌輪講や勉強会を業務時間に組み込み▌KubeCon に Neco チーム全員派遣27
アウトプット▌ブログやミートアップで多数成果発表⚫アウトプットすることでさらにレベルアップ28
OSSエコシステムの活用Photo by Dmitry Grigoriev on Unsplash29
魅力的なエコシステムhttps://landscape.cncf.io/30
活用する上での課題▌アップストリームへの貢献⚫不自由なく OSS 活動できる環境の整備▌頻繁なアップデートへの対応⚫Kubernetes は3か月毎にリリース⚫更新試験の自動化はほぼ必須31
OSSポリシー&推進チーム▌OSS活動を支援する目的規定を整備・公開⚫https://cybozu-oss-policy.readthedocs.io▌社員のOSS活動を支援する常設チーム創設⚫CNCF 加盟手続きや寄付活動も32
自動テストの整備▌Neco の開発活動の半分は自動テスト関連⚫仮想データセンター構築ツール⚫バージョンアップや再起動のシナリオテスト⚫テストの安定化・高速化33
まとめ34
クラウドネイティブへの方法論アーキテクチャスタイルなにを使うかより、どう使うかが重要プロジェクト運営作って終わりではなく、作り続ける人材育成専門家を育成する組織作りOSS エコシステムの活用社員の支援と、テストの充実35