@ymmt2005 こと山本です。 今回は開発本部と運用本部のメンバーが協力して進めている cybozu.com やサイボウズ Live のアーキテクチャ刷新プロジェクト「Neco」について紹介します。
Neco を 3 行で説明すると、
- サイボウズのクラウドインフラのいけてないところを洗い出して、
- 5 年程度を目安に改善するつもりだけど、
- やりたいことが多すぎるので、We are hiring!
で済んでしまうのですが、それだけでは面白みに欠けますので、いけてない内実を暴露しながら解説いたします。
サイボウズはクラウド 5 年生
正確に言うとサイボウズ Liveなど一部のサービスはもっと以前から取り組んでいたのですが、本格的にクラウドサービスといえるインフラを構築してサービス提供を開始したのは今から 4 年前の 2011 年 11 月となります。そこでオープンしたのが cybozu.com でした。
この 4 年で、以下のようにサービスは成長しました。
- 有償契約社数 1 万 3 千社超
- サーバー台数 1,000 台規模
- 平日アクセス数 1.6 億 (ピーク時秒間 3,000 アクセス)
企業向けサービスの特徴なのか、ユーザーとアクセス数はほぼ一定の率で増加してきています。
ここがいけてないよ、サイボウズ!
100 台未満のサーバー規模の頃から引き摺っている仕組みがあちらこちらにあるため、「そんなこともできていないのか」と思われそうな部分が多々あります。
ログ分析基盤どころか回収さえ辛い
クラウドと言えば大量データとそれを活かしたデータ分析、と洒落こみたいところですが、まだサイボウズにはしっかりした分析基盤と言えるものがありません。
それどころか、膨れあがったアクセスログや各種ログを回収してある程度の分析が可能な形式にするのも満足にできていません。重要なアクセスログはなんとか形をつけているものの、製品が出力する(あるいはしたい)各種ログの回収・分析は後手にまわっています。
賢くない検索
ほとんどのサービスで全文検索機能を提供してはいます。してはいるのですが、スコアリングが賢くないため検索結果は新着順で表示しています。
スコアリングを改善しようにも、インデックスを再作成する作業が大きく人手に依存しているため気軽に試せない状況です。実際、検索結果を改善しようと何日もかけてインデックス再作成をしたものの、おもうような精度が得られずに断念したこともあります。
温かみのある人手デプロイ
cybozu.com の主な製品は kintone, Garoon, Office, メールワイズの4 つですが、kintone 以外はオンプレミス版をもとに、クラウド版を開発しました。
cybozu.com では共通のログイン画面やユーザー管理機能にこれらの製品を連携する仕組みになっていますが、出自がばらばらのため、デプロイ方式もばらばらになっています。
一番大変なのが製品のバージョンアップで、バラバラに機能開発した製品をまとめてバージョンアップさせるのに、製品アーカイブの組み合わせを人手で管理していたりします。
レプリケーションしない MySQL
サイボウズでは MySQL を各所に利用していますが、大半でレプリケーション機能を使っていません。びっくりですよね?
レプリケーションしたくないわけではなく、優先順位の問題でこうなっています。
具体的には、サイボウズ Office やメールワイズといったファイルシステムを直接使う製品のストレージを冗長化する仕組み(square)や VM 自動回復の仕組み(月読)を優先して実装したので、MySQL は square/月読上で動かすことで冗長化しています。
全部オンプレミス
今時珍しい、AWS も GCP も使っていない自前インフラです。cybozu.com の B2B という特性上、データセンターの見学やサーバーの物理機材の管理を求めるお客様の要望に応えるためです。
前述の障害自動回復システムやサーバーの完全自動インストール( BIOS や RAID の設定まで完全に自動化してます)などの取り組みの結果、管理工数は抑えています。突発的にユーザーが増えることもないので、スケーラビリティに悩むこともほとんどありません。
とはいっても、AWS を使いたくなることもあります。海外にサーバーを置きたいとか、cybozu.com とは無関係の(B2Bでない)サービスに利用するといった場合です。
改善してきたこともあるよ!
いけてないことばかりだと意気消沈するので、やってきたことも挙げておきます。 当ブログの記事から抜粋すると:
- アクセシビリティの改善
- ImageMagickの地道なチューニング
- JavaScript 自動レビューツール
- ロードバランサを書き換えて大幅に高速化
- 企業向けクラウドの生命線、セキュリティを強化
- Selenium GridのDocker化 & クラウド化
などなど。
Neco でやりたいこと
サイボウズのクラウドインフラの現状を乱暴にまとめると、経年劣化して非効率になっていると言えます。人手に頼る場面が多すぎますし、製品のリリース作業も時間と人手が大変多くかかっている状況です。
もっと効率良くしたい。効率良くして、もっと良い製品を素早く提供したい。
こうした思いから開発本部と運用本部で立ち上げた共同プロジェクトが「Neco」です。まずはじめに、現状の問題点を 19 の分科会に分けて議論をしました。
以下は分科会の一部です。
- Operational Simplicity
- ストレージ・バックアップ
- 検索エンジン
- サービスディスカバリとリソースプール
- ネットワーク
方針が決まったものから、担当者を割り当てて進めています。夢物語で終わらせないよう、プロジェクトの期間は全体で 5 年としています。一つ一つ改善を積み上げて、5 年後には見違えるほど効率化してやるぜ!という心意気です。
活動成果は、順次 Inside Out で紹介していきます!
最後に
なぜ Neco なのかは、入社した人だけが知ることができます。サイボウズでは、改善に燃える技術者をいつでもお待ちしております。