Slide 1

Slide 1 text

Copyright ©iCARE Co.,Ltd All Rights Reserved.
 1 BtoB SaaSにおける技術課題との向き合い方 要望と開発の狭間を繋ぐ技術 ex-CTO 荻野淳也 @ogijun

Slide 2

Slide 2 text

Copyright ©iCARE Co.,Ltd All Rights Reserved.
 2 Enablerチーム / Principal Programmer 荻野淳也 東京都立大学理学部数学科卒、同大学大学院理学 研究科数学専攻修士課程修了(博士課程単位取得 退学)。 学生時代のアルバイトから始まって25年 以上、スタートアップから一部上場企業まで、途中 何回かの起業経験も挟みながら幅広くソフトウェア 開発に関わる。また、2015年から現在まで小さな コーヒー店を経営する喫茶店主でもある。 2021年3月株式会社iCARE入社、同年5月〜 2022年10月までCTO、今月より現職。 ネットではよく ogijun と呼ばれています。

Slide 3

Slide 3 text

Copyright ©iCARE Co.,Ltd All Rights Reserved.
 まとまると予防できる

Slide 4

Slide 4 text

Copyright ©iCARE Co.,Ltd All Rights Reserved.
 健康管理システム「 Carely(ケアリィ)」 ● 健康情報を一元管理 法令遵守をサポート 健康診断、ストレスチェック、過重労働、巡視、 衛生委員会、etc. ● 健康状態の可視化・分析 ● 健康経営をサポート ● スピーディな開発体制 ● 外部のシステムとの連携 4 健康管理システムCarely

Slide 5

Slide 5 text

Copyright ©iCARE Co.,Ltd All Rights Reserved.
 総勢約40名以上、1プロダクト ● 開発リーダー 5名 ● バックエンド 14名 ● フロントエンド 12名 ● SRE 2名 ● QAE 3名 ● デザイナー 2名 ● マネージャー 数名 ● フェロー・アドバイザー数名 健康管理システム「 Carely(ケアリィ)」 5 健康管理システムCarely

Slide 6

Slide 6 text

Copyright ©iCARE Co.,Ltd All Rights Reserved.
 6 で利用している技術たち バックエンド ストレージ フロントエンド デザイン/ プロトタイピング モニタリング ワークフロー

Slide 7

Slide 7 text

Copyright ©iCARE Co.,Ltd All Rights Reserved.
 7 たのしい SaaS 企業 SaaS開発者の(入社直後の)心境 どんどん機能開発していけば、お客さまもよろんでくれるはず! めっちゃ速く開発してしょっちゅうデプロイするぞー! SaaSの機能開発トリガー Product Roadmap にそって計画される 既存顧客及び営業中の顧客候補から要望が寄せられる 技術的に必要だと思われるものが開発チームから提案される

Slide 8

Slide 8 text

Copyright ©iCARE Co.,Ltd All Rights Reserved.
 8 B2B特有の事情 非常に強い安全性への要求 セキュリティ・チェック大変ですよね… → (話したいことは山程ありますが)今日は扱いません 安定したサービス運用 ← 今日はこっち お客さまの仕事を止めてはいけない 「安定」の定義 → SLO的なことだけではない

Slide 9

Slide 9 text

Copyright ©iCARE Co.,Ltd All Rights Reserved.
 9 専門職B2B特有の事情 顧客社内でも 少数の 専門職が 濃厚に 利用する (その他の従業員は薄く利用する)

Slide 10

Slide 10 text

Copyright ©iCARE Co.,Ltd All Rights Reserved.
 10 専門職B2B特有の事情 安定とは お客さまの社内ワークフローがありマニュアルを作成している リリースが頻繁 → 機能が変化し続ける → ワークフロー改訂が間に合わない! お客さまは「製品を使いたい」わけではない 製品を使って「仕事を終わらせたい」 → 「改善はありがたいのですが一旦繁忙期を過ぎてからで..」

Slide 11

Slide 11 text

Copyright ©iCARE Co.,Ltd All Rights Reserved.
 11 たのしい B2B SaaS 開発 (架空の会話です、あくまで架空...) A社 「x画面の上にyテーブルが出ているとフローが短縮できて便利」 開発 「追加しました」 B社 「x画面に余計な情報が出てスクロールが必要になった!改悪 だ!」 開発 「すみません戻します」 A社 「デグレしてる!もうマニュアル改訂したのに!」

Slide 12

Slide 12 text

Copyright ©iCARE Co.,Ltd All Rights Reserved.
 12 たのしい B2B SaaS 開発 A社 「x機能とy機能ができればOK」 B社 「x機能とz機能が必須、yは要らない」 C社 「xは別システムでやってるのでzとwだけやりたいです」 D社 「御社製品のxとyがやりたいんですが、既存システムにあるv機能があれ ばあればリプレースも考えます」 開発 「できました! つ [v, w , x, y, z] 」 各社 「(なんか余計な機能いっぱいあるな…)」 CS 「A社からvwzは何だっていう問い合わせが多数来てます!」 顧客要望を抽象化してから開発することが必要なのはわかっております

