Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
物理データセンターでも NoOps
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
ymmt2005
June 04, 2019
Technology
6.3k
6
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
物理データセンターでも NoOps
NoOps Meetup Tokyo #6 登壇資料
https://noops.connpass.com/event/131553/
ymmt2005
June 04, 2019
More Decks by ymmt2005
See All by ymmt2005
拡張性の高い CNI プラグイン Coil v2 の紹介
ymmt2005
5
5.7k
Monolith to CloudNative (CNDT2020)
ymmt2005
3
14k
Intro to Data at Rest Encryption
ymmt2005
2
280
NoOps を目指して Kubernetes ネイティブな物理データセンターを作る
ymmt2005
21
9.7k
Go at Cybozu
ymmt2005
4
5.6k
アーキテクトになるには
ymmt2005
14
22k
Go のチュートリアルに足りないこと
ymmt2005
5
4.7k
C++11 メモ
ymmt2005
1
680
Other Decks in Technology
See All in Technology
GitHub Copilot 最新アップデート – 「一歩先」の実践活用術
moulongzhang
4
860
2026TECHFRESH畢業分享會 - AI 時代的人生存檔點
line_developers_tw
PRO
0
1.1k
アンオフィシャルな、オフィシャルからのお願い
wyamazak_devrel
0
110
ACE-Step-1.5で見る 音楽生成AIのしくみと“破綻だけ直す”Retake機能の開発【zennfes spring 2026 登壇資料】
personabb
1
480
AmazonRoute 53ではじめてのドメイン取得!HTTPS化までの道のりを整理してみた
usanchuu
3
140
プロダクト開発から業務改善コンサルまで。事業全体へ「染み出す」ことで広がるエンジニアの可能性
ham0215
0
130
マルチアカウント環境での コーディングエージェントを使った障害調査が大変なので AIエージェントにReadOnly権限を付与してみた / ReadOnly AI Agents for Multi-Account AWS Incident Response
yamaguchitk333
2
110
20260619 私の日常業務での生成 AI 活用
masaruogura
1
210
フィジカル版Github Onshapeの紹介
shiba_8ro
0
260
Snowflakeと仲良くなる第一歩
coco_se
4
480
【Cyber-sec+】経営層を"動かす"ための考え方
hssh2_bin
0
190
いまさら聞けない「仕様駆動開発入門」 〜AI活用時代の開発プロセスを考える〜
findy_eventslides
2
120
Featured
See All Featured
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
310
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
1.1k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Thoughts on Productivity
jonyablonski
76
5.2k
The Curse of the Amulet
leimatthew05
1
13k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
240
Google's AI Overviews - The New Search
badams
0
1k
The SEO identity crisis: Don't let AI make you average
varn
0
490
Transcript
NoOps Meetup Tokyo #6 物理データセンターでも NoOps サイボウズ株式会社 @ymmt2005
自己紹介 ▌サイボウズ株式会社で20年弱 ◼ cybozu.com 開発責任者とか ◼ メモリ 32 GB おじさんなど
◼現在は Neco というプロジェクトの責任者
今日の内容 ▌cybozu.com が抱える課題 ▌インフラ刷新プロジェクト Neco の紹介 ◼ アーキテクチャ ◼ 方法論
▌今後の予定
サイボウズ & cybozu.com ▌グループウェアの開発・販売 ◼ 「サイボウズ Office」は 20 年以上ベストセラー ◼
もともとはパッケージソフトウェア販売 ▌cybozu.com ◼ 自社グループウェアを SaaS で提供 ◼ 2011年11月からサービス開始
cybozu.com の規模 ▌契約社数 28,000社 ▌契約ユーザー数 100万人以上 ▌リクエスト数 2.6億/日 ▌サーバー台数 2,000台弱
単調に規模が拡大 -5000 0 5000 10000 15000 20000 25000 30000 35000
40000 45000 2011 2012 2013 2014 2015 2016 2017 2018 契約社数 契約社数 二次回帰 線形回帰 需要予測が容易 強気の投資が可能
現在のインフラについて
現在のインフラ概要 国内数か所のデータセンターで稼働 • いわゆるオンプレミス サーバー数十台の頃からアーキテクチャ変わらず • 数千台を扱うのに無理を重ねている 分散システムの基盤は独自開発 • OpenStack
や Kubernetes を使っていない • ssh で何とかするアレ
抱えている課題 手作業・Toil が多い 低いスケーラビリティ 自作に偏りすぎ
辛い例:プログラムの更新作業 ▌更新手順書を書き起こす ▌手順書をレビュー ▌複雑な手順はアドホックに自動化 ▌開発環境でリハーサル ▌本番環境でペアで手動適用 ▌完了まで何時間も端末前で待機することも 数え役満!
こうありたい ▌撃ちっぱなし可能な宣言的オペレーション ▌継続的なデリバリ ▌高速な開発・運用のワークフロー(DevOps) ▌数千台の規模を活かせるスケーラブルなシステム ▌自作からの脱却
インフラ刷新プロジェクト
Neco プロジェクト概要 ▌2018年1月から始動, 3ヶ年計画 ▌内容 ◼ Kubernetes 中心のアーキテクチャ ◼ オンプレミスデータセンター
◼ 成果物はほぼすべて OSS 公開 ▌体制 ◼ 私含め、現在 10 名
なぜ Kubernetes? ▌物理サーバーに直接依存させたくない ▌コンテナ・マイクロサービス時代の「勝ち馬」 ◼ 拡大を続けるエコシステム ◼ 自作から脱却するのに好都合 ▌優れた設計 ◼
宣言的 API で大規模分散システムの運用を容易に ◼ 拡張性が高く、様々な機能をアドオンできる
データセンター内のシステム論理構成 3~5台の管理サーバー群 数千台のノードで構成される Kubernetes クラスタ Elasticsearch や MySQL のマネージドサービス テナント
テナント テナント … Neco
Neco の設計原則 1.Be Declarative • Kubernetes 以外もすべて、宣言的に操作可能にする 2.Define by Software
• 特定の目的に縛られたサーバー・ネットワークを作らない • サーバー・ネットワークの役割をソフトウェアで変更する 3.Test Everything • 継続的なデリバリーには試験は自動化しないといけない • データセンターで動作するすべての機能を自動試験する
ここまでの成果 ▌宣言的 Kubernetes 管理ツール「CKE」 ▌BGP 中心で設計されたネットワーク ▌仮想データセンターを活用した CI / CD
▌ステージング用物理データセンター ▌その他いろいろ
CKE
CKE ▌Kubernetes クラスタの運用を自動化 ◼ 望みのクラスタ構成を宣言するだけ ◼ CKE が適当な物理サーバーを選んで構築・入れ替え ◼ Kubernetes
の自動バージョンアップも ▌HashiCorp Vault で秘密管理 ◼ 証明書発行 ◼ Secret 暗号化
CKE の詳しい話は #CNDT2019 で!
BGP 中心のネットワーク
BGP + BFD + ECMP で経路管理&冗長化 ▌Linux / Kubernetes から経路を自在に制御可能
◼ BIRD と組み合わせ可能な CNI プラグイン「Coil」を開発 ◼ MetalLB で LoadBalancer を実装 ▌ルータもソフトウェアで実装可能 ▌専門的な話はブログをどうぞ
ネットワーク概略図 Spine-Leaf アーキテクチャ コンテナ間の East-West 通信に最適
仮想データセンター
なぜ仮想データセンター? ▌Neco はデータセンターを管理するソフトウェア群 ▌Neco の開発・試験にはデータセンターが必要 ◼ 開発者に自分専用データセンターが欲しい ◼ データセンターでの動作も自動試験したい ▌そこで
placemat というツールを開発
placemat ▌仮想データセンター構築ツール ◼ L2 ネットワーク=Linux ブリッジ ◼ ルーター=BIRDコンテナ ◼ サーバー=QEMU/KVM
▌機能 ◼ YAML で宣言的に環境構築 ◼ Virtual BMC (IPMI) ◼ UEFI HTTP Boot kind: Network name: ext-net type: external use-nat: true address: 192.168.1.0/24 --- kind: DataFolder name: data files: - name: sabakan file: sabakan - name: sabactl file: sabactl --- kind: Image name: ubuntu file: ubuntu-18.04-server-cloudimg-amd64.img --- kind: Node name: host1 interfaces: - ext-net cpu: 1 memory: 1G volumes: - kind: image name: root image: ubuntu copy-on-write: true - kind: vvfat name: data folder: data --- …
データセンターネットワークまるごと仮想化
宣言的デリバリ
再掲: Neco のシステム論理構成 3~5台の管理サーバー群 数千台のノードで構成される Kubernetes クラスタ Elasticsearch や MySQL
のマネージドサービス テナント テナント テナント … Neco
管理サーバーの構成 Ubuntu Ubuntu Ubuntu ……… 手作業管理はしんどい! etcd etcd etcd Vault
Serf etcdpasswd Sabakan CKE Vault Serf etcdpasswd Sabakan CKE Vault Serf etcdpasswd Sabakan CKE データは etcd クラスタに保存 Made by
Neco のデリバリー戦略 ▌システムを Kubernetes の上と下で分割する ◼ Kubernetes 上のアプリは Argo CD
で宣言的にデリバリー ◼ Kubernetes の下は自作ツールで宣言的にデリバリー ▌システム全体をデリバリー前に試験する ◼ デリバリー前の状態を仮想データセンターで構築、 デリバリー後に壊れないことも試験 ◼ 全電源停止後の動作回復も試験
Neco as of June 2019 GitHub Argo CD Neco CD
Ubuntu 管理サーバー Sabakan CKE 3~5台 管理サーバーを自動更新 CoreOS Coil CoreOS Coil CoreOS Coil CoreOS Coil ネット ブート Kubernetes 自動管理 Argo CD Prometheus MetalLB Calico Contour アプリを 自動管理 Made by push …
今後の予定
ストレージ管理 ▌自社製 CSI プラグイン TopoLVM を開発中 ◼ LVM でローカルストレージを PVC
で利用可能 ◼ VG 空き容量などを考慮する拡張スケジューラー付き ▌Elasticsearch & MySQL オペレーター ◼ TopoLVM を活用して自動運用する予定 ▌Ceph / Rook ◼ オブジェクトストレージ用に
テナント管理 ▌2019年7月に本番データセンター構築予定 ▌テナント利用者向けの様々な環境整備 ◼ 各種ポリシー ◼ 利用者向けドキュメント ◼ 利用者向け開発環境 ◼
…
以上 ご清聴ありがとうございました
Appendix
Neco OSS レポジトリ ▌全て github.com 上 ▌cybozu-go/neco 継続的デリバリーツール ▌cybozu-go/neco-ops Argo
CD 用 ▌cybozu-go/cke Kubernetes 自動運用ツール ▌cybozu-go/sabakan ネットワークブートサーバー ▌cybozu-go/coil BIRD と組み合わせ可能な CNI プラグイン ▌cybozu-go/topolvm LVM を使う CSI プラグイン ▌cybozu-go/placemat 仮想データセンター構築ツール ▌ cybozu/neco-containers 各種コンテナイメージのビルド