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
SideCIのインフラ構築を自動化した話
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Kazuma Watanabe
June 29, 2016
Programming
2.2k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
SideCIのインフラ構築を自動化した話
エンジニア向けサービスを支える技術
Kazuma Watanabe
June 29, 2016
More Decks by Kazuma Watanabe
See All by Kazuma Watanabe
Terraform言語の静的解析 / static analysis of Terraform language
wata727
1
190
SmartHRにおけるBiTemporal Data Modelの実践のその後 / After the practice of BiTemporal Data Model in SmartHR
wata727
1
3.9k
PHPを検査するPHPを書く / Write PHP inspection by PHP
wata727
1
2.4k
快適なコードレビューを目指して / For a comfortable code review
wata727
1
710
現実世界でのコンテナの運び方
wata727
3
1.2k
Lintの付き合い方とPahoutのご紹介
wata727
0
220
Querlyで始めるコードレビューの自動化
wata727
2
480
コンテナをSpot Fleetで起動するという選択肢
wata727
2
1.1k
エンジニア向けSaaSを支えるInfrastructure as Code
wata727
5
2.5k
Other Decks in Programming
See All in Programming
使用 Meilisearch 建立新聞搜尋工具
johnroyer
0
180
Go言語とトイモデルで学ぶTransformerの気持ち / fukuokago23-transformer
monochromegane
0
150
PHP初心者セッション2026 〜生成AIでは見えない裏側を知る:今だからLAMPを通して仕組みを学ぶ〜
kashioka
0
720
壊れたパーサから始める関数型設計と構成的なパーサ #fp_matsuri
raiga0310
2
410
FDEが実現するAI駆動経営の現在地
gonta
2
230
霧の中の代数的エフェクト
funnyycat
1
440
吝嗇家のためのAI活用 / AI development for miser - ChatGPT + Issue Driven Development
tooppoo
0
200
komatsuna「分散システムにおけるバグ分析手法」
komatsunaqa
0
110
ITヒヤリハットを整理してみた ~ライフサイクルと原因から考える再発防止策~
koukimiura
1
120
jsmini JavaScript Engine を作ってみた話
yosuke_furukawa
PRO
0
250
ここ半年くらいでAIに作らせたR用ツール
eitsupi
0
330
torikago - Ruby::Boxで照らすモジュラモノリスの実行境界
se4weed
1
170
Featured
See All Featured
Ethics towards AI in product and experience design
skipperchong
2
330
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.3k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
190
エンジニアに許された特別な時間の終わり
watany
108
250k
The Curse of the Amulet
leimatthew05
2
13k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.3k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
520
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
420
Become a Pro
speakerdeck
PRO
31
6k
Transcript
SideCIͷΠϯϑϥ ߏஙΛࣗಈԽͨ͠ ΤϯδχΞ͚αʔϏεΛࢧ͑Δٕज़
ࣗݾհ • ᬒҰਅ (@wata727_) Engineer in Actcat, Inc. ओʹΠϯϑϥ৮ͬͯ·͢
SideCI (https://sideci.com)
SideCIͱ • ίʔυϨϏϡʔΛࢧԉ͢ΔαʔϏε • Ruby, PHP, PythonͳͲͷݴޠΛαϙʔτ • ։ൃϑϩʔͷதʹ͙͢ʹΈࠐΊΔʂ ίʔσΟϯά
ίʔυϨϏϡʔ ࣗಈςετ ϦϦʔε
ࣗಈίʔυϨϏϡʔ
ղੳڥΛࢧ͑Δٕज़
ղੳڥͷίϯςφԽ • πʔϧɺιʔείʔυ͝ͱʹ͍ࣺͯՄೳͳ ίϯςφΛDockerͰఏڙ EPDLFS Ubuntu Host
ղੳαʔόͷϓϥΠϕʔτԽ • ղੳαʔόΛดͨ͡ωοτϫʔΫʹஔ͘ • NATήʔτΣΠܦ༝ͰͷΈ௨৴͕Մೳ • αʔόؒͷ௨৴ͯ͢ϓϥΠϕʔτ
SideCIͷΠϯϑϥཧ
ࠓ·Ͱͷ
खಈӡ༻ͷݶք • νʔϜͷਓ͕૿͑Δʹैͬͯʮ͋Εʙ͞ Μ͕ͬͯΔʯ͕૿͑ͨ • ଞͷਓ͕มߋͨ͠ҙਤ͕هʹΒͣɺΘ͔ Βͳ͘ͳΔ
खಈӡ༻ਏ͍ • ୭͕ԿΛม͑ͨͷ͔ɺԿͷͨΊʹม͑ͨͷ͔ ه͕Γʹ͍͘ • ࠷ॳʹڥΛ࡞ͬͨਓ͔͠ಉ͡ڥΛ ෳͰ͖ͳ͘ͳΔ ଐਓԽͷ༧ײ
ࣗಈԽͷͨΊͷπʔϧબ
Packer
Packerͱ • αʔόͷݩʹͳΔϚγϯΠϝʔδΛࣗಈͰ࡞ Δ͜ͱʹಛԽͨ͠πʔϧ • ઃఆϑΝΠϧΛݩʹίϚϯυҰൃͰߏங • AWS, GCP, VirtualBox,
DockerͳͲෳͷϓ ϥοτϑΥʔϜʹରԠ
࠾༻ཧ༝ • ϚελʹͳΔϚγϯΠϝʔδΛ࡞ͬͯɺͦΕ ΛݩʹαʔόΛ૿͢ํͰਐΊΔͨΊ • ͞·͟·ͳछྨͷProvisionerΛαϙʔτͯ͠ ͓ΓɺॊೈʹߏஙͰ͖ΔʢBash, Chef, Ansible, etc…ʣ
࠾༻͠ͳ͔ͬͨखஈ • Docker in Docker • DockerϗετͷதͰDockerίϯτϩʔϧ ͢Δͷେม… • ίϯςφԽ͢Εىಈ͕ૣ͘ͳΔͷͰॊೈ
ͳมߋೖΕସ͑ʹڧ͘ͳΔ͔
Terraform
Terraformͱ • AWSͳͲͷαʔϏε ʢEC2ͳͲʣΛίʔυԽ ͯ͠࡞ɺมߋ͢Δπʔϧ • ઃఆϑΝΠϧΛݩʹίϚϯυҰൃͰߏங • ࣮ࡍͷར༻ঢ়گͱઃఆϑΝΠϧͷࠩΛݟͯɺ ඞཁͳมߋ͚ͩΛߦͬͯ͘ΕΔ
࠾༻ཧ༝ • dry-runͰมߋ༰ͷ֬ೝ͕ࣄલʹͰ͖Δ • ҙਤͤ͵มߋ͕ൃੜ͢Δલʹ͛Δ • ઃఆϑΝΠϧ͕ॻ͖͘͢ಡΈ͍͢ • ίϝϯτɺมɺΈࠐΈ͕ؔ͑Δ •
JSONͩͱωετ͢Δͱ͙͢ಡΈʹ͘͘ͳΔ
࠾༻͠ͳ͔ͬͨखஈ • CloudFormation • ϩʔϧόοΫັྗత͚ͩͲdry-run͕Ͱ ͖ͳ͔ͬͨͷக໋త • ઃఆϑΝΠϧʹίϝϯτͰ͖ͳ͔ͬͨΓɺ ෳࡶԽ͢ΔͱಡΈʹ͘͘ͳͬͨΓ…
αʔόߏஙϑϩʔ
ϚγϯΠϝʔδͷϏϧυ 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 ͦΕͧΕͷઃఆ͔Β αʔόΛىಈ
ӡ༻ͯ͠Έͯײͨ͜͡ͱ
࣮ࡍͷڥͱtfstateͷෆҰக • tfstateϑΝΠϧΛखಈͰղܾ͢Δͷ͕͍͠
tfstateͭΒ͍
खಈӡ༻ਏ͍ • ୭͕ԿΛม͑ͨͷ͔ɺԿͷͨΊʹม͑ͨͷ͔ ه͕Γʹ͍͘ • ࠷ॳʹڥΛ࡞ͬͨਓ͔͠ಉ͡ڥΛ ෳͰ͖ͳ͘ͳΔ ྑ͔ͬͨ͜ͱ
θϩ͔Β࡞ΕΔ҆৺ײ • Ծʹࠓͷڥ͕ͯ͢ແ͘ͳͬͯɺθϩ͔ ΒαʔϏεΠϯͰ͖Δαʔό͕ࣗಈͰ࡞ΕΔ • ίʔυͱͯࣾ͠ʹެ։͞ΕΔͷͰ୭Ͱத ͕ݟΕΔɺ࣮ߦͰ͖Δ
αʔόʔަ͕εϜʔζʹ • ϚγϯΠϝʔδͷID໊ม͑Δ͚ͩͰɺ͍͍ײ ͡ʹద༻ͯ͘͠ΕΔ • EIPͷ͚ସ͑ɺELBͷׂΓͯɺηΩϡ ϦςΟάϧʔϓͷަɺetc… • มߋ͍ͨ͜͠ͱ͚ͩʹྗͰ͖Δ
͝ਗ਼ௌ ͋Γ͕ͱ͏͍͟͝·ͨ͠