SlideShare a Scribd company logo
1 of 19
マイクロサービス化の障壁
• 佐藤 和輝
• ナイル株式会社
• Scalaを去年5月くらいから
• Applivのマイクロサービス化
やってます
• 社内向けのAPI作り
発表者紹介 2
Applivって、何?
4
独自のランキングロジックと検索システムを持つ
ユーザー参加型のアプリ発見サービス
フ ィ リ ピ ン 拠 点
英語圏にもApplivを提供
グローバルなアプリ発見プラットフォームを目指す
今日話すこと
細かい技術の話しません!
マイクロサービス化の障壁
• マイクロすぎるマイクロサービス
• 複数サービスを一つのリポジトリで管理する
• ドメインの境界とチームの境界のズレ
• ドメイン駆動設計の理解不足(諸説あり)
やってみて辛かったことまとめ
マイクロすぎるマイクロサービス
• 新規機能をとりあえず新しいマイクロサービスに
→ サービスの数が増える
→ 無駄な境界が発生、連携に苦労する
マイクロすぎるマイクロサービス
• 時期尚早な分割を避ける
複数サービスを
一つのリポジトリで管理する
• 「それぞれ連携するし、
一つのリポジトリの方がいいよね」
→ リリースの影響範囲が不明瞭に
→ コード同士はとても密結合に
複数のサービスを一つのリポジトリで管理する
• サービスに合わせて適切な分離
ドメインの境界と
チームの境界のズレ
• すでに存在するチームと、ドメインの境界が違う
→ 相手チームを待たないといけない
→ 「本当に必要か」が十分に議論されない
→ データの所在がバラバラで効率の悪い呼び出し
ドメインの境界とチームの境界のズレ
• 境界を合わせる
• 必要ならチーム構成や組織構造を変える
ドメイン駆動設計の理解不足
(諸説あり)
• どういう単位でマイクロサービスとするべきか?
→ 手探りでは時間がかかる
→ 試してダメならやり直し、のコストが高い
ドメイン駆動設計の理解不足
• 本を読む
• 人に聞く、勉強会に参加する
簡単なまとめ
けして気楽な気持ちで成し遂げられるものではない。
• 先人の知恵を取り入れる
• 組織の改革も進める
簡単なまとめ

More Related Content

What's hot

Indexing with Algolia Ruby API Client
Indexing with Algolia Ruby API ClientIndexing with Algolia Ruby API Client
Indexing with Algolia Ruby API ClientEiji Shinohara
 
JavaScript祭りLTでmonacaを紹介
JavaScript祭りLTでmonacaを紹介JavaScript祭りLTでmonacaを紹介
JavaScript祭りLTでmonacaを紹介Yuki Okamoto
 
StrongLoopでサクっと始めるAPIエコノミー
StrongLoopでサクっと始めるAPIエコノミーStrongLoopでサクっと始めるAPIエコノミー
StrongLoopでサクっと始めるAPIエコノミーYUSUKE MORIZUMI
 
IoT/GPSトラッキング プラットフォームがサーバレス だからこそ2ヶ月で構築できた話
IoT/GPSトラッキング プラットフォームがサーバレス だからこそ2ヶ月で構築できた話IoT/GPSトラッキング プラットフォームがサーバレス だからこそ2ヶ月で構築できた話
IoT/GPSトラッキング プラットフォームがサーバレス だからこそ2ヶ月で構築できた話Yuki Takahashi
 
Getting Started Algolia with InstantSearch.js
Getting Started Algolia with InstantSearch.jsGetting Started Algolia with InstantSearch.js
Getting Started Algolia with InstantSearch.jsEiji Shinohara
 
Alibaba Cloud MVP 2019 これまでとこれからの道
Alibaba Cloud MVP 2019 これまでとこれからの道Alibaba Cloud MVP 2019 これまでとこれからの道
Alibaba Cloud MVP 2019 これまでとこれからの道AnzaiKumiko
 
iQONの開発手法 at iQONエンジニアセミナー
iQONの開発手法 at iQONエンジニアセミナーiQONの開発手法 at iQONエンジニアセミナー
iQONの開発手法 at iQONエンジニアセミナーImamura Masayuki
 
