レガシーシステム・技術的負債とは何か Diverseの向き合い方
by
SAMUKEI
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
レガシーシステム 技術的負債 とは何か Diverseの関わり方
Slide 2
Slide 2 text
who? ● さむけい(藤田 雄大) ● 所属はDiverse Inc. / MAEMO LLC ● youbrideのサーバ・クライアントやってます ● DroidKaigi 2019に登壇します!PWAの話します! https://droidkaigi.jp/2019/ ● 会社でPodcast配信してます。聴いてください! https://podcast.diverse-inc.com/
Slide 3
Slide 3 text
オンライン カジュアル シリアス オフライン
Slide 4
Slide 4 text
レガシーシステム 技術的負債 に悩まされているという方
Slide 5
Slide 5 text
みなさん悩んでいますね!
Slide 6
Slide 6 text
では、 レガシーシステム 技術的負債 とはなんでしょうか?
Slide 7
Slide 7 text
レガシーシステムとは?(wikipedia引用) レガシーシステムとは、主にコンピュータの分野で、代替す べき新しい技術などのために古くなったコンピュータのシス テムや技術などのことである。そのようなデバイスをレガ シーデバイス、そのようなオペレーティングシステムを、レガ シーOSなどともいう。
Slide 8
Slide 8 text
技術的負債とは?(wikipedia引用) 技術的負債とは、行き当たりばったりなソフトウェアアーキ テクチャと、余裕のないソフトウェア開発が引き起こす結果 のことを指す新しい比喩である。「設計上の負債」とも言う。
Slide 9
Slide 9 text
ざっくり ・古いシステムなどレガシーシステム ・設計ミス or 設計のないソフトウェアを技術的負債 ということで、悪いっぽいですね。
Slide 10
Slide 10 text
本当にそうでしょうか?
Slide 11
Slide 11 text
古いシステムということは枯れている(安定している)というこ とではないの?
Slide 12
Slide 12 text
当時は設計が適切であっても時代の流れに取り残されたら 技術負債になるよね?
Slide 13
Slide 13 text
モヤモヤしてきましたか?
Slide 14
Slide 14 text
モヤモヤしてきましたね?
Slide 15
Slide 15 text
でも、 レガシーシステム 技術的負債 にはみなさん悩まされていますよね?
Slide 16
Slide 16 text
では、 レガシーシステム 技術的負債 を”課題”と捉えてみるとどうでしょうか?
Slide 17
Slide 17 text
みなさん”課題”を”解決”することは 好き(面白い)ですよね?
Slide 18
Slide 18 text
じゃあ、 レガシーシステム 技術的負債 という”課題”を”解決”することは、 面白いことじゃないですか!?
Slide 19
Slide 19 text
ということで、 Diverseがどのように レガシーシステム 技術的負債 という”課題”と向き合っているか を話します!
Slide 20
Slide 20 text
では、 Diverseにおける レガシーシステム 技術的負債 の”課題”を元に分類してみます
Slide 21
Slide 21 text
インフラ ● オンプレミス ● 2013年にリプレースしたままの環境(youbrideの例) ○ ホスト環境のOSが古い ○ 仮想環境のOSが古い ○ 仮想環境内のソフトウェアのバージョンが古い アプリケーション
Slide 22
Slide 22 text
インフラ アプリケーション ● サーバサイドの言語がPerl ● 開発キャパを超えた仕様変更による改修
Slide 23
Slide 23 text
分類ができましたね それぞれの課題の詳細とアプローチを考えます
Slide 24
Slide 24 text
● オンプレミス ● 2013年にリプレースしたままの環境(youbrideの例) ○ ホスト環境のOSが古い ○ 仮想環境のOSが古い ○ 仮想環境内のソフトウェアのバージョンが古い インフラ アプリケーション
Slide 25
Slide 25 text
オンプレミスの課題 オンプレ = 悪ではありませんが、 ● 即時のスケールアップが難しい ● 開発環境の増設なども保守会社への問い合わせが必要 といった点がプロダクトの成長にネックになっています。
Slide 26
Slide 26 text
オンプレミスへのアプローチ 開発を円滑に進めるためにAWSなどのクラウドへの移行を進めています。 オンプレミス環境を一気に全部移行することは出来ません。 そのため、機能単位でクラウド環境に移行を計画しています。 現在は、STFからAWS S3に移行をしています。
Slide 27
Slide 27 text
● オンプレミス ● 2013年にリプレースしたままの環境(youbrideの例) ○ ホスト環境のOSが古い ○ 仮想環境のOSが古い ○ 仮想環境内のソフトウェアのバージョンが古い インフラ アプリケーション
Slide 28
Slide 28 text
2013年のままの環境の課題 重大なセキュリティパッチのみ当てる運用になっていたため、 ● 重大なセキュリティリスクはないがソフトウェアが構成が古い ● なので、メジャーバージョンアップには設定ファイルのマイグレーションも必 要になる ● 結果、アップデートが難しい という状況になっています。
Slide 29
Slide 29 text
2013年のままの環境へのアプローチ 社内の文化と体制に問題があると考え、 ● 上長に現状の課題を認識してもらう ● 認識してもらった上で、社内にSRE部隊を整備することに同意してもらう という、課題を解消するための組織作りを始めています。
Slide 30
Slide 30 text
● サーバサイドの言語がPerl ● 開発キャパを超えた仕様変更による改修 インフラ アプリケーション
Slide 31
Slide 31 text
サーバサイドの言語がPerlの課題 Perlは年に1回アップデートされており、メンテナンスされています。 そのため、Perl = レガシーではないと個人的には考えています。 ただし、 ● 言語のシェアが減っており、Perlでの求人活動はすごく難しい ● 社内に第一言語がPerlの人が少なくなった という課題を抱えています。
Slide 32
Slide 32 text
サーバサイドの言語がPerlへのアプローチ (youbrideの例) 求人活動の課題はクリティカルになっているため、積極的にPerlから別の言語に 移行する作業を進めています。 youbrideではWeb/API双方が必要なため、マイクロサービス化は考えずにフル スタックなフレームワークを持つRubyへの移行を現在進めています。 (仲間募集中です!)
Slide 33
Slide 33 text
● サーバサイドの言語がPerl ● 開発キャパを超えた仕様変更による改修 インフラ アプリケーション
Slide 34
Slide 34 text
開発キャパを超えた仕様変更による改修の課題 設計や実装や単体テストへの対応の時間がないことによって 1. 安易に巨大なBaseクラスが作成される 2. 便利だけど黒魔術的なUtilityが大量に作られる 3. Modelが強すぎて後から単体テストが難しい などの課題が生まれていました。
Slide 35
Slide 35 text
開発キャパを超えた仕様変更による改修へのアプローチ1 (youbrideの例) ● カンバンでのタスクコントロールを行う タスクを見える化し、1スプリントで実施できる タスクを明確にすることでキャパシティを超える 開発をしないように調整しています。
Slide 36
Slide 36 text
開発キャパを超えた仕様変更による改修へのアプローチ2 (youbrideの例) ● 設計方針はチームで認識をあわせてから簡易なドキュメントを作成 巨大なBaseを作らないなどの意識を統一しながら進めています。 ただし、どんなに設計をしても時代が変われば合わなくなっていきます。 放置せず適切な形にメンテナンスし続けることが大事です!!!!
Slide 37
Slide 37 text
全然語り足りていないので 懇親会でぜひ話しましょう〜
Slide 38
Slide 38 text
おわり