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
売上と開発環境を同時に改善するためにPerl Webアプリケーションをどのようにリプレイスするか
Search
Masashi-Sutou
March 19, 2023
Technology
1.3k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
売上と開発環境を同時に改善するためにPerl Webアプリケーションをどのようにリプレイスするか
YAPC::Kyoto 2023 try/catch on 2023/3/19
Masashi-Sutou
March 19, 2023
More Decks by Masashi-Sutou
See All by Masashi-Sutou
今年やったこと_20年以上続くWebサービスのリプレイス_書いたコード_私がモダンかもと思うPerl
masashi_sutou
0
1.7k
リッチなポップアップ画面にはshowGeneralDialogが便利だった
masashi_sutou
4
3.8k
iOSでグラフを描くために必要な知識
masashi_sutou
5
3.7k
UITableViewControllerの利点を最大限に活かす使い方 - コードでAutoLayoutを記述する場合 -
masashi_sutou
3
3.5k
制約の優先度 - UITableViewCellのレイアウトを例に考える
masashi_sutou
0
1.2k
「文化を調和させる」 をやってみる Try “Blending Culture”
masashi_sutou
3
580
初めてのiOSアプリ開発 ースマホアプリ開発未経験のSEが1人でiOSアプリを開発するまでー
masashi_sutou
0
440
GitHubで社内学習環境を作る!!
masashi_sutou
2
2.8k
Git, GitHubのチュートリアル
masashi_sutou
0
1.3k
Other Decks in Technology
See All in Technology
分析AIエージェントを育てる、動く環境を育てる
codatum
1
1k
10年後、Engineering 行為を剥奪されるとして、わたしたちは、どう、何を創ればいいだろうか。 / If Engineering Is Taken Away in 10 Years, How and What Should We Create?
bitkey
PRO
1
140
サブエージェントと Claude Mods で作る独自 Advisor ツールの話
kenichiodo
1
120
OR学会2026年秋期大会_機械学習と数理最適化の融合による、配合レシピ最適化システム開発事例
brainpadpr
0
140
遠藤な_めぐろLT #38 「社内のAI活用推進」@麻布台_20261009
endonanana
0
120
実践!Cloud Run ハンズオン!! / Cloud Run handson
y0hgi
1
250
"優秀な誰か"の下位互換にならないために
yut0naga1_fa
1
1.8k
継続的なAIコスト最適化
bgpat
1
290
AI駆動開発の時代になったのでトヨタ生産方式から見直す
terurou
7
5.9k
AIにシークレットを見せない、WSL2で安全な開発環境
yazm
0
120
FOSS4Gを活用した自治体業務DXの試み
470715
0
150
その Valkey 使いこなしていますか?
onk
PRO
1
240
Featured
See All Featured
AI Search: Where Are We & What Can We Do About It?
aleyda
0
8.1k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.4k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
280
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.5k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.7k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
300
Navigating Weather and Climate Data
rabernat
0
550
The Spectacular Lies of Maps
axbom
PRO
1
1.1k
First, design no harm
axbom
PRO
2
1.3k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.6k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
550
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Transcript
売上と開発環境を 同時に改善するために Perl Webアプリケーションを どのようにリプレイスするか YAPC::Kyoto 2023 try/catch on 2023/3/19
1 1
自己紹介 須藤将史(masashi-sutou) @kurotyann9696 に20年入社、22年5月から取締役CTO Perl歴は約1年、以前はモバイルアプリの開発担当 先月、第一子が産まれたのでオンラインでYAPC初参加 バーチャル リアル 2 2
会社と事業の紹介 SNS/マッチング/ライブ配信の を運営 YYCは2000年開始で当初はライブドアやLINEが運営 現在は親会社から22年5月に独立して新たなスタート エンジニアは6名と業務委託5名の11名(会社は40名ほど) 3 3
Web/iOS/Androidでサービスを展開 iOSとAndroidはFlutterで開発 インフラはAWSで構築してTerraformで管理 今日はWebとServerをどのようにリプレイスしてるか話す 4 4
段階的なリプレイスを実施中 5 5
リプレイスの背景とYYCに求められること 成長の余地がまだあると経営判断している 施策検証や機能追加を速度を落とさず継続したい 開発の速度や手段の妨げになる負債を減らしたい 6 6
要は、売上と開発環境を同時に改善したい 7 7
どのような手段がありえるのか 2022年4月に検討を開始した 8 8
4月時点のCTO(自分)の状況と考え Perlは未経験でした CTO就任前は別事業の担当でYYCの理解が不十分な状態 そこで2つの調査から開始 1. 他社のPerlの改善事例を調べる 2. YYCのWebとServerの技術課題を調べる 9 9
事例の分類 1. リアーキテクチャ系 アーキテクチャの構成を改善する事例 2. リプレイス系 構成だけでなく別言語に移行する事例 3. リファクタリング系 仕様や振る舞いをあまり変えずに改善する事例
10 10
リアーキテクチャ系 livedoor Blog 本当にあったレガシーな話 YAPC::Asia Tokyo 2013 http://yapcasia.org/2013/talk/show/b262abd0-c77c-11e2-be2e- 7ec06aeab6a4 未だ現役なPerl5.8
& MySQL4.0とどう戦うか? LINE DEVELOPER DAY 2019 https://logmi.jp/tech/articles/322236 11 11
リプレイス系 LINEポイントクラブ 8年続くPerlプロダクトをKotlinに書き換えた話 https://linedevday.linecorp.com/2021/ja/sessions/157/ https://logmi.jp/tech/articles/326685 12 12
リファクタリング系 その1 ぼくらの甲子園!ポケット - 面白法人カヤック 6年続いているサービスのPerlのバージョンを5.16か ら5.30へと今にもアップデートさせようとしている https://techblog.kayac.com/koshien-pocket-perl-5.16-to-5.30 はてなブログ はてなブログPerl
5.28.1化への道 https://developer.hatenastaff.com/entry/2018/12/22/173000 13 13
リファクタリング系 その2 ECナビ - CARTA HOLDINGS (元VOYAGE GROUP) 動的解析を利用し、実働6日でレガシーコードを1/3削 った話(Perl編)
https://techblog.cartaholdings.co.jp/entry/2020/05/07/120000 『事業をエンジニアリングする技術者たち − フルサイクル開発者がつ くるCARTAの現場』ラムダノート 2022/8/8 これを知ったのが今年(自分の調査が甘かった ) 14 14
YYCのWebとServerの技術課題 Perl/フレームワーク/ミドルウェアの多くがEOL WebとServerが密結合でAPI駆動で開発しづらい 静的解析のサポートが無くレビューコストが高い cpanfileがなくモジュールの追加や更新が面倒 一部のテストが動作していない 15 15
Perlは技術課題なのか Perlは年々、開発者や手段(SDKなど)が減っているの は事実で課題ではある しかし、言語を課題にするとPerlをゼロに近づけないと 課題が解決しないことになる まずPerlで解決が難しい課題を見つけてから、その後に 手段を考えることにした 16 16
調査結果から段階的なリプレイスへ 似た課題を持つ他社は数年かけて改善、苦労してる リアーキテクチャや別言語の移行は成果がいつ得られる か予想が難しかった Perlの後方互換性を活かせば使えるコードを残して検証 や後戻りがしやすい 計画中の施策を止め、チームを改善に集中させる仕組み が整ってなかった 17 17
モダンなPerlで新環境(v2)を用意して 段階的に新環境へリプレイスできる 仕組みをCTO室がつくることにした 18 18
Strangler (Fig) Applications 新しいコードで古いコードを包んで徐々に新しいコード に置き換える手法 ロードバランサ(ALB)で画面パスごとに段階的に画面 や機能をリプレイス YYCではDBへの副作用がない、データの参照しかない画 面からリプレイスを試みました https://martinfowler.com/bliki/StranglerFigApplication.html
19 19
新しいコードで古いコードを包む 20 20
古いコード(v1) ≒ O/Rマッパーは活かす 21 21
ロードバランサ(ALB)で段階的にリプレイス https://paulhammant.com/2013/07/14/legacy-application- strangulation-case-studies/ 22 22
DBは共通でリプレイスしない 23 23
DBは共通でリプレイスしない 24 24
ゴールは全コードのリプレイスではない リプレイスを理由にビジネスは止められない v1のリファクタリングで改善できる課題もある リプレイスは将来の課題解決の手段を増やすため v1とv2の両方でプロダクトに何が必要で不要か見極める 25 25
現状のv1とv2 - ソフト面 26 26
git-of-theseus - 2012年 ~ 現在 27 27
1年以内のコードが大きく変化 28 28
コードの新陳代謝や減価償却 v1は2012年のコードが10年で半分になる速度で減少 去年は直近2年分のコードの割合が大きく変化 新機能の追加、不要コードや不要機能の廃止 去年のコードが全体の2割ほどまで増加した 価値あるコードとそうでないコードの整理が課題 29 29
最後に サービスの施策と運営を止めずに開発環境を改善したい リプレイスは新環境で段階的に後戻り出来る構成にした 今後の課題は... v1の不要なコードや機能をどう効率よく消すか v1とv2の認知負荷を抑えてどうアウトプットを出すか みなさんならどんな手を打ちますか? 30 30
続きはカジュアル面談で! 31 31