オープンソースで商用クラウドサービスを作るためのチームビルディング。NTTコミュニケーションズ(前編)
2月14日、15日に都内で開催されたイベント「Developers Summit 2013」、通称デブサミ。2日目に行われたセッション「OSSで作る!クラウドサービス開発戦記」では、NTTコミュニケーションズの川口克則氏が、オープンソースを基盤としたサービス開発の苦労や解決のための試行錯誤について講演を行いました。
川口氏のセッションは、オープンソースソフトウェアで商用サービスをいかに構築するか、という面だけでなく、すばやい変化に追随できるチームをどうやって構築していくのかという、多くの開発チームに共通する悩みを共有できる点でも意義のあるセッションでした。その内容を紹介しましょう。
OSSで作る!クラウドサービス開発戦記
NTTコミュニケーションズ クラウドサービス部 川口克則氏。
この発表では、オープンソースソフトウェア(OSS)を利用してクラウドサービスを作ってきたこれまでの試行錯誤や効果などをお話したいと思います。
私たちが開発しているのがOSSのCloud Foundryを使ったサービス「Cloudn PaaS」。Cloud FoundryはRuby 1.9系で開発されているPaaSで、IaaSに依存しないので、例えばAmazon EC2とか、あるいはうちの会社のようにCloud Stackとか、ローカルの1ホスト上でも稼働するのが特徴です。
Cloud FoundryはOSSなので、これを使って誰でもPaaSが作れるのですが、ある条件を満たすとCore Compatibleというバッジを付けることができます。Cloud FoundryでCore CompatibleなPaaSはすでに5社くらいあって、NTTコミュニケーションズも先日ここに加わりました。
そうすると、私たちのPaaSでデプロイできたアプリなら、ほかのCloud Foundry Core CompatibleなPaaSでも動くだろう、ということになります。
Cloud Foundryを使ったPaaS、Cloudn PaaSは昨年12月に正式サービスを開始しました。足回りは自社のCloud Stackベースの自社のクラウド、Cloudnを使っています。
来月からはオンラインサインアップができるようになって、無料で利用できる範囲もある予定なので、ご期待ください。
と、ここまでは前置きで、ここから、OSSを使って私たちはどういうところで悩んでいて、どう改善していったか、という話を3章に分けてしたいと思います。
第1章:若いOSSに対応できるチームの立ち上げ
第1章は2011年冬から2012年春。開発チームは5人でした。この頃は、そもそもCloud Foundryがあるらしい、それを動くようにしましょうと。そしてメンバーが集まったのでプロジェクトを立ち上げますと。
当時のCloud Foundryは、単一のホストへのデプロイはChefで簡単にできたのですが、30台くらいの複数ホストへデプロイするのは、各ホストごとに設定を変えなくてはならなかったりと結構大変でした。
それでは社内でデモもできなかったので、複数ホストにデプロイするツールを、Capistranoという便利なツールがあったので、これで3日くらいで作りました。
PaaSの構成情報、どういうコンポーネントやランタイムがいくつあって、という情報を集約できるようになり、手動でデプロイしてミスをする、という悲劇はほぼなくなりました。
それからチームの立ち上げです。どういうチームが求められているかというと、Cloud Foundryは割と活発なOSSで、多いと1日に5コミット10コミットされるような頻繁に変わっていくものに追随できないと、若いOSSに対応できない。そういうのにうまく対応できるチームを作ろうとしました。
アジャイルサムライを読んだり、2年前のデブサミでちょうどその辺に座って西村さんの話を聞いたりしました。懇親会で、いまこれに悩んでてどうすればいいですかねって聞いて、いろんな人にアドバイスをもらったりしてありがたかったです。
それから西村さんに会社まで来ていただいて、「スクラム基本のキ」というのをやってもらったり。
まずは自分たちで作るパッケージデザインとエレベータピッチを作り、ペアプロなどをやりやすいようにフリーアドレスにして、これは自分たちだけですが。
あとはミーティング系ですね。デイリースクラムを朝9時45分からやって、振り返りを週一回やって、計画ミーティング系を月初にします。
やり方は教科書通りで、昨日やったこと今日やること、悩みを共有したり。ペアプロ用にはプラズマディスプレイを、隣のプロジェクトが買ったけど使ってなさそうだったので、もらったりしました。
ツールは、チケット管理にRedmine、継続的インテグレーション(CI)にはJenkins、日々の会話はIRCで、プロジェクトはGithubで管理しています。
道具が揃ったので、2月1日にβサービスをクローズドに始めて、社内だったり協力してくれそうな会社に使い始めてもらいました。当時デザイナーさんもいなかったので、しれっと作ったロゴですが、会社が田町にあるのでよく見ると田町になってるとか、ノリノリな感じが分かっていただけると嬉しいです。
というわけで第1章はうまく始まったのですが、この辺から開発が思うように進まなくなったりしていきます。
あわせて読みたい
オープンソースで商用クラウドサービスを作るためのチームビルディング。NTTコミュニケーションズ(後編)
≪前の記事
jQuery Mobile 1.3が今晩正式リリース予定。JavaScript MVCフレームワークのEmberは1.0RCが公開