SlideShare une entreprise Scribd logo
1  sur  62
Building Microservices

in Python

個案分享 @ Soocii 群攜科技
Presented by

Jonas Cheng
2017/06
About Me
Jonas	Cheng	
VP Engineering

Nov, 2016 Soocii

社群平台 / Python
Mar, 2006 趨勢科技

資安 / C++, Python, Node.JS
Jan, 2002 凌群電腦

DBMaker / C
邊玩。邊聊。邊播
⼿手遊直播群聊圈
社群分享


遊戲中⼀一鍵開啟直播,

即時邀請好友上線觀戰,
透過螢幕分享與語⾳音群聊,
不需離開遊戲也能與朋友
共享歡樂。
上傳直播群聊影片與截圖,
即時動態追蹤好友遊戲歷
程,分享討論專屬於玩家
的遊戲⼤大⼩小事。
直播群聊
提供遊戲新⼿手教學、破關
密技,為你貼⼼心整理理最新
遊戲資訊,解決遊戲中遇
到的疑難雜症。
即時資訊
採用 Microservices 的理由
採用 Microservices 的挑戰
開發的挑戰 / Soocii 開發策略
測試的挑戰 / Soocii 測試策略
持續部署(CD)的挑戰 / Soocii 部署策略
導入 Microservices 的關鍵
分享...
沒有哪個技術好或壞的比較

只有經驗及決策分享
資源與時間的拉鋸

永遠有更好的解決方案
前⾔言...
Chad Fowler
Sam Newman
Martin Fowler
採用 Microservices 的理由
採用 Microservices 的挑戰
開發的挑戰 / Soocii 開發策略
測試的挑戰 / Soocii 測試策略
持續部署(CD)的挑戰 / Soocii 部署策略
導入 Microservices 的關鍵
The	Monolithic	Way


Evolutionary	Design
Add	new	features	as	microservices		
and	plug	into	existing	application
Small	Codebase
Each	microservice

	deals	with	one	concern
Easy	to	Scale
Easy	to	Scale
Easy	to	Scale
Easy	to	Deploy
Less	dependencies	and	
easy	to	deploy
System	Resilience
Some	microservices	go	down	
won’t	impact	entire	application
Evolu7onary	Design	
Small	Codebase	
Easy	to	Scale	
Easy	to	Deploy	
System	Resilience
採用 Microservices 的理由
採用 Microservices 的挑戰
開發的挑戰 / Soocii 開發策略
測試的挑戰 / Soocii 測試策略
持續部署(CD)的挑戰 / Soocii 部署策略
導入 Microservices 的關鍵
AWS	ES		
AWS	S3	
AWS	RDS	
AWS	DDB	
AWS	Redis	
GCP	FCM	
GCP	Storage	
GCP	Database	
…
AWS/GCP 架構圖
開發的挑戰
開發的挑戰
External	dependencies	add	complexity	to	
development	environment
開發的挑戰
Soocii開發策略略
單機開發環境描述

各⾃自	Servic	必要開發資源	
假造	AUTH	
Mock	外部其他服務,	
Cloud	Provider	替代⽅方案
跨團隊整合環境描述

全部	Services	
直接介接	Cloud	Provider
開發的挑戰
採用 Microservices 的理由
採用 Microservices 的挑戰
開發的挑戰 / Soocii 開發策略
測試的挑戰 / Soocii 測試策略
持續部署(CD)的挑戰 / Soocii 部署策略
導入 Microservices 的關鍵
Agility	vs	Quality
Services	independently	
deployable.	You	make	a	
change,	you	only	test	and	
deploy	a	small	service.	
-	Mar7n	Fowler
測試的挑戰
Test	func7on	or	method	call
Test	a	collec7ons	of	classes	
with	stub	out	all	external	
collaborators
Test	against	en7re	system
測試的挑戰
Without	tes7ng	against	the	real	
consumer	by	using	a	

