SlideShare a Scribd company logo
1 of 81
Laravelconf 2019
內部微服務 隊友開發更快速
Laravelconf 2019
• Eric
• 小麥
• 任職於奧丁丁
• 後端工程師
• https://github.com/ericliao79
• PHP / Golang
大綱
• 實務情境
• 什麼是微服務
• 微服務優點與缺點
• 如何導入
• Laravel 整合
情境
一個電子商務網站可能需要哪些功能
可能會有
可能會有
• 銷售前端
可能會有
• 銷售前端
• 會員系統
可能會有
• 銷售前端
• 會員系統
• 金流(信用卡, 匯款, 電子支付...)
可能會有
• 銷售前端
• 會員系統
• 金流(信用卡, 匯款, 電子支付...)
• Email, SNS...
需要開發第二個電子商務網站
需要開發第三個網站!!!!
是否陷入了重工地獄
🤔
單片式架構(Monolithic) 隱憂
• 不利於將特定功能橫向擴展
• 模組化也可能受到侷限
單片式架構(Monolithic) 隱憂
• 不利於將特定功能橫向擴展
• 模組化也可能受到侷限
• 專案變得超肥大
Microservice
Microservice
• 業務功能拆分
• 每一個服務都具有自主運行的業務
• 對外開放不受語言限制的 API
• 產品由一個或多個微服務組成
Microservice 優點
Microservice 優點
• 低耦合
Microservice 優點
• 低耦合
• 高內聚
Microservice 優點
• 低耦合
• 高內聚
• 簡化部屬
Microservice 優點
• 低耦合
• 高內聚
• 簡化部屬
• 可擴展
Microservice 優點
• 低耦合
• 高內聚
• 簡化部屬
• 可擴展
• 技術異構
低耦合 高內聚
• 每個服務之間, 因為用業務拆分
• 單一服務, 處理一種業務
簡化部屬 可擴展
• 我們可以根據需求擴展特定服務
• 而不是產品
技術異構
• 服務間溝通使用API的形式
• 便於不同團隊間使用不同技術基底
Team A
Team B
Team A
Team A
Team C
實務上的優勢
實務上的優勢
• 快速建置新專案
• 只需開發部分新的商業邏輯
實務上的優勢
• 快速建置新專案
• 只需開發部分新的商業邏輯
• 抽換模組快速
Application BApplication A
Application BApplication AApplication A
Application BApplication AApplication A Application AApplication B
Application A
Application B
Application A
Application B
微服務解決很多問題
看似美好
BUT
人生最厲害就是這個BUT!
Microservice 缺點
• 維運困難
• 複雜度高
• 效能隱憂
維運困難
• 完整的流程可能經過很多服務
Client Service Service
API gateway
API gateway
• 安全性問題
• 跨領域考量
複雜度高
• 完整流程依賴大量服務後期加入人員無法掌握產品樣貌
效能隱憂
• 大量的 API 溝通, Latency 被放大檢視
Client Service
Service
Service
100ms
150ms
50ms
40ms
50ms
70ms
實務上的難題
在拆分成多個微服務後
負責整合商業邏輯的工程師
需要研讀個個服務的API 文件
才能開發完整應用
我們嘗試的解決辦法
私有套件
Private Package
Private Package
Private Package
• 收斂參數
Private Package
• 收斂參數
Private Package
• 收斂參數
• 文件簡單化
Private Package
• 收斂參數
• 文件簡單化
Private Package
• 收斂參數
• 文件簡單化
Private Package
• 收斂參數
• 文件簡單化
• 熟悉行為
說說如何做
git tag version
composer require
composer.json
總結
• 減少重工
• 加入後續產品開發時程
• 快速抽換模組
Q&A
END

More Related Content

Similar to 內部微小服務, 隊友開發更快速

選一個框架當好朋友,讓您成為開心攻城獅
選一個框架當好朋友,讓您成為開心攻城獅選一個框架當好朋友,讓您成為開心攻城獅
選一個框架當好朋友,讓您成為開心攻城獅Shengyou Fan
 
