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
レガシーシステム・技術的負債とは何か Diverseの向き合い方
Search
SAMUKEI
November 22, 2018
Technology
2
2.1k
レガシーシステム・技術的負債とは何か Diverseの向き合い方
レガシーシステム・技術的負債の分類とDiverseがどう向き合っているか
SAMUKEI
November 22, 2018
Tweet
Share
More Decks by SAMUKEI
See All by SAMUKEI
PWAでここまでできる
samukei
26
17k
老舗マッチングサービスとの付き合い方
samukei
0
1.5k
Other Decks in Technology
See All in Technology
事業状況で変化する最適解。進化し続ける開発組織とアーキテクチャ
caddi_eng
1
5.1k
グローバルなコンパウンド戦略を支えるモジュラーモノリスとドメイン駆動設計
kawauso
3
6.7k
国産クラウドを支える設計とチームの変遷 “技術・組織・ミッション”
kazeburo
4
6.6k
個人から巡るAI疲れと組織としてできること - AI疲れをふっとばせ。エンジニアのAI疲れ治療法 ショートセッション -
kikuchikakeru
4
1.8k
なぜブラウザで帳票を生成したいのか どのようにブラウザで帳票を生成するのか
yagisanreports
0
170
スタートアップの事業成長を支えるアーキテクチャとエンジニアリング
doragt
1
5.6k
SRE視点で振り返るメルカリのアーキテクチャ変遷と普遍的な考え
foostan
2
440
巨大モノリスのリプレイス──機能整理とハイブリッドアーキテクチャで挑んだ再構築戦略
zozotech
PRO
0
240
社内外から"使ってもらえる"データ基盤を支えるアーキテクチャの秘訣/登壇資料(飯塚 大地・高橋 一貴)
hacobu
PRO
0
4.8k
米軍Platform One / Black Pearlに学ぶ極限環境DevSecOps
jyoshise
2
520
AIを前提に、業務を”再構築”せよ IVRyの9ヶ月にわたる挑戦と未来の働き方 (BTCONJP2025)
yueda256
1
800
やり方は一つだけじゃない、正解だけを目指さず寄り道やその先まで自分流に楽しむ趣味プログラミングの探求 2025-11-15 YAPC::Fukuoka
sugyan
3
920
Featured
See All Featured
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
How GitHub (no longer) Works
holman
315
140k
Writing Fast Ruby
sferik
630
62k
Git: the NoSQL Database
bkeepers
PRO
432
66k
The Pragmatic Product Professional
lauravandoore
36
7k
KATA
mclloyd
PRO
32
15k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
118
20k
Designing for Performance
lara
610
69k
Reflections from 52 weeks, 52 projects
jeffersonlam
355
21k
The Language of Interfaces
destraynor
162
25k
Transcript
レガシーシステム 技術的負債 とは何か Diverseの関わり方
who? • さむけい(藤田 雄大) • 所属はDiverse Inc. / MAEMO LLC •
youbrideのサーバ・クライアントやってます • DroidKaigi 2019に登壇します!PWAの話します! https://droidkaigi.jp/2019/ • 会社でPodcast配信してます。聴いてください! https://podcast.diverse-inc.com/
オンライン カジュアル シリアス オフライン
レガシーシステム 技術的負債 に悩まされているという方
みなさん悩んでいますね!
では、 レガシーシステム 技術的負債 とはなんでしょうか?
レガシーシステムとは?(wikipedia引用) レガシーシステムとは、主にコンピュータの分野で、代替す べき新しい技術などのために古くなったコンピュータのシス テムや技術などのことである。そのようなデバイスをレガ シーデバイス、そのようなオペレーティングシステムを、レガ シーOSなどともいう。
技術的負債とは?(wikipedia引用) 技術的負債とは、行き当たりばったりなソフトウェアアーキ テクチャと、余裕のないソフトウェア開発が引き起こす結果 のことを指す新しい比喩である。「設計上の負債」とも言う。
ざっくり ・古いシステムなどレガシーシステム ・設計ミス or 設計のないソフトウェアを技術的負債 ということで、悪いっぽいですね。
本当にそうでしょうか?
古いシステムということは枯れている(安定している)というこ とではないの?
当時は設計が適切であっても時代の流れに取り残されたら 技術負債になるよね?
モヤモヤしてきましたか?
モヤモヤしてきましたね?
でも、 レガシーシステム 技術的負債 にはみなさん悩まされていますよね?
では、 レガシーシステム 技術的負債 を”課題”と捉えてみるとどうでしょうか?
みなさん”課題”を”解決”することは 好き(面白い)ですよね?
じゃあ、 レガシーシステム 技術的負債 という”課題”を”解決”することは、 面白いことじゃないですか!?
ということで、 Diverseがどのように レガシーシステム 技術的負債 という”課題”と向き合っているか を話します!
では、 Diverseにおける レガシーシステム 技術的負債 の”課題”を元に分類してみます
インフラ • オンプレミス • 2013年にリプレースしたままの環境(youbrideの例) ◦ ホスト環境のOSが古い ◦ 仮想環境のOSが古い ◦
仮想環境内のソフトウェアのバージョンが古い アプリケーション
インフラ アプリケーション • サーバサイドの言語がPerl • 開発キャパを超えた仕様変更による改修
分類ができましたね それぞれの課題の詳細とアプローチを考えます
• オンプレミス • 2013年にリプレースしたままの環境(youbrideの例) ◦ ホスト環境のOSが古い ◦ 仮想環境のOSが古い ◦ 仮想環境内のソフトウェアのバージョンが古い
インフラ アプリケーション
オンプレミスの課題 オンプレ = 悪ではありませんが、 • 即時のスケールアップが難しい • 開発環境の増設なども保守会社への問い合わせが必要 といった点がプロダクトの成長にネックになっています。
オンプレミスへのアプローチ 開発を円滑に進めるためにAWSなどのクラウドへの移行を進めています。 オンプレミス環境を一気に全部移行することは出来ません。 そのため、機能単位でクラウド環境に移行を計画しています。 現在は、STFからAWS S3に移行をしています。
• オンプレミス • 2013年にリプレースしたままの環境(youbrideの例) ◦ ホスト環境のOSが古い ◦ 仮想環境のOSが古い ◦ 仮想環境内のソフトウェアのバージョンが古い
インフラ アプリケーション
2013年のままの環境の課題 重大なセキュリティパッチのみ当てる運用になっていたため、 • 重大なセキュリティリスクはないがソフトウェアが構成が古い • なので、メジャーバージョンアップには設定ファイルのマイグレーションも必 要になる • 結果、アップデートが難しい という状況になっています。
2013年のままの環境へのアプローチ 社内の文化と体制に問題があると考え、 • 上長に現状の課題を認識してもらう • 認識してもらった上で、社内にSRE部隊を整備することに同意してもらう という、課題を解消するための組織作りを始めています。
• サーバサイドの言語がPerl • 開発キャパを超えた仕様変更による改修 インフラ アプリケーション
サーバサイドの言語がPerlの課題 Perlは年に1回アップデートされており、メンテナンスされています。 そのため、Perl = レガシーではないと個人的には考えています。 ただし、 • 言語のシェアが減っており、Perlでの求人活動はすごく難しい • 社内に第一言語がPerlの人が少なくなった
という課題を抱えています。
サーバサイドの言語がPerlへのアプローチ (youbrideの例) 求人活動の課題はクリティカルになっているため、積極的にPerlから別の言語に 移行する作業を進めています。 youbrideではWeb/API双方が必要なため、マイクロサービス化は考えずにフル スタックなフレームワークを持つRubyへの移行を現在進めています。 (仲間募集中です!)
• サーバサイドの言語がPerl • 開発キャパを超えた仕様変更による改修 インフラ アプリケーション
開発キャパを超えた仕様変更による改修の課題 設計や実装や単体テストへの対応の時間がないことによって 1. 安易に巨大なBaseクラスが作成される 2. 便利だけど黒魔術的なUtilityが大量に作られる 3. Modelが強すぎて後から単体テストが難しい などの課題が生まれていました。
開発キャパを超えた仕様変更による改修へのアプローチ1 (youbrideの例) • カンバンでのタスクコントロールを行う タスクを見える化し、1スプリントで実施できる タスクを明確にすることでキャパシティを超える 開発をしないように調整しています。
開発キャパを超えた仕様変更による改修へのアプローチ2 (youbrideの例) • 設計方針はチームで認識をあわせてから簡易なドキュメントを作成 巨大なBaseを作らないなどの意識を統一しながら進めています。 ただし、どんなに設計をしても時代が変われば合わなくなっていきます。 放置せず適切な形にメンテナンスし続けることが大事です!!!!
全然語り足りていないので 懇親会でぜひ話しましょう〜
おわり