Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
DevOpsの今とこれから #init_devops
Search
Naoya Ito
July 19, 2013
Technology
18k
68
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
DevOpsの今とこれから #init_devops
Naoya Ito
July 19, 2013
More Decks by Naoya Ito
See All by Naoya Ito
アルゴリズムは何を圧縮しているのか ─ Haskell から育った「圧縮代数」というメンタルモデル
naoya
16
4.4k
Haskell を武器にして挑む競技プログラミング ─ 操作的思考から意味モデル思考へ
naoya
13
4.7k
Haskell でアルゴリズムを抽象化する / 関数型言語で競技プログラミング
naoya
21
8k
Functional TypeScript
naoya
19
6.9k
TypeScript 関数型スタイルでバックエンド開発のリアル
naoya
77
38k
シェルの履歴とイクンリメンタル検索を使う
naoya
16
6.9k
20230227-engineer-type-talk.pdf
naoya
91
87k
関数型プログラミングと型システムのメンタルモデル
naoya
64
110k
TypeScript による GraphQL バックエンド開発
naoya
29
38k
Other Decks in Technology
See All in Technology
[2026-09-30]ロックンロールは鳴り止まないっ - 信頼性かまってちゃん - 「データ駆動を投げ捨ててまで。」追いかける信頼性改善に向けた取り組みの話
tosite
0
190
検証フェーズはAIの回答を判断するための学習機会
toru_kubota
2
450
Google Cloud Next Tokyo 26登壇時のスクリプト
recruitengineers
PRO
0
140
「とりあえず動く」の先へ。 AI時代のチーム開発と内部設計/2026-slsdays
slsops
0
120
組み立てて楽しむ AWS Blocks 入門
kmiya84377
0
170
AIは爆速なのに、私が詰まっていた話 ― 音声入力と鳴くマスコットでボトルネックを削る
yama3133
0
480
いちAWSエンジニアのAI活用を振り返る #devio2026 / devio osaka 2026 kawahara
masahirokawahara
2
330
IoTデバイスを繋げるプロトコルMatterをAndroidで使用する方法
harutiro
0
100
HolmesGPTで始めるSREエージェント入門!プラットフォームの障害調査はAIにお任せ 〜
leveragestech
PRO
0
140
カンファレンスに参加した後の浮遊感とセルフケア
pauli
0
300
DAMOS - The Smart Cruise Control for RAM
ennael
PRO
1
110
20260930_Gemma4_Hands-on
tsho
0
210
Featured
See All Featured
KATA
mclloyd
PRO
35
16k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
380
Writing Fast Ruby
sferik
630
63k
What's in a price? How to price your products and services
michaelherold
247
13k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.2k
Prompt Engineering for Job Search
mfonobong
0
470
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
780
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.7k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
390
A designer walks into a library…
pauljervisheath
211
25k
Transcript
%FW0QTͷࠓͱ͜Ε͔Β /BPZB*UPJOBPZB!HNBJMDPN
l0CBNBGPS"NFSJDBz
None
0CBNBਞӦͷγεςϜ • Ҏ্ͷlϞμϯͳzΞϓϦέʔγϣϯ – KFLZMM MFTT HJUIVC QZUIPOSVCZ K2VFSZ NPEFSOJ[S
NVTUBDIF DPEFLJU 1VQQFU – "84ઍΠϯελϯε 4 – ϞόΠϧϑΝʔετɺϨεϙϯγϒσβΠϯ
0CBNBਞӦͱ%FW0QT • l1VMM3FRVFTUzϕʔε։ൃ – (JUIVC • %FW0QT – l*OGSBTUSBDUVSFBT$PEFz
%FW0QT
%FW0QTͷॳग़ • +"MMTQBX1)BNNPOE 'MJDLS 7FMPDJUZ
ͳͥ%FWͱ0QT͕ڠྗग़དྷ͍ͯͳ͔͔ͬͨ • ଐਓੑ͕ൃੜͤ͞Δಛݖ – ࠷ऴ֬ೝऀŋŋŋϨϏϡʔͰϦϦʔεΛࢭΊΔಛݖ – σϓϩΠ୲ŋŋŋσϓϩΠ࡞ۀͰϦϦʔεΛࢭΊΔಛݖ – Πϯϑϥ୲ŋŋŋෛՙࢼݧͰϦϦʔεΛࢭΊΔಛݖ •
։ൃΛअຐ͢Δଟ͘ʮಛݖʯ – ˓˓͞ΜͷνΣοΫ͕௨Βͳ͔ͬͨɺ୲ऀ͕͍ͳ͔ͬͨɺม ߋͰ͖Δਓ͕͍ͳ͔ͬͨŋŋŋ – ͯ͢ͷಛݖࣗͣͱഊ͢Δ • ୲ͷʮؾʯɺରਓؔͷঢ়ଶʹۀͷਐΊқ͕͞ґଘ
ଐਓੑͷഉআ • ଐਓੑ͕अຐͳΒࣗಈԽͪ͠Ό͍͍͑͡Όͳ͍ (ࠓ͓ʹ͜ ͜ͷ)
%FW0QTͷࢦ͢ͱ͜Ζ • ʮϏδωεʹ͓͍ͯࢼߦࡨޡΛଟ܁Γฦ͍ͨ͠ʯ – ʹසൟʹϦϦʔε͍ͨ͠ – සൟͳϦϦʔεͷ͛ʹͳΔͷΛഉআ͍ͨ͠ – ଐਓੑͷഉআˠࣗಈԽ –
ܧଓతͳϦϦʔεŋŋŋ$POUJOVT%FMJWFSZ ͜ͷͨΊʹDevͱOps͕ ಉ͡ํΛ͖·͠ΐ ͏ = DevOps
ΞδϟΠϧ։ൃͱܧଓతσϦόϦʔ http://www.ryuzee.com/contents/blog/4241
ܧଓతσϦόϦʔͱ *OGSBTUSVDUVSFBT$PEF
$%ͱࣗಈԽ • ܧଓత˓˓ – 㱺։ൃɾӡ༻ϓϩηεͷՄೳͳݶΓͷࣗಈԽ – ʮσϓϩΠʯͷۤ௧ΛऔΓআ͘ • ΠϯϑϥετϥΫνϟΛࣗಈԽ –
*BB4ŋŋŋϋʔυΣΞΛԾԽ͢Δ͜ͱͰzιϑτΣΞ෦ zʹ
l*OGSBTUSVDUVSFBT$PEFz • ϓϩάϥϚϒϧͳΠϯϑϥ – 7BHSBOU 1VQQFU $IFG – "NB[PO$MPVE'PSNBUJPO "840QTXPSLT
ԾԽͨ͠ͳΒίʔυͰࣗಈԽ
7BHSBOU $ vagrant init $ vagrant up -‐-‐provider=aws
7BHSBOU
$IFG ʮΫϥυͰΠϯϑϥ͕ιϑτΣΞʹͳͬͨͳΒɺϓϩϏδϣχϯάίʔ υͰॻ͚͍͍͡Όͳ͍ʯ
$IFGʹΑΔΦʔτϝʔγϣϯ
$IFGJTOPUPOMZࣗಈԽπʔϧ • $IFGγεςϜΛʮ͋Δ͖ঢ়ଶʯʹऩଋͤ͞Δϑ ϨʔϜϫʔΫ – αʔόʔߏஙΛࣗಈԽ͢Δతͷঢ়ଶʹ͢Δ • ˢ͜Ε͔Γʹண͕ͪ͠ – த్ͳঢ়ଶͷαʔόʔΛ͋Δ͖ঢ়ଶʹ͢Δ
– աڈͷ".*εφοϓγϣοτ͔Β࡞ͬͨΠϯελϯεΛɺࠓݱ ࡏͷঢ়ଶʹ͍͔ͭͤΔ – োରԠͰҰ࣌తʹઃఆΛม֤͑ͨछঢ়ଶΛͱʹ͢ – ڞ༗͍ͯ͠Δݸਓ։ൃ༻7.ʹɺଞͷ։ൃऀ͕มߋͨ͠ঢ়ଶΛద ༻͢Δ
$IFGͷϫʔΫϑϩʔ • ʮϨγϐʯΛ3VCZͰॻ͘ • LOJGFTPMPͳͲͰ࣮ߦ – SZTODͰϨγϐΛసૹ – DIFGTPMP͕ͦͷϨγϐΛ࣮ߦ –
αʔόʔߏ͕ఆٛͨ͠ঢ়ଶʹऩଋ • HJUDPNNJU
$IFG (JUIVC ʮϓϩϏδϣχϯάΛίʔυͰॻ͍ͨͳΒόʔδϣϯཧͯ͠4PDJBM$PEJOH ͢Ε͍͍͡Όͳ͍ʯ
ʮΠϯϑϥΛόʔδϣϯཧʯ
TFSWFSTQFD ʮίʔυͰॻ͍ͨΜͩͬͨΒςετॻ͚͍͍͡Όͳ͍ʯ
7BHSBOU $IFG TFSWFSTQFDͰ5%%
Πϯϑϥͷ$* via http://mizzy.org/blog/2013/03/27/1/ 6LJHVNP TFSWFSTQFD 1VQQFUʹΑΔܧଓతΠϯςάϨʔγϣϯ ʮςετॻ͍ͨΜͩͬͨΒܧଓతΠϯςάϨʔγϣϯ͢Ε͍͍͡Όͳ͍ʯ
Πϯϑϥ1VMM3FRVFTUͰߏ
%FW0QTͷ͍· • ʮΠϯϑϥ4PDJBM$PEJOHʯ – *OGSBTUSVDUVSFBT$PEF – (JUIVC – 5%%ͱܧଓతΠϯςάϨʔγϣϯ Πϯϑϥͷߏங1VMM3FRVFTUͰɺ4PDJBM$PEJOHͰɻ
ʮ֤ݸਓͷखॱॻʯͱ͍͏҉͔Β ʮڞ༗͞Εͨιʔείʔυʯͱ͍͏ܗࣜ
͜Ε͔Βͷ%FW0QT
ϓϩϏδϣχϯά'8ͷݱࡏ • $IFG͕σϑΝΫτʹͳΓͭͭ͋Δ – GBDFCPPL "84ͦͷଞͰͷར༻࣮ – 1VQQFUݦࡏ • Ұํɺ$IFGʹ༷ʑͳ
όου ϊϋ – ϨγϐͷґଘؔɺLOJGF ɺػೳཁΔཁΒͳ͍ɺ֦ுํ๏ – :FU"OPUIFSͳ࣮͕͍͍͋ͬͯ㱺"OTJCMFFUD
"OTJCMF
γϯϓϧ -‐ hosts: webserver user: vagrant
sudo: yes tasks: -‐ name: install apache action: yum pkg=httpd state=installed -‐ name: install php action: yum pkg=php state=installed $ ansible-‐playbook webapp.yml TPVSDFIUUQBQBUIFJBJOGPCMPHBCPVUBOTJCMF ͪΖΜႈ
"OTJCMF • γϯϓϧ – σΟϨΫτϦߏͱ͔ͳ͍ – υΩϡϝϯτগͳ͍ • ݴޠඇґଘ –
Ϟδϡʔϧඪ४ೖग़ྗ +40/ • DIFGTPMP LOJGFTPMPͬΆ͍࣮ߦΞʔΩςΫνϟΛ แ – ͭύϥϨϧ࣮ߦ • $IBUOPUJpDBUJPOͷϞδϡʔϧแ
"OTJCMF%FTJHO1SJODJQMFT TPVSDFIUUQTHJUIVCDPNBOTJCMFBOTJCMF
l::::::::::::::::::|_!::lヽ::::::::: ハ::::::::::::::::::::::::::::::::i、::! ノ !:::::::::::::::::l-‐ェ!;ト ヽ:::::l ´!:::::::::::::::::::::::::::::l ` ヽ 幺ク 亡 月 | ┼‐ .|]
|] l:::::::::::::::::「(;;;)ヽ、__、::レ'´l:::::::::/l、:::::::::::::l / 小巴 三l三. ヽ_ノ / こ o o !:::::::::/l:::l__,,,rタ"゙、;!)、__!::::/ノ 〉、::::::::l \ l::::/ lヽ! _ _ l;/´ ! >、::l / Che◦に絶望した!! ノノlヽ、_! r――‐┐ /_ノ:::| / l::::::>、 レ,二二ェ! /i:::::::::::l  ̄ ̄|_ /ヽ、 /\ /\ / l:::/ /::ヽ、 `ー-―-' ,ィ'::::!\:::::l (ヽ、//\/ \/ \/ \/ レ' ム-''´lヽ、 _,,./! ゙ヾ!__ヽ! ヽ´ヽ、ヽ !  ̄ レ;'´ | (,ゝ、 \ ヽ l、 /| _,,.-/´ ;; .,,,-! ヽ、 ヽ、 | | ! l / 斤'"〇 /´ ,;;:''" _,l_ ヽ ヽ/ l | l /; l、」_,,/ '' ゙;;/ ヽ、 〉 `ヽ l/ /!,r''´!/ / ';,/"゙''':;,,,,;;'' \ / ,! / l ,;; |l /`'';, ,, / ,;;''"゙'' l / !?
5SBWJT$*ศརͰ͢ΑͶ
%FW0QTΣΞͷࠓޙ • ݱࡏͷ%FW0QTΣΞ – 7BHSBOUͰ$IFGͰTFSWFSTQFDͰ+FOLJOTͰŋŋŋ – چདྷͷಓ۩ΛࣗಈԽͯ͠Έ߹Θ͍͍ͤͯͬͯ͡Δײ͡ – Πϯϑϥ͕ࣗޮԽ͚ͨͩ͠Ͱɺ্Ͱಈ͘ΞϓϦʹ৽͍͠ՃՁఏڙ Ͱ͖͍ͯͳ͍
• ࣗಈԽ͢Δ͚͕ͩ%FW0QTͷΰʔϧͰͳ͍ • ͜Ε͔Βͷ%FW0QTΣΞ – )FSPLV5SBWJT$*ͷΑ͏ʹʹύοέʔδ͞ΕͨΞϓϦέʔγϣϯΛ QVTI͢Δͱউखʹ˓˓ͯ͘͠ΕΔ – ্Ͱಈ͘ΞϓϦʹ৽͍͠ՃՁΛఏڙ͢Δ – ൺᄻࠓ͕*BB4ͱ͢Δͱɺ1BB4Έ͍ͨͳ
%PDLFS
%PDLFS • 5IF-JOVYDPOUBJOFSFOHJOF – -9$ "6'4 – ΑΓϓϩάϥϚϒϧͳԾڥΤϯδϯ • 7.Λҙͷঢ়ଶͰ͔ͭॠ࣌ʹɺϓϩάϥϚϒϧʹ
࡞Γग़͢͜ͱ͕Ͱ͖Δ – ҙͷঢ়ଶʮ04$FOU04Ͱɺ3VCZɺ$IFGɺ3BJMT͕ೖͬͯ ΔʯFUD – ॠ࣌7.ͷىಈ࣌ؒ͑͞ͳ͍ – ϓϩάϥϚϒϧίʔυ͔Β
EPDLFSSVO # Dockerfile ʹඞཁࣄ߲ॻ͍ͯŋŋŋ $ docker build –t naoya/chef_and_rails
$ docker run –d naoya/chef_and_rails # ΑΓϓϩάϥϚϒϧʹ require 'docker' docker = Docker::API.new(base_url:'http://...:4243') containers = docker.containers result = containers.create(nil, 'naoya/chef_and_rails') containers.start(result['Id'])
%PDLFSͳΒŋŋŋ • ͻͳܗ͔Βॠ࣌ʹ7.Λ࡞ΕΔɺͱ͍͏͜ͱŋŋŋ – 1BB4Έ͍ͨͳ͕؆୯ʹͭ͘ΕΔʂ – ࣮ࡍ࡞ͬͨਓ㱺%PLLV – 5SBWJT$*ͷΑ͏ͳͷ࡞ΕΔͷͰ
%PDLFSతͳͷͷະདྷ • %PDLFSతͳͷ͕ΧδϡΞϧʹ͑ΔΑ͏ʹͳΔͱŋŋŋ – ྫܧଓతσϓϩΠͷߴԽ • ΞϓϦέʔγϣϯ#VOEMFతʹ·ͱΊͯ • (JUQVTI͢Δͱ7.͕ίϐʔ͞ΕͯσϓϩΠ։࢝ •
ΞϓϦέʔγϣϯ͕σϓϩΠ͞ΕͨΒεϞʔΫςετΛ࣮ߦ • ςετ͕௨ͬͨΒຊ൪ڥσϓϩΠ
ͦΕ4USJEFS$%ͰͰ͖ΔΑ
#SJMMJBOU$POUJOVT%FQMPZNFOU github ʹ push ͕͖ͨ ͷͰ... σϓϩΠͯ͠ ςετ௨ͬͨ ͠ Herokuʹ
deploy ͢Δͥ!
ࠓޙͷ%FW0QTŋŋŋͨͿΜ • ΠϯϑϥετϥΫνϟΑΓʮαʔϏεʯతੑ֨Λ૿͍ͯ͘͠ – %FWͷՃՁ্Λٻ͍ͯ͘͠ͱࣗવͱͦ͏ͳΔɺͣ – ΑΓ1BB4తΤοηϯε͕ڧ͘ͳΔ%FWΤϯδχΞHJUQVTI͢Δ͚ͩ • αʔϏεؒͰͷΞϓϦέʔγϣϯͷަ͕༰қʹ
– 8FCΞϓϦࣗવͱͦͷΠϯϑϥαʔϏεΛड͚ΔͨΊͷߏʹ·ͱΊΒΕΔ • ύοέʔδϯάɺ#VOEMF • ີ݁߹͍ͯͨ͠ΞϓϦέʔγϣϯͱΠϯϑϥૄͰϙʔλϒϧͳͷʹ – ྫ4USJEFS$%తͳͷͰςετͰ͖ͯɺ)FSPLVͰಈ͔͢ɺΈ͍ͨͳܗ • ςετɺ֎෦ґଘίʔυͷCVOEMFɺΞϓϦέʔγϣϯίʔυͰҰͭͷύοέʔδ – ݁Ռ4USJEFS$%5SBWJT$*ͷΑ͏ͳɺΞϓϦέʔγϣϯ͚4BB4ͰͷΞϓϦέʔγϣ ϯަ͕༰қʹͳ͍ͬͯ͘ – ΞϓϦέʔγϣϯ͕·ΔͰϏϧυύΠϓϥΠϯͷΑ͏ʹ֤छ4BB4Λ௨ͬͯ࠷ऴతʹαʔϏ εڥʹσϓϩΠ͞ΕΔΑ͏ʹ
·ͱΊ • %FW0QTͷ͍· – ΫϥυԾԽͨΓલʹͳͬͯࣗಈԽඞવʹ – 7BHSBOUɺ$IFG1VQQFUɺTFSWFSTQFDͳͲͰ*OGSBTUSVDUVSF BT$PEFͷجૅଗͬͨ – Πϯϑϥ4PDJBM$PEJOH͢Δ࣌
• %FW0QTͷະདྷ – %FWͷΑΓ৽͍͠ՃՁͷ্ – ΠϯϑϥΛΑΓʮαʔϏεʯతͳͷʹ্͛Δํʹ – %PDLFS 4USJEFS$%͔ΒͦΕ͕֞ؒݟ͑Δ