わたしたちの開発ワークフロー

2014年2月28日 | 瀬尾 昭光

こんにちは!クラウドプロダクト部所属の瀬尾です。 

今回は、わたしたちのプロダクト開発がどのような指針やフローで行われているのかをお話したいと思います。

ワークフローの概要については以下のような感じになります。

開発の指針:Lean

リーンの原則の中でも特に「人を尊重する」に大きな重みを置いています。

理由は、わたしたちの開発チームは東京、京都、上海と3つの地域に分散しているので

非同期ベースでのコミュニケーションが多くなりがちだからです。

そのため、「見える化」や「情報の分散型(透過性)」により誰か1人、または少数の人しか

情報を知らないという単一障害点を無くし、チーム全体で状況が共有できるようにしています。

情報は見たくなくても嫌でもHipChatのターミナル上に飛び込んでくるので、

チームで問題に気づき改善していく見える化のサイクル作りに役立っています。

 コミュニケーションツール

 

開発フレームワーク:Scrum

朝会(デイリースタンドアップ)が無いこと意外は特に変わりないスクラムベースです。

朝会がない理由として時差(1時間ですが。。)があるというのもありますが、

HipChatとGitHub上でのコミュニケーションで充分にカバーできているのが大きいです。

振り返りの場など顔を合わせる必要のあるMTGにはPS3を利用していますが、

最近はAppear.in(ビデオチャット)も試験的に利用したりしています。

タスク管理ツール

実装フロー:GitHub Flow

実装フローはGitHub Flowを採用しています。

  • masterブランチのものは何であれデプロイ可能である
  • 新しいストーリーに取り掛かる際は、ストーリーに該当するブランチをmasterから作成する
  • 作成したブランチにローカルでコミットし、サーバー上の同じ名前のブランチにも定期的に作業内容をpushする
  • フィードバックや助言が欲しい時や、テストが完了した時にPull Requestを作成する
  • レビューをしてOKがでたらブランチをmasterへマージすることが可能
  • マージをしてmasterへpushしたら、直ちにデプロイ可能な状態とみなす

Pull Requestベースの実装フローです。 

masterへpushした時点でJenkinsに通知され本番へのデプロイ準備を行います。

  • masterへのpushをHookしてCI、コードの健康診断(ガバレッジや潜在バグ等)
    を実施

  • テストが通ったら自動でstaging環境にデプロイ(capistranoや自作スクリプト) or ロールバック

  • 手動(ワンクリック)で本番環境にデプロイ or ロールバック

Jenkins上での一連の流れはタスクごとにBuild PipeLineで視覚的に把握できるように

構築されており、本番環境にデプロイされた最新のBuild番号やバージョン等はHubotに聞けば教えてくれます。

また、上記の本番デプロイまでのやり取りは全てHipChatに通知されますのでターミナル上でチームに共有されています。

実装ツール(サービス)

実験環境:AWSなど

新しいOSSの検証など実験に使用する環境はAWSを利用することが多いですが

特にAWSに限定している訳ではなくベンダーの選択も実験に含まれます。

また、EC2のインスタンス稼働状況などはBotに聞いても把握できるようになってます。

チャット画面の一部(GitHub,Jenkins(CI,CD)の情報も全て集約)

aws

以上、わたしたちの開発ワークフローのおはなしでした。

特別に変わった事などはしていませんが、わたしたちの開発フローやプロセスなどについて少しでも興味をもっていただけたら、いつでもお気軽にご連絡ください。

お問い合わせ

それでは、みなさま

goodbye

お会いできるのを楽しみにしています!

 

ライター

お問い合わせ

サービスに関するご相談は
こちらよりお気軽にお問い合わせください。

関連記事

e-Agencyの様々な情報をFacebookでお届けします!