consumer-driven	contract	
(CDC).	
-	Sam	Newman
Django	REST	framework	test	helper	-	rest_framework.test
BDD	extends	TDD	by	wri7ng	test	cases	in	a	natural	language
以單⼀一微服務為測試範疇	
Mock.patch	遮蔽特定	func7on	或	method,	或	
Requests-mock	遮蔽特定	URL	Request
Soocii 測試策略略
避免非同步測試	
利利⽤用	Celery	處理理非同步需求,
task_always_eager	達到同步測試	
上上策	event-driven	
下下策	sleep	吧!
Soocii 測試策略略
採用 Microservices 的理由
採用 Microservices 的挑戰
開發的挑戰 / Soocii 開發策略
測試的挑戰 / Soocii 測試策略
持續部署(CD)的挑戰 / Soocii 部署策略
導入 Microservices 的關鍵
Seman7c	Versioning	
	/v1.1/me/feed	
	/v1.2/me/feed
/v1.0/photo	
	/v1.1/feed	
	/v1.2/feed	
	/v1.3/video	
	/v1.4/follower
採用 Microservices 的理由
採用 Microservices 的挑戰
開發的挑戰 / Soocii 開發策略
測試的挑戰 / Soocii 測試策略
持續部署(CD)的挑戰 / Soocii 部署策略
導入 Microservices 的關鍵
DevOps	mindset
導入 Microservice 的關鍵
CI/CD	Infrastructure
導入 Microservice 的關鍵
Isolate	not	just	code

but	CI/CD	for	each	service
導入 Microservice 的關鍵
Monitoring
導入 Microservice 的關鍵
Authen7ca7on/Single	Sign-On	Gateway	
Fine-Grained	Authoriza7on	
Seman7c	Monitoring		
Correla7on	IDs	
Behavioral-Driven	Ranking	
ETL	Data	Processing	
Machine	Learning	
…
Currently in Open Beta
Currently in Closed Beta

Contenu connexe

En vedette

使用Amazon Machine Learning 建立即時推薦引擎
使用Amazon Machine Learning 建立即時推薦引擎使用Amazon Machine Learning 建立即時推薦引擎
使用Amazon Machine Learning 建立即時推薦引擎Amazon Web Services
 
AWS Solutions Architect 準備心得
AWS Solutions Architect 準備心得AWS Solutions Architect 準備心得
AWS Solutions Architect 準備心得Cliff Chao-kuan Lu
 
Aws summit devops 云端多环境自动化运维和部署
Aws summit devops   云端多环境自动化运维和部署Aws summit devops   云端多环境自动化运维和部署
Aws summit devops 云端多环境自动化运维和部署Leon Li
 
基于Aws的持续集成、交付和部署 代闻
基于Aws的持续集成、交付和部署 代闻基于Aws的持续集成、交付和部署 代闻
基于Aws的持续集成、交付和部署 代闻Mason Mei
 
AwSome day 分享
AwSome day 分享AwSome day 分享
AwSome day 分享得翔 徐
 
數位媒體雲端儲存案例和技術分享 (AWS Storage Options for Media Industry)
數位媒體雲端儲存案例和技術分享 (AWS Storage Options for Media Industry)數位媒體雲端儲存案例和技術分享 (AWS Storage Options for Media Industry)
數位媒體雲端儲存案例和技術分享 (AWS Storage Options for Media Industry)Amazon Web Services
 
淺談系統監控與 AWS CloudWatch 的應用
淺談系統監控與 AWS CloudWatch 的應用淺談系統監控與 AWS CloudWatch 的應用
淺談系統監控與 AWS CloudWatch 的應用Rick Hwang
 
以Device Shadows與Rules Engine串聯實體世界
以Device Shadows與Rules Engine串聯實體世界以Device Shadows與Rules Engine串聯實體世界
以Device Shadows與Rules Engine串聯實體世界Amazon Web Services
 
