分類
architecture frame

[架構][框架] 微服務架構:一個多維度的基本探討

微服務的基本概念

近年來,「微服務架構」已成為在軟體工程領域中的熱門話題。這個概念代表一種全新的系統設計和開發方法,它不再是將整個系統視為一個單一,巨大的複雜實體,而是分解成多個小而專注的部分。每個部分都關注於一個特定的功能或業務邏輯,並且可以獨立其他部分進行開發、測試和部署。

在多數的技術文獻和討論中,微服務架構被描述為一種將傳統的單體應用拆分成多個獨立運行的小型服務。這些小型服務各自有自己的數據庫、API 和業務邏輯。服務之間通常通過輕量級的通信協議,如HTTP RESTful API,消息隊列來進行交互。這種方法的主要優勢是允許開發團隊專注單一的業務功能,提高開發效率和質量。

在實際操作中,微服務架構不僅僅是關於將一個大型應用拆分成多個小服務。它還涉及到如何管理這些服務之間的交互,包括數據一致性、事務處理和錯誤恢復等。這些挑戰讓微服務的影響從技術層面涵蓋到組織和文化。

微服務的重要性

微服務架構的重要性在於提供一種能夠更快速、更靈活地反應業務變化的開發方法。在今天的競爭激烈的商業環境中,能夠迅速適應市場和客戶需求的企業往往更有競爭優勢。此外微服務還提供了更好的故障隔離,這意味著當一個服務出現問題時不會影響到其他服務,提高整體系統的可用性。

從業務角度看,微服務架構的意義不僅僅在於技術層面。它允許組織更加靈活地創建和維護應用程序,更好地滿足客戶的需求。由於每個微服務都可以獨立部署,這使得持續集成和持續部署成為可能,從而加速了軟體交付的速度。

微服務的使用概念

正確使用微服務架構,首先需要有一個清晰的業務需求和目標。接著確定哪些功能或業務邏輯應該被拆分成獨立的服務。一旦做出這些決策就需要確保每個服務都有清晰的接口定義,並且有適當的測試和監控機制。最後使用容器化技術和自動化工具來簡化部署和維運。

錯誤使用微服務架構可能會導致系統變得過於複雜和難以管理。如果沒有妥善管理服務之間的通信或依賴關係,可能會導致數據不一致或事務失敗。此外過度拆分服務可能會增加網路通信的開銷,從而影響性能。沒有適當監控和日誌記錄來輔助定位和診斷問題,除錯可能會變得非常困難。

微服務架構與多個軟體領域的重要概念也有密切關聯,你無法獨立看待微服務而忽略這些領域,例如DevOps文化和實踐有助於管理微服務的生命週期;容器化技術(如Docker和K8s)提供了簡單而一致的方式來部署和運維服務;持續集成和持續部署(CI/CD)確保軟體可以快速、可靠地交付給用戶。

微服務的原則

最後,根據以下的原則來實現微服務,可以幫助你保持在正確的方向
1.請關注微服務的本質(服務的分解)而不是技術層面
2.請確保服務之間鬆散耦合(可以獨立開發,測試,部署),避免成為分佈式的大型單體架構
3.最終目標不是實現微服務架構,而是提升開發或維護大型複雜系統的速度

分類
architecture frame

[架構][框架] 在PyCharm安裝和使用PyInstaller

Situation

之前用 Python 寫爬蟲自動填寫公司表單,最後的關鍵問題反而是

“Python 要怎麼產生執行檔(.exe)?”


搜尋結果大多數都推薦 pyinstaller。快速掃了 api,感覺也確實還滿簡單的。
以下說明如何在 PyCharm 安裝和使用 pyinstaller。先前提一下我使用的是 PyCharm,如果你的 IDE 不同也許對你沒有太大幫助喔!


Action

A.安裝 pyinstaller

直接在 PyCharm 的 Python Packages 視窗輸入 pyinstaller,找到 pyinstaller 後再點擊右邊安裝按鈕即可


B.使用 pyinstaller 打包並產出 .exe 檔

b1.確認 pyinstaller 的安裝位置 : 如果你按照”A.安裝 pyinstaller “來操作,pyinstaller 的安裝位置就在 A.步驟的專案目錄\venv\Scripts,你應該可以在目錄中看到 pyinstaller.exe,把這個路徑複製起來。我的路徑如下

G:\Projects\PycharmProjects\pyinstaller\venv\Scripts\pyinstaller.exe

b2.開啟 cmd 並移動到你想打包的專案目錄 : 我的打包專案路徑如下

G:\Projects\PycharmProjects\example

b3.使用打包指令 : 在 cmd 貼上 b1.複製的路徑後輸入 -F,再加上打包專案的 .py(通常是專案的入口點,我的是 main.py)

G:\Projects\PycharmProjects\pyinstaller\venv\Scripts\pyinstaller.exe -F .\main.py

b4.等待打包完成 : 按下 enter 後,會出現打包檔案的提示訊息,完成後在G:\Projects\PycharmProjects\example 目錄中會出現兩個資料夾分別為 build 和 dist,在dist資料夾應該就會出現 main.exe,這就是打包完成後的產出囉!

Note : 打包後的 .exe(main.exe)在一般的情況下可以放到其他目錄執行獨立執行。

但若打包專案本身需要依賴某些模組(.exe)才能執行,就必須把被依賴的模組一併移動到打包後的 .exe 相同目錄,否則執行可能會出錯。

像我的爬蟲專案需要依賴 chromedriver.exe,也必須把 chromedriver.exe 也一併移到 main.exe 的相同目錄


Result

成功打包並產出 main.exe,main.exe 可執行,但必須搭配 chromedriver.exe。(應該可以靠其他設定來完成)