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
稼働中の Web サービスの perl のバージョンを上げていく
Search
astj
PRO
July 01, 2017
Technology
0
7.3k
稼働中の Web サービスの perl のバージョンを上げていく
YAPC::Fukuoka 2017 HAKATA
astj
PRO
July 01, 2017
Tweet
Share
More Decks by astj
See All by astj
ISUCON14公式反省会LT: 社内ISUCONの話
astj
PRO
0
1
Mackerel の時系列データベースにおける Redis Cluster の利用と Amazon ElastiCache への移行について / AWS Purpose-Built Databases Week
astj
PRO
3
5.6k
Mackerel のコンテナ監視の近況 / Mackerel Meetup #13
astj
PRO
1
2.2k
Observability: Mackerel による観測と Mackerel の観測 / NoOps Meetup Tokyo #8
astj
PRO
2
2k
サービス開発と健全なプロダクトメンテナンスを開発チームで持続的に取り組む / Developers Boost KANSAI
astj
PRO
1
1.3k
Mackerel and Stripe / Qiita x Stripe Meetup
astj
PRO
0
5.3k
Mackerel をオンプレミスから AWS に移してからの1年半を振り返る / Hatena Engineer Seminar #11
astj
PRO
0
1k
AWS で実現した Mackerel 時系列データ1分粒度長期保存の裏側 / Mackerel Meetup #11 Tokyo
astj
PRO
6
29k
Perl 6 で Web Application Framework をつくる
astj
PRO
0
4.4k
Other Decks in Technology
See All in Technology
0→1事業こそPMは営業すべし / pmconf #落選お披露目 / PM should do sales in zero to one
roki_n_
PRO
1
1.3k
2025年のARグラスの潮流
kotauchisunsun
0
790
なぜfreeeはハブ・アンド・スポーク型の データメッシュアーキテクチャにチャレンジするのか?
shinichiro_joya
2
440
The future we create with our own MVV
matsukurou
0
2k
生成AI × 旅行 LLMを活用した旅行プラン生成・チャットボット
kominet_ava
0
150
2024年活動報告会(人材育成推進WG・ビジネスサブWG) / 20250114-OIDF-J-EduWG-BizSWG
oidfj
0
210
いま現場PMのあなたが、 経営と向き合うPMになるために 必要なこと、腹をくくること
hiro93n
9
7.5k
Alignment and Autonomy in Cybozu - 300人の開発組織でアラインメントと自律性を両立させるアジャイルな組織運営 / RSGT2025
ama_ch
1
2.4k
Formal Development of Operating Systems in Rust
riru
1
420
AWS Community Builderのススメ - みんなもCommunity Builderに応募しよう! -
smt7174
0
170
JuliaTokaiとJuliaLangJaの紹介 for NGK2025S
antimon2
1
110
embedパッケージを深掘りする / Deep Dive into embed Package in Go
task4233
1
210
Featured
See All Featured
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
132
33k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Scaling GitHub
holman
459
140k
Typedesign – Prime Four
hannesfritz
40
2.5k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
44
9.4k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
2k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.4k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
860
jQuery: Nuts, Bolts and Bling
dougneiner
62
7.6k
Designing Experiences People Love
moore
139
23k
Being A Developer After 40
akosma
89
590k
Transcript
YAPC::Fukuoka 2017 HAKATA 2017/07/01 Քಇதͷ8FCαʔϏεͷ 1FSMॲཧܥ όʔδϣϯΞοϓΛ ͍ͯ͘͠
ASTJ github: @astj Twitter: @ast_j hatena: id:astj CPAN: ASTJ
None
• 2014/04 ~ Hatena • ~2016/07 ͯͳϒοΫϚʔΫ etc. (Perl) •
2016/08~ Mackerel (Scala, Golang)
None
QFSMͷόʔδϣϯ
όʔδϣϯ্͛ͯ·͔͢ʁ
None
Կނ্͛Δͷ͔
ηΩϡϦςΟ
#VHpY
ύϑΥʔϚϯε
৽ػೳ
ͳ্ͥ͛ͳ͍ͷ͔
ಈ͍ͯΔͦͬͱ͓ͯ͘͠
ڍಈ͕มΘΔ
ݕূ͕ʢݟ߹Θʣͳ͍
ͦͦ͘อक͠ͳ͍ ϓϩμΫτ
Ϟδϡʔϧ͕ೖΒͳ͍ʂ
श׳͕ͳ͍
None
ʜʜ͕ͯ͜͏ͳΔ
όʔδϣϯݻఆͯ͠Δ ͔͠͠ݹ͗ͯ͢$1"/͔Βফ͑ͨ CBDLQBO͔ΒೖΕΔʂʂ
์ஔͯ͠Δͱ9ޙʹۙدΓ͕͍ͨ աڈͷҨ͕͢ΔͷͰผʹ࠷৽ ʹڵຯແͯ͘΄Ͳ΄Ͳʹ৽͍͠ ঢ়ଶΛอͬͨํ͕ϔϧγʔ
˞ݸਓͷݟղͰ͢
None
ࠓͷΰʔϧ
˚ʮॲཧܥΛ্͛Δʯ ˓ʮॲཧܥΛ্͛ΒΕΔΑ͏ʹ͢Δʯ ˕ʮॲཧܥΛ্͛ଓ͚ΒΕΔΑ͏ʹ͢Δʯ
࣋ଓతͳऔΓΈͱͯ͠ॲཧ ܥͷόʔδϣϯΛ্͍͛ͯ͘
ʢ͋Δ͍ɺ্͛Δඞཁ͕ ແ͍ͱஅ͢Δʣ
None
QFSMͷόʔδϣϯΛ ্͛Δ͖ͳͷ͔ʁ
.BKPS .JOPS 1BUDI
.BKPS .JOPS 1BUDI ϝδϟʔόʔδϣϯ
.BKPS .JOPS 1BUDI όΠφϦޓ͕͋Δ #VHpY TFDVSJUZQBUDI ύονόʔδϣϯ
.BKPS .JOPS 1BUDI ϚΠφʔόʔδϣϯ όΠφϦޓ͕ͳ͍ ৽ػೳɺඇޓมߋ ۮ͕҆ఆ൛ɺح͕։ൃ൛
ϝδϟʔ ϚΠφʔ ύον ۤ࿑ ·͋·͋ ͦΜͳʹ རӹ ͍Ζ͍Ζ ·͋·͋ σάϨ
ͳ͍ͱݴ͑ͳ͍ ͦΜͳʹ ଛӹ ເ ͬͨΒ͑͑Μ
ϝδϟʔ ϚΠφʔ ύον ۤ࿑ ·͋·͋ ͦΜͳʹ རӹ ͍Ζ͍Ζ ·͋·͋ σάϨ
ͳ͍ͱݴ͑ͳ͍ ͦΜͳʹ ଛӹ ເ ͬͨΒ͑͑Μ
ओʹϚΠφʔόʔδϣϯͷ Λ͠·͢
None
αϙʔτϙϦγʔ
8FPGpDJBMMZTVQQPSU UIFUXPNPTUSFDFOU TUBCMFSFMFBTFTFSJFT http://perldoc.perl.org/perlpolicy.html#MAINTENANCE-AND-SUPPORT
$SJUJDBM4FDVSJUZQBUDI
5PUIFCFTUPGPVSBCJMJUZ XFXJMM QSPWJEFDSJUJDBMTFDVSJUZQBUDIFT SFMFBTFTGPSBOZNBKPSWFSTJPOPG 1FSMXIPTFYSFMFBTFXBTXJUIJO UIFQBTUUISFFZFBST http://perldoc.perl.org/perlpolicy.html#MAINTENANCE-AND-SUPPORT
ϦϦʔεαΠΫϧ
3FDFOUMZ UIFQMBOIBTCFFOUPSFMFBTFB OFXWFSTJPOPG1FSMSPVHIMZFWFSZ"QSJM CVU HFUUJOHUIFSFMFBTFSJHIUJTNPSFJNQPSUBOU UIBOTUJDLJOHSJHJEMZUPBDBMFOEBSEBUF TP UIFSFMFBTFEBUFJTTPNFXIBUqFYJCMF http://perldoc.perl.org/perlfaq1.html#How-often-are-new-versions-of-Perl-released%3f
࠷৽ͷQFSMͰϦϦʔεͨ͠αʔ ϏεͰαϙʔτ֎ʹͳΔ
None
*Tαϙʔτ֎ࢮ
͖ͪΜͱॲཧܥͱϞδϡʔϧͷ όʔδϣϯϩοΫΛ͍ͯ͠Ε গʑݹ͍͘Β͍ͳΒͳ͘ಈ͘
1FSMޙํޓΛ ൺֱతେࣄʹ͢Δݴޠ
ʢ͍Ζ͍Ζͳࣄݱ࣮ʣ
None
ʮ࠷৽ͷQFSMʹڵຯແ ͍͚ͲηΩϡϦςΟύον CVHpYͷԸܙಘ͍ͨʯ
None
ʮޙݟࣺ͍͍ͯͯͳΒ ϚΠφʔͦͷ··Ͱʯ ʮܦͬͯ͏͍ͦ͏ ͳΒϚΠφʔ্͍͛ͨʯ ʮύονόʔδϣϯ ͬ͞ͱ্͛Α͏ʯ
None
ͦͷϓϩδΣΫτͷQFSM ্͛ΒΕ·͔͢ʁ
None
Ұൠతͳ
ͲͷόʔδϣϯͷϞδϡʔϧ ೖͬͯΔ͔͔Γ·͔͢ QFSMͷόʔδϣϯ্͛ͨ αʔό༻ҙͰ͖·͔͢ ςετ͋Γ·͔͢ ಈ࡞֬ೝڥ͋Γ·͔͢
None
όʔδϣϯͷ͕ࠩେ͖͘ ͳΔ΄Ͳڍಈͷࠩ૿͑Δ
(FOFSBMMZ CBDLXBSEJODPNQBUJCMFDIBOHFTXJMM IBWFEFQSFDBUJPOXBSOJOHTGPSUXPSFMFBTF DZDMFTCFGPSFCFJOHSFNPWFE CVUNBZCF SFNPWFEBGUFSKVTUPOFDZDMFJGUIFSJTLTFFNT RVJUFMPXPSUIFCFOFpUTRVJUFIJHI http://perldoc.perl.org/perlpolicy.html#Terminology %FQSFDBUFE
&YQFSJNFOUBM
ͨͱ͑autoderef https://metacpan.org/pod/release/RJBS/perl-5.24.0/pod/perldelta.pod#The-autoderef- feature-has-been-removed wͰಋೖ wͰ&YQFSJNFOUBM8BSOJOH wͰഇࢭ
େδϟϯϓ͍ͨΜ
ʢେδϟϯϓͷ͠·ͤΜʣ ͪΐͬͱ্͍ͣͭ͛ͯ͘ͱ͔ ͦΕͱΤΠϠοͱΔͱ͔
None
$1"/Ϟδϡʔϧ
$1"/Ϟδϡʔϧͷ࠷৽൛ ʢ͍͍ͩͨʣಈͣ͘
$1"/Ϟδϡʔϧͷ࠷৽൛ ʢ͍͍ͩͨʣಈͣ͘
https://metacpan.org/changes/release/RJBS/perl-5.24.0#Known-Problems ͷ94
$PSP https://rt.cpan.org/Public/Dist/Display.html?Name=Coro
$PSP
ʢͪΖΜɺ94ʣ
$1"/5FTUFST.BUSJY http://matrix.cpantesters.org
QFSMͷόʔδϣϯ্͛ͯΈΔ DBSUPOJOTUBMM $1"/5FTUFSTݟΔ
None
σʔλޓ
4UPSBCMFGSFF[F
"MXBZTVTFnstoreBOE nfreezeJOTUFBEPGstore BOEfreeze http://blog.livedoor.jp/dankogai/archives/50490051.html
ଞͷϞδϡʔϧܦ༝Ͱ ҉ʹ͍ͬͯΔ͔ʁ
grep Storable cpanfile.snapshot
None
࣮
ԿΛߋ৽͢Δͷ͔
w QFSMॲཧܥ w $1"/Ϟδϡʔϧ w MPDBM
None
$1"/Ϟδϡʔϧ
DQBOpMFTOBQTIPU
όʔδϣϯݻఆศར
์͓ͬͯ͘ͱݹͼ͍ͯ͘
ॲཧܥͷόʔδϣϯΛ্͛Δ ͨΊʹTOBQTIPUΛߋ৽ ͢Δ͜ͱ͋Δ
ͦͷϓϩδΣΫτ DQBOpMFTOBQTIPUΛ ͖ͪΜͱߋ৽Ͱ͖·͔͢
w खݩͰஸೡʹߋ৽͢Δ w EPDLFSCVJMEͯͭ͘͠Δ w $*্Ͱߋ৽͢Δ w ଞԿ͔͔͍͍ͬ͜ํ๏ʁ
None
MPDBM
όΠφϦޓ͕ͳ͍ͱ DBSUPO@JOTUBMM@QBUI ࠶ߏங
σϓϩΠͷੈ͝ͱʹִ ͞Ε͍ͯΕؾʹͳΒͳ͍ ͨͱ͑EPDLFS
σϓϩΠੈؒͰڞ༗ͯ͠ ΔͱࡦΛߨ͡Δඞཁ͕͋Δ
app !"" current -> ./releases/201706280249 !"" releases # !"" 201706221234
# !"" 201706241722 # !"" 201706271423 # $"" 201706280249 $"" shared $"" local
ࡦ
ʮҰαʔϏεΞτͯ͠ MPDBMফ͔ͯ͠ΒDBSUPO JOTUBMMͯ͠αʔϏεΠϯʯ
ʮҰ࣌తʹ 1&3-@$"350/@1"5)Λ ผͷσΟϨΫτϦʹม͑Δʯ
ʮ͍ͭͰʹΞϓϦέʔγϣϯ αʔό͝ͱೖΕସ͑Δʯ
None
Ͳ͜Λߋ৽͢Δͷ͔
ڥ
ຊ൪ڥ ։ൃڥ TUBHJOHFUD $*ڥ ։ൃऀͷखݩڥ
ຊ൪ڥ ։ൃڥ TUBHJOHFUD $*ڥ ։ൃऀͷखݩڥ
Ε͕ͪ
ʮ࣮+FOLJOT্ͷ PQUQFSMYYZCJOͬͯΔʯ ʮଞͷνʔϜͱڞ༻ͷ+FOLJOTͳͷͰ ͖ʹϝϯςφϯεͰ͖ͳ͍ʯ
None
ϙϦγʔ
Ͱ͖Δ͚ͩ ϏοάόϯϦϦʔε͠ͳ͍
QFSM͚ͩ όʔδϣϯΛ্͛Δ
TZTUFNQFSM YCVJME
$1"/Ϟδϡʔϧ ઌʹ্͓͛ͯ͘
ʢΉ͠Ζ$1"/Ϟδϡʔϧͷ ํ͕͏͔ͬΓڍಈมΘΓ͕ͪʣ %#%NZTRM! $BDIF.FNDBDIFE'BTU ! /083&7&35&%"4
ίʔυͷେ͖͍มߋ ઌʹग़͓ͯ͘͠
খ͍͞มߋΛ ෳճग़͍ͯ͘͠
None
ࣄྫ
None
ͯͳΞϯςφ ͯͳμΠΞϦʔ ͯͳϒοΫϚʔΫϦχϡʔΞϧ ͯͳϒϩά ྠ ൈਮ
None
େνΣοΧʔ https://daichkr.hatelabo.jp
ʜʜͷϑϩϯτ෦
ΈΜͳͰͭ͘Δ344Ϧʔμʔ
ͯͳͷ࣮ݧతαʔϏε ʮͯϥϘʯ
QFSM ઍߦ .Z42- 344पΓͷίΞผγεςϜ
ϦϦʔε όʔδϣϯΞοϓ όʔδϣϯΞοϓ
ࣾ࠷
Εͦ͏ͳͱ͜Ζ͔Β ݟ֫ಘ ࣾܒ ࠷͕͖
ճ
ܦҢ
None
ຊ൪$*PQUQFSMCJO खݩQMFOW
·ͣखݩͰࢼ͢
ʹΓସ͑ ςετΛ௨͢ ಈ࡞֬ೝ͢Δ
͍͚ͦ͏
$*
ຊ൪$*PQUQFSMCJO खݩQMFOW ࠶ܝ
$*αʔόʹΛೖΕΔ PQUQFSMCJO
$*XPSLTQBDF
NBTUFSϒϥϯν ϒϥϯν
શϒϥϯνͷςετ͕ಉ͡ XPSLTQBDFΛڞ༻
$*XPSLTQBDF
NBTUFSͰͰϏϧυ ϒϥϯνͰ NBTUFSͰ ಉ͡σΟϨΫτϦͰ
MPDBMڞ༻
ʜʜ
ʜʜ
ͷϒϥϯνͰMPDBMҎ֎Λ͏ NBTUFSʹϚʔδͨ͠ΒMPDBMΛ ༻ͷۭؒͱͯ͠͏
$1"/Ϟδϡʔϧ
$ grep '\bCoro\b' cpanfile.snapshot $
$ grep '\bStorable\b' cpanfile.snapshot DBI::Gofer::Serializer::Storable 0.015586 Devel::Cover::DB::IO::Storable 1.25 Storable 0
Storable 2.17 Storable 2.04
freezestoreͳ͍ͷΛݟͨ
ςετࣦഊܯࠂΛͭͿ͢
$1"/Ϟδϡʔϧ͕ݹͯ͘ ೖΒͳ͍
์͓ͬͯ͘ͱݹͼ͍ͯ͘ ࠶ܝ
ಈ࡞֬ೝ
ͷΓସ͑ͷ ॠؒʹԿ͕ى͜Δ͔ʁ
ͨͱ͑ηογϣϯͷ γϦΞϥΠζ͕յΕͳ͍͔ʁ 4UPSBCMFͱ͔Ͱ
ϦϦʔε࡞ۀ
TUBHJOHμϯλΠϜ NBTUFSαʔόʔೖΕସ͑
͕ͭͭͳ͘ޭ
None
ڭ܇
ҙ֎ͱΕͰ͖Δ MPDBMͷཧ͕໘ ҙ֎ͱͬͯຯ
MPDBM
ʜʜ ࠶ܝ
$ ls | grep local local/ local_5241/ local_520_safe/ खݩ
खݩ DQBOpMFTOBQTIPUΛߋ৽͢ΔͨΊʹ MPDBMΛϦωʔϜͯ͠ DBSUPOJOTUBMM
ʜ
None
ճ
Խʹຬͯ͠ ύονόʔδϣϯ্͍͛ͯͳ͔ͬͨ
ܦҢ
ܦҢ
ճͷڭ܇Λ׆͔͢
+FOLJOTXPSLTQBDFΛ ϒϥϯν͝ͱʹ͚Δ DQBOpMFTOBQTIPUΛ EPDLFSܦ༝Ͱߋ৽͢Δ ͍ͭͰʹखݩ EPDLFSͰಈ͘Α͏ʹ͢Δ
+FOLJOT .VMUJ#SBODI1MVHJO
EPDLFSCVJMEͰ DBSUPOJOTUBMM
+FOLJOTXPSLTQBDFΛ ϒϥϯν͝ͱʹ͚Δ DQBOpMFTOBQTIPUΛ EPDLFSܦ༝Ͱߋ৽͢Δ ͍ͭͰʹखݩ EPDLFSͰಈ͘Α͏ʹ͢Δ τϐοΫϒϥϯνͰ͚ͩ ͍Ζ͍ΖࢼͤΔ ϩʔΧϧͷ ϑΝΠϧγεςϜͷঢ়ଶΛ
ؾʹͤͣࢼͤΔ
τϐοΫ
CBSFXPSEpMFIBOEMFT NVMUJEJNFOTJPOBM ͰೖΒͳ͘ͳͬͨͷͰ όʔδϣϯΛ্͛ͨϞδϡʔϧ
@INCʹ.ͳ͘ͳͬͯ UUFTUQNಡΊͳ͘ͳͬͨ ͷͰ͢ http://d.hatena.ne.jp/charsbar/20170318/1489828167
ؾܰʹϞδϡʔϧͷόʔδϣϯ ্͛ͨΒ5FTUʹͳͬͯࠔ ࠓͷޕޙBLJZN͞ΜʹΑΔ 5FTUʹؔ͢ΔτʔΫ͕͋Γ·͢Ͷ
ಈ࡞֬ೝ
ϦϦʔε࡞ۀ
TUBHJOHμϯλΠϜ NBTUFSαʔόʔೖΕସ͑
͕ͭͭͳྃ͘
ҰόʔδϣϯΛ্͛ͨͷͰ ೋצॴ͕Θ͔Δ
None
ৼΓฦΓ
Ұ࣮͕͋Δͱೋָ ࠩΛখ͘͞อͭͷ͕େࣄ
ຊ൪αʔόʔͷߏஙɾೖΕସ͑Ͱ ΠϯϑϥνʔϜͱͷڠௐ Ͳ͏ͯ͠ൃੜ͢Δ ೋՄೳͳݶΓͪ͜ΒͰר͖औͬͯ ෛ୲ΛݮΒͨ͠
ຊ൪αʔόʔͷߏஙɾೖΕସ͑Ͱ ΠϯϑϥνʔϜͱͷڠௐ Ͳ͏ͯ͠ൃੜ͢Δ ίϯςφӡ༻ͳͲͰ͋Ε ಠཱͯ͠ೖΕସ͑Ͱ͖ͦ͏
None
ࣄྫͦͷ͋ͬͨΜ͚ͩͲ ר͖ר͖Ͱߦ͖·͢
ϦϦʔεલͷ৽αʔϏε ಉ͘͡ϑϩϯτ෦
@INCͳͲ͋Γอकత
ʢ͔݁͠͠ہ5FTUͰେมͳ ʹૺͬͨʣ
खݩҎ֎શͯίϯςφ ։ൃΤϯδχΞ͚ͩͰ όʔδϣϯ্͛ΒΕΔ
None
૯ׅ
͕ͻͱͭͷॲʁ ϝϯς͠ଓ͚ΔαʔϏεͷ QFSMόʔδϣϯ্͍͛ͨ
ࠩΛখͯ͘͞͠ؾܰʹߋ৽ Ͱ͖ΔΑ͏ʹ͍͖ͯ͠·͠ΐ͏ ҰΔͱצॴ͕͔ΔͷͰ ೋҠߦΓ͍͢Ͱ͢
͋Γ͕ͱ͏͍͟͝·ͨ͠