31
Reducing Rakuten Ichiba’ s development lead time - A Pattern Language - Mar/10/2015 Takahiro Yamaki Rakuten Ichiba Development Department, Rakuten Inc. http://www.rakuten.co.jp/

Reducing Rakuten Ichiba's development lead time - A Pattern Language-

Embed Size (px)

Citation preview

Page 1: Reducing Rakuten Ichiba's development lead time - A Pattern Language-

Reducing Rakuten Ichiba’ s

development lead time

- A Pattern Language -

Mar/10/2015 Takahiro YamakiRakuten Ichiba Development Department, Rakuten Inc.http://www.rakuten.co.jp/

Page 2: Reducing Rakuten Ichiba's development lead time - A Pattern Language-

2

Summary!

• Motivation– Faster & Better service delivery

• Strategies1. Automation

2. Quick feedback to coders

1. Build result

2. Static code analysis result

3. Continuous system test (CST) result

4. Security check result

Reducing development lead time

Page 3: Reducing Rakuten Ichiba's development lead time - A Pattern Language-

3

Agenda

1. Introduction

1. My area of responsibility

2. Thoughts to take home

3. Our pattern language

2. Show cases

3. Goal plan

4. Summary

Page 4: Reducing Rakuten Ichiba's development lead time - A Pattern Language-

4

My area of responsibility in B2B2C

Rakuten Ichiba

Warehouse

(RMS)

ShoppersMerchants

Selling area

(MALL)

(1) Reduce development lead time

(2) Reduce operational cost

Page 5: Reducing Rakuten Ichiba's development lead time - A Pattern Language-

5

Thoughts to take home

• I’d like to introduce our results and future

plan. Furthermore I want to show our

pattern language for this theme.

• I am happy if you are interested in some

of our patterns and apply it to your own

situation and problem.

おみやげ

Page 6: Reducing Rakuten Ichiba's development lead time - A Pattern Language-

6

Pattern language for staffs

Involve Everyone

Evangelist

『Fearless Change: Patterns for Introducing New Ideas』Mary Lynn Manns, Linda Rising (2014)

Dedicated Champion

Innovator Early Adopter

Study

Group

Just Do It

Plant the Seeds

Personal Touch

Hometown Story

Page 7: Reducing Rakuten Ichiba's development lead time - A Pattern Language-

7

Pattern language for development process

Git-nizationStep by Step

Small Successes

Automation

Repository connection

Abolish Excel

External Validation

Just Enough

Page 8: Reducing Rakuten Ichiba's development lead time - A Pattern Language-

8

Git-nizationStep by Step

Small Successes

Automation

Repository connection

Abolish Excel

External Validation

Just Enough

Patterns & Keywords

pull-request

CI

Test case management

Branch management

git-flow

Ticket

Code

Build, Deploy

Test

Page 9: Reducing Rakuten Ichiba's development lead time - A Pattern Language-

9

Git-nizationStep by Step

Small Successes

Automation

Repository connection

Abolish Excel

External Validation

Just Enough

Today’s show cases

CI

Ticket

Code

Build, Deploy

Test

(2)

(1)

Page 10: Reducing Rakuten Ichiba's development lead time - A Pattern Language-

10

Agenda

1. Introduction

2. Show cases1. Repository connection

2. Automation

3. Goal plan

4. Summary

Page 11: Reducing Rakuten Ichiba's development lead time - A Pattern Language-

11

Show case(1)

Repository connection

Page 12: Reducing Rakuten Ichiba's development lead time - A Pattern Language-

12

Pattern: Repository connection

• Context

– Many lists, memos to relate things.• Have the pull-requests of this issue been finished?

• Which environment have you deployed for this

issue?

• Problem

– Difficult traceability

– Non-productive costs

Page 13: Reducing Rakuten Ichiba's development lead time - A Pattern Language-

13

Pattern: Repository connection

• Restrictions

– Some development tools are in service.• BTS(ticket management), SCM(source code

management), Document management

• Solution

– Select a development system which is

close to them.

Page 14: Reducing Rakuten Ichiba's development lead time - A Pattern Language-

14

Test case

Test results

Repository connection result

Tickets

Codes

Artifacts

Documents

Code Quality

RMS

Build result

Deploy result

Security reports

Info. Storage

Restrictions

Page 15: Reducing Rakuten Ichiba's development lead time - A Pattern Language-

15

Tips for tickets and commit relations

Precondition

1. Using git-flow. Branch name is feature/xxxx

2. Using ticket ID for the feature name

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

Sample code

by T. Sugihara

Page 16: Reducing Rakuten Ichiba's development lead time - A Pattern Language-

16

View from a build result

Deploy results

Tickets

Codes

Change log (who? what?)

Page 17: Reducing Rakuten Ichiba's development lead time - A Pattern Language-

17

View from a test result

Tickets

Test failure result New ticket

Test results

Ticket

Page 18: Reducing Rakuten Ichiba's development lead time - A Pattern Language-

18

MOVIE

Test failure report

New ticket

Page 19: Reducing Rakuten Ichiba's development lead time - A Pattern Language-

19

Show case(2)

Automation

Page 20: Reducing Rakuten Ichiba's development lead time - A Pattern Language-

20

Pattern: Automation

• Context

– Too many manual tasks

• Problem

– Much operational cost. Sometimes mistakes.

• Restrictions

– Some development tools are in service.

• Solutions

– Select a CI server which is close to them.

– Automation! Automation! Automation!

Page 21: Reducing Rakuten Ichiba's development lead time - A Pattern Language-

21

Automation reference (1)

『Continuous Delivery: Reliable Software

Releases through Build, Test, and

Deployment Automation 』

Jez Humble, David Farley

Page 22: Reducing Rakuten Ichiba's development lead time - A Pattern Language-

22

Automation reference (2)

『 Automation for the people:

Deployment-automation patterns』

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

– One-click

– Externalized Configuration

– Headless Execution

– Scripted Deployment

– Remote Deployment

Page 23: Reducing Rakuten Ichiba's development lead time - A Pattern Language-

23

Automation infrastructure overview

CI System

Page 24: Reducing Rakuten Ichiba's development lead time - A Pattern Language-

24

Demo scenario

Application

Management

serverClusters

#1

#2

#3

#4

Manual test

Continuous

System test*

(3)

(2)

(4)

* Kotaro Ogino and Francois Picalausa

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

(1)

CI server

Page 25: Reducing Rakuten Ichiba's development lead time - A Pattern Language-

25

MOVIE

Automated build & deploy

Page 26: Reducing Rakuten Ichiba's development lead time - A Pattern Language-

26

Continuous system test overview

Selenium

Hub

Test case management tool

RMS

Selenium Nodes

Script

results

manage

Manual test

results

CI server

Test

data

Page 27: Reducing Rakuten Ichiba's development lead time - A Pattern Language-

27

Agenda

1. Introduction

2. Show cases

3. Goal plan

4. Conclusion

Page 28: Reducing Rakuten Ichiba's development lead time - A Pattern Language-

28

STG

QA

DEVBuild

Goal plan ・・・ “Deployment pipeline”

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: Reducing Rakuten Ichiba's development lead time - A Pattern Language-

29

Summary!

• Motivation– Faster & Better service delivery

• Strategies1. Automation

2. Quick feedback to coders

1. Build result

2. Static code analysis result

3. Continuous system test result

4. Security check result

Reducing development lead time

Page 30: Reducing Rakuten Ichiba's development lead time - A Pattern Language-

30

QA

Page 31: Reducing Rakuten Ichiba's development lead time - A Pattern Language-

31

Wants You!!!

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

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