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
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Kazuma Watanabe
June 29, 2016
Programming
2.2k
1
Share
SideCIのインフラ構築を自動化した話
エンジニア向けサービスを支える技術
Kazuma Watanabe
June 29, 2016
More Decks by Kazuma Watanabe
See All by Kazuma Watanabe
Terraform言語の静的解析 / static analysis of Terraform language
wata727
1
160
SmartHRにおけるBiTemporal Data Modelの実践のその後 / After the practice of BiTemporal Data Model in SmartHR
wata727
1
3.8k
PHPを検査するPHPを書く / Write PHP inspection by PHP
wata727
1
2.4k
快適なコードレビューを目指して / For a comfortable code review
wata727
1
700
現実世界でのコンテナの運び方
wata727
3
1.2k
Lintの付き合い方とPahoutのご紹介
wata727
0
210
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
Spec-Driven Development with AI-Agents: From High-Level Requirements to Working Software
antonarhipov
2
440
TSKaigi Night Talks 2026_TypeScriptでサプライチェーンの整合性を型に閉じ込める
geekplus_tech
0
220
JJUG CCC 2026 Spring: JSpecify で実現する Kotlin フレンドリーな Java API 設計
ternbusty
1
130
次世代リンターで探る、tsgo 時代における型認識カスタムルールの現実解
ytakahashii
3
1.4k
CLIであることを活かしたGitHub Copilot CLI活用術 / GitHub Copilot CLI Pro Tips & Tricks
nao_mk2
1
1.2k
inferと仲良くなる10分間
ryokatsuse
1
360
関係性から理解する"同一性"の型用語たち
pvcresin
2
630
Migrations : C'est une question d'hygiène !
vinceamstoutz
0
3.2k
権限チェックの一貫性を型で守る TypeScript による多層防御
mnch
4
1.1k
決定論的オーケストレーションの設計と実装 / Design and Implementation of Deterministic Orchestration
nrslib
3
900
Inside Stream API
skrb
1
620
運用エージェントは "作る" から "育てる" へ - 記憶と自己進化の3層設計パターン / self-evolving-agents-three-layer-agent-design
gawa
12
3.4k
Featured
See All Featured
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.5k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.5k
A Soul's Torment
seathinner
6
2.9k
Building the Perfect Custom Keyboard
takai
2
780
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
840
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
370
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.2k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.9k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
150
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
570
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
430
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… • มߋ͍ͨ͜͠ͱ͚ͩʹྗͰ͖Δ
͝ਗ਼ௌ ͋Γ͕ͱ͏͍͟͝·ͨ͠