Cordova (PhoneGap) で始める、スマホアプリ開発
Cordova (PhoneGap) で始める、スマホアプリ開発Cordova (PhoneGap) で始める、スマホアプリ開発
Cordova (PhoneGap) で始める、スマホアプリ開発Kenichi Inoue
 

What's hot (9)

Indexing with Algolia Ruby API Client
Indexing with Algolia Ruby API ClientIndexing with Algolia Ruby API Client
Indexing with Algolia Ruby API Client
 
JavaScript祭りLTでmonacaを紹介
JavaScript祭りLTでmonacaを紹介JavaScript祭りLTでmonacaを紹介
JavaScript祭りLTでmonacaを紹介
 
StrongLoopでサクっと始めるAPIエコノミー
StrongLoopでサクっと始めるAPIエコノミーStrongLoopでサクっと始めるAPIエコノミー
StrongLoopでサクっと始めるAPIエコノミー
 
IoT/GPSトラッキング プラットフォームがサーバレス だからこそ2ヶ月で構築できた話
IoT/GPSトラッキング プラットフォームがサーバレス だからこそ2ヶ月で構築できた話IoT/GPSトラッキング プラットフォームがサーバレス だからこそ2ヶ月で構築できた話
IoT/GPSトラッキング プラットフォームがサーバレス だからこそ2ヶ月で構築できた話
 
Getting Started Algolia with InstantSearch.js
Getting Started Algolia with InstantSearch.jsGetting Started Algolia with InstantSearch.js
Getting Started Algolia with InstantSearch.js
 
Alibaba Cloud MVP 2019 これまでとこれからの道
Alibaba Cloud MVP 2019 これまでとこれからの道Alibaba Cloud MVP 2019 これまでとこれからの道
Alibaba Cloud MVP 2019 これまでとこれからの道
 
iQONの開発手法 at iQONエンジニアセミナー
iQONの開発手法 at iQONエンジニアセミナーiQONの開発手法 at iQONエンジニアセミナー
iQONの開発手法 at iQONエンジニアセミナー
 
HOME'Sアプリ Swift化
HOME'Sアプリ Swift化HOME'Sアプリ Swift化
HOME'Sアプリ Swift化
 
Cordova (PhoneGap) で始める、スマホアプリ開発
Cordova (PhoneGap) で始める、スマホアプリ開発Cordova (PhoneGap) で始める、スマホアプリ開発
Cordova (PhoneGap) で始める、スマホアプリ開発
 

Viewers also liked

複数サービスを共存させるために 試行錯誤したこと
複数サービスを共存させるために 試行錯誤したこと複数サービスを共存させるために 試行錯誤したこと
複数サービスを共存させるために 試行錯誤したことNagao Shun
 
20161206 うるう秒社内勉強会 社外向け資料
20161206 うるう秒社内勉強会 社外向け資料20161206 うるう秒社内勉強会 社外向け資料
20161206 うるう秒社内勉強会 社外向け資料Tsuyoshi Hisamatsu
 
DevOpsハッカソン参加レポート
DevOpsハッカソン参加レポートDevOpsハッカソン参加レポート
DevOpsハッカソン参加レポートTakashi Takebayashi
 
Guess the Country - Playing with Twitter Streaming API
Guess the Country - Playing with Twitter Streaming APIGuess the Country - Playing with Twitter Streaming API
Guess the Country - Playing with Twitter Streaming APIChris Birchall
 
3分 gem クッキング
3分 gem クッキング3分 gem クッキング
3分 gem クッキングKenji Mori
 
ScalaCache: simple caching in Scala
ScalaCache: simple caching in ScalaScalaCache: simple caching in Scala
ScalaCache: simple caching in ScalaChris Birchall
 
問題が起こった時、変えるのは人かそれともプロセスか?
問題が起こった時、変えるのは人かそれともプロセスか?問題が起こった時、変えるのは人かそれともプロセスか?
問題が起こった時、変えるのは人かそれともプロセスか?Takashi Takebayashi
 