透過Amazon CloudFront 和AWS WAF來執行安全的內容傳輸
透過Amazon CloudFront 和AWS WAF來執行安全的內容傳輸透過Amazon CloudFront 和AWS WAF來執行安全的內容傳輸
透過Amazon CloudFront 和AWS WAF來執行安全的內容傳輸Amazon Web Services
 
Automate Software Deployments on EC2 with AWS CodeDeploy
Automate Software Deployments on EC2 with AWS CodeDeployAutomate Software Deployments on EC2 with AWS CodeDeploy
Automate Software Deployments on EC2 with AWS CodeDeployAmazon Web Services
 
基于Aws的dev ops实践指南 王毅
基于Aws的dev ops实践指南 王毅基于Aws的dev ops实践指南 王毅
基于Aws的dev ops实践指南 王毅Mason Mei
 
初探AWS 平台上的 NoSQL 雲端資料庫服務
初探AWS 平台上的 NoSQL 雲端資料庫服務初探AWS 平台上的 NoSQL 雲端資料庫服務
初探AWS 平台上的 NoSQL 雲端資料庫服務Amazon Web Services
 
客戶導入雲端的經驗分享 [Panel Discussion]
客戶導入雲端的經驗分享 [Panel Discussion]客戶導入雲端的經驗分享 [Panel Discussion]
客戶導入雲端的經驗分享 [Panel Discussion]Amazon Web Services
 
使用 AWS 無伺服器運算服務打造您的第一個語音助理
使用 AWS 無伺服器運算服務打造您的第一個語音助理使用 AWS 無伺服器運算服務打造您的第一個語音助理
使用 AWS 無伺服器運算服務打造您的第一個語音助理Amazon Web Services
 
應用程式迅速開發與串連廣大用戶要素
應用程式迅速開發與串連廣大用戶要素應用程式迅速開發與串連廣大用戶要素
應用程式迅速開發與串連廣大用戶要素Amazon Web Services
 
基于AWS Lambda的无服务器架构在Strikingly中的应用
基于AWS Lambda的无服务器架构在Strikingly中的应用基于AWS Lambda的无服务器架构在Strikingly中的应用
基于AWS Lambda的无服务器架构在Strikingly中的应用Daniel Gong
 
AWS電商和零售業解決方案介紹
AWS電商和零售業解決方案介紹AWS電商和零售業解決方案介紹
AWS電商和零售業解決方案介紹Amazon Web Services
 
使用 AWS 負載平衡服務讓您的應用程式規模化
使用 AWS 負載平衡服務讓您的應用程式規模化使用 AWS 負載平衡服務讓您的應用程式規模化
使用 AWS 負載平衡服務讓您的應用程式規模化Amazon Web Services
 

En vedette (20)

使用Amazon Machine Learning 建立即時推薦引擎
使用Amazon Machine Learning 建立即時推薦引擎使用Amazon Machine Learning 建立即時推薦引擎
使用Amazon Machine Learning 建立即時推薦引擎
 
AWS EC2 and ELB troubleshooting
AWS EC2 and ELB troubleshootingAWS EC2 and ELB troubleshooting
AWS EC2 and ELB troubleshooting
 
AWS Solutions Architect 準備心得
AWS Solutions Architect 準備心得AWS Solutions Architect 準備心得
AWS Solutions Architect 準備心得
 
Aws summit devops 云端多环境自动化运维和部署
Aws summit devops   云端多环境自动化运维和部署Aws summit devops   云端多环境自动化运维和部署
Aws summit devops 云端多环境自动化运维和部署
 
基于Aws的持续集成、交付和部署 代闻
基于Aws的持续集成、交付和部署 代闻基于Aws的持续集成、交付和部署 代闻
基于Aws的持续集成、交付和部署 代闻
 
AwSome day 分享
AwSome day 分享AwSome day 分享
AwSome day 分享
 
