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
190
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
1.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
データ資産をシームレスに伝達するためのイベント駆動型アーキテクチャ
kakehashi
PRO
2
520
30分でわかる『アジャイルデータモデリング』
hanon52_
9
2.6k
2/18/25: Java meets AI: Build LLM-Powered Apps with LangChain4j
edeandrea
PRO
0
110
AndroidXR 開発ツールごとの できることできないこと
donabe3
0
130
モノレポ開発のエラー、誰が見る?Datadog で実現する適切なトリアージとエスカレーション
biwashi
6
800
現場の種を事業の芽にする - エンジニア主導のイノベーションを事業戦略に装着する方法 -
kzkmaeda
2
2k
Developers Summit 2025 浅野卓也(13-B-7 LegalOn Technologies)
legalontechnologies
PRO
0
660
抽象化をするということ - 具体と抽象の往復を身につける / Abstraction and concretization
soudai
4
730
Moved to https://speakerdeck.com/toshihue/presales-engineer-career-bridging-tech-biz-ja
toshihue
2
730
クラウドサービス事業者におけるOSS
tagomoris
1
450
現場で役立つAPIデザイン
nagix
33
12k
データマネジメントのトレードオフに立ち向かう
ikkimiyazaki
6
930
Featured
See All Featured
How to Ace a Technical Interview
jacobian
276
23k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
It's Worth the Effort
3n
184
28k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
193
16k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.2k
Testing 201, or: Great Expectations
jmmastey
42
7.2k
What's in a price? How to price your products and services
michaelherold
244
12k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
Optimising Largest Contentful Paint
csswizardry
34
3.1k
Unsuck your backbone
ammeep
669
57k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
27
1.6k
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όʔδϣϯ্͍͛ͨ
ࠩΛখͯ͘͞͠ؾܰʹߋ৽ Ͱ͖ΔΑ͏ʹ͍͖ͯ͠·͠ΐ͏ ҰΔͱצॴ͕͔ΔͷͰ ೋҠߦΓ͍͢Ͱ͢
͋Γ͕ͱ͏͍͟͝·ͨ͠