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
Using Heroku on entrusted development
Search
Kusamao Abe
June 22, 2017
Technology
0
1.1k
Using Heroku on entrusted development
2017/6/22 Heroku Meetup #17 Heroku Strikeでお話させていただきました。受託案件でのHeroku運用についてです
Kusamao Abe
June 22, 2017
Tweet
Share
More Decks by Kusamao Abe
See All by Kusamao Abe
Vue builds
kusamao
1
530
Javascript in the past and now
kusamao
1
170
The Essence of UI Design
kusamao
1
1.9k
Make good (better) form
kusamao
0
260
Making mock-up in web application
kusamao
0
98
Keep a distance from jQuery
kusamao
0
130
Other Decks in Technology
See All in Technology
モダンUIでフルサーバーレスなAIエージェントをAmplifyとCDKでサクッとデプロイしよう
minorun365
4
210
Bill One 開発エンジニア 紹介資料
sansan33
PRO
5
17k
セキュリティについて学ぶ会 / 2026 01 25 Takamatsu WordPress Meetup
rocketmartue
1
300
AI駆動PjMの理想像 と現在地 -実践例を添えて-
masahiro_okamura
1
120
SREじゃなかった僕らがenablingを通じて「SRE実践者」になるまでのリアル / SRE Kaigi 2026
aeonpeople
6
2.4k
Greatest Disaster Hits in Web Performance
guaca
0
250
20260204_Midosuji_Tech
takuyay0ne
1
160
コミュニティが変えるキャリアの地平線:コロナ禍新卒入社のエンジニアがAWSコミュニティで見つけた成長の羅針盤
kentosuzuki
0
110
Oracle Cloud Observability and Management Platform - OCI 運用監視サービス概要 -
oracle4engineer
PRO
2
14k
OpenShiftでllm-dを動かそう!
jpishikawa
0
110
FinTech SREのAWSサービス活用/Leveraging AWS Services in FinTech SRE
maaaato
0
130
AzureでのIaC - Bicep? Terraform? それ早く言ってよ会議
torumakabe
1
560
Featured
See All Featured
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1k
Art, The Web, and Tiny UX
lynnandtonic
304
21k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
170
Music & Morning Musume
bryan
47
7.1k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
Darren the Foodie - Storyboard
khoart
PRO
2
2.4k
Speed Design
sergeychernyshev
33
1.5k
How to Talk to Developers About Accessibility
jct
2
130
Side Projects
sachag
455
43k
How GitHub (no longer) Works
holman
316
140k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
160
Transcript
डୗҊ݅Ͱͷ Herokuӡ༻ 2017/06/22 Heroku Meetup #17 Heroku Strike at Global
Business Hub Tokyo
גࣜձࣾλϯόϦϯWebΤϯδχΞ ҆෦ຑੜʢKusamao Abeʣ 8FCαΠτɾ8FCΞϓϦέʔγϣϯͷϚʔΫΞοϓɺ 41"8PSE1SFTTʢͭΒ͍ʣΛओʹ୲ɻϫΠϠʔ ϑϨʔϜͱ͔σβΠϯΧϯϓʹԆʑͱένΛ͚͕ͭ ͪɻઃܭͱ͔ΠϯϑϥʹटΛಥͬࠐΜͰࣗͷट ΛకΊΔͷ͕ੜۀͰ͢ɻ ࣗݾհ
λϯόϦϯ͜Μͳ੍࡞ձࣾͰ͢ w Πϯϑϥઐۀ͕͍ͳ͍ w ࣾ֎ͷύʔτφʔ͞ΜͱҰॹʹ੍ ࡞͢Δ͜ͱ͕ଟ͍ w Ҋ͔͚͕݅ͪଟ͍ w ৽نӡ༻͢Δ
w εςʔΫϗϧμʔϓϩμΫτϚ ωʔδϟʔ֎ʹ͍Δ͜ͱ͕ଟ͍
ࠓ͓͢Δ͜ͱ w ͜ͷػೳͰ͜͏มΘΓ·ͨ͠ w ͜Μͳӡ༻ͯ͠·͢
ࢦ͢͜ͱ Έͳ͞Μ͕όϯόϯ)FSPLVΛͬͯ ݟΛڞ༗ͯ͘͠ΕΔ͜ͱ
Herokuͱ ϞοΫΞοϓ 01
ϞοΫΞοϓ੍࡞ɺ Α͘Γ·͢
ैདྷ ࣾςετ ڥ master ࣗಈө ࣾςετ ڥ 4'51
ैདྷ ࣾςετ ڥ master ࣗಈө ࣾςετ ڥ 4'51 ˒ ϨϏϡʔͰ͖ͳ͍
˒ ίϯύΠϧͨ͠ίʔυΛόʔδϣϯ ཧ͢Δࠈ ˒ SFWFSUͩΔ͍
ैདྷ ࣾςετ ڥ master ࣗಈө ࣾςετ ڥ 4'51 ˒ ϨϏϡʔͰ͖ͳ͍
˒ ίϯύΠϧͨ͠ίʔυΛόʔδϣϯ ཧ͢Δࠈ ˒ SFWFSUͩΔ͍ ͜ͷੈͷऴΘΓ
ϞοΫΞοϓ੍࡞ w σβΠϯΧϯϓͱ༷ɾઃܭॻ͔Βʮঢ়ଶʯ Λ૾ͨ͠ΓσβΠφʔʹ֬ೝͨ͠Γ͠ͳ͕ Β੍࡞ w ݟ͕ͨΧϯϓ௨ΓͰ͠ΐ͏͕ͳ͍ w ҙ֎ͱ༷ॻಡΈࠐΉ͜ͱʹͳΔ w
͜ͷ͋ͱΈࠐΈΛ͢Δਓͱίϛϡχέʔ γϣϯΛͱΔ w େنͩͱҰਓͰ࡞Γ͖Εͳ͍͜ͱ͋Δ w Ͳ͏͍͏نɾํͰ࡞Δʁ w ୭ʹͲ͜Λ͓ئ͍͢Δʁ w ΫΦϦςΟνΣοΫʁ
Heroku Pipelines IUUQTEFWDFOUFSIFSPLVDPNBSUJDMFTQJQFMJOFT
Heroku Pipelines IUUQTEFWDFOUFSIFSPLVDPNBSUJDMFTQJQFMJOFT
ίʔυϕʔεΛมߋ͢Δͷʹ1VMM3FRVFTUΛग़͢ 13ʹج͍ͯ)FSPLV͕ࣗಈతʹ"QQΛ࡞ͯ͠ɺ มߋΛςετͰ͖ΔΑ͏ʹͳΔ มߋʹ͕ͳ͚ΕNBTUFSϒϥϯνʹϚʔδ͞ ΕΔ NBTUFSϒϥϯνࣗಈతʹεςʔδϯάڥʹ
ө͞Εͯɺߋʹݕূ͞ΕΔ ४උ͕ສશͳΒຊ൪ڥʹQSPNPUFʢঢ֨ʣ͠ ͯɺΤϯυϢʔβʔʹͬͯΒ͏
Heroku Review Apps master feature App: my-mockup AutoDeploy: master
Heroku Review Apps master feature App: my-mockup AutoDeploy: master
Heroku Review Apps master feature App: my-mockup AutoDeploy: master
Heroku Review Apps master feature App: my-mockup AutoDeploy: master App:
my-mockup-pr765 ParentApp: my-mockup
Heroku Review Apps master feature App: my-mockup AutoDeploy: master App:
my-mockup-pr765 ParentApp: my-mockup
Heroku Review Apps master feature App: my-mockup AutoDeploy: master App:
my-mockup-pr765 ParentApp: my-mockup App: my-mockup-pr766 ParentApp: my-mockup
w ίʔυϕʔεϨϏϡʔ(JU)VCͰ w ݟͨΠϯλϥΫγϣϯͷ ϨϏϡʔ3FWJFX"QQͰ
w ΄͔ʹ୭͕࡞ۀͯ͠Δͷ͔ؾʹ͠ ͳͯ͘ྑ͍ w (JU)VCͰNBTUFSϒϥϯνΛ QSPUFDU͢Δ͜ͱͰϨϏϡʔ͢Γൈ ͚NBTUFSQVTIͳͲͷ࣏҆ͷѱ ͍ߦҝΛېࢭͰ͖Δ w ݟͨͷࠩҟΛ֬ೝ͍͢͠
Herokuͱ ϦϦʔε 02
ܧଓతʹʜʜ w ػೳՃ w จݴௐ w ෆ۩߹मਖ਼ w ϦϦʔεࣄނͷϩʔϧόοΫ ˠ͘͘͞͞ϦϦʔε͍ͨ͠
ͱ͋Δ"84Ҋ݅ w εςʔδϯάͱຊ൪͕ଘࡏ w (JU)VCར༻ w ϦϦʔε44)Ͱೖͬͯ $ git pull
origin master
εςʔδϯάʁʁʁ w CSBODIΛΓସ͑ͯ֬ೝ͍ͯ͠Δ w NBTUFSͰͳ͍ϒϥϯνʹ͍Δ࣌ʹ Ͳ͏ͳͬͯΔͷ͔Θ͔Βͳ͍ʢ֬ ೝதʁ͠Εʁʣ w ֬ೝதʹόάमਖ਼ͨͯ͘͠ϫνϟ ϫνϟ
֬ೝڥͨΓͳ͍ʜ
શ෦·ͱΊͯ֬ೝ
ා͍ʂ
ϦϦʔεΛා͕Βͣʹߦ͏ʹʁ w ͪΌΜͱςετͯ֬͠ೝͰ͖Ε ා͘ͳ͍ w ਓඞͣϛεΛ͢Δɻى͜͞ͳ͍ ͷ͕Ұ൪͚ͩͲɺىͬͨ࣌͜ʹ͢ ͙ʹରॲͰ͖ΔΈ͕ඞཁ w ҰճʹυΧοͱΔͱࢮ͕ݦݱ
͔͠͠
͚ࣗͨͪͩͷ ϓϩμΫτ͡Όͳ͍
͓٬༷ͷ߹͋Δ w ֬ೝ͓٬͞Μʹͯ͠Β͏ w ϦϦʔελΠϛϯάίϯτϩʔ ϧ͍ͨͣ͠ w ͖ͤΓ͡Όͳͯ͘ɺڠۀͯͬ͠ ͍͖͍ͯͨ w
ຖϓϩμΫτʹுΓ͍ͯ͘Ε Δʁʁ
IUUQXXXCBDLMPHKQHJUHVJEFTUFQVQTUFQVQ@IUNM ϦϦʔεϒϥϯν
࣍ճ ຊ൪ εςʔδϯά Քಇத εςʔδϯά
࣍ճ ػೳՃ" ࣍ճϦϦʔε ຊ൪ εςʔδϯά Քಇத εςʔδϯά
ػೳՃ# ࣍ճ ػೳՃ" ࣍ճϦϦʔε ຊ൪ εςʔδϯά Քಇத εςʔδϯά
ػೳՃ# ࣍ճ ػೳՃ" ࣍ճϦϦʔε ຊ൪ εςʔδϯά Քಇத εςʔδϯά
ػೳՃ# ࣍ճ ຊ൪ εςʔδϯά Քಇத εςʔδϯά
࣍ճ ຊ൪ εςʔδϯά Քಇத εςʔδϯά
࣍ճ ຊ൪ εςʔδϯά Քಇத εςʔδϯά
࣍ճ ຊ൪ εςʔδϯά Քಇத εςʔδϯά ࠩҟ
࣍ճ ຊ൪ εςʔδϯά ػೳՃ$ ࣍ʑճϦϦʔε Քಇத εςʔδϯά ࠩҟ
࣍ճ ຊ൪ εςʔδϯά ػೳՃ$ ࣍ʑճϦϦʔε Քಇத εςʔδϯά release ࠩҟ
࣍ճ ຊ൪ εςʔδϯά ػೳՃ$ ࣍ʑճϦϦʔε Քಇத εςʔδϯά release master ࠩҟ
࣍ճ ຊ൪ εςʔδϯά ػೳՃ$ ࣍ʑճϦϦʔε Քಇத εςʔδϯά release master ࠩҟ
࣍ճ ຊ൪ εςʔδϯά ػೳՃ$ ࣍ʑճϦϦʔε Քಇத εςʔδϯά release master ࠩҟ
࣍ճ ຊ൪ εςʔδϯά ػೳՃ$ ࣍ʑճϦϦʔε Քಇத εςʔδϯά release master ࠩҟ
࣍ճ ຊ൪ εςʔδϯά ػೳՃ$ ࣍ʑճϦϦʔε Քಇத εςʔδϯά release master
࣍ճ ຊ൪ εςʔδϯά ػೳՃ$ ࣍ʑճϦϦʔε Քಇத εςʔδϯά release master
࣍ճ ຊ൪ εςʔδϯά ػೳՃ$ ࣍ʑճϦϦʔε Քಇத εςʔδϯά release master
Roll back w εφοϓγϣοτͷ3PMMCBDL͕ Մೳɻ͋͘·ͰҰ࣌తʹɻ w σϓϩΠ͞Εͨॱʹͭ͘όʔδϣ ϯ൪߸ͱͦͷ࣌ͷίϛοτϋογϡ ΛνΣοΫͯͦ͠ͷϦϏδϣϯʹ ͤΔ
˞"EEPOTͷঢ়ଶมԽ͠ͳ͍
ػೳՃ# ࣍ճ ػೳՃ" ࣍ճϦϦʔε ຊ൪ εςʔδϯά Քಇத εςʔδϯά ࠩҟ hash:
aaaaaaa hash: bbbbbbb hash: aaaaaaa
ػೳՃ# ࣍ճ ػೳՃ" ࣍ճϦϦʔε ຊ൪ εςʔδϯά Քಇத εςʔδϯά ࠩҟ hash:
aaaaaaa hash: bbbbbbb hash: aaaaaaa
ػೳՃ# ࣍ճ ػೳՃ" ࣍ճϦϦʔε ຊ൪ εςʔδϯά Քಇத εςʔδϯά ࠩҟ hash:
aaaaaaa hash: bbbbbbb
ػೳՃ# ࣍ճ ػೳՃ" ࣍ճϦϦʔε ຊ൪ εςʔδϯά Քಇத εςʔδϯά ࠩҟ hash:
aaaaaaa hash: bbbbbbb hash: bbbbbbb
ػೳՃ# ࣍ճ ػೳՃ" ࣍ճϦϦʔε ຊ൪ εςʔδϯά Քಇத εςʔδϯά ࠩҟ ࣄނ
hash: aaaaaaa hash: bbbbbbb hash: bbbbbbb
ػೳՃ# ࣍ճ ػೳՃ" ࣍ճϦϦʔε ຊ൪ εςʔδϯά Քಇத εςʔδϯά ࠩҟ ࣄނ
hash: aaaaaaa hash: bbbbbbb
ػೳՃ# ࣍ճ ػೳՃ" ࣍ճϦϦʔε ຊ൪ εςʔδϯά Քಇத εςʔδϯά ࠩҟ ࣄނ
hash: aaaaaaa hash: bbbbbbb hash: aaaaaaa
ػೳՃ# ࣍ճ ػೳՃ" ࣍ճϦϦʔε ຊ൪ εςʔδϯά Քಇத εςʔδϯά ࠩҟ hash:
aaaaaaa hash: bbbbbbb hash: aaaaaaa
ػೳՃ# ࣍ճ ػೳՃ" ࣍ճϦϦʔε ຊ൪ εςʔδϯά Քಇத εςʔδϯά ࠩҟ hash:
aaaaaaa hash: bbbbbbb hash: aaaaaaa
ػೳՃ# ࣍ճ ػೳՃ" ࣍ճϦϦʔε ຊ൪ εςʔδϯά Քಇத εςʔδϯά ࠩҟ hash:
aaaaaaa hash: bbbbbbb hash: aaaaaaa मਖ਼
ػೳՃ# ࣍ճ ػೳՃ" ࣍ճϦϦʔε ຊ൪ εςʔδϯά Քಇத εςʔδϯά ࠩҟ hash:
aaaaaaa hash: bbbbbbb hash: aaaaaaa मਖ਼
ػೳՃ# ࣍ճ ػೳՃ" ࣍ճϦϦʔε ຊ൪ εςʔδϯά Քಇத εςʔδϯά ࠩҟ hash:
aaaaaaa hash: bbbbbbb hash: aaaaaaa
ػೳՃ# ࣍ճ ػೳՃ" ࣍ճϦϦʔε ຊ൪ εςʔδϯά Քಇத εςʔδϯά ࠩҟ ⾠ෆ۩߹
hash: aaaaaaa hash: bbbbbbb hash: aaaaaaa
ػೳՃ# ࣍ճ ػೳՃ" ࣍ճϦϦʔε ຊ൪ εςʔδϯά Քಇத εςʔδϯά ࠩҟ ⾠ෆ۩߹
hash: aaaaaaa hash: bbbbbbb hash: aaaaaaa IPUpY hash: ccccccc
ػೳՃ# ࣍ճ ػೳՃ" ࣍ճϦϦʔε ຊ൪ εςʔδϯά Քಇத εςʔδϯά ࠩҟ ⾠ෆ۩߹
hash: aaaaaaa hash: bbbbbbb hash: aaaaaaa IPUpY hash: ccccccc
ػೳՃ# ࣍ճ ػೳՃ" ࣍ճϦϦʔε ຊ൪ εςʔδϯά Քಇத εςʔδϯά ࠩҟ ⾠ෆ۩߹
hash: aaaaaaa hash: bbbbbbb hash: aaaaaaa IPUpY hash: ccccccc hash: ccccccc
ػೳՃ# ࣍ճ ػೳՃ" ࣍ճϦϦʔε ຊ൪ εςʔδϯά Քಇத εςʔδϯά ࠩҟ ⾠ෆ۩߹
hash: aaaaaaa hash: bbbbbbb hash: aaaaaaa IPUpY hash: ccccccc hash: ccccccc
ػೳՃ# ࣍ճ ػೳՃ" ࣍ճϦϦʔε ຊ൪ εςʔδϯά Քಇத εςʔδϯά ࠩҟ ⾠ෆ۩߹
hash: aaaaaaa hash: bbbbbbb hash: aaaaaaa IPUpY hash: ccccccc hash: ccccccc hash: ccccccc
ػೳՃ# ࣍ճ ػೳՃ" ࣍ճϦϦʔε ຊ൪ εςʔδϯά Քಇத εςʔδϯά ࠩҟ hash:
aaaaaaa hash: bbbbbbb hash: aaaaaaa IPUpY hash: ccccccc hash: ccccccc hash: ccccccc
ػೳՃ# ࣍ճ ػೳՃ" ࣍ճϦϦʔε ຊ൪ εςʔδϯά Քಇத εςʔδϯά ࠩҟ hash:
aaaaaaa hash: bbbbbbb hash: aaaaaaa IPUpY hash: ccccccc hash: ccccccc hash: ccccccc
ػೳՃ# ࣍ճ ػೳՃ" ࣍ճϦϦʔε ຊ൪ εςʔδϯά Քಇத εςʔδϯά ࠩҟ hash:
aaaaaaa hash: bbbbbbb hash: aaaaaaa IPUpY hash: ccccccc hash: ccccccc hash: ccccccc hash: bbbbbbb !ccccccc
(JU)VCଆͷઃఆ w NBTUFSQVTIͯ͠ຊ൪ʹө ͞Εͳ͍ͷͰฏ w ߋʹฏҡ࣋Λաܹʹ͢ΔͳΒGPSL ܗࣜʹͯ͠SFMFBTFϒϥϯνΛकΔ
)FSPLVଆͷઃఆ w ຊ൪ڥ͓٬͞Μͱཧऀ͚ͩ ৮ΕΔΑ͏ʹ͢Δ w ΞυΦϯΛ৮͍͍͔ͬͯνΣοΫ w ڥมΛ֬ೝ͠ͳ͍ͱ%#Λ(6* Ͱ͍͡Εͳ͍
࣍ճ ຊ൪ εςʔδϯά Քಇத εςʔδϯά ઌํ୲ऀ ཧऀ ύʔτφʔ σΟϨΫλʔ deploy
or operate Add-ons
IUUQRJJUBDPNMMISLMMJUFNTFCCGCE खલຯḩ Ͱ͕͢
Herokuͱ ςετ 03
CI/CD Continuous Integration Continuous Delivery "HJMF
w ʮ࠷ॳʹ͓͖ͬͯ͘ʯ w ʮ࣭ཧΛ͍εύϯͰʯ w ʮςετ͕௨Βͳ͍ͷϨϏϡʔ ͠ͳ͍ʯ
͍
͍͖ͬͯ·͠ΐ͏
HerokuCI + CircleCI
HerokuCI w ඵͰམͪͯͨʢࠓվળʣ ˠ8FC"1*ͷςετ͕Ͱ͖ͳ͔ͬ ͨ w ϦϙδτϦͷ1VTIʹରԠ࣮ͯ͠ߦɻ 3FWJFXBQQͷൃੜͰͳ͘QVTI Ͱ࡞ w
EZOPΛফඅ w "EEPOTΛ͑Δ
CircleCI w ݁ՌΛ֬ೝ͍ͨ͠ͷʹ(JU)VC0SHT Ͱ0VUTJEF$PMMBCPSBUPSͩͱμϝɻ 0SHBOJ[BUJPO"DDFTT͕ඞཁʁ w ֎෦ͷύʔτφʔ͞ΜΛ.FNCFS ʹ͢ΔͱϦϙδτϦͷӾཡɾ࡞ ΛҰൠʹ։์Ͱ͖ͳ͘ͳΔ w
5FBNͰࣗͨͪͷϝϯόʔ͚ͩ ͷνʔϜΛ࡞ͬͯຖճͦΕΛׂ ΓͯΔํʹมߋ
None
–࡞ۀऀ͍Θ͘ l1)1ͰDJSDMFZNMͱ͔ॻ͘ͷ͍ͨΜʜz
·ͩ·ͩ͜Ε͔Β
ࠓޙ w εϐʔσΟʹ࡞Γ͡ΊΔͨΊͷ ϘΠϥʔϓϨʔτɾࣾυΩϡϝ ϯτ w %PDLFSͲ͏ͳͷ w ͦͦςετΛͪΌΜͱॻͧ͘ FUD
Thank you for your listening!