數位媒體雲端儲存案例和技術分享 (AWS Storage Options for Media Industry)
數位媒體雲端儲存案例和技術分享 (AWS Storage Options for Media Industry)數位媒體雲端儲存案例和技術分享 (AWS Storage Options for Media Industry)
數位媒體雲端儲存案例和技術分享 (AWS Storage Options for Media Industry)
 
淺談系統監控與 AWS CloudWatch 的應用
淺談系統監控與 AWS CloudWatch 的應用淺談系統監控與 AWS CloudWatch 的應用
淺談系統監控與 AWS CloudWatch 的應用
 
以Device Shadows與Rules Engine串聯實體世界
以Device Shadows與Rules Engine串聯實體世界以Device Shadows與Rules Engine串聯實體世界
以Device Shadows與Rules Engine串聯實體世界
 
透過Amazon CloudFront 和AWS WAF來執行安全的內容傳輸
透過Amazon CloudFront 和AWS WAF來執行安全的內容傳輸透過Amazon CloudFront 和AWS WAF來執行安全的內容傳輸
透過Amazon CloudFront 和AWS WAF來執行安全的內容傳輸
 
Automate Software Deployments on EC2 with AWS CodeDeploy
Automate Software Deployments on EC2 with AWS CodeDeployAutomate Software Deployments on EC2 with AWS CodeDeploy
Automate Software Deployments on EC2 with AWS CodeDeploy
 
基于Aws的dev ops实践指南 王毅
基于Aws的dev ops实践指南 王毅基于Aws的dev ops实践指南 王毅
基于Aws的dev ops实践指南 王毅
 
初探AWS 平台上的 NoSQL 雲端資料庫服務
初探AWS 平台上的 NoSQL 雲端資料庫服務初探AWS 平台上的 NoSQL 雲端資料庫服務
初探AWS 平台上的 NoSQL 雲端資料庫服務
 
客戶導入雲端的經驗分享 [Panel Discussion]
客戶導入雲端的經驗分享 [Panel Discussion]客戶導入雲端的經驗分享 [Panel Discussion]
客戶導入雲端的經驗分享 [Panel Discussion]
 
運用AWS開創與發展事業
運用AWS開創與發展事業運用AWS開創與發展事業
運用AWS開創與發展事業
 
使用 AWS 無伺服器運算服務打造您的第一個語音助理
使用 AWS 無伺服器運算服務打造您的第一個語音助理使用 AWS 無伺服器運算服務打造您的第一個語音助理
使用 AWS 無伺服器運算服務打造您的第一個語音助理
 
應用程式迅速開發與串連廣大用戶要素
應用程式迅速開發與串連廣大用戶要素應用程式迅速開發與串連廣大用戶要素
應用程式迅速開發與串連廣大用戶要素
 
基于AWS Lambda的无服务器架构在Strikingly中的应用
基于AWS Lambda的无服务器架构在Strikingly中的应用基于AWS Lambda的无服务器架构在Strikingly中的应用
基于AWS Lambda的无服务器架构在Strikingly中的应用
 
AWS電商和零售業解決方案介紹
AWS電商和零售業解決方案介紹AWS電商和零售業解決方案介紹
AWS電商和零售業解決方案介紹
 
使用 AWS 負載平衡服務讓您的應用程式規模化
使用 AWS 負載平衡服務讓您的應用程式規模化使用 AWS 負載平衡服務讓您的應用程式規模化
使用 AWS 負載平衡服務讓您的應用程式規模化
 

Similaire à Building microservices in python @ pycon2017

OpenAI ChatGPT techtalk .pptx
OpenAI ChatGPT techtalk .pptxOpenAI ChatGPT techtalk .pptx
OpenAI ChatGPT techtalk .pptxSimmy41
 
前端工程師的告白: 親愛的,開源的物聯網好好玩呀!
前端工程師的告白: 親愛的,開源的物聯網好好玩呀!前端工程師的告白: 親愛的,開源的物聯網好好玩呀!
前端工程師的告白: 親愛的,開源的物聯網好好玩呀!Web Arduino
 
