Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
大規模ウェブサービスの成長に伴うデプロイ手法の変化から見る技術と文化 / openstackdays2018
Ryo Takaishi
August 02, 2018
Technology
8
1k
大規模ウェブサービスの成長に伴うデプロイ手法の変化から見る技術と文化 / openstackdays2018
Ryo Takaishi
August 02, 2018
Tweet
Share
More Decks by Ryo Takaishi
See All by Ryo Takaishi
入門!ClusterAPI 〜 k8s クラスターも k8s API で管理したい 〜 / k8s_meetup_31
takaishi
3
3.6k
CloudNativeへの道 リーダーシップとフォロワーシップ / 201911-cndjp13
takaishi
2
740
ClusterAPI v1alpha1 → v1alpha2 / k8s_meetup_23
takaishi
1
1.2k
実録!CloudNativeを 目指した230日 / cloud-native-days-tokyo-2019
takaishi
2
2k
Consul Connect and Kubernetes Integration / cloud native meetup tokyo 7
takaishi
2
1.9k
ソフトウェアエンジニア の楽しみ / 2018-pepaboudon
takaishi
0
160
Ansible、Terraform、Packerで作るSelf-Hosted Kubernetes / JKD1812
takaishi
5
3.3k
Knative Serving 入門 / kubernetes meetup 13
takaishi
2
950
こんなこともあろうかと、 サーバーは予め増やして置いた 〜アクセス頻度予測を用いてサーバーを自動増減する「計画的スケーリング」その後〜 / LINE Developer Meetup #32
takaishi
7
3.6k
Other Decks in Technology
See All in Technology
創業1年目のスタートアップでAWSコストを抑えるために取り組んでいること / How to Keep AWS Costs Down at a Startup
yuj1osm
3
2.2k
ChatGPT for Hacking
anugrahsr
0
4.7k
SignalR を使ったアプリケーション開発をより快適に!
nenonaninu
0
710
03_ユーザビリティテスト
kouzoukaikaku
0
830
Deep Neural Networkの共同学習
hf149
0
360
SmartHRからOktaへのSCIM連携で作り出すHRドリブンのアカウント管理
jousysmiler
1
130
OpenShiftクラスターのアップグレード自動化への挑戦! / OpenShift Cluster Upgrade Automation
skitamura7446
0
220
Oracle Transaction Manager for Microservices Free 22.3 製品概要
oracle4engineer
PRO
5
120
AWS Cloud Forensics & Incident Response
e11i0t_4lders0n
0
420
CUEとKubernetesカスタムオペレータを用いた新しいネットワークコントローラをつくってみた
hrk091
1
300
SPA・SSGでSSRのようなOGP対応!
simo123
2
170
OpenShift.Run2023_create-aro-with-terraform
ishiitaiki20fixer
1
370
Featured
See All Featured
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
29
8k
A Modern Web Designer's Workflow
chriscoyier
689
180k
Statistics for Hackers
jakevdp
785
210k
Bash Introduction
62gerente
601
210k
How STYLIGHT went responsive
nonsquared
89
4.2k
Pencils Down: Stop Designing & Start Developing
hursman
114
10k
For a Future-Friendly Web
brad_frost
166
7.8k
Bootstrapping a Software Product
garrettdimon
299
110k
jQuery: Nuts, Bolts and Bling
dougneiner
57
6.6k
The Pragmatic Product Professional
lauravandoore
21
3.5k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
38
3.6k
5 minutes of I Can Smell Your CMS
philhawksworth
198
18k
Transcript
∁ੴྒ / GMO Pepabo, Inc. 2018-08-02 OpenStackDays 2018 େنΣϒαʔϏεͷʹ͏ σϓϩΠख๏ͷมԽ͔ΒݟΔٕज़ͱจԽ
∁ੴ ྒ / @r_takaishi https://repl.info/ TAKAISHI Ryo Ruby, Go OpenStack,
Kubernetes Belgian beer
1. αʔϏεͷঢ়ଶʹԠͯ͡ɺదͳٕज़Λબ͢Δ 2. γεςϜͷϨΠϠʔຖͷϥΠϑαΠΫϧΛҙࣝ͢ Δ͜ͱͰ։ൃΛߴԽ 3. ϓϥοτϑΥʔϜͷಛੑΛཧղ͠ɺՃͰඞཁͳ ཁૉ࣮͢Δٕज़ !3 ࠓ͢͜ͱ
None
None
OpenStack
OpenStack × =
2014-07ɹOpenStackݕ౼։࢝ 2015-05ɹHavanaελοΫӡ༻։࢝ 2016-08ɹ@r_takaishi ϖύϘೖࣾ 2017-01ɹMitakaελοΫӡ༻։࢝ 2018-08ɹHavana͔ΒMitakaͷϚΠάϨʔγϣϯਐߦத ɹະདྷɹɹMitakaελοΫͷόʔδϣϯΞοϓɺHavanaελοΫͷୀɹɹɹ !8 /ZBIͷྺ࢙ w
/FVUSPOʢ%)$1 - 'MPBUJOH*1ʣ w 0DUBWJB -#BB4 w $JOEFS 4DBMF*0 w *OGSBTUSVDUVSFBT$PEFXJUI5FSSBGPSN w :BP1SPEVDUT XSJUUFOCZ3VCZ
ຊ
ࠓͷςʔϚ
σϓϩΠ
σϓϩΠͱɺओʹωοτϫʔΫΛ ௨ͯ͡ఏڙ͞ΕΔ8FCΞϓϦέʔγϣ ϯͳͲͷγεςϜ։ൃఔʹ͓͍ͯɺ γεςϜΛར༻Մೳͳঢ়ଶʹ͢Δ͜ ͱͰ͋Δɻ *5༻ޠࣙయ8FCMJPࣙॻ
!13 1.γεςϜΛར༻Մೳʹ͢Δ = Ϣʔβʔ͕ར༻Ͱ͖Δ 2.ߴͰ҆ఆͨ͠σϓϩΠ => ϢʔβʔՁ্ 3.αʔϏεʹ͓͍ͯɺॏཁͳٕज़ͷҰͭ ͳͥσϓϩΠΛςʔϚͱͨ͠ͷ͔ʁ
࠷దͳσϓϩΠٕज़αʔϏεͷ نঢ়ଶʹԠͯ͡มԽ͢Δ
࣮ྫ
!16 • ϋϯυϝΠυϚʔέοτϓϥοτϑΥʔϜ • Web(Rails)ɾiOSɾAndroid • 7 NJOOF
• PushܕΛ࠾༻ • σϓϩΠઌαʔόʔίʔυΛૹΓɺΓସ͑Δ • Capistranoͱ͍͏RubyͷπʔϧΛ༻ !17 ैདྷͷσϓϩΠख๏ ᶃΞϓϦͷίʔυΛऔಘϏϧυ ᶄ֤αʔόʔ44)ͰίʔυΛૹ৴
ϓϩηε࠶ىಈ
!18 • σϓϩΠઌαʔόʔ͕૿͑ͨͱ͖ʹ͕࣌ؒԆͼΔ • ͕͔͔࣌ؒΔ = τϥϒϧͷݩ • ͭ·Γ…ʹ͍αʔόʔ͕૿͖͑ͯͨͱ͖ ʹαʔϏεͷΛ્͢ΔՄೳੑ͕͋Δ
ैདྷͷख๏ʹ͓͚Δ՝
αʔϏεͷ͕ Λ્͢Δͷආ͚͍ͨ
• PullܕσϓϩΠҠߦ • ֤αʔόʔ͕ࣗίʔυΛऔಘ͠ɺΓସ͑ʢfujiwara/stretcherʣ • Capistrano͔Βར༻͢ΔͨΊɺΓͳ͍෦ΛՃ࣮ !20 ɿͰσϓϩΠͰ͖ΔΑ͏ʹ͢Δͧʂʂʂ ᶃΞϓϦͷίʔυΛऔಘϏϧυ ᶆ֤αʔόʔ͕Λૹ৴
ϓϩηε࠶ىಈ ᶄϏϧυࡁΈΛ ετϨʔδʹอଘ ᶅσϓϩΠઌαʔόʔΫϥελ ʹରͯ͠σϓϩΠ໋ྩΛૹΔ
!21 • αʔϏεͷنɺঢ়ଶʹԠͯ͡దͳٕज़Λબ͢ Δ͜ͱͰΛҡ࣋ɾՃͤ͞Δ • Γͳ͍෦࣮࣮͠ݱ͢Δٕज़ɾͦΕΛਪ͢ ΔจԽ σϓϩΠํࣜͷΓସ͔͑ΒΘ͔Δٕज़ɾจԽ
ΞϓϦέʔγϣϯͷΘ͔ͬͨɻ ϛυϧΣΞͱ͔αʔόʔͷઃఆͱ ͔Ծαʔόʔʁ
ϨΠϠʔຖͷϥΠϑαΠΫϧΛ ҙࣝ͠ɺޮΑ͘σϓϩΠ
࣮ྫ
None
!26 • ݚڀνʔϜͱͷίϥϘϨʔγϣϯ • ϩά͔ΒະདྷͷΞΫηεසΛ༧ଌͯ͠ࣄલʹ૿ݮ • ͦͷ࣌ʑͰΞΫηεΛॲཧͰ͖Δదͳࣄલ ʹભҠ ɿΞΫηεස༧ଌΛ༻͍ͨαʔόʔ૿ݮ
!27 ܭըతεέʔϦϯάͷߏ ΞΫηεස༧ଌ ίϯϙʔωϯτ αʔόʔܭࢉɾ૿ݮ ίϯϙʔωϯτ ༧ଌ݁Ռอ࣋ ετϨʔδ IaaS Endpoint
ճɺ࣌ؒ୯ҐͰ ͦͷͷΞΫηεසΛ༧ଌ ࣌ؒʹճɺ࣍ͷ࣌ؒඞཁͳ αʔόʔΛܭࢉɺ૿ݮ ࣍ͷ࣌ؒͷ ΞΫηεස༧ଌΛऔಘ αʔόʔΛ૿ݮ ظͷ ΞΫηε༧ଌΛอଘ
!28 ΞΫηεසͱαʔόʔͷมԽ ܭըతεέʔϧɿແޮ ܭըతεέʔϧɿ༗ޮ
͏·͍͕ͬͨ͘ɺ՝͋ͬͨ
αʔόʔΛ૿࣌͢ɺ αʔϏεΠϯ͕ؒʹ߹Θͳ͍͜ͱ͕
αʔόʔىಈ͔Β αʔϏεΠϯ·ͰͷλΠϜϥά͕ ݪҼͷͭͩͬͨ
ϥΠϑαΠΫϧͷҧ͍
!33 γεςϜͷ֤ϨΠϠϥΠϑαΠΫϧ͕ͦΕͧΕҧ͏ ΞϓϦέʔγϣϯ ଟ͍ͱɺʹճʙेճೖΕସΘΔ ϛυϧΣΞ ΞϓϦέʔγϣϯΑΓมߋස͍ αʔόʔ Γํ࣍ୈ ΞϓϦέʔγϣϯɺϛυϧΣΞΑΓ͍͜ͱ͕ଟ͍
!34 αʔόʔͷσϓϩΠαΠΫϧ www image v1 www image v2 www image
v3 deleted www server v1 minne v1 www server v2 minne v1 www server v3 minne v1 deleted Golden Imageํࣜ w1VQQFUߋ৽࣌ʹΠϝʔδϏϧυ wϛυϧΣΞ(nginx, td-agent) wΞϓϦέʔγϣϯ(rails) wଈΞϓϦ͕ىಈ͢Δ deleted
!35 αʔόʔͷσϓϩΠαΠΫϧ www image v1 deleted www image v2 www
image v3 deleted www server v1 minne v1 www server v2 minne v1 www server v3 minne v1
!36 αʔόʔͷσϓϩΠαΠΫϧ www image v1 deleted www image v2 www
image v3 deleted www server v1 minne v1 www server v2 minne v1 www server v3 minne v1 Immutable Infrastructure
!37 ΞϓϦέʔγϣϯͷσϓϩΠαΠΫϧ deploy minne-app v2 www image deleted www server
minne v1 www server minne v2 www server minne v3 deploy minne-app v3 terminate server launch server & deploy latest minne
!38 ΞϓϦͱͦΕҎ֎ͰσϓϩΠํࣜΛม͑ͯΈ͚ ϛυϧΣΞ αʔόʔ ઃఆมߋ͕͋ΕΰʔϧσϯΠϝʔδΛߋ৽ αʔόʔΛೖΕସ͑ͯө (Immutable Infrastructure) ΞϓϦέʔγϣϯ αʔόʔͷίʔυΛߋ৽
αʔϏεΛ࠶ىಈͯ͠ө αʔόʔͷೖΕସ͑ෆཁͰߴ
Ұݟ͏·͘Ͱ͖͍ͯΔ͕ʜʁ
!40 σϓϩΠͷϥΠϑαΠΫϧ͕ҧ͏ͱԿ͕ى͖Δ͔ www image v1 www server v1 minne v1
deploy minne-app v2 www server v1 minne v2
!41 σϓϩΠͷϥΠϑαΠΫϧ͕ҧ͏ͱԿ͕ى͖Δ͔ www image v1 deleted www server v1 minne
v1 www server v1 minne v1 deploy minne-app v2 www server v1 minne v2
!42 σϓϩΠͷϥΠϑαΠΫϧ͕ҧ͏ͱԿ͕ى͖Δ͔ www image v1 www server v1 minne v1
www server v1 minne v1 deploy minne-app v2 www server v1 minne v2 ΞϓϦͷόʔδϣϯ͕ҧ͏ʂ
!43 σϓϩΠͷϥΠϑαΠΫϧ͕ҧ͏ͱԿ͕ى͖Δ͔ www image v1 deleted www server v1 minne
v1 www server v1 minne v1 deploy minne-app v2 www server v1 minne v2 www server v1 minne v2 αʔϏεΠϯલʹΞϓϦΛ࠷৽൛ʹ
!44 σϓϩΠͷϥΠϑαΠΫϧ͕ҧ͏ͱԿ͕ى͖Δ͔ www image v1 deleted www server v1 minne
v1 www server v1 minne v1 deploy minne-app v2 www server v1 minne v2 www server v1 minne v2 αʔϏεΠϯલʹΞϓϦΛ࠷৽൛ʹ λΠϜϥά
• αʔόʔىಈ࣌ʹ࠷৽ίʔυΛऔಘ͔ͯ͠ΒαʔϏεΠϯ • ίʔυऔಘ͚͕͔͔ͩ࣌ؒΔ • ૄ݁߹ԽΛਐΊ͖ͯͨͨΊʹൃੜ !45 ݪҼͷͭ
• ΞϓϦσϓϩΠ࣌ʹϕʔεΠϝʔδΛϏϧυ͢Δ • Πϝʔδ͔Βىಈͨ࣌͠ɺৗʹ࠷৽ίʔυͰ্͕ͬͯ͘Δ • ΞϓϦͷσϓϩΠɺαʔόʔͷೖΕସ͑ͷͲͪΒʹӨڹΛ༩͑ͳ ͍✌ !46 γϯϓϧͳղܾํ๏
!47 • ͏·͘γεςϜͷϨΠϠʔΛ͚Δ͜ͱͰɺͦΕͧ Ε͕࠷ͷํ๏ͰมߋΛՃ͑ଓ͚Δ͜ͱ͕Ͱ͖Δ • ͦΕͧΕͷ୲ϝϯόʔ͕ɺޓ͍ʹ࿈ܞ્ͭͭ͠ ͢Δ͜ͱͳ͘։ൃΛਐΊΔ͜ͱ͕Ͱ͖ΔจԽ ϨΠϠΛҙࣝͨ͠σϓϩΠ͔ΒΘ͔Δٕज़ͱจԽ
͋ΕʜΞϓϦͱΠϯϑϥΛ ͏·͚͘Δʜ Ͳ͔͜Ͱฉ͍ͨ͜ͱ͕͋Δ
$BB41BB4͡ΌΜʂ
ϓϥοτϑΥʔϜͷಛੑΛཧղ͠ɺ Γͳ͍෦ඞཁͳΒ࣮͢Δ
!51 • CaaSɿΞϓϦΛίϯςφͰϥοϓɺίϯςφҎԼ ҙࣝෆཁ • PaaSɿΞϓϦέʔγϣϯϥϯλΠϜɺར༻Ϧιʔ εΛҙࣝ͢ΕΑ͍ ૄ݁߹ҙࣝͨ͠Β$BB41BB4ʹࣅ͖ͯͨ
!52 αʔϏεͷ։ൃऀ͕ҙࣝ͢ΔͷͲͩ͜Ζ͏ʁ 7JSUVBM.BDIJOF 3VOUJNF "QQMJDBUJPO $POUBJOFS 7JSUVBM.BDIJOF 3VOUJNF "QQMJDBUJPO *BB4
1BB4 3VOUJNF "QQMJDBUJPO $BB4 1BB4
!53 • CaaSPaaSΛ͑ɺ͜Ε·Ͱ͖ͯͨ͜͠ͱ Βͳͯ͘Α͔ͬͨʁ • IaaS͔ΒCaaS/PaaSʹΓ͑Δͷ͕ਖ਼ղͩͬͨʁ • ٕज़બΛؒҧ͍͑ͯͨͷ͔ʁ ͱ͍͏͜ͱʜ
'ͦΜͳ͜ͱͳ͍
!55 NJOOFϦϦʔε࣌Ͱ͑ͨϓϥοτϑΥʔϜʁ 2006 2009 2013 minne release 2012/01 2015 PaaS
heroku Container docker "84&$Ͱ։࢝ Ұ෦Λ/ZBIҠઃ IaaS AWS Private IaaS Nyah
!56 • ϝϯόʔ͕ΞϓϦέʔγϣϯΤϯδχΞͷΈ • ϋʔυΣΞௐୡΛͨͳ͍ • AWSͷݟΛಘΔ ૉૣ͘࡞Γ࢝ΊΔͨΊͷબʢʙࠒʣ
!57 • CaaS/PaaSʹΓ͑Δ͜ͱબࢶͷ1ͭ • తΛୡ͢ΔͨΊʹࠓͱΕΔ࠷దղԿ͔ʁ • ϓϥοτϑΥʔϜͷಛੑΛཧղ͢Δ • Γͳ͍෦Λ࣮Ͱ͖Δٕज़ ॏཁͳͷඞཁʹԠͯ͡બɾ࣮Ͱ͖Δ͜ͱ
ϓϥοτϑΥʔϜΛબͿͷ ඞཁͳιϑτΣΞΛ࣮͢Δͷ ʮٕज़ʯ
1. αʔϏεͷঢ়ଶʹԠͯ͡ɺదͳٕज़Λબ͢Δ 2. γεςϜͷϨΠϠʔຖͷϥΠϑαΠΫϧΛҙࣝ͢ Δ͜ͱͰ։ൃΛߴԽ 3. ϓϥοτϑΥʔϜͷಛੑΛཧղ͠ɺՃͰඞཁͳ ཁૉ࣮͢Δٕज़ !59 ࠓͨ͜͠ͱ
!60 • IaaS্ͰޮΑ͘σϓϩΠ͢Δٕज़Λຏ͘ • ࠷ળͷબ͕Ͱ͖ΔΑ͏ʹ͢Δ • બࢶΛ૿͢ʢPrivate CaaSɺPrivate PaaSͱ͔ʣ •
બͰ͖Δٕज़ɺࣝΛΊΔ • ٕज़ͷมԽΛָ͠Ή ϖύϘΑΓΑ͍ͯͧ͘͘͠ʂ
ͬͱ͓͠Ζ͘Ͱ͖Δ 0QFO4UBDLɾ $MPVE/BUJWF
We are hiring! Senior Software Engineer Software Engineer (Site Reliability)
Senior Software Engineer (Site Reliability)