Parallel Test 平行測試 Parallel Test 平行測試平行測試是同時進行多平行測試案例的測試方法,目的是讓系統在短時間內進行大量測試,這麼一來我們就可以加快測試過程,提高效率 Pytest in Parallel Test安裝 pytest-xdist 套件 官方文件 有了 pytest-xdist 你就可以在 pytest 上設置使用的執行緒數量進行平行測試,若在平行測試中設置超過核心數量的話,pytest 會進行 context switching(目標內容的切換) 也就是在同一個 process...

微服務架構設計-Backend For Frontend Pattern(BFF) 前言介紹 BFF 之前我們先講一下 Client 與 Microservices 直接溝通,我們知道微服務有很多的不同的服務,它們的端點也四散在各處,那當今天網頁或是 App 要存取,就要對各自的端點做請求,看似簡單暴力但也衍伸了許多問題,因此現代很少會使用這種溝通方式 Direct Client-To-Microservices 問題 Client 與服務高耦合 Client 與服務高網路依賴 - 可能造成延遲 服務全都暴露給 Client 的安全性問題 所有接觸 Client...

微服務架構設計-隔板 Bulkhead Pattern 前言Bulkhead 的概念發自於建造船舶,一艘船遊隔板進行隔間(完全隔離與水密),這樣即使船身受損也可以透過這樣的隔板來將水限制在一定容積內,避免船隻沉沒。 軟體工程中的 Bulkhead同樣的,在軟體工程微服務中,我們有很多服務單元在交互作用,使用隔板模式我們可以對於不同的服務單元將來自不同的 Thread Pool ,降低異常呼叫造成的應用程式 Crash 風險 Thread Pool?Thread Pool 可以當作不同服務單元之間的隔板,每個遠端呼叫都是被隔離的並分到一個 Thread Pool ,如果該 Thread...

微服務架構設計-客戶端負載平衡 Client-Side Load Balancing Pattern 簡介我們可能知道怎麼架設一個 Load Balancer 給予您的應用程式,客戶端會透過 Service Discovery 找到所有 Instance 時也取得這些 Instance 的 Cache location 當 Client 需要呼叫 Instance 時,Client Side Load Balancer 會從 location Cache 回傳一個 Instance Location ,Load Balancer 是一個 Instance 與 Client 的中間者,所以...

微服務架構設計-客戶彈性模式 Client-Side Resiliency Pattern 前言Client-Side Resiliency Pattern 目的在 Client Side Service 避免存取過程中,被呼叫方的異常導致一系列的崩潰, Client-Side Resiliency Pattern 可以讓 Client 自主快速失敗並且不會耗盡自身資源,其中達成的方式會組合 Client-Side Load Balancing Pattern Circuit Breaker Pattern Fallback Pattern Bulkhead Pattern 先來講講未使用...

微服務架構設計-重試 Retry Pattern Retry Pattern IntroductionRetry Pattern 是 Resiliency Pattern(韌性模式) 的核心之一,藉由重新嘗試錯誤的操作來幫助增強服務的可用性,啟動應用程式去處理短暫的錯誤(可能是網路或是服務錯誤),藉由簡單的重試來增強系統的穩定性,近幾年的雲原生或是應用程式需要去處理短暫的錯誤,總之重試錯誤的操作是個不錯的選擇 了解適合重試的錯誤操作 檢查 Response 並取得 Status Code 得知並驗證錯誤並找到問題的答案,如果重試後得到成功是暫時性的錯誤 如果下游服務超載請不要重試,檢查...

微服務架構設計-回退 Fallback Pattern 前言在微服務系統中,有時候會發生一些服務單元 Offline 或是異常等情況,那當真的異常發生了,呼叫端應該怎麼去處理呢。 簡單解釋事實上這時候當呼叫端收到服務單元的錯誤時候,不會馬上跟著 Throw Exception 而是執行預先定義的替代程式並且嘗試透過其他方法執行,通常會從其他地方查詢資料,或是將 Request 儲存到 Queue...

微服務架構設計 - Service Mesh 服務網格 簡介了解過 Microservice 與 Kubernetes 的朋友們應該知道它們在軟體開發中扮演者什麼角色,在容器與佈署技術的興起,Kubernetes 持為佈署與管理多容器微服務的利器,但即便 Kubernetes 提供 Microservices 這麼多的幫助,在一些網路流量管理與觀測性上仍然有些可以加強的地方 這種情況 Service Mesh 可以補足這方面的需求,Service Mesh 類似 Kubernetes 的 Add-ons,安裝到 Kubernetes 後就可以去增強 Cluster...

微服務架構設計-扼殺人 Strangler Pattern Stranlger Pattern IntroductionStrangler Pattern 是用於達成從 單體式 轉變成 微服務 架構的遷移設計模式,其中 Strangler Pattern 涉及取代一些單體式 App 到微服務的內容。 其中 Strangler Pattern 的實施包含三個步驟 Transform 轉變 Co-exists 共存 Eliminate 除去 Strangler Patter 使用案例Strangler Pattern 用於單體式 App...

Fuzz Testing 模糊測試 What is Fuzz Testing 模糊測試?模糊測試在軟體開發的前期階段檢測安全性與穩定性,讓開發人員可以快速與安全的交付軟體 在原始碼跑安全測試在模糊測試期間,程式會使用 Invalid,Excepion,Random 的輸入,目的是使應用程式崩潰,現代的模糊測試解決方案可以分析他們要測試的程式碼結構,自動產生 Testcase 並且標記 Input 輸入通過程式所採用的每條路徑,透過這種方式,Fuzzer 模糊氣可以獲得有關程式碼覆蓋率的詳細回饋。 每個發現都會帶來更多發現只要 Fuzzer 模糊氣發現導致崩潰的 Input,他就會用...