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.

[LaravelConf Taiwan 2019] 內部微服務,隊友開發更快速

56 views

Published on

LaravelConf Taiwan 2019 - 內部微服務,隊友開發更快速
廖峻德 (Eric) - 奧丁丁 後端工程師

在這場議程裡,Eric 會跟大家分享他在奧丁丁工程團隊裡,為了降低重工而將平台功能微服務化的經驗。除了討論怎麼做微服務、過程中踩過的坑外,也會分享他在公司內部推廣微服務的心酸血淚史,以及改採套件化後,對團隊協作的其他影響。聽說內容有笑有淚,敬請期待!

Published in: Internet
  • Be the first to comment

  • Be the first to like this

[LaravelConf Taiwan 2019] 內部微服務,隊友開發更快速

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

×