Social Game
Social GameSocial Game
Social Gameematrix
 
Game development using monogame
Game development using monogameGame development using monogame
Game development using monogamePower Wu
 
Bonjour service presentation
Bonjour service presentationBonjour service presentation
Bonjour service presentationBob Chang
 
20171013 物聯網網哪走?IoT總體趨勢面面觀
20171013 物聯網網哪走?IoT總體趨勢面面觀20171013 物聯網網哪走?IoT總體趨勢面面觀
20171013 物聯網網哪走?IoT總體趨勢面面觀m12016changTIIMP
 
2011年海外社交游戏厂商案例研究报告 zynga案例研究报告(1)
2011年海外社交游戏厂商案例研究报告 zynga案例研究报告(1)2011年海外社交游戏厂商案例研究报告 zynga案例研究报告(1)
2011年海外社交游戏厂商案例研究报告 zynga案例研究报告(1)AppLeap Inc.
 
從 GPT 到 DALL·E:在 Azure 上實現 AI 的創造性應用
從 GPT 到 DALL·E:在 Azure 上實現 AI 的創造性應用從 GPT 到 DALL·E:在 Azure 上實現 AI 的創造性應用
從 GPT 到 DALL·E:在 Azure 上實現 AI 的創造性應用佳新 陳
 
20230830 淺談 Azure OpenAI.pdf
20230830 淺談 Azure OpenAI.pdf20230830 淺談 Azure OpenAI.pdf
20230830 淺談 Azure OpenAI.pdfKo Ko
 
Trading bot演算法與軟工在程式交易上的實踐
Trading bot演算法與軟工在程式交易上的實踐Trading bot演算法與軟工在程式交易上的實踐
Trading bot演算法與軟工在程式交易上的實踐Philip Zheng
 
Building Chatbot With Huggging Face
 				Building Chatbot With Huggging Face 				Building Chatbot With Huggging Face
Building Chatbot With Huggging FaceKo Ko
 
如何使用 API.AI + NodeJs 快速建立 Chatbot
如何使用 API.AI + NodeJs 快速建立 Chatbot如何使用 API.AI + NodeJs 快速建立 Chatbot
如何使用 API.AI + NodeJs 快速建立 ChatbotTech Podcast Night
 
Tj bot 0317實作坊 組裝篇
Tj bot 0317實作坊 組裝篇Tj bot 0317實作坊 組裝篇
Tj bot 0317實作坊 組裝篇湯米吳 Tommy Wu
 
Mochimedia's Success Story - Case Study I (Python-based Company)
Mochimedia's Success Story - Case Study I (Python-based Company)Mochimedia's Success Story - Case Study I (Python-based Company)
Mochimedia's Success Story - Case Study I (Python-based Company)Sting Chen
 
Powerpoint SHOW
Powerpoint SHOWPowerpoint SHOW
Powerpoint SHOWoyag
 
成大GDSC期初大會
成大GDSC期初大會成大GDSC期初大會
成大GDSC期初大會ssuser9b703f1
 
《氪周刊:互联网创业必读》(第83期)
《氪周刊:互联网创业必读》(第83期)《氪周刊:互联网创业必读》(第83期)
《氪周刊:互联网创业必读》(第83期)36Kr.com
 
影片編碼與分享
影片編碼與分享影片編碼與分享
影片編碼與分享Andy Juang
 
How to cooporeate with IT partners from a designer's viewpoint
How to cooporeate with IT partners from a designer's viewpointHow to cooporeate with IT partners from a designer's viewpoint
How to cooporeate with IT partners from a designer's viewpointNTUST
 
《氪周刊:互联网创业必读》(78)
《氪周刊:互联网创业必读》(78)《氪周刊:互联网创业必读》(78)
《氪周刊:互联网创业必读》(78)36Kr.com
 

Similaire à Building microservices in python @ pycon2017 (20)

OpenAI ChatGPT techtalk .pptx
OpenAI ChatGPT techtalk .pptxOpenAI ChatGPT techtalk .pptx
OpenAI ChatGPT techtalk .pptx
 
