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
48
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)開発チーム
AIエージェントについてまとめてみた
pharma_x_tech
20
14k
完全自律型AIエージェントとAgentic Workflow〜ワークフロー構築という現実解
pharma_x_tech
1
1.1k
LLMアプリケーションの Fine-tunningと蒸留を活用した改善
pharma_x_tech
7
2k
OpenAIの蒸留機能(Model Distillation)を使用して運用中のLLMのコストを削減する取り組み
pharma_x_tech
5
750
EMとして 自分の弱さと向きあい 人に背中を任せられるようになった話
pharma_x_tech
4
660
LLMアプリケーションの継続的改善のためのFine-tuningの活用
pharma_x_tech
0
75
LLMアプリケーションの評価と継続的改善
pharma_x_tech
3
450
開発チームから始める 「学習する組織」に 成長するための取り組み
pharma_x_tech
3
830
LLMマルチエージェントの アプリケーション設計のコツと未来
pharma_x_tech
1
650
Other Decks in Technology
See All in Technology
『衛星データ利用の方々にとって近いようで触れる機会のなさそうな小話 ~ 衛星搭載ソフトウェアと衛星運用ソフトウェア (実物) を動かしながらわいわいする編 ~』 @日本衛星データコミニティ勉強会
meltingrabbit
0
140
オブザーバビリティの観点でみるAWS / AWS from observability perspective
ymotongpoo
8
1.5k
運用しているアプリケーションのDBのリプレイスをやってみた
miura55
1
710
データの品質が低いと何が困るのか
kzykmyzw
6
1.1k
ハッキングの世界に迫る~攻撃者の思考で考えるセキュリティ~
nomizone
13
5.2k
開発スピードは上がっている…品質はどうする? スピードと品質を両立させるためのプロダクト開発の進め方とは #DevSumi #DevSumiB / Agile And Quality
nihonbuson
2
2.9k
エンジニアのためのドキュメント力基礎講座〜構造化思考から始めよう〜(2025/02/15jbug広島#15発表資料)
yasuoyasuo
17
6.7k
関東Kaggler会LT: 人狼コンペとLLM量子化について
nejumi
3
580
PHPカンファレンス名古屋-テックリードの経験から学んだ設計の教訓
hayatokudou
2
260
データ資産をシームレスに伝達するためのイベント駆動型アーキテクチャ
kakehashi
PRO
2
530
Larkご案内資料
customercloud
PRO
0
650
なぜ私は自分が使わないサービスを作るのか? / Why would I create a service that I would not use?
aiandrox
0
730
Featured
See All Featured
A Modern Web Designer's Workflow
chriscoyier
693
190k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
30
4.6k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
4
410
We Have a Design System, Now What?
morganepeng
51
7.4k
GraphQLとの向き合い方2022年版
quramy
44
13k
Making the Leap to Tech Lead
cromwellryan
133
9.1k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Code Review Best Practice
trishagee
67
18k
Facilitating Awesome Meetings
lara
52
6.2k
RailsConf 2023
tenderlove
29
1k
Building Adaptive Systems
keathley
40
2.4k
Into the Great Unknown - MozCon
thekraken
35
1.6k
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 属人化排除は余力のあるうちにやっておく。これらも常にアップデートを。 アーキテクチャに正解はない。常にアップデートしていくもの