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

# 微服務架構設計 - 重試 Retry Pattern # Retry Pattern Introduction Retry Pattern 是 Resiliency Pattern (韌性模式) 的核心之一,藉由重新嘗試錯誤的操作來幫助增強服務的可用性,啟動應用程式去處理短暫的錯誤 (可能是網路或是服務錯誤),藉由簡單的重試來增強系統的穩定性,近幾年的雲原生或是應用程式需要去處理短暫的錯誤,總之重試錯誤的操作是個不錯的選擇 # 了解適合重試的錯誤操作 檢查 Response 並取得 Status Code...

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

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

# 微服務架構設計 - 客戶端負載平衡 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...

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

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

# 加速行動版網頁 Accelerated Mobile Pages AMP # 加速行動版網頁 Accelerated Mobile Pages AMP 由 Google 推出的 Framework 可以讓行動網站快速載入,在 Search Console 也會看到一些有關 Webmaster 使用與提交 # 結構 AMP 的三大組成 AMP HTML 有些特規標籤 如 “, 等” AMP JS 只能使用 AMP 元件不能夠使用自己或是第三方的 JS,真的要用必須洗在 Sandboxed iframe AMP Cache 會放在 Google AMP Cache 並顯示在...

# MinIO 儲存系統架設教學 # 前言 在系統或維運上有時候會需要能夠存取媒體或是物件的儲存空間,那 MinIO 有者完全兼容 AWS S3 的特性,能夠去儲存媒體與檔案。 # 透過 Docker 啟動 MinIO 12345docker run -p 9000:9000 -p 9001:9001 \ --name minio -d --restart=always \ -e MINIO_ACCESS_KEY=minio \ # 帳號 -e MINIO_SECRET_KEY=minio@123 \ # 密碼 quay.io/minio/minio...

# Docker Multistage Build 多映像建置 # 前言 - 不同階段出現不同的 Build 需求 我們開發過程中,可能會安裝一些 Dev Tool 可是這些 Dev Tool 在 Deployment Stage 是不必要的,那如果要拆分 Dev/Deploy 以往我們會分別開出不同的 Dockerfile 因此後來出現了比較適合開不同的 Dockerfile 的工具,Dapper 但是後來 Docker 在 17.05 推出 Multistage build,讓切分環境打包更方便了 # ALIAS in multistage 在 Dockerfile 中我們可以用...