前端工程師的告白: 親愛的,開源的物聯網好好玩呀!
前端工程師的告白: 親愛的,開源的物聯網好好玩呀!前端工程師的告白: 親愛的,開源的物聯網好好玩呀!
前端工程師的告白: 親愛的,開源的物聯網好好玩呀!
 
Social Game
Social GameSocial Game
Social Game
 
Game development using monogame
Game development using monogameGame development using monogame
Game development using monogame
 
Bonjour service presentation
Bonjour service presentationBonjour service presentation
Bonjour service presentation
 
20171013 物聯網網哪走?IoT總體趨勢面面觀
20171013 物聯網網哪走?IoT總體趨勢面面觀20171013 物聯網網哪走?IoT總體趨勢面面觀
20171013 物聯網網哪走?IoT總體趨勢面面觀
 
2011年海外社交游戏厂商案例研究报告 zynga案例研究报告(1)
2011年海外社交游戏厂商案例研究报告 zynga案例研究报告(1)2011年海外社交游戏厂商案例研究报告 zynga案例研究报告(1)
2011年海外社交游戏厂商案例研究报告 zynga案例研究报告(1)
 
從 GPT 到 DALL·E:在 Azure 上實現 AI 的創造性應用
從 GPT 到 DALL·E:在 Azure 上實現 AI 的創造性應用從 GPT 到 DALL·E:在 Azure 上實現 AI 的創造性應用
從 GPT 到 DALL·E:在 Azure 上實現 AI 的創造性應用
 
20230830 淺談 Azure OpenAI.pdf
20230830 淺談 Azure OpenAI.pdf20230830 淺談 Azure OpenAI.pdf
20230830 淺談 Azure OpenAI.pdf
 
Trading bot演算法與軟工在程式交易上的實踐
Trading bot演算法與軟工在程式交易上的實踐Trading bot演算法與軟工在程式交易上的實踐
Trading bot演算法與軟工在程式交易上的實踐
 
Building Chatbot With Huggging Face
 				Building Chatbot With Huggging Face 				Building Chatbot With Huggging Face
Building Chatbot With Huggging Face
 
如何使用 API.AI + NodeJs 快速建立 Chatbot
如何使用 API.AI + NodeJs 快速建立 Chatbot如何使用 API.AI + NodeJs 快速建立 Chatbot
如何使用 API.AI + NodeJs 快速建立 Chatbot
 
Tj bot 0317實作坊 組裝篇
Tj bot 0317實作坊 組裝篇Tj bot 0317實作坊 組裝篇
Tj bot 0317實作坊 組裝篇
 
Mochimedia's Success Story - Case Study I (Python-based Company)
Mochimedia's Success Story - Case Study I (Python-based Company)Mochimedia's Success Story - Case Study I (Python-based Company)
Mochimedia's Success Story - Case Study I (Python-based Company)
 
Powerpoint SHOW
Powerpoint SHOWPowerpoint SHOW
Powerpoint SHOW
 
成大GDSC期初大會
成大GDSC期初大會成大GDSC期初大會
成大GDSC期初大會
 
《氪周刊:互联网创业必读》(第83期)
《氪周刊:互联网创业必读》(第83期)《氪周刊:互联网创业必读》(第83期)
《氪周刊:互联网创业必读》(第83期)
 
影片編碼與分享
影片編碼與分享影片編碼與分享
影片編碼與分享
 
How to cooporeate with IT partners from a designer's viewpoint
How to cooporeate with IT partners from a designer's viewpointHow to cooporeate with IT partners from a designer's viewpoint
How to cooporeate with IT partners from a designer's viewpoint
 
《氪周刊:互联网创业必读》(78)
《氪周刊:互联网创业必读》(78)《氪周刊:互联网创业必读》(78)
《氪周刊:互联网创业必读》(78)
 

Building microservices in python @ pycon2017