Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
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
520
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
97
Keep a distance from jQuery
kusamao
0
130
Other Decks in Technology
See All in Technology
30分であなたをOmniのファンにしてみせます~分析画面のクリック操作をそのままコード化できるAI-ReadyなBIツール~
sagara
0
140
多様なデジタルアイデンティティを攻撃からどうやって守るのか / 20251212
ayokura
0
450
[JAWS-UG 横浜支部 #91]DevOps Agent vs CloudWatch Investigations -比較と実践-
sh_fk2
2
260
生成AI時代におけるグローバル戦略思考
taka_aki
0
180
非CUDAの悲哀 〜Claude Code と挑んだ image to 3D “Hunyuan3D”を EVO-X2(Ryzen AI Max+395)で動作させるチャレンジ〜
hawkymisc
2
180
AWS Security Agentの紹介/introducing-aws-security-agent
tomoki10
0
230
評価駆動開発で不確実性を制御する - MLflow 3が支えるエージェント開発
databricksjapan
1
180
SSO方式とJumpアカウント方式の比較と設計方針
yuobayashi
7
670
re:Invent2025 コンテナ系アップデート振り返り(+CloudWatchログのアップデート紹介)
masukawa
0
360
技術以外の世界に『越境』しエンジニアとして進化を遂げる 〜Kotlinへの愛とDevHRとしての挑戦を添えて〜
subroh0508
1
450
乗りこなせAI駆動開発の波
eltociear
1
1.1k
IAMユーザーゼロの運用は果たして可能なのか
yama3133
1
170
Featured
See All Featured
Art, The Web, and Tiny UX
lynnandtonic
303
21k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Context Engineering - Making Every Token Count
addyosmani
9
510
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.8k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
Optimizing for Happiness
mojombo
379
70k
For a Future-Friendly Web
brad_frost
180
10k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
7.9k
Music & Morning Musume
bryan
46
7k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
How GitHub (no longer) Works
holman
316
140k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.6k
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!