【1110ROS社群開講】如何打造與人一起學習的機器檯燈_鄭凱文
【1110ROS社群開講】如何打造與人一起學習的機器檯燈_鄭凱文【1110ROS社群開講】如何打造與人一起學習的機器檯燈_鄭凱文
【1110ROS社群開講】如何打造與人一起學習的機器檯燈_鄭凱文MAKERPRO.cc
 
2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?
2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?
2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?Miles Chou
 
A brief introduction to Machine Learning
A brief introduction to Machine LearningA brief introduction to Machine Learning
A brief introduction to Machine LearningWen-Tien Chang
 
Top100summit前端的云时代支付宝前端平台架构 王保平
Top100summit前端的云时代支付宝前端平台架构  王保平Top100summit前端的云时代支付宝前端平台架构  王保平
Top100summit前端的云时代支付宝前端平台架构 王保平drewz lin
 
災難演練 @ AWS 實戰分享 (Using AWS for Disaster Recovery)
災難演練 @ AWS 實戰分享 (Using AWS for Disaster Recovery)災難演練 @ AWS 實戰分享 (Using AWS for Disaster Recovery)
災難演練 @ AWS 實戰分享 (Using AWS for Disaster Recovery)Rick Hwang
 
從 GitHub Copilot 到 Enterprise Copilot:打造符合企業需求的智能開發助手之路 | .NET Conf 2023 Taiwan
從 GitHub Copilot 到 Enterprise Copilot:打造符合企業需求的智能開發助手之路 | .NET Conf 2023 Taiwan從 GitHub Copilot 到 Enterprise Copilot:打造符合企業需求的智能開發助手之路 | .NET Conf 2023 Taiwan
從 GitHub Copilot 到 Enterprise Copilot:打造符合企業需求的智能開發助手之路 | .NET Conf 2023 TaiwanAlan Tsai
 
How to choose web framework
How to choose web frameworkHow to choose web framework
How to choose web frameworkBo-Yi Wu
 
瀏覽器與網頁原理 Principles of Browsers and Webpages
瀏覽器與網頁原理 Principles of Browsers and Webpages瀏覽器與網頁原理 Principles of Browsers and Webpages
瀏覽器與網頁原理 Principles of Browsers and Webpages安齊 劉
 
wagon - 免安裝可攜的 Laravel 開發環境
wagon - 免安裝可攜的 Laravel 開發環境wagon - 免安裝可攜的 Laravel 開發環境
wagon - 免安裝可攜的 Laravel 開發環境Shengyou Fan
 
Appcan平台介绍
Appcan平台介绍Appcan平台介绍
Appcan平台介绍36Kr.com
 
Appcan移动应用开发平台介绍120409
Appcan移动应用开发平台介绍120409Appcan移动应用开发平台介绍120409
Appcan移动应用开发平台介绍120409zhengyiwuxian
 
微博在大规模、高负载中的典型问题
微博在大规模、高负载中的典型问题微博在大规模、高负载中的典型问题
微博在大规模、高负载中的典型问题Weibo Corporation
 
瀏覽器開發與開源經驗 COSCUP 2018
瀏覽器開發與開源經驗 COSCUP 2018瀏覽器開發與開源經驗 COSCUP 2018
瀏覽器開發與開源經驗 COSCUP 2018安齊 劉
 
NoSQL@VIP — 唯品会NoSQL平台⾃动化发展及运维经验分享
NoSQL@VIP — 唯品会NoSQL平台⾃动化发展及运维经验分享NoSQL@VIP — 唯品会NoSQL平台⾃动化发展及运维经验分享
NoSQL@VIP — 唯品会NoSQL平台⾃动化发展及运维经验分享Leo Zhou
 
账务系统设计及应用
账务系统设计及应用账务系统设计及应用
账务系统设计及应用wang zaixiang
 
01 DevOps and Azure DevOps overview
01 DevOps and Azure DevOps overview01 DevOps and Azure DevOps overview
01 DevOps and Azure DevOps overviewAlan Tsai
 
數學系的資訊人生
數學系的資訊人生數學系的資訊人生
數學系的資訊人生Jintin Lin
 

Similar to 內部微小服務, 隊友開發更快速 (20)

選一個框架當好朋友,讓您成為開心攻城獅
選一個框架當好朋友,讓您成為開心攻城獅選一個框架當好朋友,讓您成為開心攻城獅
選一個框架當好朋友,讓您成為開心攻城獅
 
