Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
一休.comにおけるデプロイフローと自動化 /ikyu-deploy-flow
Search
kentana20
April 21, 2016
Technology
9
8.4k
一休.comにおけるデプロイフローと自動化 /ikyu-deploy-flow
サイボウズ✕一休合同勉強会での発表資料です
kentana20
April 21, 2016
Tweet
Share
More Decks by kentana20
See All by kentana20
一休.comでの開発組織改善の取り組みとこれから /improve-ikyu-devlove-x
kensuketanaka
24
36k
株式会社一休 会社紹介資料 / introduce-ikyu
kensuketanaka
15
82k
一休での開発における改善の取組み /devops-at-ikyu
kensuketanaka
13
9.9k
一休.com における改善事例のご紹介 /ikyu-storage-improvement
kensuketanaka
6
11k
開発合宿@京都 /hack-camp-kyoto
kensuketanaka
0
3.5k
ikyu-frontend
kensuketanaka
21
7.1k
sushi_route_2015
kensuketanaka
0
180
qiita meetup#12
kensuketanaka
4
71k
cross_2015_trave_ec
kensuketanaka
1
3.4k
Other Decks in Technology
See All in Technology
CTOから見た事業開発とプロダクト開発 / My Perspective on Business and Product Development as CTO
keisuke69
4
960
Git 研修 Basic【MIXI 24新卒技術研修】
mixi_engineers
PRO
0
310
AWSでRAGを作る法方
sonoda_mj
1
140
CEL(Common Expression Language)で書いた条件にマッチしたIAM Policyを見つける / iam-policy-finder
fujiwara3
0
710
Docker互換のセキュアなコンテナ実行環境「Podman」超入門
devops_vtj
6
3.2k
スタートアップにおける組織設計とスクラムの長期戦略 / Scrum Fest Kanazawa 2024
yoshikiiida
13
3.6k
さらに高品質・高速化を目指すAI時代のテスト設計支援と、めざす先 / AI Test Lab vol.1
shift_evolve
0
190
[NIKKEI Tech Talk] KDDI/KAG Scrum & Community for Engineering Training
curanosuke
2
220
AWSサービスメニュー開発をしていてAWSを好きだ!と感じた瞬間
toru_kubota
0
130
コミュニティサービスに「あなたへ」フィードを リリースするまでの試行錯誤
takapy
1
140
年間一億円削減した時系列データベースのアーキテクチャ改善~不確実性の高いプロジェクトへの挑戦~
lycorptech_jp
PRO
3
2.9k
推薦システムを本番導入する上で一番優先すべきだったこと~NewsPicks記事推薦機能の改善事例を元に~
morinota
0
120
Featured
See All Featured
A Philosophy of Restraint
colly
200
16k
Art, The Web, and Tiny UX
lynnandtonic
291
20k
Reflections from 52 weeks, 52 projects
jeffersonlam
346
19k
The World Runs on Bad Software
bkeepers
PRO
63
11k
Why Our Code Smells
bkeepers
PRO
332
56k
Designing the Hi-DPI Web
ddemaree
276
34k
A better future with KSS
kneath
231
17k
Product Roadmaps are Hard
iamctodd
PRO
48
10k
Producing Creativity
orderedlist
PRO
340
39k
Bash Introduction
62gerente
607
210k
Docker and Python
trallard
37
2.9k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
353
29k
Transcript
Ұٳ.com ʹ͓͚Δ σϓϩΠϑϩʔͱࣗಈԽ ʙαΠϘζ✕Ұٳ ߹ಉษڧձʙ Kensuke Tanaka (@kentana20)
About me • ాத ݈հ • @kentana20 • 20065݄͔ΒҰٳ •
॓ധαʔϏε։ൃ(9) →γεςϜຊ෦(1)
Agenda • Ұٳ.com & ࠾༻ٕज़ / Tools • σϓϩΠϑϩʔͷੲͱࠓ •
ͦͷଞͷࣗಈԽࣄྫ • ՝ͱ͜Ε͔Β
About Ұٳ.com ࠾༻ٕज़ / Tools
About Ұٳ.com
None
Ұٳ.com • ओྗαʔϏε • ্࣭ͳϗςϧɾཱྀؗͷ༧αʔϏε • 20005݄Φʔϓϯͷ15ࡀ
Ұٳ.com KPI (2015.03) • ձһ: 400ສ+ • ϗςϧ/ཱྀؗ: 2,600ࢪઃ+ •
ؒൢചࣨ: 189ສࣨ+
͓ͱͳΓ͞·
࠾༻ٕज़ / Tools
࠾༻ٕज़ / Tools • ASP.NET WebForms/MVC (VB/C#) • IIS, SQLServer,
Solr • Sass, Compass • GitHub Enterprise • nxlog, Fluentd, Elasticsearch, Google Big Query • Jenkins, Selenium WebDriver • NewRelic, Kibana, Bugsnag • Redmine, Trello, Slack, Hubot
σϓϩΠϑϩʔͷੲͱࠓ
ੲ
ੲ (~2014) ϩʔΧϧ ڥ 3FQPTJUPSZ 4VCWFSTJPO $IFDLPVU $PNNJU 5BH 4UBHJOHڥ
%FQMPZ ຊ൪ڥ %FQMPZ ϩʔΧϧ ڥ 5FTU
ੲ (~2014) ϩʔΧϧ ڥ 3FQPTJUPSZ 4VCWFSTJPO $IFDLPVU $PNNJU 5BH 4UBHJOHڥ
%FQMPZ ຊ൪ڥ %FQMPZ ϩʔΧϧ ڥ 5FTU
ੲ (~2014) ϩʔΧϧ ڥ 3FQPTJUPSZ 4VCWFSTJPO $IFDLPVU $PNNJU 5BH 4UBHJOHڥ
%FQMPZ ຊ൪ڥ %FQMPZ ϩʔΧϧ ڥ 5FTU ΄΅खಈ ΤϯδχΞ͕൪(िସΓ)Ͱ࣮ࢪ
ੲ (~2014) ϩʔΧϧ ڥ 3FQPTJUPSZ 4VCWFSTJPO $IFDLPVU $PNNJU 5BH 4UBHJOHڥ
%FQMPZ ຊ൪ڥ %FQMPZ ϩʔΧϧ ڥ 5FTU ΄΅खಈ ΤϯδχΞ͕൪(िସΓ)Ͱ࣮ࢪ
ੲ (~2014) ϩʔΧϧ ڥ 3FQPTJUPSZ 4VCWFSTJPO $IFDLPVU $PNNJU 5BH 4UBHJOHڥ
%FQMPZ ຊ൪ڥ %FQMPZ ϩʔΧϧ ڥ 5FTU ΄΅खಈ ΤϯδχΞ͕൪(िସΓ)Ͱ࣮ࢪ खಈ ΤϯδχΞ͕୲Ͱ࣮ࢪ
ੲ (~2014) • VCSSubversion • Tag࡞ʙStaging/ProductionͷσϓϩΠखಈ • σϓϩΠޙͷओಋઢςετͪΖΜखಈ
ੲ (~2014) • VCSSubversion • Tag࡞ʙStaging/ProductionͷσϓϩΠखಈ • σϓϩΠޙͷओಋઢςετͪΖΜखಈ • ӡ༻ෛՙେ
• ϦϦʔεසԼ(ि1ճ)
ੲ (~2014) • VCSSubversion • Tag࡞ʙStaging/ProductionͷσϓϩΠखಈ • σϓϩΠޙͷओಋઢςετͪΖΜखಈ ࣗಈԽͩ
গ͠ੲ (~20159݄) • VCSGitHub Enterpriseʹมߋ • CI(Jenkins)ͰStagingͷσϓϩΠࣗಈ • σϓϩΠޙͷओಋઢςετSeleniumͰࣗಈ •
ຊ൪ͷϦϦʔεि2ճʹ
None
গ͠ੲͷσϓϩΠϑϩʔ ϓϧϦΫmerge (खಈ) 4UBHJOH ϦϦʔε༻ ϓϧϦΫ࡞ ίʔϧ ϦϦʔε༻ ϓϧϦΫ࡞ ϓϧϦΫ63-
8FC)PPL %FQMPZ σϓϩΠ୲ Production %FQMPZ खಈ
গ͠ੲͷϒϥϯνઓུ NBTUFS GYYY GYYY GYYY DIFDLPVU NFSHF 1VMM3FRVFTU 4UBHJOH SFMFBTF
NFSHF 1VMM3FRVFTU Production %FQMPZ %FQMPZ
গ͠ੲͷϒϥϯνઓུ NBTUFS GYYY GYYY GYYY DIFDLPVU NFSHF 1VMM3FRVFTU 4UBHJOH SFMFBTF
NFSHF 1VMM3FRVFTU Production %FQMPZ %FQMPZ վળ͞Ε͖ͯͨ
࣌ͷ՝ • ຊ൪ϦϦʔεʹབྷΉ࡞ۀखಈ͕ओ • ࢮ׆ࢹͷOn/Off • ϑΝΠϧಉظͷOn/Off • ϩʔυόϥϯαͰͷϊʔυΓ͠/෮ؼ etc..
• masterͷmergeʹ͋·Γҙຯ͕ͳ͔ͬͨ • StagingࢿࡐΛͬͯຊ൪ϦϦʔε • σϓϩΠʹؔ࿈͢Δ࡞ۀઐ୲͕࣮ࢪ
࣌ͷ՝ • ຊ൪ϦϦʔεʹབྷΉ࡞ۀखಈ͕ओ • ࢮ׆ࢹͷOn/Off • ϑΝΠϧಉظͷOn/Off • ϩʔυόϥϯαͰͷϊʔυΓ͠/෮ؼ etc..
• masterͷmergeʹ͋·Γҙຯ͕ͳ͔ͬͨ • StagingࢿࡐΛͬͯຊ൪ϦϦʔε • σϓϩΠʹؔ࿈͢Δ࡞ۀઐ୲͕࣮ࢪ
গ͠ੲͷϒϥϯνઓུ NBTUFS GYYY GYYY GYYY DIFDLPVU NFSHF 1VMM3FRVFTU 4UBHJOH SFMFBTF
NFSHF 1VMM3FRVFTU Production %FQMPZ %FQMPZ
গ͠ੲͷϒϥϯνઓུ NBTUFS GYYY GYYY GYYY DIFDLPVU NFSHF 1VMM3FRVFTU 4UBHJOH SFMFBTF
NFSHF 1VMM3FRVFTU Production %FQMPZ %FQMPZ masterͷmergeͰ ԿͷΠϕϯτൃੜ͠ͳ͍
গ͠ੲͷϒϥϯνઓུ NBTUFS GYYY GYYY GYYY DIFDLPVU NFSHF 1VMM3FRVFTU 4UBHJOH SFMFBTF
NFSHF 1VMM3FRVFTU Production %FQMPZ %FQMPZ releasemergeͯ͠ॳΊͯ StagingͷσϓϩΠ͕࣮ߦ
গ͠ੲͷϒϥϯνઓུ NBTUFS GYYY GYYY GYYY DIFDLPVU NFSHF 1VMM3FRVFTU 4UBHJOH SFMFBTF
NFSHF 1VMM3FRVFTU Production %FQMPZ %FQMPZ ͳΜ͔͓͔͍͠
՝ͷݪҼ(༧ଌ) • master mergeʹىҼͯ͠ԿͷΠϕϯτൃੜ͠ͳ͍ • master mergeͷۓுײ͕Լ • release mergeޙͷStagingͰෆ۩߹͕Ұఆׂ߹Ͱ
ൃੜ͢Δࣄ͕ܧଓ
՝ͷݪҼ(༧ଌ) • master mergeʹىҼͯ͠ԿͷΠϕϯτൃੜ͠ͳ͍ • master mergeͷۓுײ͕Լ • release mergeޙͷStagingͰෆ۩߹͕Ұఆׂ߹Ͱ
ൃੜ͢Δࣄ͕ܧଓ master mergeͰଈStaging ʹσϓϩΠͰ͖ΕΑ͍
վળޙͷϒϥϯνઓུ(ݱࡏ) NBTUFS GYYY GYYY GYYY DIFDLPVU NFSHF 1VMM3FRVFTU 4UBHJOH SFMFBTF
NFSHF 1VMM3FRVFTU Production
࣌ͷ՝ • ຊ൪ϦϦʔεʹབྷΉ࡞ۀखಈ͕ओ • ࢮ׆ࢹͷOn/Off • ϑΝΠϧಉظͷOn/Off • ϩʔυόϥϯαͰͷϊʔυΓ͠/෮ؼ etc..
• masterͷmergeʹ͋·Γҙຯ͕ͳ͔ͬͨ • StagingࢿࡐΛͬͯຊ൪ϦϦʔε • σϓϩΠʹؔ࿈͢Δ࡞ۀઐ୲͕࣮ࢪ
ຊ൪σϓϩΠखಈ ϓϧϦΫmerge (खಈ) 4UBHJOH ϦϦʔε༻ ϓϧϦΫ࡞ ίʔϧ ϦϦʔε༻ ϓϧϦΫ࡞ ϓϧϦΫ63-
8FC)PPL %FQMPZ σϓϩΠ୲ Production %FQMPZ खಈ
ຊ൪σϓϩΠ 8FCαʔόάϧʔϓ" ཧ݉ ࢮ׆ࢹαʔό ϦϦʔε࣌ຊ൪ڥͷ ཧαʔόʹϦϞʔτϩάΠϯͯ͠࡞ۀ ϑΝΠϧಉظαʔό ϩʔυόϥϯα 8FCαʔόάϧʔϓ#
ຊ൪σϓϩΠ 8FCαʔόάϧʔϓ" ཧ݉ ࢮ׆ࢹαʔό ϦϦʔε࣌ຊ൪ڥͷ ཧαʔόʹϦϞʔτϩάΠϯͯ͠࡞ۀ ϑΝΠϧಉظαʔό ϩʔυόϥϯα 8FCαʔόάϧʔϓ# ϑΝΠϧಉظΛఀࢭ
ຊ൪σϓϩΠ 8FCαʔόάϧʔϓ" ཧ݉ ࢮ׆ࢹαʔό ϦϦʔε࣌ຊ൪ڥͷ ཧαʔόʹϦϞʔτϩάΠϯͯ͠࡞ۀ ϑΝΠϧಉظαʔό ϩʔυόϥϯα 8FCαʔόάϧʔϓ# ϑΝΠϧಉظΛఀࢭ
WebαʔόάϧʔϓAͷ ΞΫηεΛःஅ
ຊ൪σϓϩΠ 8FCαʔόάϧʔϓ" ཧ݉ ࢮ׆ࢹαʔό ϦϦʔε࣌ຊ൪ڥͷ ཧαʔόʹϦϞʔτϩάΠϯͯ͠࡞ۀ ϑΝΠϧಉظαʔό ϩʔυόϥϯα 8FCαʔόάϧʔϓ# ϑΝΠϧಉظΛఀࢭ
WebαʔόάϧʔϓAͷ ΞΫηεΛःஅ ৽ࢿࡐΛσϓϩΠ
ຊ൪σϓϩΠ 8FCαʔόάϧʔϓ" ཧ݉ ࢮ׆ࢹαʔό ϦϦʔε࣌ຊ൪ڥͷ ཧαʔόʹϦϞʔτϩάΠϯͯ͠࡞ۀ ϑΝΠϧಉظαʔό ϩʔυόϥϯα 8FCαʔόάϧʔϓ# ϑΝΠϧಉظΛఀࢭ
WebαʔόάϧʔϓBͷ ΞΫηεΛःஅ
ຊ൪σϓϩΠ 8FCαʔόάϧʔϓ" ཧ݉ ࢮ׆ࢹαʔό ϦϦʔε࣌ຊ൪ڥͷ ཧαʔόʹϦϞʔτϩάΠϯͯ͠࡞ۀ ϑΝΠϧಉظαʔό ϩʔυόϥϯα 8FCαʔόάϧʔϓ# ϑΝΠϧಉظΛఀࢭ
WebαʔόάϧʔϓBͷ ΞΫηεΛःஅ ৽ࢿࡐΛσϓϩΠ
ຊ൪σϓϩΠ 8FCαʔόάϧʔϓ" ཧ݉ ࢮ׆ࢹαʔό ϦϦʔε࣌ຊ൪ڥͷ ཧαʔόʹϦϞʔτϩάΠϯͯ͠࡞ۀ ϑΝΠϧಉظαʔό ϩʔυόϥϯα 8FCαʔόάϧʔϓ# ϑΝΠϧಉظΛఀࢭ
ຊ൪σϓϩΠ 8FCαʔόάϧʔϓ" ཧ݉ ࢮ׆ࢹαʔό ϦϦʔε࣌ຊ൪ڥͷ ཧαʔόʹϦϞʔτϩάΠϯͯ͠࡞ۀ ϑΝΠϧಉظαʔό ϩʔυόϥϯα 8FCαʔόάϧʔϓ# ϑΝΠϧಉظΛఀࢭ
৽ࢿࡐΛσϓϩΠ
ຊ൪σϓϩΠ 8FCαʔόάϧʔϓ" ཧ݉ ࢮ׆ࢹαʔό ϦϦʔε࣌ຊ൪ڥͷ ཧαʔόʹϦϞʔτϩάΠϯͯ͠࡞ۀ ϑΝΠϧಉظαʔό ϩʔυόϥϯα 8FCαʔόάϧʔϓ#
ຊ൪σϓϩΠ 8FCαʔόάϧʔϓ" ཧ݉ ࢮ׆ࢹαʔό ϦϦʔε࣌ຊ൪ڥͷ ཧαʔόʹϦϞʔτϩάΠϯͯ͠࡞ۀ ϑΝΠϧಉظαʔό ϩʔυόϥϯα 8FCαʔόάϧʔϓ# ݴ͏·Ͱͳ͘
πϥ͍
ຊ൪σϓϩΠ 8FCαʔόάϧʔϓ" ཧ݉ ࢮ׆ࢹαʔό ϦϦʔε࣌ຊ൪ڥͷ ཧαʔόʹϦϞʔτϩάΠϯͯ͠࡞ۀ ϑΝΠϧಉظαʔό ϩʔυόϥϯα 8FCαʔόάϧʔϓ# ϢʔβʹՁΛఏڙ͢Δ
εϐʔυΛ্͛ΔͨΊʹ ຊ൪σϓϩΠࣗಈԽ
վળޙͷσϓϩΠϑϩʔ(ݱࡏ) ϓϧϦΫmerge (खಈ) ϦϦʔε༻ ϓϧϦΫ࡞ ίʔϧ ϦϦʔε༻ ϓϧϦΫ࡞ ϓϧϦΫ63- 8FC)PPL
%FQMPZ σϓϩΠ୲ Production
SlackͰϦϦʔε༻ϓϧϦΫ࡞
ϦϦʔε༻ϓϧϦΫ
ݱࡏ (201510݄~) • ProductionͷσϓϩΠࣗಈʹ • master mergeޙɺStagingσϓϩΠ • release mergeޙɺProductionσϓϩΠ
• ϦϦʔε݄ʙͷि4ճʹ • ϦϦʔεӡ༻ସΘΓͰ։ൃऀ͕࣮ࢪ
ݱࡏ (201510݄~) • ProductionͷσϓϩΠࣗಈʹ • master mergeޙɺStagingσϓϩΠ • release mergeޙɺProductionσϓϩΠ
• ϦϦʔε݄ʙͷि4ճʹ • ϦϦʔεӡ༻ସΘΓͰ։ൃऀ͕࣮ࢪ ͍ͩͿΑ͘ͳ͖ͬͯ·ͨ͠
ͦͷଞͷࣗಈԽࣄྫ
։ൃڥͷࣗಈԽ
None
։ൃڥͷηοτΞοϓࣗಈԽ • ϨϙδτϦͷClone • ֤छϛυϧΣΞͷΠϯετʔϧɺઃఆ • ڥมɺϨδετϦɺACLͷઃఆ • ॳճϏϧυˍϩʔΧϧαʔόىಈ
ϒϥϯνσϓϩΠ
None
։ൃ༻ϒϥϯνΛखܰʹσϓϩΠ • ίʔυϨϏϡʔʹఴ͑Δ • master mergeલʹϚʔέɺΧελϚʔαϙʔτʹ ඇಉظʹσϞ
ChatOps
ChatOps • ίʔυϨϏϡʔ / αϙʔτͷࣗಈΞαΠϯ • ேձ௨ • ఆظϛʔςΟϯά༻ΤϯτϦ࡞ •
ि࣍൪
ίʔυϨϏϡʔ / αϙʔτͷΞαΠϯ
ఆظϛʔςΟϯά༻ΤϯτϦ
ि࣍൪
ৄࡉBlogͰ “ChatOps” Ͱ άάΕग़͖ͯ·͢
՝ͱ͜Ε͔Β
CIଐਓԽ
CIଐਓԽ • Jenkinsͷׂ͕ঃʑʹ૿Ճ • Staging / ProductionͷϏϧυɾσϓϩΠ • E2E •
ϒϥϯνσϓϩΠ
Jenkinsδϣϒଟա͗
CIଐਓԽ • ։ൃऀࣗͷۀʹؔ࿈͢Δδϣϒ͕ѲͰ͖ͳ͍ • ΈࠐΜͩຊਓ͔͠δϣϒνΣʔϯͱׂ͕ѲͰ͖ ͣɺJenkins͓͡͞ΜԽݱ͕ൃੜ
CIଐਓԽ • ղফʹ͚ͯ • αʔϏεͷϨϙδτϦͰCIδϣϒΛίʔυཧ Ͱ͖ΔCIܥSaaSͷҠߦΛܭըத
ϨϙδτϦσΧ͗͢
ϨϙδτϦσΧ͗͢ • σβΠϯࢿࡐͯ͢Gitཧ • σβΠφʔͱσϓϩΠϑϩʔΛἧ͑ΔͨΊʹ࣮ࢪ • ϨϙδτϦαΠζ͕1.5Ͱ4ഒʹ • clone /
fetch / pull ͳͲͷૢ࡞ͰλΠϜΞτ ൃੜ
ϨϙδτϦσΧ͗͢ • Ұ෦ͷσβΠϯࢿࡐΛGitཧ͠ͳ͍ํͰݕ౼த • ੩తϖʔδͷը૾ϑΝΠϧ etc • σβΠφʔͷϫʔΫϑϩʔʹӨڹΛ༩͑ա͗ͳ͍ Α͏ʹܭըத
·ͱΊɾॴײ
·ͱΊɾॴײ(ࣗռ) • ࣗಈԽ͚ͩͰಓ • ࣗಈԽʴใڞ༗ʹܗࣜ • ʑͷ։ൃͷճΓڧԽΑ͍αʔϏεΛͭ͘Δ ͨΊʹෆՄܽ • ࣗಈԽޙ՝ग़ଓ͚Δɻܧଓ͢Δ͜ͱ͕େࣄ
͝੩ௌ ͋Γ͕ͱ͏͍͟͝·ͨ͠