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.6k
Haskell を武器にして挑む競技プログラミング ─ 操作的思考から意味モデル思考へ
naoya
13
4.8k
Haskell でアルゴリズムを抽象化する / 関数型言語で競技プログラミング
naoya
21
8.1k
Functional TypeScript
naoya
19
6.9k
TypeScript 関数型スタイルでバックエンド開発のリアル
naoya
77
38k
シェルの履歴とイクンリメンタル検索を使う
naoya
16
6.9k
20230227-engineer-type-talk.pdf
naoya
91
88k
関数型プログラミングと型システムのメンタルモデル
naoya
64
110k
TypeScript による GraphQL バックエンド開発
naoya
29
38k
Other Decks in Technology
See All in Technology
AI駆動開発における開発環境のセキュリティの考え方
yamahiro
2
620
AWSDirectConnectの構築の進め方を整理してみた
masa_my
1
200
freeeにおけるSoftware Factory
freee
PRO
0
520
構造で守らせる データ・法務・セキュリティ・開発チームとつくる AI時代のデータガバナンスとデータ基盤のリアル
legalontechnologies
PRO
1
520
なぜAI時代に技術記事を書くのか?どう書くのか? 〜bunの場合〜
kworkdev
PRO
0
130
フィンテック養成勉強会#68
finengine
0
240
AI駆動開発におけるハーネスエンジニアリングの勘所
tsukuboshi
1
780
"計画的無茶振り"を通してAIネイティブ世代の新人を育てる
subroh0508
1
110
背中から、背中へ ー 社外コミュニティで学んだ「雑に背中を押す」という恩送り ー / easygoing encouragement and pay forward to community
naitosatoshi
0
320
Claude Codeから見る、エンジニアの世界の変容とその先
oikon48
6
4.2k
Codex を使った障害対応机上演習の実際
orgachem
PRO
0
360
reInvent2026stby LT00 "Change your life!"
shinichirokawano
1
290
Featured
See All Featured
How Software Deployment tools have changed in the past 20 years
geshan
2
35k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
630
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
77k
Building an army of robots
kneath
307
47k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
20k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
420
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.6k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.4k
Optimising Largest Contentful Paint
csswizardry
37
4k
Designing for humans not robots
tammielis
254
26k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
580
The SEO identity crisis: Don't let AI make you average
varn
0
610
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$%͔ΒͦΕ͕֞ؒݟ͑Δ