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
エンジニア向けSaaSを支えるInfrastructure as Code
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Kazuma Watanabe
July 03, 2016
Programming
5
2.5k
エンジニア向けSaaSを支えるInfrastructure as Code
YAP(achimon)C::Asia Hachioji 2016 Day2
Kazuma Watanabe
July 03, 2016
Tweet
Share
More Decks by Kazuma Watanabe
See All by Kazuma Watanabe
SmartHRにおけるBiTemporal Data Modelの実践のその後 / After the practice of BiTemporal Data Model in SmartHR
wata727
1
3.7k
PHPを検査するPHPを書く / Write PHP inspection by PHP
wata727
1
2.4k
快適なコードレビューを目指して / For a comfortable code review
wata727
1
680
現実世界でのコンテナの運び方
wata727
3
1.2k
Lintの付き合い方とPahoutのご紹介
wata727
0
190
Querlyで始めるコードレビューの自動化
wata727
2
470
コンテナをSpot Fleetで起動するという選択肢
wata727
2
1.1k
SideCIのインフラ構築を自動化した話
wata727
1
2.2k
Other Decks in Programming
See All in Programming
grapheme_strrev関数が採択されました(あと雑感)
youkidearitai
PRO
1
210
Geminiの機能を調べ尽くしてみた
naruyoshimi
0
200
クライアントワークでSREをするということ。あるいは事業会社におけるSREと同じこと・違うこと
nnaka2992
1
310
CopilotKit + AG-UIを学ぶ
nearme_tech
PRO
1
130
NOT A HOTEL - 建築や人と融合し、自由を創り出すソフトウェア
not_a_hokuts
2
570
Unity6.3 AudioUpdate
cova8bitdots
0
110
Claude Code の Skill で複雑な既存仕様をすっきり整理しよう
yuichirokato
1
300
Ruby x Terminal
a_matsuda
7
580
Go 1.26でのsliceのメモリアロケーション最適化 / Go 1.26 リリースパーティ #go126party
mazrean
1
350
SourceGeneratorのマーカー属性問題について
htkym
0
150
ベクトル検索のフィルタを用いた機械学習モデルとの統合 / python-meetup-fukuoka-06-vector-attr
monochromegane
2
320
AI駆動開発の本音 〜Claude Code並列開発で見えたエンジニアの新しい役割〜
hisuzuya
4
480
Featured
See All Featured
AI: The stuff that nobody shows you
jnunemaker
PRO
3
350
The browser strikes back
jonoalderson
0
760
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.3k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4k
The SEO Collaboration Effect
kristinabergwall1
0
380
What does AI have to do with Human Rights?
axbom
PRO
1
2k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
For a Future-Friendly Web
brad_frost
183
10k
Abbi's Birthday
coloredviolet
2
5.1k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.4k
Transcript
ΤϯδχΞ͚SaaSΛࢧ͑Δ Infrastructure as Code YAP(achimon)C::Asia Hachioji 2016 Day2
ࣗݾհ • ᬒҰਅ (@wata727_) • Engineer in Actcat, Inc. ΠϯϑϥدΓαʔόαΠυ
࠷ॳʹ
ཧͱݱ࣮
ImmutableͰ͋Δ͜ͱͷ͠͞ • ࠷ॳImmutable Infrastructureʹ͍ͭͯτʔ Ϋ͢ΔͭΓͩͬͨ • ࣮ݱ͢ΔͨΊʹ՝͕ଟ͗ͨ͢ʢޙड़ʣ
ΤϯδχΞ͚ SaaS
SideCI
SideCI ࣗಈίʔυϨϏϡʔ
GitHub࿈ܞ
https://github.com/integrations/sideci
ࠓͷ͓ • SideCIͷAWSҠߦࣄྫ • Πϯϑϥͷӡ༻ํࣜΛબͨ͠ • ࣮ݱ͢ΔͨΊͷInfrastructure as Code
AWSͷҠߦ
Ҏલͷߏ
ϋΠϒϦοτΫϥυߏ • AWS + GCP • VPNͰଓͯ͠ωοτϫʔΫΛߏங • ҰํͷϕϯμʔͷোͰαʔϏε͕མͪΔ͜ ͱ͕͋ͬͯɺҰຊԽ͍ͨ͠ͱ͍͏͕͋ͬͨ
Ҡߦͷ՝
ߏཧ͞Ε͍ͯͳ͍ • Ҿ͖ܧ͕Εͨखॱॻ.mdͷΈ • νʔϜ͕εέʔϧ͢ΔͱଐਓԽͷΛট͖ ͦ͏ͱ͍͏ผͷ… • ԿΒ͔ͷࣗಈԽ͕ඞཁ
ߏཧ͞Ε͍ͯͳ͍ • Ҿ͖ܧ͕Εͨखॱॻ.mdͷΈ • νʔϜ͕εέʔϧ͢ΔͱଐਓԽͷΛট͖ ͦ͏ͱ͍͏ผͷ… • ԿΒ͔ͷࣗಈԽ͕ඞཁ Infrastructure as
Code ΛΔͧʂʂ
Πϯϑϥͷ ӡ༻ํࣜͷબ
Ͳ͏ͬͯίʔυԽ͢Δ͔ • ·ͣΠϯϑϥɺσϓϩΠͷཧɺӡ༻ΛͲ ͏͢Δ͖͔ߟ͔͑ͯΒɺπʔϧΛબ͢Δ • PushܕɺPullܕɺImmutable…
Pushܕ
Pushܕͷӡ༻ɺσϓϩΠ • ΫϥΠΞϯτ͔Β֤αʔόʹϛυϧΣΞม ߋΞϓϦέʔγϣϯͷσϓϩΠΛSSHܦ༝ ͳͲͰߦ͏ • Ansible, Itamae, CapistranoͳͲ
Pushܕͷӡ༻ɺσϓϩΠ
Pushܕͷӡ༻ɺσϓϩΠ
ϝϦοτͱσϝϦοτ • ΫϥΠΞϯτͷΈͰಈ࡞͢ΔͷͰαʔόଆʹ ઃఆ͕ෆཁͰཧָ͕ • αʔόͷ͕ଟ͔ͬͨΓɺΦʔτεέʔϦ ϯάͰ૿ݮ͢Δͱద༻͕͘͠ͳΔ
Pullܕ
Pullܕͷӡ༻ɺσϓϩΠ • ֤αʔό͕ࣗͰඞཁͳϛυϧΣΞɺΞϓ ϦέʔγϣϯͷมߋΛࣗࣗʹద༻͢Δ • Chef, AWS CodeDeploy, StretcherͳͲ
Pullܕͷӡ༻ɺσϓϩΠ
Pullܕͷӡ༻ɺσϓϩΠ
Pullܕͷӡ༻ɺσϓϩΠ
ϝϦοτͱσϝϦοτ • ֤αʔό͕Λ࣋ͭͷͰεέʔϧ͢ΔɺΦʔ τεέʔϦϯάͰવͳ͠ • ֤αʔόʹର͢ΔݩͱͳΔαʔό͕SPOF ʹͳΓ͕ͪͳͷͰɺԽͳͲߟ͑Δͱϝϯ ςφϯείετ͕ߴ͍
Immutable
Immutableͳӡ༻ɺσϓϩΠ • ֤αʔό࠷ॳ͔ΒมߋࡁΈͰɺมߋΛཁ͢ Δ߹ʹαʔό͝ͱഁغ͢Δ • ؔ࿈πʔϧPacker, DockerͳͲ
Immutableͳӡ༻ɺσϓϩΠ
Immutableͳӡ༻ɺσϓϩΠ
ϝϦοτͱσϝϦοτ • ֤αʔόશʹෳՄೳͰɺϩʔϧόοΫ ͕༰қʢBlue-Green Deployʣ • ΰʔϧσϯΠϝʔδͷੜίετ͕ߴ͍
Immutableͳ ํࣜͷ࠾༻
ΰʔϧσϯΠϝʔδͷϏϧυ • αʔϏεΠϯՄೳͳϚγϯΠϝʔδΛ PackerͰϏϧυ͢Δ • αʔϏεΠϯՄೳͰ͋Δ͜ͱPackerͷϏϧ υͷ࠷ޙʹServerspecΛ࣮ߦͯ͠୲อ͢Δ
ImmutableͳσϓϩΠ • ৽͍͠ϚγϯΠϝʔδ͝ͱʹαʔόΛBlue- GreenతʹೖΕସ͑Δ • TerraformʹΑΔαʔό࠶ஔͷࣗಈԽ • طଘͷϦιʔεTerraformingͰநग़
αʔόߏஙϑϩʔ QBDLFSCVJMETFSWFSKTPO
QBDLFSCVJMETFSWFS KTPO Server ݩʹͳΔ αʔόͷىಈ αʔόߏஙϑϩʔ
αʔόߏஙϑϩʔ QBDLFSCVJMETFSWFS KTPO Server αʔόΛߏங QSPWJTJPOFST< \ UZQFTIFMM FYFDVUF@DPNNBOE\\7BST^^TVEP&CBTIF
\\1BUI^^\\VTFSAFOWJSPONFOUA^^ TDSJQUT< TDSJQUTSPPU@VQHSBEFTI TDSJQUTSPPU@JOTUBMMTI > ^ ʜ
αʔόߏஙϑϩʔ QBDLFSCVJMETFSWFS KTPO Server 4FSWFSTQFDͰ ಈ࡞ςετ
αʔόߏஙϑϩʔ QBDLFSCVJMETFSWFS KTPO Server Machine Image αʔό͔ΒϚγϯ ΠϝʔδΛநग़
αʔόߏஙϑϩʔ QBDLFSCVJMETFSWFS KTPO Machine Image αʔόΛআ
αʔόߏஙϑϩʔ UFSSBGPSNBQQMZ Machine Image
αʔόߏஙϑϩʔ UFSSBGPSNBQQMZ Machine Image ݩʹͳΔϚγϯ ΠϝʔδΛࢦఆ
αʔόߏஙϑϩʔ UFSSBGPSNBQQMZ Machine Image Security Group ༻͢ΔηΩϡϦςΟ άϧʔϓΛࢦఆ
αʔόߏஙϑϩʔ UFSSBGPSNBQQMZ Machine Image Security Group Server ͦΕͧΕͷઃఆ͔Β αʔόΛىಈ
ൃੜ
ΠϝʔδͷϏϧυ͕͗͢Δ • 30͘Β͍͔͔Δ • σϓϩΠͷ͕2ˠ30ʙͱ͔ʹͳΔ • ϦϦʔεʹର͢Δ߅ײͷ૿େ
σϓϩΠ͚ͩPushܕʹ • σϓϩΠैདྷ௨ΓCapistrano • ϛυϧΣΞมߋ࣌ͷΈϚγϯΠϝʔδΛߋ ৽͢ΔΑ͏ʹมߋ
Ҡߦ࡞ۀͷ࣮ࢪ
ҠߦͷྲྀΕ • ฒྻͰࣄલʹϓϩμΫγϣϯڥΛՔಇͤ͞ ͓ͯ͘ʢNOT εςʔδϯάʣ • ՄೳͳݶΓɺELBͱRoute53ͷΓସ͚͑ͩͰ τϥϑΟοΫͷྲྀΕΛมߋ͢ΔΑ͏ʹ͢Δ
Ҡߦલ
Ҡߦޙ
ແࣄྃ
Infrastructure as CodeΛಋೖ͢Δ ͱ͍͏͜ͱ
ָͳӡ༻Λߟ͑Δ • ྫ͑ɺΠϝʔδͷϏϧυʹ͕͔͔࣌ؒΓ͢ ͗ͨΓɺϏϧυͷͨΊʹෳࡶͳڥΛߏங͢ Δඞཁ͕͋Δͱɺͳ͔ͳ͔ਁಁ͠ͳ͍ • ·ͩ·ͩվળͷ༨͋Γ…
نʹ͋ͬͨํ๏ΛબͿ • AutoScalingΛඞཁͱ͠ͳ͍গͷαʔόͳΒ PushܕͰेͳ͜ͱ͋Δ • ͦΕͧΕʹదͨ͠πʔϧ͕͋ΔͷͰɺྲྀߦΓ ഇΓʹΘ͞Εͳ͍
Thank you!