$30 off During Our Annual Pro Sale. View Details »

NIFTY Tech Day 2022 セシール事業におけるモノリシックアーキテクチャとの向き合い方

NIFTY Tech Day 2022 セシール事業におけるモノリシックアーキテクチャとの向き合い方

NIFTY Tech Day 2022 セッション資料

「ビジネスを加速させたい」
その思いを実現するためには、さまざまな課題があります。
本セッションでは、そのような課題に対して、セシールがどう向き合っていったかを語ります。

本セッションのアーカイブ動画:
https://youtu.be/2wHuY3x5XoE

NIFTY Tech Day 2022 アーカイブ動画一覧:
https://www.youtube.com/playlist?list=PLYJnnMO84Y4ScTbh4EB5F-xVwgmPv_cM3

ニフティ株式会社

November 22, 2022
Tweet

More Decks by ニフティ株式会社

Other Decks in Programming

Transcript

  1. Copyright ©Cecile Corporation All Rights Reserved.
    セシール事業における
    モノリシックアーキテクチャとの向き合い⽅
    株式会社セシール
    技術推進グループ
    丸⼭ 敦規

    View Slide

  2. ⾃⼰紹介
    Copyright © Cecile Corporation All Rights Reserved. 2
    丸⼭ 敦規
    株式会社セシール(出向 from NIFTY)
    技術推進グループ
    2015年にニフティに新卒⼊社。
    2022年6⽉からシステム改善のためセシールへ
    出向中。
    趣味は電⼦⼯作と最近はじめた釣り、家庭菜園。

    View Slide

  3. TOPIC
    Copyright © Cecile Corporation All Rights Reserved. 3
    セシールの紹介
    システム課題
    モノリスがもたらす開発遅延
    アーキテクチャを考える
    まとめ

    View Slide

  4. Copyright ©Cecile Corporation All Rights Reserved.
    セシールの紹介

    View Slide

  5. 株式会社セシール(Cecile Co, Ltd)
    Copyright © Cecile Corporation All Rights Reserved. 5
    セシールは
    総合通販事業 の企業です
    様々なジャンルのカタログを発刊
    カタログ種類 ・・・6種類
    カタログ発⾏数 ・・・4,000万部
    セシールブランドのECサイトを展開
    WEB会員数 ・・・ 830万⼈
    ⽉間PV数 ・・・ 3,300万PV
    2022年3⽉時点

    View Slide

  6. セシールの歴史
    Copyright © Cecile Corporation All Rights Reserved. 6
    1972
    1983
    1999
    2004
    2021
    ⾹川県⾼松市にて創業。
    ストッキングを商品とし
    て販売したところから
    スタート!
    インナーカタログ「セシ
    レーヌ」創刊。約40年、
    お客様に愛され続けてい
    ます。
    「セシールオンラインシ
    ョップ」が開始。今では
    売上の半数がWEBからの
    ご注⽂です。
    株式会社セシールとして
    ニフティグループにて事
    業開始。
    メンズカタログ「メンズ
    セシール」創刊。幅広い
    年齢の⽅から⽀持されて
    います。

    View Slide

  7. セシールの企業理念
    Copyright © Cecile Corporation All Rights Reserved. 7
    お客様の声に常に⽿を傾け、
    感動いただける商品・サービスを提供し、
    全員経営で⽇本の発展に貢献する

    View Slide

  8. Copyright ©Cecile Corporation All Rights Reserved.
    システム課題

    View Slide

  9. ビジネスを
    加速させたい
    Copyright © Cecile Corporation All Rights Reserved. 9

    View Slide

  10. ビジネス加速によるシステム課題
    Copyright © Cecile Corporation All Rights Reserved. 10
    世の中に追従するための開発量の増⼤
    コンテンツ増⼤に伴う負荷問題
    覚えなきゃいけないことが増えた

    View Slide

  11. ビジネス加速によるシステム課題
    Copyright © Cecile Corporation All Rights Reserved. 11
    世の中に追従するための開発量の増⼤
    コンテンツ増⼤に伴う負荷問題
    覚えなきゃいけないことが増えた
    現在のアーキテクチャでは
    スピードを出せない

    View Slide

  12. セシールのアーキテクチャ
    Copyright © Cecile Corporation All Rights Reserved. 12
    モノリス(⼀枚岩)
    顧客
    商品
    注⽂
    発注
    検索
    請求
    共有DB
    Module
    UI
    (ECや管理)
    App
    • 単体アプリケーションで動作
    • 共有DBが鎮座している
    • 規模の⼤きい1チームで管理
    ※単体で動作可能なサービス
    (機能)の集合をModuleと呼び
    ます。

    View Slide

  13. Copyright ©Cecile Corporation All Rights Reserved.
    モノリスがもたらす
    開発遅延

    View Slide

  14. モノリスとマイクロサービス
    Copyright © Cecile Corporation All Rights Reserved. 14
    モノリスとセットで紹介されることが多いマイクロサー
    ビスアーキテクチャ(MSA)と⽐較します。
    顧客
    商品
    注⽂
    発注
    検索
    請求
    共有DB
    Module
    UI
    (ECや管理)
    App
    商品
    Module
    App
    顧客
    Module
    App
    注⽂
    Module
    App
    注⽂
    Module
    App
    検索
    Module
    App
    発注
    Module
    App
    UI
    (ECや管理)
    DB DB DB
    DB DB DB
    モノリス マイクロサービス

    View Slide

  15. モノリスとマイクロサービス
    Copyright © Cecile Corporation All Rights Reserved. 15
    モノリスとセットで紹介されることが多いマイクロサー
    ビスアーキテクチャ(MSA)と⽐較します。
    顧客
    商品
    注⽂
    発注
    検索
    請求
    共有DB
    Module
    UI
    (ECや管理)
    App
    商品
    Module
    App
    顧客
    Module
    App
    注⽂
    Module
    App
    注⽂
    Module
    App
    検索
    Module
    App
    発注
    Module
    App
    UI
    (ECや管理)
    DB DB DB
    DB DB DB
    モノリス マイクロサービス
    開発速度
    組織構造
    スケーリング
    技術スタック
    ⼀貫性の担保
    運⽤
    開発の範囲が明確で迅速
    開発が複雑になり遅い
    サービス毎にチーム
    肥⼤化した単⼀チーム
    アプリ単位でスケール可
    全体スケールのみ
    複雑
    シンプル
    担保しにくい
    担保しやすい
    管理対象が増加
    管理の⼿間が少ない

    View Slide

  16. モノリスとマイクロサービス
    Copyright © Cecile Corporation All Rights Reserved. 16
    モノリスとセットで紹介されることが多いマイクロサー
    ビスアーキテクチャ(MSA)と⽐較します。
    顧客
    商品
    注⽂
    発注
    検索
    請求
    共有DB
    Module
    UI
    (ECや管理)
    App
    商品
    Module
    App
    顧客
    Module
    App
    注⽂
    Module
    App
    注⽂
    Module
    App
    検索
    Module
    App
    発注
    Module
    App
    UI
    (ECや管理)
    DB DB DB
    DB DB DB
    モノリス マイクロサービス
    開発速度
    組織構造
    スケーリング
    技術スタック
    ⼀貫性の担保
    運⽤
    開発の範囲が明確で迅速
    サービス毎にチーム
    肥⼤化した単⼀チーム
    アプリ単位でスケール可
    全体スケールのみ
    複雑
    シンプル
    担保しにくい
    担保しやすい
    管理対象が増加
    管理の⼿間が少ない
    開発が複雑になり遅い
    無視できないほど
    顕著になってきた

    View Slide

  17. セシールが悩まされている
    モノリス起因の3つの遅延
    Copyright © Cecile Corporation All Rights Reserved. 17

    View Slide

  18. 開発速度の遅延
    Copyright © Cecile Corporation All Rights Reserved. 18
    過度な不安が助⻑される
    実際の修正範囲は狭く対応もすぐ終わる。
    修正時間に対しての調査時間が⻑い傾向。
    全部確認しないと
    安⼼できない・・・
    顧客
    商品
    注⽂
    発注
    検索
    請求
    Module
    App
    確認範囲
    修正範囲

    View Slide

  19. 意思決定の遅延
    Copyright © Cecile Corporation All Rights Reserved. 19
    最悪を想定した⾒積もり
    不安になると⾃信を持った回答がすぐにできなくなる。
    さらに⾒積もりが過剰になる傾向。

    それは
    すぐには判断
    できないな…
    顧客
    商品
    注⽂
    発注
    検索
    請求
    Module
    App
    確認範囲
    修正範囲
    (調査)時間もかか
    りますし。
    やってみないと分か
    らないです。

    View Slide

  20. 技術者育成の遅延
    Copyright © Cecile Corporation All Rights Reserved. 20
    仲間が増えたのに
    仲間が増えても業務理解に時間がかかってしまい、
    実際の作業にアサインされるまでのリードタイムが⻑い。
    顧客
    商品
    注⽂
    発注
    検索
    請求
    Module
    App
    必須業務理解


    何ヶ⽉
    かかるんだろ
    教える時間
    確保できるかな

    View Slide

  21. Copyright © Cecile Corporation All Rights Reserved. 21
    肥⼤化したモノリスは
    「過度な不安」
    を招き、様々なスピードが落ちる

    View Slide

  22. モノリスを脱却する際の⼼構え
    Copyright © Cecile Corporation All Rights Reserved. 22
    「アーキテクチャに銀の弾などない」
    新しいアーキテクチャのメリットを得ると同時
    にデメリットに向き合うということになります。
    デメリット対策をきちんと考えておくことが重
    要になってきます。

    View Slide

  23. Copyright ©Cecile Corporation All Rights Reserved.
    アーキテクチャを
    考える

    View Slide

  24. 現セシールの体制
    Copyright © Cecile Corporation All Rights Reserved. 24
    少ない社内エンジニアで⾜らないリソースを業務委
    託で補っている
    A
    D
    B C
    X
    共有DB
    Module
    App
    アーキテクチャ
    体制
    要件整理
    発注/納品
    開 開 開
    開 開 開
    社内開発チーム
    A開発依頼
    B開発依頼
    X開発依頼
    業務委託先

    View Slide

  25. MSAを導⼊した場合の体制
    Copyright © Cecile Corporation All Rights Reserved. 25
    体制を変えずにMSAを導⼊した場合
    アーキテクチャ
    体制
    A
    Module
    App
    B
    Module
    App
    X
    Module
    App
    DB
    DB
    DB


    要件整理
    発注/納品
    開 開 開
    開 開 開
    社内開発チーム
    A開発依頼
    B開発依頼
    X開発依頼
    業務委託先

    View Slide

  26. MSAを導⼊した場合の体制
    Copyright © Cecile Corporation All Rights Reserved. 26
    体制を変えずにMSAを導⼊した場合
    アーキテクチャ
    体制
    A
    Module
    App
    B
    Module
    App
    X
    Module
    App
    DB
    DB
    DB


    要件整理
    発注/納品
    開 開 開
    開 開 開
    社内開発チーム
    A開発依頼
    B開発依頼
    X開発依頼
    業務委託先
    結局全サービスを
    覚えないといけない状況
    (=メリット薄い)

    View Slide

  27. MSAを導⼊した場合の体制
    Copyright © Cecile Corporation All Rights Reserved. 27
    理想としては1チーム=1サービスとしたい
    (が、分けすぎもオーバヘッドが増えるので組織にあった塩梅を探る)
    アーキテクチャ
    体制
    A
    Module
    App
    B
    Module
    App
    X
    Module
    App
    DB
    DB
    DB


    A開発依頼
    B開発依頼
    X開発依頼
    開 開 開
    サービスAチーム
    開 開 開
    サービスBチーム
    開 開 開
    サービスXチーム


    View Slide

  28. 業務委託と相性悪い?
    Copyright © Cecile Corporation All Rights Reserved. 28
    MSAへの移⾏⽅法は?
    周囲の理解を得るには?
    MSAやれるかな?
    セシール内で起こった議論

    View Slide

  29. 業務委託と相性悪い?
    Copyright © Cecile Corporation All Rights Reserved. 29
    MSAへの移⾏⽅法は?
    周囲の理解を得るには?
    MSAやれるかな?
    セシール内で起こった議論

    View Slide

  30. 内製化に拘る必要はない
    Copyright © Cecile Corporation All Rights Reserved. 30
    開 開 開
    内製T

    パッケージ導⼊T
    サービスの特性を考えて最適な体制を取ること
    ができる。

    業務委託T
    A
    Module
    App
    選定
    B
    Module
    App
    C
    Module
    App
    業務委託先

    発注

    View Slide

  31. 内製化に拘る必要はない
    Copyright © Cecile Corporation All Rights Reserved. 31
    パッケージ導⼊を主とするチーム体制
    以下のような性質のサービスを扱う
    • 機能性/分離性重視
    • 会社の独⾃性は不要
    • 重要度が低い
    他サービスとの連携性を重視して選定

    パッケージ導⼊T
    A
    Module
    App
    選定

    View Slide

  32. 内製化に拘る必要はない
    Copyright © Cecile Corporation All Rights Reserved. 32

    業務委託T
    B
    Module
    App

    発注
    業務委託先
    従来の業務委託を主とするチーム体制
    以下のような性質のサービスを扱う
    • 安定性重視
    • 会社の独⾃性は必要
    • 重要度が⾼い
    他サービスとの連携性を重視して選定

    View Slide

  33. 内製化に拘る必要はない
    Copyright © Cecile Corporation All Rights Reserved. 33
    開 開 開
    内製T
    C
    Module
    App
    内製での開発を主とするチーム体制
    以下のような性質のサービスを扱う
    • スピード/変更容易性重視
    • 会社の独⾃性は必要
    • 重要度が⾼い
    柔軟にスピードを出すことが求められる

    View Slide

  34. 内製化に拘る必要はない
    Copyright © Cecile Corporation All Rights Reserved. 34
    開 開 開
    内製T
    C
    Module
    App
    内製での開発を主とするチーム体制
    以下のような性質のサービスを扱う
    • スピード/変更容易性
    • 会社の独⾃性は必要
    • 重要度が⾼い
    柔軟にスピードを出すことが求められる
    セシールでは
    ⼀番作るのが難度が⾼いT
    頑張って作る必要がある💪

    View Slide

  35. 業務委託と相性悪い?
    Copyright © Cecile Corporation All Rights Reserved. 35
    MSAへの移⾏⽅法は?
    周囲の理解を得るには?
    MSAやれるかな?
    セシール内で起こった議論

    View Slide

  36. ストラングラーパターン
    Copyright © Cecile Corporation All Rights Reserved. 36
    顧客
    商品
    注⽂
    発注
    検索
    請求
    共有DB
    Module
    UI
    App
    商品
    Module
    App
    顧客
    Module
    App
    注⽂
    Module
    App
    注⽂
    Module
    App
    検索
    Module
    App
    発注
    Module
    App
    UI
    DB DB DB
    DB DB DB
    顧客
    Module
    App
    注⽂
    Module
    App
    UI
    DB
    DB
    顧客
    商品
    注⽂
    発注
    Module
    GW
    GW GW
    図の様に徐々に移⾏させる⼀般的な⼿法。
    少しずつサービスを分離でき、メンバーが少し
    ずつイメージしやすく⼤きな選択ミスをしない
    利点もあります。
    Phase1: GWを設置 Phase2: 徐々に移⾏ Phase3: 完全に移⾏
    共有DB

    View Slide

  37. ストラングラーパターン
    Copyright © Cecile Corporation All Rights Reserved. 37
    顧客
    商品
    注⽂
    発注
    検索
    請求
    共有DB
    Module
    UI
    App
    商品
    Module
    App
    顧客
    Module
    App
    注⽂
    Module
    App
    注⽂
    Module
    App
    検索
    Module
    App
    発注
    Module
    App
    UI
    DB DB DB
    DB DB DB
    顧客
    Module
    App
    注⽂
    Module
    App
    UI
    DB
    DB
    顧客
    商品
    注⽂
    発注
    Module
    GW
    GW GW
    場合によってはPhase2段階が⻑く続く場合があり
    ます。「スピード」を出すという⽬標が既に達
    成されていればPhase3は⽬指さなくてもいいかも
    しれません。
    Phase1: GWを設置 Phase2: 徐々に移⾏ Phase3: 完全に移⾏
    共有DB

    View Slide

  38. 業務委託と相性悪い?
    Copyright © Cecile Corporation All Rights Reserved. 38
    MSAへの移⾏⽅法は?
    周囲の理解を得るには?
    MSAやれるかな?
    セシール内で起こった議論

    View Slide

  39. 短期的な成果を⽬指す
    Copyright © Cecile Corporation All Rights Reserved. 39
    アーキテクチャの変更には様々なステークホル
    ダーからの協⼒が必要不可⽋です。
    簡単に分離できて成果を出しやすいサービスを
    マイクロサービス化させてポジティブなイメー
    ジを持ってもらうことをまずは⽬指しましょう。

    View Slide

  40. 短期的な成果を⽬指す
    Copyright © Cecile Corporation All Rights Reserved. 40
    参考までに、セシールでは社内外からの要望が
    ⼤きく⽐較的分離が簡単な「⼝コミ」機能の分
    離から検討を始めています。
    ⼝コミ
    Module
    App
    UI
    DB
    顧客
    商品
    注⽂
    発注
    Module
    GW
    共有DB

    View Slide

  41. 業務委託と相性悪い?
    Copyright © Cecile Corporation All Rights Reserved. 41
    MSAへの移⾏⽅法は?
    周囲の理解を得るには?
    MSAやれるかな?
    セシール内で起こった議論

    View Slide

  42. MSAに必要以上に拘らない
    Copyright © Cecile Corporation All Rights Reserved. 42
    MSAはあくまでスピードを上げるための⼿段
    MSAに拘らず
    • モジュラモノリス
    • ミニサービス
    を採⽤することも考えましょう。

    View Slide

  43. 補⾜:モジュラモノリス・ミニサービス
    Copyright © Cecile Corporation All Rights Reserved. 43
    Shopify Engineer.「Deconstructing the Monolith: Designing Software that
    Maximizes Developer Productivity」https://shopify.engineering/deconstructing-
    monolith-designing-software-maximizes-developer-productivity

    View Slide

  44. 業務委託と相性悪い?
    Copyright © Cecile Corporation All Rights Reserved. 44
    MSAへの移⾏⽅法は?
    周囲の理解を得るには?
    MSAやれるかな?
    セシール内で起こった議論
    正解はない
    組織にあった⽅法を
    少しずつ探りながら変えていくことが⼤切

    View Slide

  45. Copyright ©Cecile Corporation All Rights Reserved.
    まとめ

    View Slide

  46. 本⽇の発表
    Copyright © Cecile Corporation All Rights Reserved. 46
    • セシールではモノリシックアーキテクチャを
    採⽤していたがビジネスを加速させるために
    アーキテクチャを変える必要が出てきた
    • アーキテクチャに正解はなく、その会社に最
    適なアーキテクチャを模索する必要がある

    View Slide

  47. Copyright ©Cecile Corporation All Rights Reserved.
    最後に

    View Slide

  48. Copyright © Cecile Corporation All Rights Reserved. 48
    セシールでは
    ⼀緒に働く仲間を募集中です!!

    View Slide

  49. Copyright © Cecile Corporation All Rights Reserved. 49
    「Il offre sa confiance et son amour」
    (愛と信頼をお届けする)

    View Slide