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
Webサービスにて200週連続で新機能をリリースする舞台裏 / builderscon tok...
Search
KASUYA, Daisuke
September 05, 2018
Technology
8
13k
Webサービスにて200週連続で新機能をリリースする舞台裏 / builderscon tokyo 2018
KASUYA, Daisuke
September 05, 2018
Tweet
Share
More Decks by KASUYA, Daisuke
See All by KASUYA, Daisuke
はてなのチーム開発一巡り / Hatena Engineer Seminar 30
daiksy
0
600
ふりかえりカンファレンスLT/Get Wild
daiksy
0
1.8k
スクラムマスターの採用事情 / scrum fest fukuoka 2023
daiksy
0
2.6k
スクラムのスケールとチームトポロジー / Scaled Scrum and Team Topologies
daiksy
1
1.3k
Scrum@Scaleの理論と実装 / RSGT2022
daiksy
2
9.9k
リモートワークに最適なスクラムチームの人数についての仮説 / Kyoto Agile 2021
daiksy
0
240
スクラムを軸に据えた キャリア戦略 / Scrum Fest Osaka 2021
daiksy
2
6.9k
インフラ障害対応演習LT版 / evacuation drill of systems
daiksy
1
740
この半年で変わったものと変わらないもの - SaaS開発の現場より / Developers Summit 2020 Summer
daiksy
0
5.1k
Other Decks in Technology
See All in Technology
NilAway による静的解析で「10 億ドル」を節約する #kyotogo / Kyoto Go 56th
ytaka23
3
380
フロントエンド設計にモブ設計を導入してみた / 20241212_cloudsign_TechFrontMeetup
bengo4com
0
1.9k
Oracle Cloud Infrastructure:2024年12月度サービス・アップデート
oracle4engineer
PRO
0
190
watsonx.ai Dojo #5 ファインチューニングとInstructLAB
oniak3ibm
PRO
0
170
ガバメントクラウドのセキュリティ対策事例について
fujisawaryohei
0
550
Google Cloud で始める Cloud Run 〜AWSとの比較と実例デモで解説〜
risatube
PRO
0
110
事業貢献を考えるための技術改善の目標設計と改善実績 / Targeted design of technical improvements to consider business contribution and improvement performance
oomatomo
0
100
ハイテク休憩
sat
PRO
2
160
どちらを使う?GitHub or Azure DevOps Ver. 24H2
kkamegawa
0
820
C++26 エラー性動作
faithandbrave
2
750
成果を出しながら成長する、アウトプット駆動のキャッチアップ術 / Output-driven catch-up techniques to grow while producing results
aiandrox
0
340
kargoの魅力について伝える
magisystem0408
0
210
Featured
See All Featured
Dealing with People You Can't Stand - Big Design 2015
cassininazir
365
25k
A better future with KSS
kneath
238
17k
Scaling GitHub
holman
458
140k
Become a Pro
speakerdeck
PRO
26
5k
Imperfection Machines: The Place of Print at Facebook
scottboms
266
13k
Documentation Writing (for coders)
carmenintech
66
4.5k
The World Runs on Bad Software
bkeepers
PRO
65
11k
Visualization
eitanlees
146
15k
The Power of CSS Pseudo Elements
geoffreycrofte
73
5.4k
4 Signs Your Business is Dying
shpigford
181
21k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Statistics for Hackers
jakevdp
796
220k
Transcript
WebαʔϏεʹͯ200ि࿈ଓͰ ৽ػೳΛϦϦʔε͢Δཪ 2018-09-07 builderscon tokyo 2018 גࣜձࣾͯͳ | പ୩ େี
(@daiksy)
Who are you? പ୩ େี(@daiksy) ▸ גࣜձࣾͯͳ. ▸ Mackerel σΟϨΫλʔ
▸ ScalaMatsuri, ScalaؔSummit ▸ ૉਓDJ
Who are you? ஶॻ
͓खݩͷQRίʔυ͔Βɺ ͥͻϑΟʔυόοΫΛ͓ئ͍͠·͢
https://mackerel.io WebαʔϏεʹͯ200ि࿈ଓͰ৽ػೳΛϦϦʔε͢Δཪ
https://mackerel.io WebαʔϏεʹͯ200ि࿈ଓͰ৽ػೳΛϦϦʔε͢Δཪ
https://mackerel.io WebαʔϏεʹͯ200ि࿈ଓͰ৽ػೳΛϦϦʔε͢Δཪ
https://mackerel.io WebαʔϏεʹͯ200ि࿈ଓͰ৽ػೳΛϦϦʔε͢Δཪ
Mackerel ▸ 201311݄ʹ࠷ॳͷίϛοτ ▸ 20145݄8 βϦϦʔε ▸ 20149݄17 ਖ਼ࣜϦϦʔε ▸
201411݄1 daiksyೖࣾ ▸ 20166݄10 100ि࿈ଓϦϦʔε ▸ 20187݄2 200ि࿈ଓϦϦʔε WebαʔϏεʹͯ200ि࿈ଓͰ৽ػೳΛϦϦʔε͢Δཪ
࿈ଓϦϦʔε
࿈ଓϦϦʔε ▸ ϢʔβʔʹͱͬͯՁͷ͋ΔػೳΛຖिඞͣϦϦʔε͢Δ ▸ όάϑΟοΫεϝϯςφϯεϦϦʔεʮ࿈ଓϦϦʔεʯ ͷఆٛʹؚ·ͳ͍ ▸ ຖि݄༵ʢੲຖि༵ۚʣʹ৽ػೳͷ͓ΒͤΛϒϩά ͰपˍϝʔϦϯάϦετ৴ ▸
ͨͩ࢝͠/ΰʔϧσϯΟʔΫ/͓ຍظؒআ͘ʢզʑ ϗϫΠτاۀͳͷͰ WebαʔϏεʹͯ200ि࿈ଓͰ৽ػೳΛϦϦʔε͢Δཪ
࿈ଓϦϦʔε WebαʔϏεʹͯ200ि࿈ଓͰ৽ػೳΛϦϦʔε͢Δཪ
ͳΜͷͨΊʹ࿈ଓϦϦʔε Λ͍ͬͯͨͷ͔
▸ MackerelͱͯϛχϚϜͳঢ়ଶ͔Βελʔτͨ͠ ▸ Slack௨ -> ਖ਼ࣜϦϦʔεͷ2िؒޙ ▸ αʔϏεϝτϦοΫͷࢹ -> ਖ਼ࣜϦϦʔεͷ3ϲ݄ޙ
▸ ࠓͰͨΓલͷػೳͷ΄ͱΜͲະ࣮ͷঢ়ଶͰελʔ τ ͳͥʁ WebαʔϏεʹͯ200ि࿈ଓͰ৽ػೳΛϦϦʔε͢Δཪ
▸ ॳػೳ։ൃͷεϐʔυײ͕ސ٬ʹରͯ͠ଋͰ͖Δগ ͳ͍ՁͷͻͱͭͰ͋Γɺ༏Ґੑͩͬͨ ▸ ॳ࿈ଓϦϦʔεΛҙ͍ࣝͯ͠ͳ͔͕ͬͨɺ͋Δ࣌͑ͨ Β50ि࿈ଓϦϦʔεલͩͬͨ ▸ ຖि࿈ଓϦϦʔεΛΞϐʔϧͨ͠ͱ͜Ζɺސ٬֫ಘͷେ͖ͳ ثͱͳͬͨ ▸
·ͣ100िɺ࣍150िͱগͣͭ͠ඪΛ৳ͨ͠ ͳͥʁ WebαʔϏεʹͯ200ि࿈ଓͰ৽ػೳΛϦϦʔε͢Δཪ
Ͳ͏ͬͯ ࿈ଓϦϦʔεΛҡ͔࣋ͨ͠
Mackerel ͷγεςϜߏ WebαʔϏεʹͯ200ि࿈ଓͰ৽ػೳΛϦϦʔε͢Δཪ
Mackerel ͷϚΠΫϩαʔϏείϯϙʔωϯτ WebαʔϏεʹͯ200ि࿈ଓͰ৽ػೳΛϦϦʔε͢Δཪ
Mackerel ͷϦϦʔεࠂରൣғ ▸ mackerelຊମ ▸ WebγεςϜ ▸ ֎ܗࢹ, AWS, AzureͳͲͷΫϩʔϥ
▸ ҟৗݕίϯϙʔωϯτ ▸ ͯͳࣾʹͯ։ൃ WebαʔϏεʹͯ200ि࿈ଓͰ৽ػೳΛϦϦʔε͢Δཪ
▸ OSS ▸ mackerel-agent ▸ mackerel-agent-plugins ▸ go-check-plugins ▸ mkr
(CLIπʔϧ) ▸ ͯͳࣾͰͷ։ൃ + ϢʔβʔʹΑΔίϯτϦϏϡʔτ ▸ OSSͷΈͷϦϦʔε200࿈ଓϦϦʔεதʹ30ճ΄Ͳ Mackerel ͷϦϦʔεࠂରൣғ WebαʔϏεʹͯ200ि࿈ଓͰ৽ػೳΛϦϦʔε͢Δཪ
▸ ϓϩμΫτΦʔφʔ ▸ σΟϨΫλʔ ← ΅͘͜͜ ▸ ΤϯδχΞ ▸ σβΠφ
▸ CRE ▸ ༁ ։ൃνʔϜͷମ੍ WebαʔϏεʹͯ200ि࿈ଓͰ৽ػೳΛϦϦʔε͢Δཪ
▸ ΤϯδχΞ ▸ 5 ~ 8໊ (1໊͕ςοΫϦʔυʣ ▸ σβΠφ ▸
1ʙ2໊ ։ൃνʔϜͷମ੍ WebαʔϏεʹͯ200ि࿈ଓͰ৽ػೳΛϦϦʔε͢Δཪ
▸ ఆظϦϦʔεि2ճ ▸ Րɾ ▸ ϦϦʔε͕ॕલͷ߹ௐ ։ൃνʔϜͷମ੍ WebαʔϏεʹͯ200ि࿈ଓͰ৽ػೳΛϦϦʔε͢Δཪ
։ൃνʔϜͷମ੍ stagingڥ PullRequest࡞ & ϨϏϡʔ ࣗಈςετOK -> stagingڥʹࣗಈө ຖिՐɾʹͦͷ࣌ͷstagingڥͱͷ͕ࠩຊ൪ө͞ΕΔ WebαʔϏεʹͯ200ि࿈ଓͰ৽ػೳΛϦϦʔε͢Δཪ
▸ ि࣍൪ (ϩʔςʔγϣϯ) ▸ ϦϦʔε୲ (Ր) ▸ ϦϦʔε୲ () ▸
αϙʔτ୲ ▸ OSS ։ൃνʔϜͷମ੍ WebαʔϏεʹͯ200ि࿈ଓͰ৽ػೳΛϦϦʔε͢Δཪ
▸ ि࣍൪ (ϩʔςʔγϣϯ) ▸ ϦϦʔε୲ ▸ ϦϦʔε࡞ۀͷओ୲ ▸ αϙʔτ୲ ▸
Ϣʔβʔ͔Βͷ͓͍߹Θͤͷٕज़ௐࠪΛ୲ ▸ OSS ▸ Ϣʔβʔ͔Βͷmackerel-agentͳͲͷPull Request, IssueΛݟΔ୲ ։ൃνʔϜͷମ੍ WebαʔϏεʹͯ200ि࿈ଓͰ৽ػೳΛϦϦʔε͢Δཪ
։ൃνʔϜͷମ੍ WebαʔϏεʹͯ200ि࿈ଓͰ৽ػೳΛϦϦʔε͢Δཪ
▸ stagingڥͰͷಈ࡞֬ೝ ▸ ֤छϝτϦοΫɾΤϥʔϩάͳͲͷ؍ ▸ ຊ൪ڥʹσϓϩΠ ▸ ຊ൪ڥͰͷಈ࡞֬ೝ ▸ ֤छϝτϦοΫͷ؍ɾΤϥʔϩάͳͲͷ؍
▸ ҟৗ͕͋ΕϩʔϧόοΫ͢Δ ▸ શମͷॴཁ࣌ؒ2࣌ؒ΄Ͳ ϦϦʔεखॱ WebαʔϏεʹͯ200ि࿈ଓͰ৽ػೳΛϦϦʔε͢Δཪ
▸ 2िؒεϓϦϯτͷεΫϥϜܗࣜ(มଇత) ▸ εϓϦϯτܭը ▸ ։ൃ ▸ ՐɾʹఆظϦϦʔε ▸ ݄༵ʹࠂ
▸ 2िؒͷ࠷ޙͷ༵ۚʹৼΓฦΓ ։ൃͷϦζϜ WebαʔϏεʹͯ200ि࿈ଓͰ৽ػೳΛϦϦʔε͢Δཪ
▸ ϓϩμΫτΦʔφ͕࡞͢ΔதɾظͷϩʔυϚοϓ ▸ 3ͷظϩʔυϚοϓ ▸ ࢛ظ͝ͱͷதظϩʔυϚοϓ ▸ CREʹΑΔϢʔβʔώΞϦϯάɻαϙʔτʹدͤΒΕΔཁ ▸ ΤϯδχΞ͔ΒϘτϜΞοϓͰఏҊ͞ΕΔվળʢΞϓϦέʔ
γϣϯϑϨʔϜϫʔΫϛυϧΣΞͷόʔδϣϯΞοϓͳ Ͳʣ ܭը ʢ։ൃͷΠϯϓοτʣ WebαʔϏεʹͯ200ि࿈ଓͰ৽ػೳΛϦϦʔε͢Δཪ
▸ ظλεΫ ▸ ։ൃʹ͍ظؒΛཁ͢Δ։ൃλεΫ (ϲ݄~1) ▸ ࠷ۙͩͱҟৗݕػೳ, ίϯςφରԠͳͲ͕͜Εʹ֘ ▸ ओ୲ΤϯδχΞΛΞαΠϯ͠ɺϓϩδΣΫτԽ
▸ ظλεΫࡉ͔͍୯ҐͰϓϧϦΫΤετ͕࡞ΒΕͯɺຖिϚʔδ & ϦϦʔ ε͞Ε͍ͯ·͢ ▸ ظλεΫ ▸ 1εϓϦϯτ()Ͱ։ൃ͕ऴΘΔλεΫ ܭը ʢ։ൃλεΫͷྨʣ WebαʔϏεʹͯ200ि࿈ଓͰ৽ػೳΛϦϦʔε͢Δཪ
▸ ݄: ΞαΠϯ͞Ε͍ͯΔظλεΫΛਐΊΔ ▸ Ր: ޕલ: ϦϦʔε൪, ޕޙ: ظλεΫΛਐΊΔ ▸
ਫ: ޕલ: ৽ϝϯόʔͱϖΞϓϩ, ޕޙ: ظλεΫΛਐΊΔ ▸ : དྷिࠂ༧ఆͷظλεΫΛਐΊΔ ▸ ۚ: ޕલ: 1࣌ؒ΄ͲͰऴΘΓͦ͏ͳόάमਖ਼ΛΔ, ޕޙ: ։ ൃݴޠͷόʔδϣϯΞοϓʹνϟϨϯδͯ͠ΈΔ ͱ͋ΔΤϯδχΞͷ1िؒͷ༷ࢠ WebαʔϏεʹͯ200ि࿈ଓͰ৽ػೳΛϦϦʔε͢Δཪ
▸ όοΫϩάʹରͯ͠ΤϯδχΞͷ100%ՔಇΛٻΊͳ͍ ▸ ͍͍ͩͨ20~30%͘Β͍༨ྗ͕ΔΑ͏ʹܭը͢Δ ▸ ٕज़తෛ࠴ͷฦࡁͳͲɺΤϯδχΞ͕ࣗओతʹऔΓΊ Δ׆ಈͷ༨Λ͓ͯ͘͠ ▸ ༨ྗͰ͜ͳͨ͠খ͞ͳλεΫ͕ɺຖिࠂͷ༗༻ͳωλʹͳ Δͱ͖͋Δ
։ൃܭըͷϙΠϯτ WebαʔϏεʹͯ200ि࿈ଓͰ৽ػೳΛϦϦʔε͢Δཪ
▸ ϚΠΫϩϚωδϝϯτઈରͩΊ ▸ ΨνΨνʹܭըͯ͠͠·͏ͱɺ͔͑ͬͯಈ͖͕औΕͳ͘ͳ Δ ▸ ࣗͨ͠νʔϜΛ࡞ΔͨΊʹԿΑΓ༨ྗ͕ඞཁ ։ൃܭըͷϙΠϯτ WebαʔϏεʹͯ200ि࿈ଓͰ৽ػೳΛϦϦʔε͢Δཪ
▸ ͘։ൃ͍ͯ͠Δͱɺҟಈɾୀ৬ͳͲͰϝϯόʔ͚ͬ͜͏ ೖΕସΘΔ ▸ ि୯ҐͰϦϦʔεΛܧଓ͍ͯ͠ΔͱɺϝϯόʔೖΕସ͑ʹΑ Δҡ࣋తͳઓྗͷԼ͚ͬ͜͏ӨڹΛड͚Δ ▸ ޮΑ͘։ൃ͢ΔͨΊʹɺϝϯόʔͷಘखɾෆಘखΛѲ͠ ͓ͯ͘ͷॏཁ ϝϯόʔͷೖΕସΘΓ
WebαʔϏεʹͯ200ि࿈ଓͰ৽ػೳΛϦϦʔε͢Δཪ
εΩϧϚοϓ WebαʔϏεʹͯ200ि࿈ଓͰ৽ػೳΛϦϦʔε͢Δཪ
▸ νʔϜ͕ҡ͖࣋͢εΩϧͷՄࢹԽ ▸ ҟಈୀ৬ʹΑͬͯಛఆͷεΩϧ͕ΒͣʹࣦΘΕΔͱ͍͏ ͜ͱ͕ͳ͍ ▸ νʔϜͷεΩϧόϥϯεΛѲ͢Δ͜ͱͰɺޮతͳ։ൃΛ ܭը͢Δ͜ͱ͕Ͱ͖Δ εΩϧϚοϓ WebαʔϏεʹͯ200ि࿈ଓͰ৽ػೳΛϦϦʔε͢Δཪ
▸ ຖिࠂΛνʔϜͷ࠷ॏཁίϛοτϝϯτͱҐஔ͚ͮɺνʔϜશһ͕ͦ ΕΛࢦͯ͠ຖࣄΛ͢Δ ▸ ͍͟ͱ͍͏ͱ͖ʹඋ͑ͯɺ1, 2͘Β͍Ͱ࣮Ͱ͖ͦ͏ͳ༏ઌ͕ͦ Ε΄Ͳߴ͘ͳ͍λεΫΛ͍͔ͭ͘ετοΫ͓ͯ͘͠ ▸ ίϛϡχςΟͷखॿ͚ΊͪΌͪ͘Ό͋Γ͕͍ͨͰ͢… (OSSͷίϯτ
ϦϏϡʔτ) ▸ ͚ͩ͜͜ͷɺ࣮ऴΘ͍ͬͯΔ͚Ͳདྷिͷωλ͕ͳ͍͔Β·ͩϦϦʔ ε͠ͳ͍Ͱ͓͜͏ɺͱ͍͏͜ͱͯ͠·ͨ͠ʢ࡞Γஔ͖ͱݺΜͰ͍ͨ ຖिϦϦʔεΛܧଓ͢Δίπ WebαʔϏεʹͯ200ि࿈ଓͰ৽ػೳΛϦϦʔε͢Δཪ
200िΛ۠Γʹ ࿈ଓϦϦʔεΛΊ·͢
▸ ϓϩμΫτͱͯ͠ɺओཁͳػೳ͕ग़ἧͬͨ ▸ ॳϓϩμΫτΦʔφʔͷߏͨ͠ػೳΛ͋Β͔࣮ͨ͠ ऴ͑ͨ ▸ εϐʔυײେ͕ͩɺࠊΛਾ͑ͨػೳ։ൃͷํ͕ސ٬ʹͱͬ ͯେ͖ͳՁʹͳΔϑΣʔζʹདྷͨͱஅ ▸ ελʔτΞοϓظͷऴྃ
ͳͥຖिϦϦʔεΛࢭΊͨͷʁ WebαʔϏεʹͯ200ि࿈ଓͰ৽ػೳΛϦϦʔε͢Δཪ
▸ ճΓͷվળ͕Γ͘͢ͳͬͨ ▸ Playframework, Scala, sbtͷόʔδϣϯ͕Ұؾʹ৽͘͠ ͳͬͨ ▸ νʔϜʹ·ͩຖिϦϦʔεͷهԱ͕͍ͬͯΔͷͰɺεϐʔ υײΛҡ࣋ͭͭ͠ࠊΛਾ͑ͨ։ൃ͕Ͱ͖Δ
▸ 1८ͯ͠ʮຖिϦϦʔεΛΒͳ͍ͷ͕ͨΓલʯʹͳͬͨ ͱ͖ʹͲ͏ͳΔ͔ͳʁ ຖिϦϦʔεΛऴ͑ͯΈͯ WebαʔϏεʹͯ200ि࿈ଓͰ৽ػೳΛϦϦʔε͢Δཪ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ WebαʔϏεʹͯ200ि࿈ଓͰ৽ػೳΛϦϦʔε͢Δཪ