SlideShare una empresa de Scribd logo
1 de 51
BMC 西 秀和
2015/06/18
BIGLOBE×DDD
実践編
自己紹介
• 西 秀和(33歳)
• 経営管理センター(BMC) 主任
• ビックローブで勤務
• ビックローブ光 開発チーム
(リードエンジニア)
光戦争勃発
6400円 4980円
3750〜4500円
一戸建ての場合
集合住宅の場合
3980円※たぶん
フレッツから乗り換えると、
月額料金がだいたいお得!!
太陽系戦略
Wifi
0A0
モバイル
コラボ関連会員
VAS特典
商品契約
トリトン
冥王星
海王星
土星
木星
火星地球
ドメイン駆動設計の拡大
認証
金星
現状:弊社の現場におけるDDD
第二
世代
時間軸:2年
この辺りの領域で探す
1. DDDを適用するサービスを決める
2. DDD適用のためのチームを作る
3. 実践する
4. 障害が起きる
5. まとめ
実践編
1.適用するサービ
スを決める
DDDの利点って?
• 変更コストを下げる
• 業務知識をドメイン(コード)に貯め
る
• エンジニアの視点をユーザ視点に戻
す
既存のサービス
仕様追加・変更が多い
改造しづらいと感じている
選定基準
独立性が高い
携帯を使いすぎると
遅くなるアレ
帯域制御
うれスマ用
制御
システム
パケット
使用量 帯域抑制
帯域
制御装置
200kbps
最高速度
最高速度
うれスマ Xi回線
うれスマ通信制御
主なサービス仕様
3日間(72時間)のパケット量でも制限がかかる
上限を超えたら、ボリュームチャージ(300円/100M)
月々に利用できるパケット量が異なるプランを提供
ISP業界をとりまく環境
2.専用チームを作る
なぜ専用チーム?
• 全員で設計する
• プロセスではなく考え方を変え
たい
• 既存の業務が邪魔
3rdチームB1stチーム
3rdチームC
3rdチームA
2ndチームC
2ndチームB
2ndチームA
Aサービス
1
6
2
7
3
8
4
共通ライブラリ
Bサービス
1
2 3
5 1
2
4
Cサービス
退社
3.実践する
ユーザインタフェース層
(api層)
アプリケーション層
(service層)
ドメイン層
インフラストラクチャ層
(datasource層)
パッケージ構成
REST⇔ドメインの変換
業務を組み立てる
ドメインモデル
データベース⇔ドメインの変換
まずはココから
まずは
ドメインモデル
を作る
チームの中心となる
共通認識
が必要
やり方
手段 :ホワイトシートと付箋
参加者:チームメンバ全員で作業(大切)
時間 :1〜2時間程度
[手順]
1. ValueObject(単一のデータ)に名前をつける
2. Entity(データ集まり)に名前をつける
3. 状態(ステータス)を見つける
4. ユースケースごとにEntityのライフサイクルを考えてみる
636クラス
13テーブル
ユースケースフロー
を考える
ユースケースフロー図
手段 :ホワイトシートと付箋
参加者:チームメンバ全員で作業(大切)
時間 :特に決めない
やり方
ユースケース単位に
どのEntityが
何の業務(役割)をするのかを確認
目的
アプリケーション(service)層の設計
データベースを
考える
手段 :ホワイトシートと付箋
参加者:チームメンバ全員で作業(大切)
時間 :特に決めない
単位 :Entity単位に設計
※必要なDB項目は全てこのタイミングで洗い出す
やり方
設計方針
state(マスタ)テーブル と history(履歴)テーブル
※update中心の考え方
このプロジェクトで設計方針を変更
eventテーブル と 補助的にstate(マスタ)テーブル
※insert中心(イミュータブルデータモデル)
業務を中心に考えると、
event毎にデータが残る方が自然
スケルトンコードを
書いてみる
ユーザインタフェース層
(api層)
アプリケーション層
(service層)
ドメイン層
インフラストラクチャ層
(datasource層)
パッケージ構成
REST⇔ドメインの変換
業務を組み立てる
ドメインモデル
データベース⇔ドメインの変換
スケルトンコードとは?
• 中身のない(骨組みだけの)クラスだけのコード
• はじめは、ドメイン層のみ作成
目的は?
• クラス設計の代わり(クラス図は面倒だった)
• 意外とドメインモデルの修正もある
実装してみる
1. インフラストラクチャ層
2. Fixture(テストデータ)の準備
3. アプリケーション層 & ドメイン層
4. ユーザインタフェース層
作成順
api
(ユースケース)
単位
Entity
(業務データ)
単位
21
19
40
32
8
23
35
31
27
0
11
0
10
20
30
40
50
SP
夏休み
Sprint毎ストーリーポイント
リリース
インフラストラクチャー層作成
アプリケーション層
最後の仕上げ
インフラストラクチャー層は予定通り進まない
アプリケーション層を組み上げるのは楽しい。
ドメインが一番成長する工程
テストデータは初めに用意した方がいい
ドメインモデルを修正する事を忘れがち
データモデル⇔ドメインモデルの変換が難しい
個人的な感想
アプリケーション層
インフラストラクチャー層
リリースしてみる
4.障害が起きる
リリース日
障害4件
この日のFaceBook
障害が
起きても
大丈夫
僕らには
ドメインモデル
(共通認識)
がある
障害対応では
チーム力が問われる
問題がある場所
問題による影響
同様な問題への横展開
メンバ全員が正確に把握
5.まとめ
DDDを適用するサービス
会社が(ビジネスとして)
力を入れているサービス
[のれん分け方式]
チームを分けて、
それぞれに人を追加する
変えたいのは、
プロセスではなく考え方
チームの拡大
設計に関わることは
チーム全員でやる
チームの共通認識を
育てることが大事
実践その1
設計のアウトプットには力を入れない
(ホワイトシートで十分)
業務知識を
正しく・等しく
捉えることが大切
実践その2
障害は出したらダメ
実践その3
障害はチーム力が試される
ご静聴
ありがとう
ございました

