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
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.2k
Haskell を武器にして挑む競技プログラミング ─ 操作的思考から意味モデル思考へ
naoya
13
4.6k
Haskell でアルゴリズムを抽象化する / 関数型言語で競技プログラミング
naoya
21
8k
Functional TypeScript
naoya
19
6.9k
TypeScript 関数型スタイルでバックエンド開発のリアル
naoya
77
38k
シェルの履歴とイクンリメンタル検索を使う
naoya
16
6.8k
20230227-engineer-type-talk.pdf
naoya
91
87k
関数型プログラミングと型システムのメンタルモデル
naoya
63
110k
TypeScript による GraphQL バックエンド開発
naoya
29
37k
Other Decks in Technology
See All in Technology
MCPを待つな、パスキーを拡げよう(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
270
フィジカルAIの知識ゼロの僕でも AIを使えばここまでできた
tatsuya1970
0
180
Introduction to Sansan Meishi Maker Development Engineer
sansan33
PRO
0
460
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
6
77k
Microsoft MVP プログラムを紹介するから目指す人増えてくれ
tsubakimoto_s
0
110
型落ちシンクライアント端末のPoEモジュールを自作したかった話
logica0419
0
440
EUDIWの枠組みを出発点に民間エコシステムの在り方を考える(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
270
:syncing_time:
sksat
2
750
GopherCon @シアトル に行ってきました
logica0419
0
260
AI時代の「OAuth認証」にどう物申すか?(OAuth/OIDC Numa (Immersion) Workshop 2026)
oidfj
PRO
0
260
NANDでも描画したい!
nichica906
3
730
All About Sansan – for New Global Engineers
sansan33
PRO
1
1.5k
Featured
See All Featured
Agile that works and the tools we love
rasmusluckow
331
22k
How to Ace a Technical Interview
jacobian
281
24k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
57k
Deep Space Network (abreviated)
tonyrice
0
270
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.1k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
470
Abbi's Birthday
coloredviolet
3
9.5k
Testing 201, or: Great Expectations
jmmastey
46
8.2k
Done Done
chrislema
186
16k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
210
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$%͔ΒͦΕ͕֞ؒݟ͑Δ