Slide 1

Slide 1 text

Summit Developers Developers Summit 2013 Action ! OSSで作る! クラウドサービス開発戦記 ~Cloudn PaaSの挑戦~ 15-B-4 #devsumiB Katsunori Kawaguchi @hamakn 2013-02-15

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

We are DevSumi 2013 Platinum Sponsor!!

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

About me • Katsunori Kawaguchi • @hamakn on Twitter and Github • Works at NTT Communications • Yokohama.rb • Cloud Foundry Contributor(一応…)

Slide 6

Slide 6 text

よろしく おねがいします!

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

Cloud Foundry • OSSなPaaS • VMwareが開発の中心 • Rubyで実装 • Multi – Runtimes – Frameworks – IaaS

Slide 9

Slide 9 text

PaaS (Platform as a Service) • アプリケーションさえ作れば、 あとはよろしくしてくれるサービス – データベースや アプリケーションサーバはお任せ • サービス開発者の理想郷 …になるはず

Slide 10

Slide 10 text

Cloud Foundry on Github https://github.com/cloudfoundry/

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

Cloudn PaaS • Cloud Foundry Core Compatible なPaaS – Cloudn PaaSで動くアプリケーションは 他のCF Providerでも動く • 2012-12-03 正式サービス開始 • IaaSは自社のCloudn (CloudStackベース)

Slide 14

Slide 14 text

Cloudn PaaS の 利用事例

Slide 15

Slide 15 text

PinQA http://pinqa.com/

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

Cloudn PaaS UI

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

ここまで前置き

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

cf_deploy

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

アナログタスクボード

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

ペアプロ用 ディスプレイ

Slide 34

Slide 34 text

Tools • Redmine • Jenkins • IRC • Github – upstreamがGithubなことや、 効率を説いたら割と簡単にOKが出た – Bussiness PlanのGold (100$/month)

Slide 35

Slide 35 text

We’re all ready!! • βサービス開始 2012-02-01

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

No content

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

例1 • memcachedサポート • 公開 https://github.com/cloudfoundry/vcap-services/pull/15

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

その他の開発リスト • 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対応

Slide 46

Slide 46 text

開発がわかってきた • Core Compatibleでありつつ、 顧客の個別の要望にも応えられることを、 我々の価値とする • OSS化はやる気次第でできる (もっとしたい)

Slide 47

Slide 47 text

問題もわかってきた • テストが増えたのは良いが 時間がかかる (slow test) • 属人化してきた – ○○さんじゃないとわからない – 暗黙のコミット • マンネリ化してきた – 振り返り – 繰り返す日々に

Slide 48

Slide 48 text

物量作戦 • JenkinsのSlaveを使って テストを並列実行 • 自社でIaaSを持つメリットを 最大限に利用する – CloudStackなので fogやknife-cloudstackで 操作可能

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

Code Review強化 • Githubのpull requestを使う体制に移行 (2012年09月) – 今日までに551 pull requests • 必ずauthor以外がmergeする – 少なくとも2人は内容がわかってる • CI結果をpullreqに表示する (JenkinsのPlugin)

Slide 51

Slide 51 text

No content

Slide 52

Slide 52 text

IRC強化 • Jenkins連動 • Minechan • Joke

Slide 53

Slide 53 text

振り返りに刺激を • KPT以外の方法を試す – 555, DoDやWorking Agreementの見直し • ファシリテータを変える • 開催時間を変える – 月曜から金曜夜へ (定時退社日を上手く使う) (揃って終わって、やった感を出して来週へ)

Slide 54

Slide 54 text

計画の達成! • 商用サービス開始 2012-12-03

Slide 55

Slide 55 text

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

Slide 56

Slide 56 text

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

Slide 57

Slide 57 text

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

Slide 58

Slide 58 text

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

Slide 59

Slide 59 text

上手くいかない理由? • 前提がたくさん違う – 作り方が違う(発注・委託) – 目標が違う – フロアが違う – ツールが違う – 管理職とは何だったのか

Slide 60

Slide 60 text

でもやるんだよ!

Slide 61

Slide 61 text

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

Slide 62

Slide 62 text

No content

Slide 63

Slide 63 text

No content

Slide 64

Slide 64 text

No content

Slide 65

Slide 65 text

隣のチームと ランチミーティング

Slide 66

Slide 66 text

IRCチャンネルを増やす

Slide 67

Slide 67 text

焦らず急いで!

Slide 68

Slide 68 text

Final Chapter まとめ

Slide 69

Slide 69 text

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

Slide 70

Slide 70 text

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

Slide 71

Slide 71 text

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

Slide 72

Slide 72 text

Thank you!!