Más contenido relacionado

Destacado

「実践ドメイン駆動設計」社内読書会まとめ ~IDDD本難民に捧げる1章から7章~
「実践ドメイン駆動設計」社内読書会まとめ ~IDDD本難民に捧げる1章から7章~「実践ドメイン駆動設計」社内読書会まとめ ~IDDD本難民に捧げる1章から7章~
「実践ドメイン駆動設計」社内読書会まとめ ~IDDD本難民に捧げる1章から7章~
A AOKI
 

Destacado (20)

DDDモデリング勉強会 #6
DDDモデリング勉強会 #6DDDモデリング勉強会 #6
DDDモデリング勉強会 #6
 
「実践ドメイン駆動設計」社内読書会まとめ ~IDDD本難民に捧げる1章から7章~
「実践ドメイン駆動設計」社内読書会まとめ ~IDDD本難民に捧げる1章から7章~「実践ドメイン駆動設計」社内読書会まとめ ~IDDD本難民に捧げる1章から7章~
「実践ドメイン駆動設計」社内読書会まとめ ~IDDD本難民に捧げる1章から7章~
 
C#実装から見るDDD(ドメイン駆動設計)
C#実装から見るDDD(ドメイン駆動設計)C#実装から見るDDD(ドメイン駆動設計)
C#実装から見るDDD(ドメイン駆動設計)
 
ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門
 
ドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解するドメイン駆動設計 基本を理解する
ドメイン駆動設計 基本を理解する
 
May the team be with you(episode2)
May the team be with you(episode2)May the team be with you(episode2)
May the team be with you(episode2)
 
Zadrvnlt may-the-team-be-with-you(episode0)
Zadrvnlt may-the-team-be-with-you(episode0)Zadrvnlt may-the-team-be-with-you(episode0)
Zadrvnlt may-the-team-be-with-you(episode0)
 
