OSSで作る!クラウドサービス開発戦記

 OSSで作る!クラウドサービス開発戦記

DevSumi2013 15-B-4 #devsumiB
http://event.shoeisha.jp/detail/1/session/46/
2012年12月にリリースしたCloudn PaaSは、Rubyで実装されたOSSのPaaS、Cloud Foundryを利用することで、ベンダーによるロックインのないPaaSを実現しています。
本セッションでは、Cloudn PaaS開発チームの、開発プロセスの試行錯誤、OSS導入のトラブルや対策、ユーザとの交渉やカスタマイズ、OSSへのコントリビュートといったこれまでの挑戦を通じた、クラウドサービスの立ち上げについてお話します。

Fca4785d49cb19a6172073edb67452f3?s=128

Katsunori Kawaguchi

February 15, 2013
Tweet

Transcript

  1. Summit Developers Developers Summit 2013 Action ! OSSで作る! クラウドサービス開発戦記 ~Cloudn

    PaaSの挑戦~ 15-B-4 #devsumiB Katsunori Kawaguchi @hamakn 2013-02-15
  2. この発表では、 OSSを利用して、 クラウドサービスを作った際の、 試行錯誤とその効果 の話をします。

  3. We are DevSumi 2013 Platinum Sponsor!!

  4. None
  5. About me • Katsunori Kawaguchi • @hamakn on Twitter and

    Github • Works at NTT Communications • Yokohama.rb • Cloud Foundry Contributor(一応…)
  6. よろしく おねがいします!

  7. (再) この発表では、 OSSを利用して、 クラウドサービスを作った際の、 試行錯誤とその効果 の話をします。

  8. Cloud Foundry • OSSなPaaS • VMwareが開発の中心 • Rubyで実装 • Multi

    – Runtimes – Frameworks – IaaS
  9. PaaS (Platform as a Service) • アプリケーションさえ作れば、 あとはよろしくしてくれるサービス – データベースや

    アプリケーションサーバはお任せ • サービス開発者の理想郷 …になるはず
  10. Cloud Foundry on Github https://github.com/cloudfoundry/

  11. Cloud Foundry WebSite http://www.cloudfoundry.com/

  12. Cloud Foundry Core http://core.cloudfoundry.org/listings/

  13. Cloudn PaaS • Cloud Foundry Core Compatible なPaaS – Cloudn

    PaaSで動くアプリケーションは 他のCF Providerでも動く • 2012-12-03 正式サービス開始 • IaaSは自社のCloudn (CloudStackベース)
  14. Cloudn PaaS の 利用事例

  15. PinQA http://pinqa.com/

  16. LimeSurvey http://www.d-ip.jp/limesurvey/

  17. Accel Mart http://www.intra-mart.jp/products/iap/

  18. Cloudn PaaS UI

  19. 2013年03月 オンラインサインアップ 開始予定

  20. ここまで前置き

  21. 今日はこれから、約1年間の、 Cloudn PaaSの開発戦記を 3章構成でお話しします。 2012 2013 ch.1 ch.2 ch.3

  22. Chapter-1 PaaSはじめます! 2011年冬~2012年春 開発チーム:5人

  23. この時期にやったこと • Cloud Foundryの構築 • 開発チームの立ち上げ • Closed β

  24. まずは動かすところから • 2011年末当時のCloud Foundry – 単一ホストでの構築:ほぼ自動(chef_solo) – 複数ホストでの構築:だいぶ手動

  25. cf_deploy

  26. デプロイツール • capistranoベース • 構成情報を集約し、バージョン管理 • 手動によるミスは(ほぼ)なくなった

  27. チームの立ち上げ • 高頻度なupstreamの更新に対応できる チームを作る! • 参考にしたもの

  28. @nawotoさん降臨 マスター@nawotoに学ぶ 「スクラム基本のキ」 2011-12-14 goo tech talk

  29. パッケージデザイン と エレベーターピッチ

  30. アナログタスクボード

  31. アナログタスクボード フリーアドレス (デスクトップPC廃止)

  32. Daily Scrum (09:45~10:00) 振り返り会(週1回) 計画ミーティング(月初)

  33. ペアプロ用 ディスプレイ

  34. Tools • Redmine • Jenkins • IRC • Github –

    upstreamがGithubなことや、 効率を説いたら割と簡単にOKが出た – Bussiness PlanのGold (100$/month)
  35. We’re all ready!! • βサービス開始 2012-02-01

  36. Chapter-2 開発と導入サポートです! 2012年春~2012年秋 開発チーム:9人

  37. この時期にやったこと • upstreamへの追随 • 顧客のPaaS導入サポート • Bugfix、機能追加、パッチの送付 • 開発のやり方の検査と見直し

  38. upstreamへの追随 • 定期的にPaaSのコードを最新化する • cloudfoundry.comは 1週間に2度程度更新している(らしい)

  39. トラブル • upstreamを取り込んだら、 mysqlのインスタンスが、 作成から数時間後に消えるように…

  40. None
  41. 対策 • Staging環境でしばらく様子を見る • ちゃんとupstreamのコードを読む • 問題が起きたらテストを追加する

  42. 顧客へのPaaS導入サポート • そのままではPaaSで動かないこともある • 選択 – Platformで対策する? • OSS化する? –

    アプリ側で対策する?
  43. 例1 • memcachedサポート • 公開 https://github.com/cloudfoundry/vcap-services/pull/15

  44. 例2 • Resinサポート • 現状、非公開 – 需要??? – 英語力が、、

  45. その他の開発リスト • Web Console – Rails3 • ログ集約・検索 – Fluentd,

    他 • 監視 – Monit, Munin, Jenkins • (一部)Javaの Session Replication • Runtime追加 – Ruby1.9.3 – Sun Java6, Oracle Java7 • Service追加 – MySQL 5.5 – Postgresql 9.1 • クライアント(vmc) – オプション追加 • Rails3.2, 4対応
  46. 開発がわかってきた • Core Compatibleでありつつ、 顧客の個別の要望にも応えられることを、 我々の価値とする • OSS化はやる気次第でできる (もっとしたい)

  47. 問題もわかってきた • テストが増えたのは良いが 時間がかかる (slow test) • 属人化してきた – ◦◦さんじゃないとわからない

    – 暗黙のコミット • マンネリ化してきた – 振り返り – 繰り返す日々に
  48. 物量作戦 • JenkinsのSlaveを使って テストを並列実行 • 自社でIaaSを持つメリットを 最大限に利用する – CloudStackなので fogやknife-cloudstackで

    操作可能
  49. ペアプロ作業の時間 • 週に2時間、必ずペアで作業する • やった内容を1チーム5分でLTする

  50. Code Review強化 • Githubのpull requestを使う体制に移行 (2012年09月) – 今日までに551 pull requests

    • 必ずauthor以外がmergeする – 少なくとも2人は内容がわかってる • CI結果をpullreqに表示する (JenkinsのPlugin)
  51. None
  52. IRC強化 • Jenkins連動 • Minechan • Joke

  53. 振り返りに刺激を • KPT以外の方法を試す – 555, DoDやWorking Agreementの見直し • ファシリテータを変える •

    開催時間を変える – 月曜から金曜夜へ (定時退社日を上手く使う) (揃って終わって、やった感を出して来週へ)
  54. 計画の達成! • 商用サービス開始 2012-12-03

  55. Chapter-3 組織に広げます! 2012年冬~

  56. 今やっていること • 隣のプロジェクトと連携する • 隣の人に火を点ける

  57. 実はあまり上手くいっていない…

  58. わたしたちの組織 PMO マーケティング 認証・課金 運用・問い合わせサポート 開発運用 (IaaS) 開発運用 (PaaS) 開発運用

    (DBaaS) ・・・
  59. 上手くいかない理由? • 前提がたくさん違う – 作り方が違う(発注・委託) – 目標が違う – フロアが違う –

    ツールが違う – 管理職とは何だったのか
  60. でもやるんだよ!

  61. なぜ? • 会社に開発の文化を根付かせたい – 生き残るため – 仕事を楽しくするため – 通信のおまけ、から脱して、 世界に価値を届けるため

    http://www.flickr.com/photos/ugod/4579369662/
  62. None
  63. None
  64. None
  65. 隣のチームと ランチミーティング

  66. IRCチャンネルを増やす

  67. 焦らず急いで!

  68. Final Chapter まとめ

  69. この発表では、 OSSを利用して、 クラウドサービスを作った際の、 試行錯誤とその効果 の話をしました。

  70. コミュニティや本、資料で おすすめのやり方を まずやってみることで ここまで来れました。

  71. Action: いいな!と思ったら ぜひやってみてください! もっと良い方法があれば教えて ください!

  72. Thank you!!