ゼロからの座談会実践
ゼロからの座談会実践ゼロからの座談会実践
ゼロからの座談会実践Iwasaki Yusuke
 
多分モダンなWebアプリ開発
多分モダンなWebアプリ開発多分モダンなWebアプリ開発
多分モダンなWebアプリ開発tak-nakamura
 
マイクロサービス運用の所感 #m3dev
マイクロサービス運用の所感 #m3devマイクロサービス運用の所感 #m3dev
マイクロサービス運用の所感 #m3devKazuhiro Sera
 
Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編Etsuji Nakai
 
Information sharing and Experience consistency at Cookpad mobile application
Information sharing and Experience consistency at Cookpad mobile applicationInformation sharing and Experience consistency at Cookpad mobile application
Information sharing and Experience consistency at Cookpad mobile applicationichiko_revjune
 
Scalaプロダクトのビルド高速化
Scalaプロダクトのビルド高速化Scalaプロダクトのビルド高速化
Scalaプロダクトのビルド高速化kuro kuro
 
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移まべ☆てっく運営
 

Viewers also liked (15)

複数サービスを共存させるために 試行錯誤したこと
複数サービスを共存させるために 試行錯誤したこと複数サービスを共存させるために 試行錯誤したこと
複数サービスを共存させるために 試行錯誤したこと
 
20161206 うるう秒社内勉強会 社外向け資料
20161206 うるう秒社内勉強会 社外向け資料20161206 うるう秒社内勉強会 社外向け資料
20161206 うるう秒社内勉強会 社外向け資料
 
akka-streamのマイクロサービスへの適用
akka-streamのマイクロサービスへの適用akka-streamのマイクロサービスへの適用
akka-streamのマイクロサービスへの適用
 
DevOpsハッカソン参加レポート
DevOpsハッカソン参加レポートDevOpsハッカソン参加レポート
DevOpsハッカソン参加レポート
 
Guess the Country - Playing with Twitter Streaming API
Guess the Country - Playing with Twitter Streaming APIGuess the Country - Playing with Twitter Streaming API
Guess the Country - Playing with Twitter Streaming API
 
3分 gem クッキング
3分 gem クッキング3分 gem クッキング
3分 gem クッキング
 
ScalaCache: simple caching in Scala
ScalaCache: simple caching in ScalaScalaCache: simple caching in Scala
ScalaCache: simple caching in Scala
 
問題が起こった時、変えるのは人かそれともプロセスか?
問題が起こった時、変えるのは人かそれともプロセスか?問題が起こった時、変えるのは人かそれともプロセスか?
問題が起こった時、変えるのは人かそれともプロセスか?
 
ゼロからの座談会実践
ゼロからの座談会実践ゼロからの座談会実践
ゼロからの座談会実践
 
多分モダンなWebアプリ開発
多分モダンなWebアプリ開発多分モダンなWebアプリ開発
多分モダンなWebアプリ開発
 
マイクロサービス運用の所感 #m3dev
マイクロサービス運用の所感 #m3devマイクロサービス運用の所感 #m3dev
マイクロサービス運用の所感 #m3dev
 
Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編
 
Information sharing and Experience consistency at Cookpad mobile application
Information sharing and Experience consistency at Cookpad mobile applicationInformation sharing and Experience consistency at Cookpad mobile application
Information sharing and Experience consistency at Cookpad mobile application
 
Scalaプロダクトのビルド高速化
Scalaプロダクトのビルド高速化Scalaプロダクトのビルド高速化
Scalaプロダクトのビルド高速化
 
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移
 

Similar to マイクロサービス化の障壁

PaaS / Cloud Foundry makes you happy
PaaS / Cloud Foundry makes you happyPaaS / Cloud Foundry makes you happy
PaaS / Cloud Foundry makes you happyKatsunori Kawaguchi
 
WebAPIのこれまでとこれから
WebAPIのこれまでとこれからWebAPIのこれまでとこれから
WebAPIのこれまでとこれからYohei Yamamoto
 
Creating Mashup service in Yamaguchi
Creating Mashup service in YamaguchiCreating Mashup service in Yamaguchi
Creating Mashup service in YamaguchiOhishi Mikage
 