Zaki may the team be with you(episode1)
Zaki may the team be with you(episode1)Zaki may the team be with you(episode1)
Zaki may the team be with you(episode1)
 
B.linkコンセプト ver1.0
B.linkコンセプト ver1.0B.linkコンセプト ver1.0
B.linkコンセプト ver1.0
 
TCC-MSCR
TCC-MSCRTCC-MSCR
TCC-MSCR
 
Jyutaku master's-another story(忘年会議14)
Jyutaku master's-another story(忘年会議14)Jyutaku master's-another story(忘年会議14)
Jyutaku master's-another story(忘年会議14)
 
patterns & practices "Project Silk" に見る HTML5 とモダンブラウザのための Web 開発の今後
patterns & practices "Project Silk" に見る HTML5 とモダンブラウザのための Web 開発の今後patterns & practices "Project Silk" に見る HTML5 とモダンブラウザのための Web 開発の今後
patterns & practices "Project Silk" に見る HTML5 とモダンブラウザのための Web 開発の今後
 
ASP.NET MVC プログラミング入門の入門
ASP.NET MVC プログラミング入門の入門ASP.NET MVC プログラミング入門の入門
ASP.NET MVC プログラミング入門の入門
 
私がドメイン駆動設計をやる理由
私がドメイン駆動設計をやる理由私がドメイン駆動設計をやる理由
私がドメイン駆動設計をやる理由
 
第12回rest勉強会 これまでの補足・展望編
第12回rest勉強会 これまでの補足・展望編第12回rest勉強会 これまでの補足・展望編
第12回rest勉強会 これまでの補足・展望編
 
SQL Serverの関数を一覧でマスターしよう
SQL Serverの関数を一覧でマスターしようSQL Serverの関数を一覧でマスターしよう
SQL Serverの関数を一覧でマスターしよう
 
DDDのすすめ
DDDのすすめDDDのすすめ
DDDのすすめ
 
20151209 Oracle DDD オラクルで実現するクラウド・マシン・ラーニング
20151209 Oracle DDD オラクルで実現するクラウド・マシン・ラーニング20151209 Oracle DDD オラクルで実現するクラウド・マシン・ラーニング
20151209 Oracle DDD オラクルで実現するクラウド・マシン・ラーニング
 
TypeScript and Visual Studio Code
TypeScript and Visual Studio Code TypeScript and Visual Studio Code
TypeScript and Visual Studio Code
 
Scala × DDD × 弊社実践例
Scala × DDD × 弊社実践例Scala × DDD × 弊社実践例
Scala × DDD × 弊社実践例
 

Similar a Biglobe×ddd 実践編(dev love 20150618)

基調講演「データのグループウェア化」
基調講演「データのグループウェア化」基調講演「データのグループウェア化」
基調講演「データのグループウェア化」
Cybozucommunity
 
Web制作・運用会社に必要なCDNサービスとは?
Web制作・運用会社に必要なCDNサービスとは?Web制作・運用会社に必要なCDNサービスとは?
Web制作・運用会社に必要なCDNサービスとは?
J-Stream Inc.
 

Similar a Biglobe×ddd 実践編(dev love 20150618) (20)

DDDを実践できるエンジニアを育成するための取り組みについて
DDDを実践できるエンジニアを育成するための取り組みについてDDDを実践できるエンジニアを育成するための取り組みについて
DDDを実践できるエンジニアを育成するための取り組みについて
 
継続カイゼン! トライ&エラーから学んだ コミュニケーションと環境づくり
継続カイゼン! トライ&エラーから学んだ コミュニケーションと環境づくり継続カイゼン! トライ&エラーから学んだ コミュニケーションと環境づくり
継続カイゼン! トライ&エラーから学んだ コミュニケーションと環境づくり
 