【1110ROS社群開講】如何打造與人一起學習的機器檯燈_鄭凱文
【1110ROS社群開講】如何打造與人一起學習的機器檯燈_鄭凱文【1110ROS社群開講】如何打造與人一起學習的機器檯燈_鄭凱文
【1110ROS社群開講】如何打造與人一起學習的機器檯燈_鄭凱文
 
2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?
2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?
2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?
 
A brief introduction to Machine Learning
A brief introduction to Machine LearningA brief introduction to Machine Learning
A brief introduction to Machine Learning
 
Top100summit前端的云时代支付宝前端平台架构 王保平
Top100summit前端的云时代支付宝前端平台架构  王保平Top100summit前端的云时代支付宝前端平台架构  王保平
Top100summit前端的云时代支付宝前端平台架构 王保平
 
災難演練@AWS 實戰分享
災難演練@AWS 實戰分享 災難演練@AWS 實戰分享
災難演練@AWS 實戰分享
 
災難演練 @ AWS 實戰分享 (Using AWS for Disaster Recovery)
災難演練 @ AWS 實戰分享 (Using AWS for Disaster Recovery)災難演練 @ AWS 實戰分享 (Using AWS for Disaster Recovery)
災難演練 @ AWS 實戰分享 (Using AWS for Disaster Recovery)
 
從 GitHub Copilot 到 Enterprise Copilot:打造符合企業需求的智能開發助手之路 | .NET Conf 2023 Taiwan
從 GitHub Copilot 到 Enterprise Copilot:打造符合企業需求的智能開發助手之路 | .NET Conf 2023 Taiwan從 GitHub Copilot 到 Enterprise Copilot:打造符合企業需求的智能開發助手之路 | .NET Conf 2023 Taiwan
從 GitHub Copilot 到 Enterprise Copilot:打造符合企業需求的智能開發助手之路 | .NET Conf 2023 Taiwan
 
How to choose web framework
How to choose web frameworkHow to choose web framework
How to choose web framework
 
瀏覽器與網頁原理 Principles of Browsers and Webpages
瀏覽器與網頁原理 Principles of Browsers and Webpages瀏覽器與網頁原理 Principles of Browsers and Webpages
瀏覽器與網頁原理 Principles of Browsers and Webpages
 
wagon - 免安裝可攜的 Laravel 開發環境
wagon - 免安裝可攜的 Laravel 開發環境wagon - 免安裝可攜的 Laravel 開發環境
wagon - 免安裝可攜的 Laravel 開發環境
 
Appcan平台介绍
Appcan平台介绍Appcan平台介绍
Appcan平台介绍
 
Appcan移动应用开发平台介绍120409
Appcan移动应用开发平台介绍120409Appcan移动应用开发平台介绍120409
Appcan移动应用开发平台介绍120409
 
驗證與訊息
驗證與訊息驗證與訊息
驗證與訊息
 
微博在大规模、高负载中的典型问题
微博在大规模、高负载中的典型问题微博在大规模、高负载中的典型问题
微博在大规模、高负载中的典型问题
 
瀏覽器開發與開源經驗 COSCUP 2018
瀏覽器開發與開源經驗 COSCUP 2018瀏覽器開發與開源經驗 COSCUP 2018
瀏覽器開發與開源經驗 COSCUP 2018
 
NoSQL@VIP — 唯品会NoSQL平台⾃动化发展及运维经验分享
NoSQL@VIP — 唯品会NoSQL平台⾃动化发展及运维经验分享NoSQL@VIP — 唯品会NoSQL平台⾃动化发展及运维经验分享
NoSQL@VIP — 唯品会NoSQL平台⾃动化发展及运维经验分享
 
账务系统设计及应用
账务系统设计及应用账务系统设计及应用
账务系统设计及应用
 
01 DevOps and Azure DevOps overview
01 DevOps and Azure DevOps overview01 DevOps and Azure DevOps overview
01 DevOps and Azure DevOps overview
 
數學系的資訊人生
數學系的資訊人生數學系的資訊人生
數學系的資訊人生
 

內部微小服務, 隊友開發更快速