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
20231213_スタートアップにおけるソフトウェアアーキテクチャの運用・維持について
Search
PharmaX(旧YOJO Technologies)開発チーム
December 12, 2023
Technology
0
22
20231213_スタートアップにおけるソフトウェアアーキテクチャの運用・維持について
2023/12/13
Backend Night 〜アーキテクチャ設計編〜
https://yojo.connpass.com/event/303072/
PharmaX 尾崎のLT資料です
PharmaX(旧YOJO Technologies)開発チーム
December 12, 2023
Tweet
Share
More Decks by PharmaX(旧YOJO Technologies)開発チーム
See All by PharmaX(旧YOJO Technologies)開発チーム
しくじり先生、PharmaXのLLMアプリケーション開発の失敗を語る
pharma_x_tech
0
73
LLMアプリケーションの実験管理・評価の工夫を紹介
pharma_x_tech
8
800
LLMアプリケーションの改善プロセスの構築
pharma_x_tech
0
220
チーム再編を伴う2年半のプラダクト開発から学ぶソフトウェアアーキテクチャ運用のコツ
pharma_x_tech
0
1.6k
LLMにサジェストさせたチャットの評価方法について
pharma_x_tech
0
620
薬剤師のチャットサジェストの評価と実験管理の本番運用
pharma_x_tech
1
260
新しいJSランタイムのDenoとBunに入門してみた
pharma_x_tech
0
28
2024.02.16_LLMを活用してオンライン薬局のオペレーションを自動化した話
pharma_x_tech
4
1.6k
Firebaseプロジェクトに複数のFirestoreのデータベースを作成する
pharma_x_tech
1
12
Other Decks in Technology
See All in Technology
地理空間データ可視化・解析・活用ソリューション Pacific Spatial Solutions (PSS)
pacificspatialsolutions
0
300
web-application-security
matsuihidetoshi
0
170
Cracking the KubeCon CfP
inductor
2
250
複雑な構成要素を持つUIとの向き合い方 〜新・支出グラフでの実例〜 / B43 TECH TALK
nakamuuu
0
140
ルーターでプレゼンする
puhitaku
0
500
一生覚えておきたい「システム開発=コミュニケーション」〜初めての実務案件振り返りLT〜
maimyyym
1
170
オーナーシップを持つ領域を明確にする
konifar
13
3.2k
LayerXにおけるLLMプロダクト開発の今までとこれから
layerx
PRO
1
430
推しは推せるときに推せ! プロダクトにフィードバックしていこう
nakasho
0
350
AOAI をきっかけに 社内の Azure 管理を見直した話
recruitengineers
PRO
1
330
長期間TiDBを使ってきた話 @ 私たちはなぜNewSQLを使うのかTiDB選定5社が語る選定理由と活用LT / Experiences with TiDB Over Time
chibiegg
3
920
反実仮想機械学習とは何か
usaito
PRO
12
4.8k
Featured
See All Featured
Done Done
chrislema
178
15k
Producing Creativity
orderedlist
PRO
337
39k
Put a Button on it: Removing Barriers to Going Fast.
kastner
58
3.1k
Why Our Code Smells
bkeepers
PRO
331
56k
From Idea to $5000 a Month in 5 Months
shpigford
377
45k
The Brand Is Dead. Long Live the Brand.
mthomps
49
29k
Music & Morning Musume
bryan
41
5.6k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
14
1.5k
Unsuck your backbone
ammeep
663
57k
BBQ
matthewcrist
80
8.8k
Testing 201, or: Great Expectations
jmmastey
28
6.4k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
244
20k
Transcript
スタートアップにおけるソフトウェ アアーキテクチャの運用・維持に ついて 2023.12.13 #pharmaX_tech_collabo
(C)PharmaX Inc. 2023 All Rights Reserve 2 自己紹介 尾崎皓一 PharmaX
(旧YOJO Technologies) エンジニアリーダ 2人目のエンジニア正社員としてジョイン 最近はあまりコード書いてないですが、 PharmaXの歴史を 知る古参メンバーとして今日は色々お話しできれば! Twitter:@FooOzaki
3 (C)PharmaX Inc. 2022 All Rights Reserve プロダクトの簡単な説明
(C)PharmaX Inc. 2023 All Rights Reserve 4 「薬局」は医療体験の中でも身近な存在 日用品から処方薬まで。「薬局」は皆さまの日常の近くに存在している ドラックストア
調剤薬局
(C)PharmaX Inc. 2023 All Rights Reserve 5 医療体験を横断する2つの事業領域 YOJO事業 未病・予防
治療 薬局DX事業
(C)PharmaX Inc. 2023 All Rights Reserve 6 LINE上でのチャットを通じて薬剤師と会話 日々の相談や健康状態に応じて、 漢方・サプリメントを購入
使い慣れたUI上から手軽に細かく体質チェック 薬剤師から漢方・サプリのご提案 そのほか健康相談やオンラインでの処方箋受付 YOJOのオペレーションシステム 1 2 3 患者向けチャットシステム
(C)PharmaX Inc. 2023 All Rights Reserve 7 PSチームと患者をつなぐオペレーションシステム 患者とのスムーズなコミュニケーション 薬剤師向け管理画面
チャット形式での診断・相談・購入 患者向けチャットシステム
8 (C)PharmaX Inc. 2022 All Rights Reserve バックエンドソフトウェアアーキテクチャの歴史と 課題
(C)PharmaX Inc. 2023 All Rights Reserve 9 YOJO サービス開始 ソフトウェアリアーキテクチャ着手
アーキテクチャ設計者退職 リアーキテクチャ完了 Rails x レイヤ化アーキテクチャ 〜エンジニア4名〜5名体制で運用〜 最小チームで開発(薬局DX事業へ異動) 〜エンジニア1名〜2名体制で1年間運用〜 YOJO事業エンジニアチーム再組成 YOJO事業のグロースとリアーキテクチャ 2019年06月 2021年01月 2021年05月 2021年09月 2022年09月 2023年08月 ユーザ数の遷移
(C)PharmaX Inc. 2023 All Rights Reserve 10 Ruby On Rails
x レイヤ化アーキテクチャ導入 • 当初はRails標準のMVCで運用 ◦ コーディング規約やフレームワーク ルール運用ルールもなく、モデルも 肥大化 • コアドメインのリモデリングがきっかけに ドメイン駆動設計(DDD)を導入 • DDDと相性の良いレイヤ化アーキテク チャを選定 • (選定当時)制約の厳しいアーキテクチャ によりスキル感のばらつき・人の入れ替 わりを吸収したかった
(C)PharmaX Inc. 2023 All Rights Reserve 11 YOJO サービス開始 リアーキテクチャ着手
アーキテクチャ設計者退職 リアーキテクチャ完了 Rails x レイヤ化アーキテクチャ 〜エンジニア4名〜5名体制で運用〜 最小チームで開発(薬局DX事業へ異動) 〜エンジニア1名〜2名体制で1年間運用〜 YOJO事業エンジニアチーム再組成 YOJO事業の歴史 2019年06月 2021年01月 2021年05月 2021年09月 2022年09月 2023年08月
(C)PharmaX Inc. 2023 All Rights Reserve 12 アーキテクチャ設計・導入初期の問題 ソフトウェアアーキテクチャスタイルの初期定義と共にコアドメインを置き換え ソフトウェアアーキテクチャ定義の議論中に設計者が離脱し、問題が山積み
• 各レイヤーの設計思想や責務に曖昧な部分があり、議論がまとまらない ◦ バックグラウンドジョブの呼び出しは?実装はどこに? ◦ 通知系の処理はどこから(メール通知、 LINE通知、Slack通知など) ◦ xxxのケースを共通利用したい • メンバーの入れ替わりもあり、コアドメインリプレース時にも解釈が分かれる ◦ 各メンバーの解像度も浅く、各々の解釈でコードが書かれる ◦ レビュー後の手戻り多発 ◦ リプレースの最中に新規コードのリファクタリングが走る
(C)PharmaX Inc. 2023 All Rights Reserve 13 YOJO サービス開始 リアーキテクチャ着手
アーキテクチャ設計者退職 リアーキテクチャ完了 Rails x レイヤ化アーキテクチャ 〜エンジニア4名〜5名体制で運用〜 最小チームで開発(薬局DX事業へ異動) 〜エンジニア1名〜2名体制で1年間運用〜 YOJO事業エンジニアチーム再組成 YOJO事業の歴史 2019年06月 2021年01月 2021年05月 2021年09月 2022年09月 2023年08月
(C)PharmaX Inc. 2023 All Rights Reserve 14 ソフトウェアアーキテクチャの運用期の問題 人の入れ替わりも多く、徐々に歪みが大きくなっていく ソフトウェア以外の課題も大きくコアメンバーが工数を取れなかった
• インフラリプレース(セキュリティ担保やスケーリング上の限界) • BI基盤の構築やデータの民主化(複数のグロース施作実行に伴い、素早い PDCAを) • 薬剤師管理画面フロントのリプレース(薬剤師の生産性が大きな事業課題に) などなど バックエンドソフトウェアは引き続き拡大 • 違和感があったものの、議論やアーキテクチャのアップデートはできておらず。(振り返ると)場 当たり的な対応も目立つ。大きな問題は出ないがソフトウェアは大きくなっていく
15 (C)PharmaX Inc. 2022 All Rights Reserve これまでの2年半で得られた学び
(C)PharmaX Inc. 2023 All Rights Reserve 16 アーキテクチャ設計・導入初期の問題 ソフトウェアアーキテクチャスタイルの初期定義と共にコアドメインを置き換え ソフトウェアアーキテクチャ定義の議論中に設計者が離脱し、問題が山積み
• 各レイヤーの設計思想や責務に曖昧な部分があり、議論がまとまらない ◦ バックグラウンドジョブの呼び出しは?実装はどこに? ◦ 通知系の処理はどこから(メール通知、 LINE通知、Slack通知など) ◦ xxxのケースを共通利用したい • メンバーの入れ替わりもあり、コアドメインリプレース時にも解釈が分かれる ◦ 各メンバーの解像度も浅く、各々の解釈でコードが書かれる ◦ レビュー後の手戻り多発 ◦ リプレースの最中に新規コードのリファクタリングが走る
(C)PharmaX Inc. 2023 All Rights Reserve 17 ソフトウェアアーキテクチャの定義のポイント WHY・アーキテクチャの根幹思想を明確に •
今後の運用・アップデートの拠り所になる ◦ アーキテクチャ選定理由、解決したい課題や目標を明確に ◦ 基本的な設計原則や哲学 ◦ 各レイヤーの導入背景 など 迷わない定義 • スコープ範囲内での適切な運用、少なくとも既存のスコープ範囲においては新規メンバーでも 判断に迷わない状態を目指すべき ◦ DI(依存性注入)・DIP(依存性逆転の原則)などのテクニックを用いてアーキテクチャ制 約をコードで表現 ◦ 各レイヤーやディレクトリの責務を明確に ◦ 迷ったらアーキテクチャ/ドキュメントのアップデート議論のタイミング アーキテクチャに正解はない。常にアップデートしていくもの
(C)PharmaX Inc. 2023 All Rights Reserve 18 ソフトウェアアーキテクチャの運用期の問題 人の入れ替わりも多く、徐々に歪みが大きくなっていく ソフトウェア以外の課題も大きくコアメンバーが工数を取れなかった
• インフラリプレース(セキュリティ担保やスケーリング上の限界) • BI基盤の構築やデータの民主化(複数のグロース施作実行に伴い、素早い PDCAを) • 薬剤師管理画面フロントのリプレース(薬剤師の生産性が大きな事業課題に) などなど バックエンドソフトウェアは引き続き拡大 • 違和感があったものの、議論やアーキテクチャのアップデートはできておらず。(振り返ると)場 当たり的な対応も目立つ。大きな問題は出ないがソフトウェアは大きくなっていく
(C)PharmaX Inc. 2023 All Rights Reserve 19 ソフトウェアアーキテクチャ運用のポイント 人の入れ替わりに耐えうる運用を設計を どんなにリソースがなくてもソフトウェアアーキテクチャを維持するロールは必要
属人化しない仕組みの構築 • サンプルリポジトリを作成する • アーキテクチャに関するドキュメント • レビュープロセス、レビュー観点の定義 …etc 属人化排除は余力のあるうちにやっておく。これらも常にアップデートを。 アーキテクチャに正解はない。常にアップデートしていくもの