サイボウズではミドルウェアエンジニアも活躍しています

こんにちは、アプリケーション基盤チームの青木(@a_o_k_i_n_g)です。

先日、エンタープライズジン様の記事で、弊社の名前が挙がっていました。

井上 まあ、ミドルウェアに詳しい人間もいないと。ミドルウェアだけじゃないですけど、やっぱりアプリケーションベンダーも、我々もそうですし、サイボウズさんとかだって、ある程度ミドルウェアに詳しい人は一定数必要じゃないですか。そういう意味でいうとポジションはあるかなって。

神林 それはあるかなあ。研究所ですよね。サイボウズだったらサイボウズラボですよね、結局。

http://enterprisezine.jp/dbonline/detail/8770?p=6

この意見について、サイボウズではミドルウェアエンジニアも活躍しているという紹介をさせていただきます!

まず初めに、サイボウズとサイボウズ・ラボの関係について紹介します。サイボウズは cybozu.com を始めとするグループウェアを開発している会社です。サイボウズ・ラボはサイボウズ内のひとつの部門であり、中長期視点で次世代のグループウェアやそれらの基盤となる技術の研究開発を行っています。サイボウズ・ラボからも目覚ましい成果はあるのですが、今回はラボではなくサイボウズからのミドルウェア事情について記したいと思います。

サイボウズの提供するクラウドで使えるグループウェア、cybozu.com は AWS や Google Cloud Platform を用いず、自前でデータセンターからアプリケーションまで構築・実装・運用しています。cybozu.com はもうすぐ 6 年目に突入しようとしており、内部では数えきれないほどの自作ミドルウェアが動いています。

まず、ミドルウェアの定義について。何をもってミドルウェアとして扱うのか、その定義は難しいところがありますが、Wikipedia の Middleware の項目を引用します。

Middleware is computer software that provides services to software applications beyond those available from the operating system. https://en.wikipedia.org/wiki/Middleware

意訳すると「ミドルウェアは、OS が提供する機能を超える機能をアプリケーションに提供するソフトウェアのことである」といったところでしょうか。サイボウズでも、直接ユーザーのリクエストを受け付けるアプリケーションではなく、そのアプリケーションを支えるソフトウェア、というイメージでミドルウェアを扱っています。

サイボウズには、アプリケーション基盤チームというチームがあります。僕も所属しているチームなのですが、ここは主に各製品の共通部分の実装を担当しており、その中でミドルウェアの開発も行っています。

我々のチームが提供するプロダクトのひとつに、ワーカーと呼ばれる非同期処理専用のプログラムがあります。ユーザーのリクエスト内ではなくバックグラウンドで非同期に処理を行うことで、ユーザーへのレスポンスを高速に返す、ということを目的として開発されたものです。このワーカーは日々数千万ジョブを捌いており、ユーザーからは見えませんが、cybozu.com を支えるひとつの柱となっています。また、ファイル管理も自作のファイルサーバーで行っており、今では億を超える膨大な数(そして膨大な容量)のファイルを自作ミドルウェアで管理しています。

僕のチーム以外からもミドルウェアはいくつも開発されています。例えば yrmcds という OSS で公開しているプロダクトがあります。yrmcds については下記記事で解説されていますが、簡単に言うと、memcached プロトコル互換, memcached よりも高速, レプリケーション等の機能も備えている KVS です。cybozu.com では主にセッション回りのデータストアとして利用しており、極めて安定して稼働しています。単一のマシンで 1 千万を超えるオブジェクトを管理し、毎日 1 億アクセスをゆうに超える cybozu.com を支えています。 blog.cybozu.io

月読という名の自動障害回復システムも自作しています。これはピア同士が死活監視しあう自立分散システムです。最近では Go 言語に力を入れており、GitHub の cybozu-go のページ では、Go 言語ライフを快適にするためのツールが複数公開されています。Square という冗長化ネットワークストレージの統合管理システムも自作しました。現在開発中ですが、Fluentd ライクでより我々のニーズに合致したプロダクトの開発も目論んでいます。

blog.cybozu.io github.com

紹介しているとキリが無いのでこの辺で抑えておきますが、サイボウズではミドルウェアを多数開発しており、運用しています。ミドルウェアエンジニアのポジションももちろんあります!

OSS ももちろん多数活用しています。特に MySQL は 10 年以上前からヘビーに使用しています。MySQL 以外にも、 Apache, nginx, Elasticsearch, Hadoop, etc, こちらも挙げたらキリがありません。OSS 無しには cybozu.com は成り立ちませんし、OSS にコントリビュートすることもしばしばあります。一方で何故ミドルウェアを自作するのかというと、その方がコスト安であったり、ユーザーのニーズにあった価値を提供できたりするからです。必要なものが無ければ自作する精神がサイボウズにはあります。機能面ももちろんそうですし、より安全であったりより高速であることを自分たちの手で叶えられるのなら、我々はそれを実現します。

こちらの記事でも紹介している通り、今のサイボウズは新アーキテクチャに向かって様々な箇所を刷新しようとしている最中です。今後はさらにミドルウェアに注力していくことになるでしょう。

サイボウズはミドルウェアエンジニアも随時募集しています。「我こそは!」という方は是非サイボウズで腕を振るってください!

We Are Hiring!