20170510 タウンwi fixlifull_スマホアプリ開発の実例 (1)
20170510 タウンwi fixlifull_スマホアプリ開発の実例 (1)20170510 タウンwi fixlifull_スマホアプリ開発の実例 (1)
20170510 タウンwi fixlifull_スマホアプリ開発の実例 (1)LIFULL Co., Ltd.
 
Okinawa Open Daysでの講演(OpenStackトレーニングなど)
Okinawa Open Daysでの講演(OpenStackトレーニングなど)Okinawa Open Daysでの講演(OpenStackトレーニングなど)
Okinawa Open Daysでの講演(OpenStackトレーニングなど)Satoshi Konno
 
20131212 morphlabs okinawa_presentation
20131212 morphlabs okinawa_presentation20131212 morphlabs okinawa_presentation
20131212 morphlabs okinawa_presentationsaktomshu
 
ApplicationTemplateのススメ
ApplicationTemplateのススメApplicationTemplateのススメ
ApplicationTemplateのススメTakafumi ONAKA
 
遅いクエリと向き合う仕組み #CybozuMeetup
遅いクエリと向き合う仕組み #CybozuMeetup遅いクエリと向き合う仕組み #CybozuMeetup
遅いクエリと向き合う仕組み #CybozuMeetupS Akai
 
楽天がCloud foundryを選んだ理由
楽天がCloud foundryを選んだ理由楽天がCloud foundryを選んだ理由
楽天がCloud foundryを選んだ理由Rakuten Group, Inc.
 
Movable Type Data API Swiftアプリ作成事例
Movable Type Data API Swiftアプリ作成事例Movable Type Data API Swiftアプリ作成事例
Movable Type Data API Swiftアプリ作成事例FromF
 
金融業界におけるAPIエコノミー / Fintech meetup / IBM
金融業界におけるAPIエコノミー / Fintech meetup / IBM金融業界におけるAPIエコノミー / Fintech meetup / IBM
金融業界におけるAPIエコノミー / Fintech meetup / IBMRasmus Ekman
 
Productive Organization with Ruby
Productive Organization with RubyProductive Organization with Ruby
Productive Organization with RubyHiroshi SHIBATA
 
OpenWhisk Serverless への期待
OpenWhisk Serverless への期待OpenWhisk Serverless への期待
OpenWhisk Serverless への期待Hideaki Tokida
 
IMS/GLC 2015 東京セミナー報告とCaliper 1.0
IMS/GLC 2015 東京セミナー報告とCaliper 1.0IMS/GLC 2015 東京セミナー報告とCaliper 1.0
IMS/GLC 2015 東京セミナー報告とCaliper 1.0Hiroshi Takase
 
OpenStack環境構築支援について
OpenStack環境構築支援についてOpenStack環境構築支援について
OpenStack環境構築支援についてSatoshi Konno
 
OpenStack Days Tokyo 2014のプレゼンテーション資料(モーフ・ラボ & アセアン・ラボ)
OpenStack Days Tokyo 2014のプレゼンテーション資料(モーフ・ラボ & アセアン・ラボ)OpenStack Days Tokyo 2014のプレゼンテーション資料(モーフ・ラボ & アセアン・ラボ)
OpenStack Days Tokyo 2014のプレゼンテーション資料(モーフ・ラボ & アセアン・ラボ)Satoshi Konno
 
Scala: Mobile Backend on AWS
Scala: Mobile Backend on AWSScala: Mobile Backend on AWS
Scala: Mobile Backend on AWScmaraiyusuke
 
API Academy:マイクロサービス化へのファーストステップ
API Academy:マイクロサービス化へのファーストステップAPI Academy:マイクロサービス化へのファーストステップ
API Academy:マイクロサービス化へのファーストステップCA Technologies
 

Similar to マイクロサービス化の障壁 (20)

PaaS / Cloud Foundry makes you happy
PaaS / Cloud Foundry makes you happyPaaS / Cloud Foundry makes you happy
PaaS / Cloud Foundry makes you happy
 
WebAPIのこれまでとこれから
WebAPIのこれまでとこれからWebAPIのこれまでとこれから
WebAPIのこれまでとこれから
 
