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