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

Preview:

Citation preview

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

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

2

結論を先に!

• モチベーション

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

• 作戦1. 手作業排除

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

1. ビルド結果

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

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

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

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

3

アジェンダ

• はじめに

–私の立ち位置

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

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

• 事例のご紹介

• 将来像

• まとめ

4

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

楽天市場

バックヤード(RMS)

お買い物ユーザー

店舗様

売り場(MALL)

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

5

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

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

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

6

利用したパターン for 人

みんなを巻き込む

エバンジェリスト

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

正式な推進担当者

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

勉強会やってみる

種をまく個人的な接触

体験談の共有

7

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

Git 化Step by Step

小さな成功

自動化

リポジトリ連携

脱Excel

外部のお墨付き

ちょうど十分

8

Git 化Step by Step

小さな成功

自動化

リポジトリ連携

脱Excel

外部のお墨付き

ちょうど十分

キーワード

pull-request

CI

テストケース管理

ブランチ管理

git-flow

チケットcode

ビルド, デプロイテスト

9

Git 化Step by Step

小さな成功

自動化

リポジトリ連携

脱Excel

外部のお墨付き

ちょうど十分

事例のご紹介

CI

ココ

ココ

チケットcode

ビルド, デプロイテスト

10

アジェンダ

• はじめに

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

–自動化

• 将来像

• まとめ

11

事例のご紹介(1)

リポジトリ連携

12

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

• 状況

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

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

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

• 問題

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

13

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

• 制約

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

• 解決方法

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

14

テストケーステスト結果

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

チケット

Codes

成果物ライブラリ

ドキュメント

Code 品質

RMS

ビルド結果デプロイ結果

セキュリティレポート

情報蓄積

制約 (既存ツール)

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

16

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

デプロイ情報

チケット

Codes

変更ログ (誰? 何?)

17

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

チケット

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

テスト結果

修正チケット

18

MOVIE

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

19

事例のご紹介(2)

自動化

20

パターン・自動化

• 状況

–手作業多過ぎ

• 問題

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

• 制約

–既存ツールとの親和性

• 解決方法

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

21

自動化参考資料 (1)

『継続的デリバリー』

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

22

自動化参考資料 (2)

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

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

–シングル・クリック

–構成の外部化

–ヘッドレス実行

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

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

23

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

CI 関連システム

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ツール

25

MOVIE

自動デプロイ

26

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

Selenium

Hub

テストケース管理ツール

RMS

Selenium Nodes

Script

結果

確認

手動テスト

結果

CIツール

テストデータ

27

アジェンダ

• はじめに

• 事例のご紹介

• 将来像

• まとめ

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

29

大切なことなので再掲

• モチベーション

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

• 作戦1. 手作業排除

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

1. ビルド結果

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

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

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

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

30

QA

31

エンジニア募集中!!!

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

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

Recommended