Slide 13

Slide 13 text

Copyright ©iCARE Co.,Ltd All Rights Reserved.
 13 Carely の成長の記録 Carely v1 (2016〜) チャットによる健康相談 ストレスチェック、面談 Carely v2 (2017〜) 上記に加えて健康診断、過重労働の管理 睡眠研修 巡視、衛生委員会など COVID-19関連 健康スコア、メッセージ機能、クロス分析 既にけっこうボリューミィ...

Slide 14

Slide 14 text

Copyright ©iCARE Co.,Ltd All Rights Reserved.
 14 たのしい SaaS 開発 これらを全て満たすことはできるのか? 市場の競争に勝つためには勢いよく機能追加したい お客さまの求める「安定」を犠牲にしたくない シンプルでわかりやすいプロダクトであり続けたい とりあえずのソリューション 機能フラグ

Slide 15

Slide 15 text

Copyright ©iCARE Co.,Ltd All Rights Reserved.
 15 機能フラグ if (a_customer.a_feature_flag) {
 // 機能ON
 } else {
 // 機能OFF
 }


Slide 16

Slide 16 text

Copyright ©iCARE Co.,Ltd All Rights Reserved.
 16 機能フラグ if (a_customer.a_feature_flag) {
 // 機能ON
 } else {
 // 機能OFF
 }
 
 if (a_customer.another_feature_flag) {
 // 別機能ON
 } else {
 // 別機能OFF
 }


Slide 17

Slide 17 text

Copyright ©iCARE Co.,Ltd All Rights Reserved.
 17 More Sophisticated Way コードレベルでの例 Flipper (Railsの場合) サービスでの例 (SaaSもある) AWS AppConfig Unleash

Slide 18

Slide 18 text

Copyright ©iCARE Co.,Ltd All Rights Reserved.
 18 機能フラグの分類 https://martinfowler.com/articles/feature-toggles.html 1. Release Toggles 2. Experiment Toggles 3. Ops Toggles 4. Permission Toggles

Slide 19

Slide 19 text

Copyright ©iCARE Co.,Ltd All Rights Reserved.
 19 ドッグフーディング まず自社で試そう Pros 心おきなく本番で試すことが可能 フィードバックがタイムラグゼロ(に近い) Cons 自社と似てない会社での運用はつかめない (専門職SaaSなので)自社だけだとユーザが少ない

Slide 20

Slide 20 text

Copyright ©iCARE Co.,Ltd All Rights Reserved.
 20 フラグ管理しないものもあります 例) カラースキーム Carelyでは青ベース カスタマイズ不可 各色での userbility を検証不可能 (ダークモードが悩ましいです)

Slide 21

Slide 21 text

Copyright ©iCARE Co.,Ltd All Rights Reserved.
 21 たのしい B2B SaaS 開発 機能フラグ定着後の小噺 開発 「超目玉機能Fを作ったのでデフォルトOFFで本番適用するぞ」 開発 「OFF時の挙動はリリース前と全く変化ないことを確認済」 顧客 「あのー機能E(超レア機能)の挙動が昨日までと変わりました?」 開発 「(おっとそこは確認してない、なんなら機能E知らんかった..)」 開発 「ぐぬぬ、revertします」 開発 「すみません、来週の顧客Aでの機能Fのテスト予定リスケで..」

Slide 22

Slide 22 text

Copyright ©iCARE Co.,Ltd All Rights Reserved.
 22 Carelyではどうするか 自作することにしました 単なるオンオフではない 機能の存在は見せたい場合 自社提供のマニュアルから乖離させない 内部的に利用している認可ライブラリとの親和性 前ページの小噺への可能な限りのアプローチ いろいろ課題はあれどざくざく機能を足したいことに変わりはない

Slide 23

Slide 23 text

Copyright ©iCARE Co.,Ltd All Rights Reserved.
 23 その他の技術課題 セキュリティ & プライバシー パフォーマンス (もっと悩みたい) 各種メトリクスの取得と分析 30> developers / 1 monolith APIやSSOなど外部連携の拡大 内部品質 (6年間の負債と闘う) DevOps 推進

Slide 24

Slide 24 text

Copyright ©iCARE Co.,Ltd All Rights Reserved.
 24 https://herp.careers/v1/icare 👇応募はこちら(HERP) \ We're Hiring👍 / icare dev https://devdriven.icare-carely.co.jp 検索

Slide 25

Slide 25 text

Copyright ©iCARE Co.,Ltd All Rights Reserved.
 Thank you! 25