Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Building microservices in python @ pycon2017

2,102 views

Published on

Microservices已經是門顯學,就算沒有實作過相信大家也都聽過.
在這個演講中,將會介紹群攜科技五位後端工程師如何共同協作一個
手遊直播、螢幕分享、錄影截圖、視訊群聊的社群平台.

雖然我們不是Microservices專家,但我們希望透過個案分享,
讓各位在開發及測試Microservices有多一些思考選擇.

Published in: Services

Building microservices in python @ pycon2017

  1. 1. Building Microservices
 in Python
 個案分享 @ Soocii 群攜科技 Presented by
 Jonas Cheng 2017/06
  2. 2. About Me Jonas Cheng VP Engineering
 Nov, 2016 Soocii
 社群平台 / Python Mar, 2006 趨勢科技
 資安 / C++, Python, Node.JS Jan, 2002 凌群電腦
 DBMaker / C
  3. 3. 邊玩。邊聊。邊播 ⼿手遊直播群聊圈
  4. 4. 社群分享 
 遊戲中⼀一鍵開啟直播,
 即時邀請好友上線觀戰, 透過螢幕分享與語⾳音群聊, 不需離開遊戲也能與朋友 共享歡樂。 上傳直播群聊影片與截圖, 即時動態追蹤好友遊戲歷 程,分享討論專屬於玩家 的遊戲⼤大⼩小事。 直播群聊 提供遊戲新⼿手教學、破關 密技,為你貼⼼心整理理最新 遊戲資訊,解決遊戲中遇 到的疑難雜症。 即時資訊
  5. 5. 採用 Microservices 的理由 採用 Microservices 的挑戰 開發的挑戰 / Soocii 開發策略 測試的挑戰 / Soocii 測試策略 持續部署(CD)的挑戰 / Soocii 部署策略 導入 Microservices 的關鍵 分享...
  6. 6. 沒有哪個技術好或壞的比較
 只有經驗及決策分享 資源與時間的拉鋸
 永遠有更好的解決方案 前⾔言...
  7. 7. Chad Fowler Sam Newman Martin Fowler
  8. 8. 採用 Microservices 的理由 採用 Microservices 的挑戰 開發的挑戰 / Soocii 開發策略 測試的挑戰 / Soocii 測試策略 持續部署(CD)的挑戰 / Soocii 部署策略 導入 Microservices 的關鍵
  9. 9. The Monolithic Way
  10. 10.
  11. 11. Evolutionary Design Add new features as microservices and plug into existing application
  12. 12. Small Codebase Each microservice
 deals with one concern
  13. 13. Easy to Scale
  14. 14. Easy to Scale
  15. 15. Easy to Scale
  16. 16. Easy to Deploy Less dependencies and easy to deploy
  17. 17. System Resilience Some microservices go down won’t impact entire application
  18. 18. Evolu7onary Design Small Codebase Easy to Scale Easy to Deploy System Resilience
  19. 19. 採用 Microservices 的理由 採用 Microservices 的挑戰 開發的挑戰 / Soocii 開發策略 測試的挑戰 / Soocii 測試策略 持續部署(CD)的挑戰 / Soocii 部署策略 導入 Microservices 的關鍵
  20. 20. AWS ES AWS S3 AWS RDS AWS DDB AWS Redis GCP FCM GCP Storage GCP Database … AWS/GCP 架構圖
  21. 21. 開發的挑戰
  22. 22. 開發的挑戰
  23. 23. External dependencies add complexity to development environment
  24. 24. 開發的挑戰
  25. 25. Soocii開發策略略
  26. 26. 單機開發環境描述
 各⾃自 Servic 必要開發資源 假造 AUTH Mock 外部其他服務, Cloud Provider 替代⽅方案
  27. 27. 跨團隊整合環境描述
 全部 Services 直接介接 Cloud Provider
  28. 28. 開發的挑戰
  29. 29. 採用 Microservices 的理由 採用 Microservices 的挑戰 開發的挑戰 / Soocii 開發策略 測試的挑戰 / Soocii 測試策略 持續部署(CD)的挑戰 / Soocii 部署策略 導入 Microservices 的關鍵
  30. 30. Agility vs Quality
  31. 31. Services independently deployable. You make a change, you only test and deploy a small service. - Mar7n Fowler 測試的挑戰
  32. 32. Test func7on or method call Test a collec7ons of classes with stub out all external collaborators Test against en7re system
  33. 33. 測試的挑戰
  34. 34. Without tes7ng against the real consumer by using a 
 consumer-driven contract (CDC). - Sam Newman
  35. 35. Django REST framework test helper - rest_framework.test
  36. 36. BDD extends TDD by wri7ng test cases in a natural language
  37. 37. 以單⼀一微服務為測試範疇 Mock.patch 遮蔽特定 func7on 或 method, 或 Requests-mock 遮蔽特定 URL Request Soocii 測試策略略
  38. 38. 避免非同步測試 利利⽤用 Celery 處理理非同步需求, task_always_eager 達到同步測試 上上策 event-driven 下下策 sleep 吧! Soocii 測試策略略
  39. 39. 採用 Microservices 的理由 採用 Microservices 的挑戰 開發的挑戰 / Soocii 開發策略 測試的挑戰 / Soocii 測試策略 持續部署(CD)的挑戰 / Soocii 部署策略 導入 Microservices 的關鍵
  40. 40. Seman7c Versioning /v1.1/me/feed /v1.2/me/feed
  41. 41. /v1.0/photo /v1.1/feed /v1.2/feed /v1.3/video /v1.4/follower
  42. 42. 採用 Microservices 的理由 採用 Microservices 的挑戰 開發的挑戰 / Soocii 開發策略 測試的挑戰 / Soocii 測試策略 持續部署(CD)的挑戰 / Soocii 部署策略 導入 Microservices 的關鍵
  43. 43. DevOps mindset 導入 Microservice 的關鍵
  44. 44. CI/CD Infrastructure 導入 Microservice 的關鍵
  45. 45. Isolate not just code
 but CI/CD for each service 導入 Microservice 的關鍵
  46. 46. Monitoring 導入 Microservice 的關鍵
  47. 47. Authen7ca7on/Single Sign-On Gateway Fine-Grained Authoriza7on Seman7c Monitoring Correla7on IDs Behavioral-Driven Ranking ETL Data Processing Machine Learning …
  48. 48. Currently in Open Beta Currently in Closed Beta

×