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
ペパボにおけるOpenStackHacks!
Search
Kazuhiko Yamashita
July 04, 2015
Technology
5
3.8k
ペパボにおけるOpenStackHacks!
GMO Pepabo.incのOpenStack運用事例です。
Kazuhiko Yamashita
July 04, 2015
Tweet
Share
More Decks by Kazuhiko Yamashita
See All by Kazuhiko Yamashita
Stay Hacker 〜九州で生まれ、Perlに出会い、コミュニティで育つ〜
pyama86
2
5.1k
Managing Database Migrations in Go Backend Systems
pyama86
0
150
新しい職場の CI が 20 分かかっていたらあなたならどうする?
pyama86
2
1.5k
事業を差別化する技術を生み出す技術
pyama86
4
1.9k
Re:Define 可用性を支える モニタリング、パフォーマンス最適化、そしてセキュリティ
pyama86
9
9.9k
AI時代におけるSRE、 あるいはエンジニアの生存戦略
pyama86
6
1.9k
Tuning GraphQL on Rails
pyama86
2
2.4k
ttlcacheのここがスゴい
pyama86
1
220
クラウドサービスの 利用コストを削減する技術 - 円安の真南風を感じて -
pyama86
3
690
Other Decks in Technology
See All in Technology
「駆動」って言葉、なんかカッコイイ_Mitz
comucal
PRO
0
140
202512_AIoT.pdf
iotcomjpadmin
0
190
Data Hubグループ 紹介資料
sansan33
PRO
0
2.6k
戰略轉變:從建構 AI 代理人到發展可擴展的技能生態系統
appleboy
0
190
2025年の医用画像AI/AI×medical_imaging_in_2025_generated_by_AI
tdys13
0
320
複雑さを受け入れるか、拒むか? - 事業成長とともに育ったモノリスを前に私が考えたこと #RSGT2026
murabayashi
1
1.7k
投資戦略を量産せよ 2 - マケデコセミナー(2025/12/26)
gamella
1
640
AWSと生成AIで学ぶ!実行計画の読み解き方とSQLチューニングの実践
yakumo
2
350
Claude Codeを使った情報整理術
knishioka
20
12k
国井さんにPurview の話を聞く会
sophiakunii
1
360
純粋なイミュータブルモデルを設計してからイベントソーシングと組み合わせるDeciderの実践方法の紹介 /Introducing Decider Pattern with Event Sourcing
tomohisa
1
910
Scrum Guide Expansion Pack が示す現代プロダクト開発への補完的視点
sonjin
0
570
Featured
See All Featured
Deep Space Network (abreviated)
tonyrice
0
33
The Mindset for Success: Future Career Progression
greggifford
PRO
0
210
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
1.5k
Crafting Experiences
bethany
0
27
Docker and Python
trallard
47
3.7k
The Curious Case for Waylosing
cassininazir
0
200
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
130
Game over? The fight for quality and originality in the time of robots
wayneb77
1
77
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
エンジニアに許された特別な時間の終わり
watany
106
220k
Transcript
dͱՆΛҰॹʹτΡΪϟβʔ͠·ઐՊʂʂฤd GMO Pepabo, Inc. Pࢁ 2015/07/04 Pepabo Tech Conference in
Fukuoka ϖύϘʹ͓͚Δ 0QFO4UBDL)BDLT
Ͳɺ΅͘Ͱ͢ 1ࢁ (.01FQBCP*OD !QZBNB UFOTOBQPODPN
"HFOEB 0QFO4UBDLJT /ZBIJT IBDLT ࠓͬͯΔ͜ͱ
0QFO4UBDLJT Ϋϥυج൫ 7.Λཧ͢ΔͨΊͷ ιϑτΣΞ܈
ߏਤ /PWB"1* )PSJ[PO ,FZTUPOF /PWB$PNQVUF ཧϗετ /FVUSPO $JOEFS HMBODF ͜Μͳ7.࡞Γ͍ͨ
͜ͷϢʔβʔݖݶ ͋Δʁ ༻͢ΔΠϝʔδ 04͜Ε σΟεΫ͜͜Λ ͏ $16ɼϝϞϦ ͜Ε ༻͢ΔωοτϫʔΫ͜Ε ΦϨΦϨʂԶͩΑʂ
ϖύϘ͕ղܾͨ͠ ͔ͬͨ͜ͱ
ݸʑͷαʔϏεͰಠࣗʹΠϯϑϥΛߏங
αʔόΛؾܰʹ࡞Γ͍ͨ ຐ๏ͷΑ͏ʹ؆୯ʹ αʔό࡞Γ͍ͨΘ͊ɻɻ
“2014/05/01 Issueݐઃ αʔϏε͝ͱͰͳ͘ɺ શࣾڞ௨ͷΠϯϑϥج൫Λ࡞Δͧʂʂʂʂ
/ZBI
/ZBIJT ϖύϘͷԾج൫Πϯϑϥ ͜Ε·ͰαʔϏε͝ͱʹઃ͚͍ͯͨ ΠϯϑϥΛ0QFO4UBDLͰ౷߹
/ZBIJT IUUQXXXTMJEFTIBSFOFUVNF@QCUDCPC IUUQTXXXZPVUVCFDPNXBUDI W(618.;CP1T6
/ZBIͷ༝དྷ /PBIʹܾ·Δ தೋපͬΆ͍ͬͯͳΔ Ұจࣈม͑ͯ/ZBIʹ͠Α͏ͥͬͯͳΔ ޙͰ͔͍͍ͬͯ͜ࣈߟ͑Α͏ͥͬͯͳΔ /ZBIJTZFUBOPUIFSIPTUJOH
/ZBI αʔϏε͝ͱʹςφϯτΛ ׂ͠ɺݖݶ ϦιʔεΛཧ
ߏཧ
“ http://techlife.cookpad.com/entry/2015/05/12/080000
JUBNBF $JOEFS /PWB $PNQVUF /FVUSPO /PWB $PNQVUF /PWB $PNQVUF /PWB
$PNQVUF (JUͰόʔδϣϯཧ OPWBDPOG ʜ OFVUSPODPOG ʜ DJOEFSDPOG ʜ TFSWJDFOPWBSFTUBSU TFSWJDFOFVUSPOSFTUBSU TFSWJDFDJOEFSSFTUBSU
JUBNBF OPWBOPEF CBTFSPMF NBDLFSFMSFDJQF OPWBSPMF DPNQVUFSFDJQF BQJSFDJQF CVOEMFFYFDJUBNBFTTIIOPWBQCDMPVEDPNa OPEFKTPOOPEFOPWBKTPOCPPUTUSBQSC
JUBNBF TFSWJDFPQFOTUBDLOPWBDPNQVUF SFNPUF@pMFFUDOPWBOPWBDPOGEP OPUJpFTSFTUBSU TFSWJDF<PQFOTUBDLOPWBDPNQVUF> FOE
JUBNBF TFSWJDFPQFOTUBDLOPWBDPNQVUF SFNPUF@pMFFUDOPWBOPWBDPOGEP OPUJpFTSFTUBSU TFSWJDF<PQFOTUBDLOPWBDPNQVUF> FOE
ࢹ
.BDLFSFM ͯͳ͕ࣾఏڙ͢Δαʔό ࢹαʔϏε .BDLFSFMḉ ϩʔϧͰࢹઃఆΛଋͶΔ͜ͱ͕ Մೳ
.BDLFSFM NBDLFSFM\ SPMFOZBIOFVUSPOOPEF DPOG\ NPOJUPS< \ OBNFQMVHJODIFDLTOFVUSPOTFSWFS DPNNBOEVTSMJCOBHJPTQMVHJOTDIFDL@QSPDTBOFVUSPOTFSWFSD
^ \ OBNFQMVHJODIFDLTOFVUSPO DPNNBOEVTSMJCOBHJPTQMVHJOTDIFDL@UDQ)MPDBMIPTUQXD ^ ʜ > ^ ^
.BDLFSFM /FVUSPO JUBNBFNBDLSFMSC SPMFT<OZBIOFVUSPOOPEF> <QMVHJODIFDLTOFVUSPOTFSWFS> DPNNBOEVTSMJCOBHJPTQMVHJOTDIFDL@QSPDTBOFVUSPOTFSWFSD <QMVHJODIFDLTOFVUSPO>
DPNNBOEVTSMJCOBHJPTQMVHJOTDIFDL@UDQ)MPDBMIPTUQXDz ʜ NBDLFSFMḉ ࢮ׆ɺ͖͍͠ࢹ
.BDLFSFM
.BDLFSFM ઃఆϗετଆ͚ͩͰ*1ΞυϨεؾʹ ͠ͳ͍͍ͯ͘ ઃఆϑΝΠϧ͕γϯϓϧͰཧ͍͢͠ ࢹఆٛ(6*ͰαΫαΫΕΔ͔ͭɺ ҰೖΕͯ͠·͑͋ͱಉ͡ϩʔϧ ʹࢀՃͤ͞Δ͚ͩ
/ZBI·ͱΊ 0QFO4UBDLͬͯ·͢ ϖύϘͷϓϥΠϕʔτΫϥυ αʔϏε୯ҐͰϦιʔεཧ ߏཧJUBNBF
ࢹNBDLFSFM
)BDLT
य़
େମग़དྷͨ
͡Ό͋ɺ৮ͬͯΈͯ ͍͍͔͢ʂʂʂ
)PSJ[PO 7.ཧ /8ཧ ηΩϡϦςΟʔཧ Ϣʔβʔཧ
Ϧιʔεཧ
0QFO4UBDL$MJFOU 1ZUIPOͷΫϥΠϯτ OPWBMJTU OFVUSPOQPSUMJTU LFZTUPOFFOEQPJOUMJTU IUUQEPDTPQFOTUBDLPSHKBVTFSHVJEFDPOUFOUJOTUBMM@DMJFOUTIUNM
GNʜ ͡Ό͋ɺԿʁ ϗετ࡞Δͷʹճ 8*ૢ࡞ͨ͠ΓɺίϚϯυ ͛ͳ͖Ό͍͚ͳ͍Θ͚Ͱ͔͢ʁ
ͬͯΒΜͳ͍ʂʂʂ
)BDLT LBOBNFϢʔβʔཧ LBLJOFηΩϡϦςΟάϧʔϓཧ OZBIDMJ7.࡞ 1FD7.T࡞
Ϣʔβʔཧ
LBOBNF ϖύϘͰਓͷΤϯδχΞ͕ ෳͷαʔϏεʹܞΘΔ )PSJ[POͩͱมߋཤྺ͕ཧͰ͖ͳ͍ ূ͕Βͳ͍
LBOBNF ઃఆϑΝΠϧΛZBNMͰఆٛ ઃఆϑΝΠϧΛ(JUʹू ʮ୭͕ɺ͍ͭɺͲͷݖݶʯΛอ͔࣋ͨ͠Λཧ QZBNB FNBJMlQZBNB!QFQBCPDPNl UFOBOUT NVVNVVlDJUZCPZ
EFWFMPQlBENJOz UBOBLB FNBJMlUBOBLB!QFQBCPDPN UFOBOUT EFWFMPQNFOUNFNCFS
LBOBNF ొ༰ ,FZTUPOF QZBNB FNBJMlQZBNB!QFQBCPDPNl UFOBOUT NVVNVVlDJUZCPZ EFWFMPQlBENJOz UBOBLB FNBJMlUBOBLB!QFQBCPDPN
UFOBOUT EFWFMPQNFOUNFNCFS (JU)VC13 ɹొ༰ʹޡΓ͕ͳ͍͜ͱΛ ɹ֬ೝ͢Δ (JU)VCͰͷϨϏϡʔྃޙɺొ
ηΩϡϦςΟཧ
DPNQVUFOPEF ཧϗετ JOUFSGBDF 4FDVSJUZ(SPVQ Ϝʔ7. /PWB"QJ /FVUSPO Ϝʔ7.ʹΦϑΟε͔Βͷ 44)ڐՄ͍ͨ͠ Ϝʔ7.ʹ44)ڐՄ
JQUBCMFTఆٛ 7.Ͱͳ͘DPNQVUFOPEFʹ JQUBCMFTఆٛ
LBLJOF ઃఆϑΝΠϧΛZBNMͰఆٛ ઃఆϑΝΠϧΛ(JUʹू ηΩϡϦςΟઃఆͷϨϏϡʔ͕ՄೳʹͳΓɺ ·ͨɺొɺΓ͠ͷख͕ؒେ෯ʹݮ JOUFSOBM@QFSNJU SVMFT
EJSFDUJPOJOHSFTT QSPUPDPM FUIFSUZQF*1W QPSU SFNPUF@JQ EFTDSJQUJPOΠϯλʔφϧઢͷ௨৴ΛશͯڐՄ
LBLJOF طଘઃఆͷऔಘɾฤूɾొ /PWB"QJ JOUFSOBM@QFSNJU SVMFT EJSFDUJPOJOHSFTT QSPUPDPM FUIFSUZQF*1W QPSU SFNPUF@JQ
EFTDSJQUJPOΠϯλʔφϧઢͷ௨৴ΛશͯڐՄ ొ͞Εͨ༰Λө ࠷৽ొ༰Λ(JUཧ /PWB$PNQVUF /PWB$PNQVUF /PWB$PNQVUF
Πϯελϯε࡞
JNBHF
JNBHF TVEPϢʔβʔͷ࡞ TTIαʔόʔͷ࣮ߦ DMPVEJOJU PQFOTUBDLBQJDMJFOU QZUIPO ͷ Πϯετʔϧ σΟεΫ࠷খԽͱΠϯελϯεىಈ࣌ʹࣗಈ֦ு ωοτϫʔΫॳظԽ
ϑΝΠΞΥʔϧͷແޮԽ ຊ࣌ؒΛઃఆ ىಈ࣌ͷTMBDL௨
JNBHF $FOU04 XJUIDIFGQVQQFU 6CVOUV
XJUIDIFGQVQQFU $PSF04ͳͲͳͲ
JOTUBODF JNBHF CBTF &TTFODF QVQQFU DIFG DMPVEJOJU
“Πϝʔδͷىಈ࣌ʹ͞Εͨuser-dataʹج͖ͮ OSʹରͯ͠ઃఆΛߦ͑ΔΈ $MPVE*OJU DMPVEJOJU DMPVEDPOpH ϦϑΝϨϯε IUUQT[FUUBJPOCIKFMQDPNNVOJUZBSUJLMFSPHPQQMBFSJOHDMPVEJOJUSFGFSFODF
$MPVE*OJU IPTUOBNFQZBNBEFNP GREOQZBNBEFNPDPN SFQP@SFMFBTFWFS VTFST OBNFQZBNB HSPVQTQZBNB TIFMMCJOCBTI TVEP<"-- "--
/01"448%"--> TTIBVUIPSJ[FELFZT TTISTB'%"%'"%#/[B$ZD&GEMGKBTE&"R6+WTW,H)3.)E CPPUDNE FDIPSPPUQZBNBcDIQBTTXE
/ZBI$MJ (PͰ։ൃ͞Εͨ"1*ϥούʔίϚϯυ ίϚϯυҰൃͰ7.Λىಈ VTFSEBUBʹରԠ͍ͯ͠ΔͷͰҙͷઃఆ͕ىಈޙʹ ߦΘΕΔ *1ΞυϨεઃఆΛࣗಈԽ
VE[VSBOZBIDMJ 8SBQQFSPG/ZBIUIF8SBQQFSPG0QFO4UBDL OZBIJOTUBODFTUEFWOZBIa JDFOUPTOQZBNBUFTUQQZBNBQBTTa OFUXPSLFYUOFUFYU JOUOZBIa GNTNBMMVTFSEBUBVTFSEBUBZNM
1FD ઃఆϑΝΠϧʹج͖ͮෳͷ7.Λ Ұׅىಈɾఀࢭ VTFSEBUBͷςϯϓϨʔτԽΛαϙʔτ QZBNBUFTU UFOBOUQFQBCP JNBHFDFOUPT@DIFG@QVQQFU qBWPSNTNBMM
OFUXPSLT FUI CPPUQSPUPTUBUJD JQ@BEESFTT HBUFXBZ EOT TFDVSJUZ@HSPVQ EFGBVMU TTI UFNQMBUFT CBTFZBNM XFCTFSWFSZBNM
)BDLT·ͱΊ ϢʔβʔཧΛূΛͭͭ͠ ָʹʂʂ ηΩϡϦςΟʔཧΠϯελϯε ࡞ͷखؒΛίʔυͰղܾ
ࠓͬͯΔ͜ͱ
*1Λҙࣝ͠ͳ͍ ΠϯϑϥΛίʔυͰ ࡞Γ͖Δ
Α͋͘Δ%/4γεςϜ -# -# %/4 %/4 %/4 WJQ SJQ SJQ SJQ
SJQ SJQ
“)BTIJ$PSQࣾͷϓϩμΫτ *(.1Λར༻͠ಉ͡άϧʔϓͷϝϯόʔͷՃ ΛΠϕϯτ௨͠ɺεΫϦϓτͳͲͷ ࣮ߦ͕Մೳ
4FSG TFSGNFNCFST MCEFWMPDBMBMJWFSPMFMC EOTEFWMPDBMBMJWFSPMFEOT EOTEFWMPDBMBMJWFSPMFEOT DBUBHFOUMPH BHFOU&WFOUNFNCFSKPJOEOTEFWMPDBMEOTSPMFEOT ಉ͡άϧʔϓʹॴଐ͍ͯ͠Δϗετ ৽͘͠ϝϯόʔ͕Ճ͞Εͨ
ࣗಈԽ4UFQ $IFG 7. TFSGNFNCFSKPJO -#ϨγϐΛྲྀ͢ -# 7.ͷىಈͱಉ࣌ʹ ɹDMPVEJOJUͰTFSGΠϯετʔϧ Ϩγϐ͕ྲྀΕͯ-#ͷΠϯετʔϧ͕ྃ
ࣗಈԽ4UFQ -# -# %/4 %/4 %/4 WJQ SJQ SJQ
ࣗಈԽ4UFQ $IFG 7. EOTϨγϐΛྲྀ͢ %/4 Ϩγϐ͕ྲྀΕͯEOTͷΠϯετʔϧ͕ྃ -# TFSGͷNFNCFSKPJO %/4αʔϏεͷ7*1ʹKPJOͨ͠%/4Λ ɹϝϯόʔՃ
7.ͷىಈͱಉ࣌ʹ ɹDMPVEJOJUͰTFSGΠϯετʔϧ TFSGNFNCFSKPJO
ࣗಈԽ4UFQ -# -# %/4 %/4 %/4 WJQ SJQ SJQ SJQ
SJQ SJQ
ࣗಈԽ4UFQ $IFG 7. EOTϨγϐΛྲྀ͢ %/4 Ϩγϐ͕ྲྀΕͯEOTͷΠϯετʔϧ͕ྃ -# TFSGͷNFNCFSKPJO %/4αʔϏεͷ7*1ʹKPJOͨ͠%/4Λ ɹϝϯόʔՃ
7.ͷىಈͱಉ࣌ʹ ɹDMPVEJOJUͰTFSGΠϯετʔϧ TFSGͷNFNCFSKPJO
/BNJOPSJ 4FSG -WTͷϥΠϒϥϦ αʔϏεͷϔϧενΣοΫͰ͖Δ ϝϯόʔͷՃআΛ4MBDL௨ #! /usr/bin/env
ruby require 'rubygems' require 'naminori' Naminori::Notifier::Configure.instance.set({ webhook_url: "https://hooks.slack.com/services/XXXXXX", channel: "#pyama", user: "#naminori" }) service_options = { vip:"192.168.77.9" } case when Naminori::Serf.role?("dns") Naminori::Service.event("dns", "lvs", service_options) when Naminori::Serf.role?("lb") Naminori::Lb.health_check("dns", "lvs",service_options) end
·ͱΊ
શମ·ͱΊ ϓϥΠϕʔτΫϥυΛαʔϏε͝ͱʹς φϯτཧ͠ӡ༻͍ͯ͠·͢ ߏཧࢹࣗಈԽ ख͕͔͔ؒΔ͜ͱɺཧ͕ඞཁͳ͜ͱࣗ ͨͪͰίʔυॻ͍ͯղܾ
αʔϏεΛҠߦ͢Δ͚ͩͰͳͯ͘ɺΫϥ υΒ͍͜͠ͱ࢝Ίͯ·͢
͜͜Ͱঁੑਞ͔Β ࣭͕ࡴ౸͢Δ
͝ਗ਼ௌ͋Γ͕ͱ͏ ͍͟͝·ͨ͠
Ҡߦࣄྫ
/ZBIͰಈ͍͍ͯΔαʔϏε ֤αʔϏεӶҙҾͬӽ͠த
None
4UFQ Ҡߦݩ -# 1SPYZ 8&# 5IF*OUFSOFU
4UFQ Ҡߦݩ -# 1SPYZ 8&# -# 1SPYZ 8&# 5IF*OUFSOFU
4UFQ Ҡߦݩ -# 1SPYZ 8&# -# 1SPYZ 8&# 5IF*OUFSOFU
ϜʔϜʔυϝΠϯ ΠϯϑϥΛͯ͢$IFGͰίʔυԽ յΕͨΒࣺͯͯɺ࡞Γ͢ -#ͷ%JSFDU3PVUJOHߏ͕ Ίͳ͍ʜ
%3ߏΊͳ͍ /PWB$PNQVUFεςʔτϑϧʹஅ͠ *OWBMJE1BDLFUΛഁغ͢Δ 5$1XBZϋϯυγΣΠΫཱ͕͠ͳ͘ͳͬͨ IPTU# IPTU" TZO TZO
BDL BDL σʔλ௨৴ͷ։࢝
DPNQVUF DPNQVUF %3ߏΊͳ͍ -# 1SPYZ TZO TZO TZO BDL TZO
BDLΛฦͨ͠ͷDPNQVUF DMJFOU
DPNQVUF DPNQVUF %3ߏΊͳ͍ -# 1SPYZ BDL DMJFOU
DPNQVUF DPNQVUF /"5ߏʹͨ͠ -# 1SPYZ TZO TZO TZO BDL DMJFOU
ϜʔϜʔυϝΠϯҠߦࣄྫ·ͱΊ Πϯϑϥͯ͢$IFGͰίʔυԽ 7.ͷσʔλͯ͢$PNQVUF OPEF ཧϗετ ͷϩʔΧϧ σΟεΫͷͨΊɺյΕͨΒ࡞Γͳ͓ ͢
-#ͷ%3ߏΊͳ͍