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
YAPC::Kansai
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
papix
March 04, 2017
Programming
7k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
YAPC::Kansai
papix
March 04, 2017
More Decks by papix
See All by papix
Houtou.pm #1
papix
0
2k
Perl歴約10年のエンジニアがフルスタックTypeScriptに出会ってみた
papix
1
790
YAPC::Kyotoの「全て」 / All of "YAPC::Kyoto"
papix
0
1.7k
イベントの中の人 / Inside the Events
papix
0
380
2022年に始めるPerlでWebサービス開発(趣味)
papix
0
660
ワーケーションに関する考察
papix
3
2.4k
(今更)Amplifyさっくり体験
papix
0
940
はてなにおけるGitHub Actions活用事例 / GitHub Actions in Hatena
papix
0
2.9k
ミススペルを発見するmisspellのご紹介 / Introduce misspell
papix
0
1.3k
Other Decks in Programming
See All in Programming
カツオ、ご期待ください
suneo3476
0
190
ChromeでローカルLLM
ryu1013
0
140
作って学ぶSpring BootのAuto Configuration / JJUG Night Seminar 2026-10-19
rshindo
0
140
RAG の “R” を Swift で覗いてみる 〜「意味から探す」検索の仕組み〜
nao_randd
0
160
3回つくってわかった、 定期実行ジョブ基盤の本質情報
takai
0
450
Event is what happens
moro
2
770
AWS CDKのカスタムリソースでContinuum(旧Security Agent)を実装した話 | Implementing Continuum (formerly Security Agent) via AWS CDK Custom Resource
akihisaikeda
2
150
コードで差別化できない時代の ソフトウェアエンジニアリング / Software Engineering in an Era Where Code Doesn’t Differentiate
kishida
2
180
コードレビューのボトルネックを"する側"と"される側"の両面から解消する
yub0n
2
1.6k
AIで開発が速くなった先で、開発チームは何を目指すか
shihochan
0
880
作れる、でも消せるか?──安全に「枯らして消す」機能削除術 / Drain, Then Delete
chobishiba
2
630
なぜCTOを降りてFDEを選んだのか?〜なぜプロダクト企業がFDEで顧客の現場に踏み込むのか〜
gonta
1
210
Featured
See All Featured
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
1k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
18k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
1k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.3k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Into the Great Unknown - MozCon
thekraken
41
2.8k
Believing is Seeing
oripsolob
1
240
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3.1k
Un-Boring Meetings
codingconduct
0
460
Visualization
eitanlees
153
17k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.7k
Transcript
PerlͷWebΞϓϦέʔγϣϯΛ σϓϩΠ͢Δ࣌ʹ ୡ͕ߟ͑ͨ͜ͱ papix (Hatena Co., Ltd.)
͡Ίʹ
None
Θͨ͠Ͱ͢
None
ͯͳ͔Βདྷ·ͨ͠
ͭͬͯ͘·͢
papix • Twitter: @__papix__ • GitHub: papix • CPAN: PAPIX
• Blog • Technology: http://papix.hatenablog.com/ • My Life: http://papix.hatenablog.jp/
PerlͷWebΞϓϦέʔγϣϯΛ σϓϩΠ͢Δ࣌ʹ ୡ͕ߟ͑ͨ͜ͱ papix (Hatena Co., Ltd.)
σϓϩΠͱ?
σϓϩΠͱ? • WebαʔϏε(େ)ࣗͷPCͰ։ൃ͢Δ • ͦͷαʔϏεΛ, ϢʔβʹͬͯΒ͏ʹ? • Կ͔͠ΒͷαʔόʹňσϓϩΠʼnͯ͠, • ňγεςϜΛར༻Մೳͳঢ়ଶʹʼn͠ͳ͚Ε
ͳΒͳ͍
αʔϏεͷ྆ྠ • ň։ൃʼnͱňσϓϩΠʼnαʔϏεͷ྆ྠ • ։ൃ, σϓϩΠ, ։ൃ, σϓϩΠ… • ͦͷͨΊ,
σϓϩΠͷॏཁߴ͍! • σϓϩΠͳͯ͘͠αʔϏεͳ͠!!!!
σϓϩΠͷॏཁੑ • αʔϏεͷՁΛߴΊΔҝʹඞཁෆՄܽ • ϢʔβͷମݧΛଛͶͳ͍Α͏ʹ… • ͳΔ͘μϯλΠϜͳ͘… (ແఀࢭͰ) • σϓϩΠࣦഊͰαʔϏε͕ظؒࢭ·Δ
• ΦϖϨʔγϣϯϛεͰσʔλ͕ফ͑Δ
σϓϩΠʹਖ਼ղͳ͠ • Ԧಓ(ύλʔϯ)͋Δͷͷ, ม͕ଟ͍ • αʔϏεͷػೳ, Πϯϑϥߏ, ։ൃऀͷ, Ϣʔβ, ར༻͢Δݴޠ,
WAF, ϛυϧΣΞ, อଘ͢Δσʔλͷྔ… • ͍Ζ͍Ζͳͷͱ͖߹͏ඞཁ͕͋Δ
αʔϏεͱਐԽ͢ΔσϓϩΠ • αʔϏεͷਐԽʹ͍࠷ળղ͕มΘ͍ͬͯ͘ • ࠷ॳखಈͰ͍͚ΔΑͶ • खಈͩͱΦϖϛε͢Δ͔ΒࣗಈԽ͍ͨ͠Ͷ • ૿͑Δͱਏ͍͔Βฒྻ࣮ߦ͍ͨ͠Ͷ •
etc…
σϓϩΠʹ͍ͭͯ࠷ۙࢥ͏ࣄ • (ۀͷ߹)ඞཁ࠷ݶʹཹΊΔ • ࠷ॳ͔ΒཧΛ࣮ݱ͢Δͱ, ίετߴ͍ • ΦʔόʔςΫϊϩδʔʹΓ͕ͪ • Ҿ͖ܧ͗େมʹͳͬͯ͠·͏…
• ͍ͭͰۀͰ͑ΔΑ͏ʹ, झຯͷྖҬͰ৽͍͠Γํ, πʔϧΛࢼͤΔͱྑ͍!
σϓϩΠʹ͍ͭͯ ߟ͑Δ
σϓϩΠʹࢥ͍ΛͤΔ • ͪΌΜͱͨ͠σϓϩΠΛ࣮ݱ͢Δʹ? • ͍Ζ͍Ζͳࣄͱ͖߹͏ඞཁ͕͋Δ • ݱ࣮ͱ͔͍߹͍͖ͬͯ·͠ΐ͏ • ޭ, టष͍࡞ۀͷੵΈॏͶͷઌʹ͋Δ
͍Ζ͍Ζͳͷͱ ͖߹͓͏
Ͳ͜ʹσϓϩΠ͢Δ? • αʔϏε͕ಈ͘Πϯϑϥͱ͖߹͏ • VPS (Virtual Private Server) • IaaS
(Infrastructure as a Service) • PaaS (Platform as a Service) • ΦϯϓϨαʔό / ࣗαʔό
ԿΛσϓϩΠ͢Δ? • αʔϏεͦͷͷͱ͖߹͏ • όονϫʔΧʔ͋Δ͔? • ϞϊϦγοΫ? ϚΠΫϩαʔϏε? • JavaScript͋Δ͔?
ͦͷϏϧυ? • ϥΠϒϥϦͷΠϯετʔϧ/ߋ৽?
Ͳ͏ͬͯσϓϩΠ͢Δ? • αʔϏε, ར༻͢ΔϛυϧΣΞͱ͖߹͏ • Ͳ͏ͬͯϓϩηεΛಈ͔͔͢? • αʔϏεͷ࠶ىಈͲ͏͢Δ͔? • RDBMSͷϚΠάϨʔγϣϯඞཁ͔?
• ΩϟογϡͷഁغͳͲߟྀ͠ͳ͍ͱ͍͚ͳ͍͔?
ͲΜͳσϓϩΠʹ͢Δ? • αʔϏεΛ։ൃ͢ΔνʔϜͱ͖߹͏ • σϓϩΠʹ͑Δίετ? (ίετ) • खಈͰ͢Δ? ࣗಈԽ͢Δ? (ࣗಈԽ)
• σϓϩΠແఀࢭ? ϝϯςΛೖΕΔ? (Մ༻ੑ) • ͲΕ͚ͩσϓϩΠ͍ͨ͠? (σϓϩΠස)
ňσϓϩΠͷϏδϣϯʼnେࣄ • ňͲΜͳσϓϩΠʹ͢Δʼnʹ͋ͨΔ෦ • ܦݧଇͱͯ͠, ͜ͷลΓͷ߹ҙ/ܭը͕ࡶͩͱ, Φʔ όʔςΫϊϩδʔʹΓ͕ͪ • ଞͷཁૉʹൺ,
ׂͱࣗ༝͕ߴ͍(ͱࢥ͏) • झຯαʔϏεͰ͋Ε, νʔϜ = ࣗͳͷͰ͖উ खΕΔ!!!
ίετͷྫ • ໌ϦϦʔε͔ͩΒͳΔͰ! • සൟʹϦϦʔε͢Δ͠, ͔ͬ͠Γ࡞Γࠐ͏! • طଘͷࢿݯΛར༻ͯ͠, γϡοͱग़དྷͳ͍?
ίετͷิ • ߏஙίετͱ࣮ࢪίετ͕͋Δ • ߏஙίετˢ ͩͱ, ࣮ࢪίετ ↓ (ࣗಈ) •
ߏஙίετ ↓ ͩͱ, ࣮ࢪίετ ↑ (खಈ) • ࡶͳϏδϣϯͰਐΊΔͱͲͪΒΞήΞήʹ...
ࣗಈԽͷྫ • 1ίϚϯυͰσϓϩΠΛશͯྃͤ͞Α͏! • ్தͰ֬ೝΛڬΈ͍ͨͷͰ, ز͔ͭͷϑΣΠζ ʹ͚ͯ, ͦΕͧΕίϚϯυΛ࣮ߦ͠Α͏ • શ෦खಈͰΖ͏!
(ਖ਼ؾ͔!?)
ࣗಈԽͷิ • ઌʹհͨ͠ňίετʼnʹӨڹΛ༩͑Δ • ࣗಈԽΛߴΊΕߴΊΔ΄Ͳ, ࢦؔతʹ ίετ͕૿͍͑ͯ͘ (ͱࢥ͏) • νʔϜ/αʔϏεʹԠͯ͡దʹखಈ࡞ۀͷ
ཁૉΛڬΜͰ͍͘ͷ͕େࣄͳͷͰ?
Մ༻ੑͷྫ • σϓϩΠແఀࢭ(ϊʔϝϯς)ͰΓ͍ͨ! • ਂͰ͋ΕXͷఀࢭڐ༰Ͱ͖ΔͶ • ݄ʹXճαʔϏεΛࢭΊͯσϓϩΠͰ͖ͦ͏
Մ༻ੑͷิ • SLA(Service Level Agreement)ʹؔΘͬͯ͘Δ • झຯͷαʔϏεͰ͋Ε, ϦϦʔεͷʹఀࢭ͠ ౖͯΒΕΔ͜ͱͳͦ͞͏ •
͘ΘΕΔαʔϏε, ج൫తαʔϏεͩͱ, ͳΔ͘ແఀࢭͰσϓϩΠͰ͖ΔΑ͏ʹ͍ͨ͠!
σϓϩΠසͷྫ • 1ʹ10ճ͘Β͍σϓϩΠ͍ͨ͠! • िʹ1ճσϓϩΠͰ͖Εे͔ͳ... • 1ճ͋ͨΓXͰσϓϩΠ͍ͨ͠!
σϓϩΠසͷิ • αʔϏε։ൃॳظͰॏཁͳཁૉ • σϓϩΠճ = ϢʔβʹՁΛಧ͚Δࢼߦνϟϯε • ίετͰ, 1ʹԿσϓϩΠग़དྷΔͱྑ͍
• ྫ: GitHub (1100ճҎ্σϓϩΠ!) • ࠓ͍ͯ͠Δͷ͔ͳ...?
Ϗδϣϯ͕ࡶͩͱى͖Δ͜ͱ • σϓϩΠස͕͍ͷʹ, ϐλΰϥεΠονతʹ શࣗಈԽ͞ΕͨϞϊ্͕͕ͬͨΓ... • ͦͷίετͰαʔϏε։ൃΛޙԡ͠Ͱ͖ͨͷͰ!? • ࡶʹਐΊͯ, ͚ʹ࣌ؒͷ͔͔ΔϞϊ্͕͕ͬͨΓ...
• ҰʹԿσϓϩΠ͍ͨ͠ͷʹ…!
ΈΛม͑Δ͠͞ • Ұ࡞ͬͨΈ(͜͜ͰσϓϩΠ)Λޙ͔Βม͑ͯ ͍͘ͷඇৗʹ͍͠! • ຬ͖ͨ͢σϓϩΠͷϏδϣϯ(݅)͕͋ΔͳΒ, ຬͨͤΔΑ͏ʹ࠷ॳ͔ΒؤுΔ͖! • (࠷ॳ͔ΒϏδϣϯ͕ఆ·͍ͬͯͯ, ͣͬͱมΘΒͳ͍
ͳΒۤ࿑͠ͳ͍Ͱ͋Γ·͢!)
WebΞϓϦέʔγϣϯͷ σϓϩΠઓུ
खಈΦϖϨʔγϣϯ • αʔόʹଓͯ͠, खͰίʔυΛೖྗ • ίϚϯυΛؒҧ͑ͳ͍Α͏ʹ, खॱॻΛ࡞Δ • ͱ͍͑, ਓؒͳͷͰͨ·ʹؒҧ͑Δ…!
• αʔόʔͷ͕૿͑Ε, ΦϖϛεͷՄೳੑ ૿͍͑ͯ͘…
γΣϧεΫϦϓτʹΑΔࣗಈԽ • Ұ࿈ͷσϓϩΠॲཧͷͨΊͷίϚϯυΛ, γΣϧεΫϦϓτͰ·ͱΊ࣮ͯߦ͢Δ • σϓϩΠͷखॱΛίʔυʹམͱ͠ࠐΉ • ίʔυͳͷͰ࣮ߦग़དྷΔ, ಡΊΔ, मਖ਼Ͱ͖Δ!
• ͜Ε͕૿͑ͯ͘Δͱ, ֤αʔόͰεΫϦϓτΛ࣮ ߦ͢Δͷ͕େมʹͳͬͯ͘Δ…
πʔϧΛͬͨࣗಈԽ/ฒྻԽ • දྫCapistranoͳͲ • ༧ΊσϓϩΠઌͱͳΔαʔόΛొ͢Ε, ί Ϛϯυ1ͭͰશͯͷαʔόʹσϓϩΠՄೳ • ศརͳϔϧύʔ͕͋Γ, ίʔυͰσϓϩΠखॱ
Λߏங͍͢͠
πʔϧΛͬͨࣗಈԽ/ฒྻԽ • αʔόͷڥΛߏங͢ΔπʔϧͰߦ͏߹ • Ansible, Chefͱ͍ͬͨϓϩϏδϣχϯάπʔ ϧͷ׆༻ • ڥߏஙͱσϓϩΠΛҰؾ௨؏Ͱಉ͡πʔϧͰ ࣮ݱͰ͖Δ
• ࠷ॳͷҰาͱͯ͠Φεεϝ
πʔϧΛͬͨࣗಈԽ/ฒྻԽ • ۀͰ, ͜ͷล·Ͱ”ී௨ʹ"Δࣄ͕ଟ͍ • Infrastructure as CodeͷྲྀߦΓͱ͔… • ίʔυԽ͢Δ͜ͱͰ,
ଞνʔϜͷίʔυ/ݟΛྲྀ༻ ͍͢͠ͱ͍͏ͷ͋Δ • ୠ͠, Γ͗͢ΔͱࣾͰňΨϥύΰεతਐԽʼnΛ͢Δ ͜ͱ...
ߋͳΔਐԽͷํੑ • ňՌΛར༻͢Δʼnޮͷྑ͍σϓϩΠ • BotΛͬͨChatOps • CIπʔϧ, SaaSͷ׆༻ • σϓϩΠͷશࣗಈԽ
ňՌΛར༻͢ΔʼnσϓϩΠ
GitΛͬͨσϓϩΠ • GitΛ͍ͬͯΔ߹Λߟ͑Δ • GitHub, BitBucketͳͲ... • ϦϙδτϦʹ͋ΔίʔυΛσϓϩΠ͢Δ • ී௨ʹσϓϩΠ͢Δͱ,
Ͳ͏͍͏खॱʹͳΔ?
GitΛͬͨσϓϩΠ • ࣍ͷΑ͏ͳॲཧΛCapistranoͳͲͰߦ͏: • σϓϩΠରͷαʔόͷGitϦϙδτϦΛߋ৽ • ϥΠϒϥϦͷΠϯετʔϧ, ϏϧυΛ࣮ߦ • ΞϓϦέʔγϣϯΛ࠶ىಈ
• αʔό͕ෳଘࡏ͢Δ߹, ͦͷ֤ʑͰ࣮ࢪ͢Δ
? • GitϦϙδτϦʹෛ୲͕͔͔Δ • Ұʹෳͷαʔό͕GitϦϙδτϦΛಡΈऔΓʹߦ͘ • Ϗϧυʹ͔͔Δίετ(Ϧιʔε, ࣌ؒ)͕ແବ • શͯͷαʔόͰ,
`carton install`ͳͲ͕࣮ߦ͞Εͯ͠·͏ • JavaScriptͷϏϧυͳͲಉ༷
ňՌΛར༻͢ΔʼnσϓϩΠ • ༧Ί, σϓϩΠ͍ͨ͠ίʔυΛϏϧυ͓ͯ͘͠ • CIαʔόͷδϣϒͱͯ͠ߦ͏͜ͱ͕ଟ͍ • ͦͷňՌʼn͝ͱ, ίʔυΛtarͳͲͰݻΊΔ •
`local`σΟϨΫτϦ, Ϗϧυͨ͠JavaScript...
ňՌΛར༻͢ΔʼnσϓϩΠ • tarS3ʹஔ͓ͯ͘͠ • S3ͳͷͰ, ಉ࣌ΞΫηεʹڧ͍ • σϓϩΠରͷαʔό, S3͔ΒtarΛऔಘ, ల։ͯ͠࠶ىಈ͢ΕσϓϩΠྃ
• ͦΕͧΕͷαʔόͰϏϧυ͕ඞཁͳ͘ͳΔ
ňՌΛར༻͢ΔʼnσϓϩΠ • Consul + StretcherΛͬͨύλʔϯ • ʲະঝࠂʳ͜ͷޙͷmacopy͞Μͷ τʔΫͰ, ΧϠοΫʹ͓͚Δ۩ମྫͳͲ͕ ޠΒΕΔͷͰ!?
• ͳͷͰ, ͜͜Ͱେ·͔ͳ֓ཁͷΈ͓͠·͢
Consul + Stretcher • Stretcher • ΧϠοΫͷ@fujiwara͞Μۘ • HashiCorp”Consul”ͷeventΛར༻ͨ͠ σϓϩΠπʔϧ
Consul + Stretcher http://techblog.kayac.com/10_stretcher.html
Consul + Stretcher • ։ൃऀConsulʹeventΛ͛ΕOK! • Consul/StretcherΛΘͣ, CapistranoͰ ֤αʔόʹtarΛऔಘͤ͞, ల։ͯ͠࠶ىಈͱ͍
͏Γํ͋ΓಘΔ
BotΛͬͨChatOps
ChatOps (Hubot) • Botʹ͓ئ͍͢ΕσϓϩΠ͕ಈ͘ • Botͱνϟοτπʔϧ(Slack)Ͱަྲྀ • ňσϓϩΠͷՄࢹԽʼnʹͭͳ͕Δ • σϓϩΠͷ༷ࢠ͕νϟοτͰՄࢹԽͰ͖Δ
• ਐḿͱ͔, ͳͦ͞͏͔ͱ͔, ײ͍͢͡
CIπʔϧ/SaaSͷ׆༻
CIπʔϧ • ༷ʑͳҰ࿈ͷॲཧ(Job)Λཧ/࣮ߦͯ͘͠ΕΔ • σϓϩΠͷҝͷॲཧΛཧͤ͞Δ • Jenkins, Concourse CI, Circle
CIͳͲ… • ཤྺϩάΔͷͰ, ҆৺ײ͕͋Δ
Jenkins • σϑΝΫτελϯμʔυײ͕͋Δ • ࠷ۙ2.0͕ग़ͯ, Jenkinsfileͱ͍͏֓೦͕ొ • ίʔυͰδϣϒΛཧग़དྷΔΑ͏ʹͳͬͨ! • JenkinsΛཧ͢Δ͜ͱΛňհޢʼnͱݺΜͩΓ…
Concourse CI • PivotalͷύΠϓϥΠϯܕCIπʔϧ • ݟ͕ͨΊͬͪΌΠέͯΔ, ͔͍͍ͬ͜ • DockerΛ͍ͬͯͯ, δϣϒ͕Dockerͷ্
Ͱಈ࡞͢ΔͷͰ, ڥߏஙָ͕ͪΜ
Concourse CIͷ༷ࢠ https://qiita-image-store.s3.amazonaws.com/0/1852/4e14e419-5b1f-75f6-f623-6aac28c9788f.png
SaaSͳCI • Travis • GitHubͷpublicϦϙδτϦແྉͰ͑Δ • ଞʹCircle CI, WerckerͳͲ... •
ͪΖΜSaaSͳͷͰ, ༗ྉͳࣄ͕ଟ͍Ͱ͢
None
Mackerel • ͯͳͷαʔόཧ/ࢹͷͨΊͷSaaS • σϓϩΠͷҝʹňαʔόͷཧʼnॏཁ • ňͲͷαʔόʹσϓϩΠ͢Δ͔?ʼn • Capistrano +
Mackerelͷྫ • σϓϩΠରͷαʔόΛMackerel͔ΒΑ͠ͳʹݟ͚ͭͯ͘ΕΔ • https://mackerel.io/ja/docs/entry/advanced/capistrano-2.x
σϓϩΠͷશࣗಈԽ
σϓϩΠͷશࣗಈԽ • ͜͏͍ͬͨΈΛΈ߹ΘͤΕ, σϓϩΠͷશࣗಈ Խ࣮ݱͰ͖Δ • GitHubʹpushͨ͠ΒσϓϩΠྃ! • ୠ͠, શࣗಈԽʹϦεΫ͋Δ
• ňਓؒͷख͕ೖΔ༨ʼn͋Δछͷ҆શห • લड़ͷ௨Γ, ňͲ͜·ͰࣗಈԽ͢Δ͔?ʼnΛߟ͑Δ
σϓϩΠͱϚΠάϨʔγϣϯ
αʔϏεͱσʔλ • αʔϏε͕ར༻͢Δσʔλͷཧʹ͍ͭͯ ߟ͑ͳ͚Ε͍͚ͳ͍ • RDBMSʹσʔλΛอଘͨ͠Γ… • KVSΛར༻ͨ͠Γ… • ΦϒδΣΫτετϨʔδΛར༻ͨ͠Γ...
εΩʔϚͷมߋ • ΞϓϦέʔγϣϯͷσϓϩΠʹͬͯ, RDBMSͷεΩʔϚΛมߋ͍ͨ͠߹͋Δ • ৽͍͠ςʔϒϧΛ༻ҙ͍ͨ͠ • ςʔϒϧʹΧϥϜΛՃ͍ͨ͠ • εΩʔϚͷมߋ
-> ϚΠάϨʔγϣϯ
ϚΠάϨʔγϣϯ͢Δ • SQLͷALTERจΛଧͭ • GitDDL, GitDDL::Migrator, Anego, ͦͷࢧԉ Λ͢Δπʔϧୡ •
pt-osc • TriggerΛۦͯ͠, ͍͍ײ͡ʹϚΠάϨʔγϣϯ Λͯ͘͠ΕΔ܅
ϚΠάϨʔγϣϯͷ͠͞ • ALTERจͷ࣮ߦʹͲΕ͚͕͔͔ͩ࣌ؒΔ͔? • ϚΠάϨʔγϣϯޙΞϓϦಈ͔͘? • σϓϩΠલͷΞϓϦέʔγϣϯ͕, RDBMS ͷϚΠάϨʔγϣϯޙਖ਼͘͠ಈ͘ͳΒ, ແఀࢭͰσϓϩΠͰ͖Δ
Graceful Restart
Tl;dr • @shibayu_36͞ΜͷΤϯτϦΛಡ͏! • ňServer::Starter͔ΒֶͿhot deployͷΈʼn http://blog.shibayu36.org/entry/ 2012/05/07/201556 • τοϓΫϥεʹΘ͔Γ͍͢Graceful
Restart ͷࢿྉͰ͢
Graceful Restart • σϓϩΠ࣌ʹϓϩηεͷ࠶ىಈ͕ඞཁ • มߋͨ͠ίʔυΛద༻͢ΔͨΊ • ී௨ʹ࠶ىಈ͢Δͱ, ͦͷॠ͚ؒͩϦΫΤετΛࡹ͚ͳ͘ ͳͬͯ͠·͏
• αʔϏε͕ॠؒతʹμϯ͢Δ! • ͦ͜ͰGraceful Restart (༏խͳϦελʔτ)
PerlͷGraceful Restart • PerlͳΒ, Server::StarterҰ • ࣍ͷΑ͏ʹ͏:
http://blog.shibayu36.org/entry/2012/05/07/201556
http://blog.shibayu36.org/entry/2012/05/07/201556
http://blog.shibayu36.org/entry/2012/05/07/201556
http://blog.shibayu36.org/entry/2012/05/07/201556
http://blog.shibayu36.org/entry/2012/05/07/201556
http://blog.shibayu36.org/entry/2012/05/07/201556
ͯͳͷσϓϩΠ
ͯͳͱσϓϩΠ • ͨ͘͞ΜͷαʔϏεΛӡ༻͍ͯ͠Δ • ͦͷͦΕͧΕʹσϓϩΠϑϩʔ͕͋Δ • ࠓճͯͳϒϩάνʔϜΛྫʹ...
ͯͳϒϩάνʔϜͷσϓϩΠ • ։ൃऀΈΜͳσϓϩΠͰ͖Δ • σϓϩΠຖʹͩΕ͔͕ΞαΠϯ͞ΕΔ • ༦ํ, ༵ۚσϓϩΠ͠ͳ͍
ϒϥϯνӡ༻ • masterϒϥϯν • ຊ൪ڥͰಈ͍͍ͯΔίʔυ • staging/masterϒϥϯν • stagingڥͰಈ͍͍ͯΔίʔυ •
։ൃ༻ͷϒϥϯν(τϐοΫϒϥϯν)staging/masterʹ Pull Requestͯ͠Ϛʔδ
खॱॻͷࣗಈੜ • git-pr-release Ͱखॱॻͷࣗಈੜ • staging/master ͔Β master ͷPull Requestͷdescription͕खॱॻʹͳΔ
• ޙखॱॻʹै͍͚ͬͯͬͯͩ͘!
None
None
ײ • (ಈ࡞֬ೝΛআ͚)10͘Β͍ͰऴΘΔ • શࣗಈԽͰͳ͘, ࣗಈԽ • αʔϏεͷنখ͘͞ͳ͍ͷͰ, ్தखಈ ʹΑΔ֬ೝϑΣΠζΛڬΜͰ͍Δ
• ň҆શʹ͍ͯ͠Δʼnҹ
ײ • ໘ͳ/࣌ؒͷ͔͔ΔॲཧJenkinsʹͤ, ॏେͳλεΫਓ͕ؒखݩͰ࣮ߦ͢Δ • Slackʹ༷ࢠΛྲྀͭͭ͠, ϩάΛ֬ೝ͢Δ • ϦϦʔελΠϛϯάͳͲߟྀ͠ͳ͍ͱ͍͚ͳ ͍͕,
͔ͳΓΧδϡΞϧʹσϓϩΠ͍ͯ͠Δ
·ͱΊ
·ͱΊ • αʔϏεͷ։ൃͱσϓϩΠ྆ྠ • ͔ͬ͠Γߟ͍͑ͯ͘ඞཁ͕͋Δ • ࠷ݶͷίετͰ, ࠷ྑͷޮΛٻΊͯ • σϓϩΠ,
͔ͬ͠Γߟ͍͖͑ͯ·͠ΐ͏
We are hiring! ͯͳͰ, ϞϦϞϦ։ൃ, ͲΜͲΜσϓϩΠΛ Ұॹʹ͍ͬͯ͘ΤϯδχΞΛืू͍ͯ͠·͢!
We are hiring! http://hatenacorp.jp/recruit/career/application-engineer