開発リードタイム短縮への挑戦 〜とある現場のパターン・ランゲージ〜

31
開発リードタイム短縮への挑戦 ~とある現場のパターン・ランゲージ~ 2015/03/10 山木隆寛 楽天株式会社 楽天市場サービス開発・運用部 http://www.rakuten.co.jp/

Upload: takahiro-yamaki

Post on 17-Jul-2015

565 views

Category:

Engineering


3 download

TRANSCRIPT

Page 1: 開発リードタイム短縮への挑戦 〜とある現場のパターン・ランゲージ〜

開発リードタイム短縮への挑戦~とある現場のパターン・ランゲージ~

2015/03/10山木隆寛楽天株式会社 楽天市場サービス開発・運用部http://www.rakuten.co.jp/

Page 2: 開発リードタイム短縮への挑戦 〜とある現場のパターン・ランゲージ〜

2

結論を先に!

• モチベーション

1. より早く、より良いものを、リリースしたい!

• 作戦1. 手作業排除

2. コーダーに対するフィードバックを素早く

1. ビルド結果

2. 静的なコード分析結果

3. 継続的システムテスト結果

4. セキュリティチェック結果

開発リードタイム短縮への挑戦

Page 3: 開発リードタイム短縮への挑戦 〜とある現場のパターン・ランゲージ〜

3

アジェンダ

• はじめに

–私の立ち位置

–お持ち帰りいただきたいもの

–利用したパターンについて

• 事例のご紹介

• 将来像

• まとめ

Page 4: 開発リードタイム短縮への挑戦 〜とある現場のパターン・ランゲージ〜

4

B2B2C ビジネスにおける私の立ち位置

楽天市場

バックヤード(RMS)

お買い物ユーザー

店舗様

売り場(MALL)

(1)開発リードタイム短縮(2)運用コスト削減

Page 5: 開発リードタイム短縮への挑戦 〜とある現場のパターン・ランゲージ〜

5

お持ち帰りいただきたいもの

• 過去2年の『事例』を『パターン』別にご紹介

• 気に入ったパターンがあれば、皆様の状況に応用して活用していただければと思います

Page 6: 開発リードタイム短縮への挑戦 〜とある現場のパターン・ランゲージ〜

6

利用したパターン for 人

みんなを巻き込む

エバンジェリスト

『アジャイルに効く アイデアを組織に広めるための48のパターン』Mary Lynn Manns, Linda Rising著, 川口恭伸監訳 (2014)

正式な推進担当者

イノベーター アーリーアダプター

勉強会やってみる

種をまく個人的な接触

体験談の共有

Page 7: 開発リードタイム短縮への挑戦 〜とある現場のパターン・ランゲージ〜

7

利用したパターン for システム

Git 化Step by Step

小さな成功

自動化

リポジトリ連携

脱Excel

外部のお墨付き

ちょうど十分

Page 8: 開発リードタイム短縮への挑戦 〜とある現場のパターン・ランゲージ〜

8

Git 化Step by Step

小さな成功

自動化

リポジトリ連携

脱Excel

外部のお墨付き

ちょうど十分

キーワード

pull-request

CI

テストケース管理

ブランチ管理

git-flow

チケットcode

ビルド, デプロイテスト

Page 9: 開発リードタイム短縮への挑戦 〜とある現場のパターン・ランゲージ〜

9

Git 化Step by Step

小さな成功

自動化

リポジトリ連携

脱Excel

外部のお墨付き

ちょうど十分

事例のご紹介

CI

ココ

ココ

チケットcode

ビルド, デプロイテスト

Page 10: 開発リードタイム短縮への挑戦 〜とある現場のパターン・ランゲージ〜

10

アジェンダ

• はじめに

• 事例のご紹介– リポジトリ連携

–自動化

• 将来像

• まとめ

Page 11: 開発リードタイム短縮への挑戦 〜とある現場のパターン・ランゲージ〜

11

事例のご紹介(1)

リポジトリ連携

Page 12: 開発リードタイム短縮への挑戦 〜とある現場のパターン・ランゲージ〜

12

パターン・リポジトリ連携

• 状況

–開発中におきる“ものこと” 同士を関連づけるのは、エクセルの備考欄! 個人メモ!

• このチケットの案件、コードレビュー終わった?

• このチケットの案件、どの環境にデプロイした?

• 問題

–トレーサビリティを簡単にしたい

Page 13: 開発リードタイム短縮への挑戦 〜とある現場のパターン・ランゲージ〜

13

パターン・リポジトリ連携続き

• 制約

–社内のツール推進部署がサービス提供中• チケット管理、ソースコード管理、ドキュメント管理

• 解決方法

–これらと相性のいいものを選んで、それぞれのリポジトリのデータを連携させる!

Page 14: 開発リードタイム短縮への挑戦 〜とある現場のパターン・ランゲージ〜

14

テストケーステスト結果

リポジトリ連携結果 (1)

チケット

Codes

成果物ライブラリ

ドキュメント

Code 品質

RMS

ビルド結果デプロイ結果

セキュリティレポート

情報蓄積

制約 (既存ツール)