Creating Mashup service in Yamaguchi
Creating Mashup service in YamaguchiCreating Mashup service in Yamaguchi
Creating Mashup service in Yamaguchi
 
概説 Data API v3
概説 Data API v3概説 Data API v3
概説 Data API v3
 
20170510 タウンwi fixlifull_スマホアプリ開発の実例 (1)
20170510 タウンwi fixlifull_スマホアプリ開発の実例 (1)20170510 タウンwi fixlifull_スマホアプリ開発の実例 (1)
20170510 タウンwi fixlifull_スマホアプリ開発の実例 (1)
 
Okinawa Open Daysでの講演(OpenStackトレーニングなど)
Okinawa Open Daysでの講演(OpenStackトレーニングなど)Okinawa Open Daysでの講演(OpenStackトレーニングなど)
Okinawa Open Daysでの講演(OpenStackトレーニングなど)
 
20131212 morphlabs okinawa_presentation
20131212 morphlabs okinawa_presentation20131212 morphlabs okinawa_presentation
20131212 morphlabs okinawa_presentation
 
ApplicationTemplateのススメ
ApplicationTemplateのススメApplicationTemplateのススメ
ApplicationTemplateのススメ
 
遅いクエリと向き合う仕組み #CybozuMeetup
遅いクエリと向き合う仕組み #CybozuMeetup遅いクエリと向き合う仕組み #CybozuMeetup
遅いクエリと向き合う仕組み #CybozuMeetup
 
楽天がCloud foundryを選んだ理由
楽天がCloud foundryを選んだ理由楽天がCloud foundryを選んだ理由
楽天がCloud foundryを選んだ理由
 
Movable Type Data API Swiftアプリ作成事例
Movable Type Data API Swiftアプリ作成事例Movable Type Data API Swiftアプリ作成事例
Movable Type Data API Swiftアプリ作成事例
 
金融業界におけるAPIエコノミー / Fintech meetup / IBM
金融業界におけるAPIエコノミー / Fintech meetup / IBM金融業界におけるAPIエコノミー / Fintech meetup / IBM
金融業界におけるAPIエコノミー / Fintech meetup / IBM
 
Productive Organization with Ruby
Productive Organization with RubyProductive Organization with Ruby
Productive Organization with Ruby
 
OpenWhisk Serverless への期待
OpenWhisk Serverless への期待OpenWhisk Serverless への期待
OpenWhisk Serverless への期待
 
IMS/GLC 2015 東京セミナー報告とCaliper 1.0
IMS/GLC 2015 東京セミナー報告とCaliper 1.0IMS/GLC 2015 東京セミナー報告とCaliper 1.0
IMS/GLC 2015 東京セミナー報告とCaliper 1.0
 
OpenStack環境構築支援について
OpenStack環境構築支援についてOpenStack環境構築支援について
OpenStack環境構築支援について
 
OpenStack Days Tokyo 2014のプレゼンテーション資料(モーフ・ラボ & アセアン・ラボ)
OpenStack Days Tokyo 2014のプレゼンテーション資料(モーフ・ラボ & アセアン・ラボ)OpenStack Days Tokyo 2014のプレゼンテーション資料(モーフ・ラボ & アセアン・ラボ)
OpenStack Days Tokyo 2014のプレゼンテーション資料(モーフ・ラボ & アセアン・ラボ)
 
Scala: Mobile Backend on AWS
Scala: Mobile Backend on AWSScala: Mobile Backend on AWS
Scala: Mobile Backend on AWS
 
楽天のSplunk as a service
楽天のSplunk as a service楽天のSplunk as a service
楽天のSplunk as a service
 
API Academy:マイクロサービス化へのファーストステップ
API Academy:マイクロサービス化へのファーストステップAPI Academy:マイクロサービス化へのファーストステップ
API Academy:マイクロサービス化へのファーストステップ
 

マイクロサービス化の障壁

Editor's Notes

  1. Applivという自社サービスのマイクロサービス化に、Scalaを使って取り組んでいます。 Webサービスを作ってるチームとは別に、社内向けのAPIを作るチームです。