Creator Economy x Crypto => Web3.0
Creator Economy x Crypto => Web3.0Creator Economy x Crypto => Web3.0
Creator Economy x Crypto => Web3.0
 
Shinise maker minade_agile_2021_scrum_festo_saka
Shinise maker minade_agile_2021_scrum_festo_sakaShinise maker minade_agile_2021_scrum_festo_saka
Shinise maker minade_agile_2021_scrum_festo_saka
 
自動テストにおけるコードベース戦略とローコード戦略のすみ分け
自動テストにおけるコードベース戦略とローコード戦略のすみ分け自動テストにおけるコードベース戦略とローコード戦略のすみ分け
自動テストにおけるコードベース戦略とローコード戦略のすみ分け
 
Web3 School
Web3 SchoolWeb3 School
Web3 School
 
【AWS×Deployment】TechTalk #5
【AWS×Deployment】TechTalk #5【AWS×Deployment】TechTalk #5
【AWS×Deployment】TechTalk #5
 
企業の生産性とクラウドの活用_202205.pptx
企業の生産性とクラウドの活用_202205.pptx企業の生産性とクラウドの活用_202205.pptx
企業の生産性とクラウドの活用_202205.pptx
 
DIMoの操作実演とSCSKが提供する研修プログラム
DIMoの操作実演とSCSKが提供する研修プログラムDIMoの操作実演とSCSKが提供する研修プログラム
DIMoの操作実演とSCSKが提供する研修プログラム
 
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
骨抜きアジャイルの骨を生み出す 〜私(スクラムマスター)のXP学習記録〜(XP祭り2023 発表資料)
 
基礎から徹底解説!SoftLayerの使い方と活用方法
基礎から徹底解説!SoftLayerの使い方と活用方法基礎から徹底解説!SoftLayerの使い方と活用方法
基礎から徹底解説!SoftLayerの使い方と活用方法
 
株式会社モブキャスト2012年12月期決算説明資料
株式会社モブキャスト2012年12月期決算説明資料株式会社モブキャスト2012年12月期決算説明資料
株式会社モブキャスト2012年12月期決算説明資料
 
富士ゼロックスのクラウド活用で起こした変革
富士ゼロックスのクラウド活用で起こした変革富士ゼロックスのクラウド活用で起こした変革
富士ゼロックスのクラウド活用で起こした変革
 
SIerとクラウドの付き合い方
SIerとクラウドの付き合い方SIerとクラウドの付き合い方
SIerとクラウドの付き合い方
 
基調講演「データのグループウェア化」
基調講演「データのグループウェア化」基調講演「データのグループウェア化」
基調講演「データのグループウェア化」
 
3週連続DDDその2 深いモデルの探求(ドメイン駆動設計 第3部)
3週連続DDDその2  深いモデルの探求(ドメイン駆動設計 第3部)3週連続DDDその2  深いモデルの探求(ドメイン駆動設計 第3部)
3週連続DDDその2 深いモデルの探求(ドメイン駆動設計 第3部)
 
20200522 Blockchain GIG#7 株式会社NTTデータ山下様資料
20200522 Blockchain GIG#7 株式会社NTTデータ山下様資料20200522 Blockchain GIG#7 株式会社NTTデータ山下様資料
20200522 Blockchain GIG#7 株式会社NTTデータ山下様資料
 
Web制作・運用会社に必要なCDNサービスとは?
Web制作・運用会社に必要なCDNサービスとは?Web制作・運用会社に必要なCDNサービスとは?
Web制作・運用会社に必要なCDNサービスとは?
 
Impress how to initiate dx with blockchain (mune's part only)
Impress how to initiate dx with blockchain (mune's part only)Impress how to initiate dx with blockchain (mune's part only)
Impress how to initiate dx with blockchain (mune's part only)
 
クラウド座談会資料
クラウド座談会資料クラウド座談会資料
クラウド座談会資料
 

Biglobe×ddd 実践編(dev love 20150618)