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
2014-06-11_gotanda.pm
Search
SUZUKI Masashi
June 11, 2014
Technology
1
2.1k
2014-06-11_gotanda.pm
とある企業のPerlモジュール管理の歴史
SUZUKI Masashi
June 11, 2014
Tweet
Share
More Decks by SUZUKI Masashi
See All by SUZUKI Masashi
2025-09-25 SRETT #13 ConftestによるTerraformのPolicy as Codeを試してみる
masasuzu
0
150
2025-09-19 クラウドにおけるシークレット管理
masasuzu
0
110
2025-08-05 Google Cloud Next Tokyo 2025 Cloud RunとCloud SQLの接続方式と事例
masasuzu
0
31
2025-06-20 PrivateLinkがNLBなしで作れるようになり便利になった
masasuzu
2
450
2025-01-31 吉祥寺.pm 37 初めての海外カンファレンス
masasuzu
0
540
2025-01-24-SRETT11-OpenTofuについてそろそろ調べてみるか
masasuzu
0
1.6k
2024-03-29 SRETT9 Cloud SQLの可用性について
masasuzu
0
520
2023-12-18 SRETT8 Terraform使いがPulumiに入門する
masasuzu
0
2.5k
2023-12-01 吉祥寺.pm ベストプラクティスと組織とIaC
masasuzu
1
1.7k
Other Decks in Technology
See All in Technology
ストレージエンジニアの仕事と、近年の計算機について / 第58回 情報科学若手の会
pfn
PRO
4
890
From Natural Language to K8s Operations: The MCP Architecture and Practice of kubectl-ai
appleboy
0
350
IBC 2025 動画技術関連レポート / IBC 2025 Report
cyberagentdevelopers
PRO
2
220
20251024_TROCCO/COMETAアップデート紹介といくつかデモもやります!_#p_UG 東京:データ活用が進む組織の作り方
soysoysoyb
0
130
パフォーマンスチューニングのために普段からできること/Performance Tuning: Daily Practices
fujiwara3
2
150
AWS re:Invent 2025事前勉強会資料 / AWS re:Invent 2025 pre study meetup
kinunori
0
790
AIエージェントによる業務効率化への飽くなき挑戦-AWS上の実開発事例から学んだ効果、現実そしてギャップ-
nasuvitz
5
1.4k
Observability — Extending Into Incident Response
nari_ex
1
580
プレイドのユニークな技術とインターンのリアル
plaidtech
PRO
1
490
GraphRAG グラフDBを使ったLLM生成(自作漫画DBを用いた具体例を用いて)
seaturt1e
1
160
スタートアップの現場で実践しているテストマネジメント #jasst_kyushu
makky_tyuyan
0
140
GPUをつかってベクトル検索を扱う手法のお話し~NVIDIA cuVSとCAGRA~
fshuhe
0
220
Featured
See All Featured
It's Worth the Effort
3n
187
28k
Learning to Love Humans: Emotional Interface Design
aarron
274
41k
Raft: Consensus for Rubyists
vanstee
140
7.2k
Unsuck your backbone
ammeep
671
58k
Designing Experiences People Love
moore
142
24k
The Power of CSS Pseudo Elements
geoffreycrofte
80
6k
Large-scale JavaScript Application Architecture
addyosmani
514
110k
Writing Fast Ruby
sferik
630
62k
Music & Morning Musume
bryan
46
6.9k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.6k
Rebuilding a faster, lazier Slack
samanthasiow
84
9.2k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
Transcript
とある企業のPerl もじゅーる管理 すずきまさし / @masasuz 1
おまえだれよ すずきまさし / @masasuz 五反田の辺りにある中小web企業 6月1日で5年目らしい アプリケーションとインフラの中間エン ジニア(最近アプリよりに戻された) zsh /
perl / mysql / Ubuntu / Debian 2
とある企業のPerl もじゅーるかんり 3
注意 3年ちょい前に入社したのでそれ以前の ことは歴史書(git)からひもといている ので正確で無いです。 git (+ git-svn)の歴史に刻まれていな い、先史時代のことは分かりません。 4
おおまかな歴史 先史時代 丸ごとrsync期 Debian Package期 carton期 5
先史時代 知りません 2006年より前はさかのぼれません FreeBSDが使われていたようです 6
丸ごとrsync期 Debian 32bit Apache + mod_perl + Sledge system perl
Archer 7
丸ごとrsync期 cont.. CPANプロジェクトをrsync バイナリ含む 8
プロジェクト数が少ない 全て同じOS/arch 全サーバで同じモジュールを使える! 9
問題 ディストリビューションのメンテ切れ archの差異 64bit バージョン管理が煩雑 10
Debian Package期 Debian 32/64bit混在 Apache + mod_perl + (Sledge or
Splite) cpan-packagerでCPANモジュールをdeb化 arch / dist 毎に作る Archer => Watch2::Deployer 11
apt-localとapt-proxyサーバ xx-cpan-perlというパッケージの依存 パッケージに全perl deb packageを突っ 込む deploy時にapt-localのインデックス生 成 各サーバにssh =>
aptitude update && aptitude safe-upgrade 12
複数 dist/arch混在環境 バージョン管理ができるように 全プロジェクト同じモジュール!? 13
問題 カジュアルにパッケージ足しすぎ。カオス 依存関係地獄 全プロジェクトに影響 プロジェクト数が増えてきた 簡単にバージョン上げられない 古のモジュールがはびこることに。。 14
問題 cont.. OS自動インストール時に全モジュールを インストールしてるのでOSインストール に超時間かかる 全サーバに対してデプロイするので、台 数に比例してデプロイに時間がかかる system のdeb packageとかぶる
バージョンにepochを付与して回避(ダ ウングレード!) 15
問題 cont.. ディストリビューションをアップデー トするたびに検証作業が必要。。 特定のプロジェクトで新しいバージョ ンを使うことができない プロジェクト同居の可能性があるの でextlibに突っ込めない 16
carton期 Ubuntu Server 64bit carton (Upstart +) Server::Starter + Starlet
+ Amon2 OrePAN2::Server not system perl 独自ビルドしたdeb package 17
cpanfile(.snapshot)に依存モジュールを記 述 carton install —deployment プロジェクト毎に独自のモジュールが使える 社内モジュールはOrePAN2に上げる system perlに依存しない dist変えやすい
18
おおまかな歴史 先史時代 丸ごとrsync期 Debian Package期 carton期 <= イマココ 19
正しい歴史 先史時代 丸ごとrsync期 丸ごと(ry + Debian Package期 丸(ry+Deb(ry or carton期<=イマココ
20
CPANプロジェクトは最後の最後まで消 えなかった 更新が速い(設定系)モジュールが残り 続けた 社内モジュール置き場になった。 21
新しいプロジェクトじゃないとcarton 化しにくい Apache + mod_perlからの移行が。。 新規プロジェクトなら楽なので、そ こから 古(いにしえ)のモジュールの関係 というか実際依存関係ぶっ壊れてる 22
とはいえ、 どのスキームも当時のコンテキストに はあっていた。 レガシーなスキームが悪いのでは無く、 コンテキストが変わってしまったのに、 レガシーなスキームを使い続けるのが 悪。 23
なので、 すぐには全部変えられないけど、少し ずつ、時代に合わないものを消して行っ ている途中。 大事なのは、問題は問題と認識して解 決の方向に進めること。 エンジニアだもの文句じゃ無く技術で 解決しよう。 24
おしまい 25