Page 15: 開発リードタイム短縮への挑戦 〜とある現場のパターン・ランゲージ〜

15

チケットとCodesの簡単紐付け Tips

前提1.git-flow に従って、ブランチ名は feature/xxxx

2.feature 名はチケットID

cd .git/hooks

mv prepare-commit-msg.sample prepare-commit-msg

vi prepare-commit-msg

#!/bin/sh

#

mv $1 $1.tmp

echo -n "[`git branch | grep "*" | awk '{print $2}' | sed -e "s/feature\///g" `] " > $1

cat $1.tmp >> $1

サンプルコード

by T. Sugihara

Page 16: 開発リードタイム短縮への挑戦 〜とある現場のパターン・ランゲージ〜

16

リポジトリ連携 From ビルド結果

デプロイ情報

チケット

Codes

変更ログ (誰? 何?)

Page 17: 開発リードタイム短縮への挑戦 〜とある現場のパターン・ランゲージ〜

17

リポジトリ連携 From テスト結果

チケット

テストNG報告 チケット作成

テスト結果

修正チケット

Page 18: 開発リードタイム短縮への挑戦 〜とある現場のパターン・ランゲージ〜

18

MOVIE

テスト結果NG チケット起票

Page 19: 開発リードタイム短縮への挑戦 〜とある現場のパターン・ランゲージ〜

19

事例のご紹介(2)

自動化

Page 20: 開発リードタイム短縮への挑戦 〜とある現場のパターン・ランゲージ〜

20

パターン・自動化

• 状況

–手作業多過ぎ

• 問題

–手作業に工数を取られる。ミスもある

• 制約

–既存ツールとの親和性

• 解決方法

–既存ツールと相性のいいものを選んで自動化!自動化!自動化!

Page 21: 開発リードタイム短縮への挑戦 〜とある現場のパターン・ランゲージ〜

21

自動化参考資料 (1)

『継続的デリバリー』

David Farley (著), Jez Humble (著), 和智右桂 (翻訳), 高木正弘 (翻訳)

Page 22: 開発リードタイム短縮への挑戦 〜とある現場のパターン・ランゲージ〜

22

自動化参考資料 (2)

『万人のためのオートメーション: デプロイメントの自動化パターン』

Paul Duvallhttp://www.ibm.com/developerworks/jp/java/library/j-ap01139/

–シングル・クリック

–構成の外部化

–ヘッドレス実行

–スクリプト化デプロイメント

– リモート・デプロイメント

Page 23: 開発リードタイム短縮への挑戦 〜とある現場のパターン・ランゲージ〜

23

自動化インフラ・サーバ構成図

CI 関連システム

Page 24: 開発リードタイム短縮への挑戦 〜とある現場のパターン・ランゲージ〜

24

デモ自動デプロイ・シナリオ

アプリケーション管理サーバ

クラスター

#1

#2

#3

#4

手動テスト

継続的システムテスト*

(3)

(2)

(4)

* Kotaro Ogino and Francois Picalausa

“Continuous System Test”. Test Automation.http://kokotatata.hatenablog.com/entry/2014/03/14/075842

(1)

CIツール

Page 25: 開発リードタイム短縮への挑戦 〜とある現場のパターン・ランゲージ〜

25

MOVIE

自動デプロイ

Page 26: 開発リードタイム短縮への挑戦 〜とある現場のパターン・ランゲージ〜

26

継続的自動テスト・概略図

Selenium

Hub

テストケース管理ツール

RMS

Selenium Nodes

Script

結果

確認

手動テスト

結果

CIツール

テストデータ

Page 27: 開発リードタイム短縮への挑戦 〜とある現場のパターン・ランゲージ〜

27

アジェンダ

• はじめに

• 事例のご紹介

• 将来像

• まとめ

Page 28: 開発リードタイム短縮への挑戦 〜とある現場のパターン・ランゲージ〜

28

STG

QA

DEVBuild

将来像 ・・・ “デプロイメントパイプライン”

IT

Release

Judge

Acceptance

Test

PROD

Blue-

Green

Deploy

Clone

Build

UT

Code

Analysis

Deploy

Conf Test

Conf Test

Deploy

ST

Conf Test

Code

ReviewMetrics

Release

Judge

Security

Test

ST

Security

Test

Page 29: 開発リードタイム短縮への挑戦 〜とある現場のパターン・ランゲージ〜

29

大切なことなので再掲

• モチベーション

1. より早く、より良いものを、リリースしたい!

• 作戦1. 手作業排除

2. コーダーに対するフィードバックを素早く

1. ビルド結果

2. 静的なコード分析結果

3. 継続的システムテスト結果

4. セキュリティチェック結果

開発リードタイム短縮への挑戦

Page 30: 開発リードタイム短縮への挑戦 〜とある現場のパターン・ランゲージ〜

30

QA

Page 31: 開発リードタイム短縮への挑戦 〜とある現場のパターン・ランゲージ〜

31

エンジニア募集中!!!

https://progres02.jposting.net/pgrakuten/job.phtml?job_code=1971

https://progres02.jposting.net/pgrakuten/job.phtml?job_code=1972