# 內部微服務,隊友開發更快速 ### 2019 LaravelConf議題分享 <div style="font-size: 50%; font-family: Menlo, Monaco, Consolas, 'Courier New', monospace;"> 微程式 / 業四 / Backend / 林鈺卿<br> 投影片:https://tinyurl.com/yyaaevel </div> --- ## Outline + 在LaravelConf上聽到了什麼 + 什麼是Monolithic + Microservice 的介紹 + 兩者差異 --- ## 在LaravelConf上聽到了什麼? --- ### 講者介紹 + Eric + 任職於奧丁丁 + 後端工程師 + https://github.com/ericliao79 --- ### 實際情境 一個電子商務網站可能會需要那些功能? + 銷售前端 <!-- .element: class="fragment" data-fragment-index="1" --> + 會員系統 <!-- .element: class="fragment" data-fragment-index="2" --> + 金流(信用卡, 匯款, 電子支付...) <!-- .element: class="fragment" data-fragment-index="3" --> + Email <!-- .element: class="fragment" data-fragment-index="4" --> + SNS <!-- .element: class="fragment" data-fragment-index="5" --> --- ![](https://i.imgur.com/NR3uNdh.jpg) --- 需要開發第二個電子商務網站? --- ![](https://i.imgur.com/NR3uNdh.jpg) --- 那開發第三個電子商務網站呢? --- 這樣的架構稱為<span style="font-size: 1.6em;">**Monolithic**</span> --- ## 什麼是Monolithic 一個單體式應用程式裡面有許多的邏輯、服務, 並且都有密不可分的關係。 --- 當Monolithic系統持續擴大到一個限度後, 會開始會發現... --- ### 瓶頸現身 1. 各種服務之間依賴關係的複雜度迅速上升 <!-- .element: class="fragment" data-fragment-index="1" --> 2. 系統強健度的問題 <!-- .element: class="fragment" data-fragment-index="2" --> 3. 程式不易維護與擴展 <!-- .element: class="fragment" data-fragment-index="3" --> 4. 編譯、部署時間過長 <!-- .element: class="fragment" data-fragment-index="4" --> --- 那該怎麼辦呢? --- 其實還有一個與Monolithic相反的架構稱為**Microservice** --- ## 什麼是Microservice --- ### Microservice 是一種以<span style="font-size: 1.2em;">**業務功能**</span>為主的服務設計概念。 --- 每一個服務都是<span style="font-size: 1.2em;">**自主運行**</span>, 並可用不同的技術上實現它們。 --- 這聽起來很抽象!! --- 舉個例子 ![](https://i.imgur.com/fFrQcs5.png) --- ### 好處 1. 獨立部署 <!-- .element: class="fragment" data-fragment-index="1" --> 2. 獨立開發 <!-- .element: class="fragment" data-fragment-index="2" --> 3. 故障隔離 <!-- .element: class="fragment" data-fragment-index="3" --> 4. 可用不同的編程語言與工具開發 <!-- .element: class="fragment" data-fragment-index="4" --> 5. 易擴充 <!-- .element: class="fragment" data-fragment-index="5" --> --- 那使用Microservice有什麼缺點嗎? 答案是有的。<!-- .element: class="fragment" data-fragment-index="1" --> --- 要享受Microservice的好處是要付出<span style="font-size: 1.6em;">**代價**</span>的 --- ### 需面臨的挑戰 1. 維運難度提高 <!-- .element: class="fragment" data-fragment-index="1" --> 2. 可能有重複的工作 <!-- .element: class="fragment" data-fragment-index="2" --> 3. DevOps要求 <!-- .element: class="fragment" data-fragment-index="3" --> 4. 資料一致性 <!-- .element: class="fragment" data-fragment-index="4" --> 5. 由於遠程調用而增加延遲 <!-- .element: class="fragment" data-fragment-index="5" --> --- 聽完了Monolithic與Microservice架構後 再來回顧一下<span style="font-size: 1.2em;">**兩者差異**</span>為何 --- 簡單來說 --- 把Monolithic比喻成<span style="font-size: 1.2em;">**大貨櫃**</span> --- 那麼Microservice就是將大貨櫃切成不同的<span style="font-size: 1.2em;">**小貨櫃**</span> ![](https://i.imgur.com/o9xnCFa.jpg) --- ### Monolithic vs Microservice ![](https://i.imgur.com/Yk7nX0l.png) --- ## Thank you for listening.
{"metaMigratedAt":"2023-06-14T23:32:17.155Z","metaMigratedFrom":"Content","title":"內部微服務,隊友開發更快速","breaks":true,"contributors":"[{\"id\":\"10bd2c0b-6523-4e19-90a5-d1a7b1220838\",\"add\":7373,\"del\":4345}]"}
    242 views