首頁 Tags
"Deployment" 2026-10-05
PHP 的請求生命週期與 SAPI:直譯器的位置、程序壽命與狀態壽命
說明一個 HTTP 請求怎麼變成一次 PHP 執行:PHP 在程序啟動與每個請求開始、結束時各做什麼,SAPI 這一層介面怎麼讓同一個直譯器接上 CGI、Apache、FastCGI 與常駐伺服器,以及用直譯器住在哪裡、執行它的程序活多久、應用程式的狀態活多久這組問題比較各種執行模型 2026-07-06
部署到底是什麼
第一次要把服務放上線、不確定「部署」到底在做什麼、跟在本機跑 npm start 差在哪時回來讀 — 上線這個動作的本質 2026-07-06
部署與存取權限的安全含義
beacon 接收端設成匿名可存取時,execute as 與 who has access 各自的安全含義、以及這個公開端點實際能被拿來做什麼 2026-05-12
Client-Side LLM / Embedding
在 browser 內直接跑 LLM 或 embedding model 的 paradigm、靜態網站做 RAG 的關鍵基底 2026-05-07
5.C1 Tradeshift:self-managed Kubernetes 遷移到 EKS
零停機平台遷移的分段策略案例。 2026-04-23
5.1 container 與 runtime
整理 image、resource limit 與啟動行為 2026-04-22
6.1 graceful shutdown 與 signal handling
用 signal 與 context 傳遞停止訊號 2026-10-05
CGI:每個請求啟動一個 PHP 程序的執行模型
說明 CGI 怎麼把一個 HTTP 請求交給外部程式:web 伺服器為每個請求啟動一個程序,用環境變數與標準輸入輸出傳遞請求和回應;PHP 以 php-cgi 執行時每個請求付出的啟動成本、OPcache 為什麼沒有作用、以每個站台的使用者身分執行帶來的隔離,以及請求資料與程式呼叫參數之間的邊界問題 2026-10-05
Kubernetes 的元件與請求路徑:控制平面、節點、Pod、Deployment、Service 與 Ingress
從 Docker Compose 的使用經驗出發,說明 Kubernetes 用期望狀態與控制迴圈管理容器的方式、控制平面與節點上各元件的責任、Deployment、ReplicaSet 與 Pod 三層工作負載、一個外部 HTTP 請求經過 Ingress 與 Service 抵達 Pod 的路徑和每一段出問題時的訊號,以及節點故障後的重建時間與這套模型在什麼規模下划算 2026-07-06
Web App Deployment(Web App 部署)
把 Apps Script 專案掛成一個有公開網址、可被任何 HTTP 請求呼叫的端點時的部署模型與存取設定 2026-07-06
web app 部署模型與授權
把 Apps Script 掛成可被 HTTP 呼叫的端點時,doGet/doPost 進入點、exec 與 dev 兩種網址、以及更新部署為什麼要用同一個網址 2026-07-06
主機形態光譜
第一次要選服務跑在哪、被 VPS / IaaS / PaaS / serverless 這些詞搞混、不知道差在哪時回來讀 — 主機形態是一道「你管多少」的光譜 2026-07-06
接收端 handler:寫進第一筆
Apps Script 這端怎麼解析 text/plain 的 beacon、用伺服器時間補上時間戳、append 進 Sheet,並在部署後確認收到第一筆真實瀏覽 2026-06-24
部署光譜:從 BaaS 到自架的四條路徑
監控方案的部署選擇不是二元的 — BaaS + Serverless 和 PaaS 是完全自架和商業 SaaS 之間兩條常被忽略的中間路徑 2026-05-07
5.C2 Condé Nast:EKS 平台整併與標準化
多地區異質 Kubernetes 平台整併為統一控制面的案例。 2026-04-23
5.2 Kubernetes 部署策略
整理 deployment、probe 與 rolling update 2026-04-22
6.2 健康檢查與診斷 endpoint
區分服務可用性與工程診斷入口 2026-10-05
mod_php:PHP 直譯器嵌進 Apache 程序的執行模型
說明 mod_php 怎麼把 PHP 直譯器載入 Apache 的每個子程序:為什麼它要搭配 prefork MPM、每個子程序都帶著 PHP 對記憶體與並發的影響、所有站台共用 Apache 的執行帳號、php.ini 與 .htaccess 的設定方式,以及從 mod_php 搬到 PHP-FPM 時 .htaccess 的 php_value 與 .user.ini 的差異 2026-10-05
單機練習用的 Kubernetes:kind、k3d 與 minikube 的節點模擬方式、預設元件、主機連線與單機上量得到和量不到的行為
比較 kind、k3d、minikube 三種在一台電腦上起 Kubernetes 叢集的工具:節點怎麼用容器模擬、預設附了哪些元件以及缺少時在哪裡現形、主機的 image 與網路怎麼接進叢集,以及節點共用同一台電腦這件事讓哪些 Kubernetes 行為量得到、哪些量不到,最後是三者的閒置開銷與適合練習的對象 2026-07-06
域名與 HTTPS 怎麼接上
服務跑在一個 IP 上了、但不知道買的域名怎麼指過去、網址前面的鎖頭(HTTPS)憑證從哪來時回來讀 — 域名解析與 TLS 的最小認識 2026-05-07
5.C3 Orbitera:遷移到 Managed Kubernetes
平台重置時如何讓產品不中斷地完成編排層轉換。 2026-04-23
5.3 load balancer 合約
整理 idle timeout、draining 與 health check 2026-10-05
FastCGI:讓 web 伺服器與常駐的 PHP 程序溝通的協定
說明 FastCGI 協定怎麼在 CGI 的基礎上去掉每個請求重啟程序這一點:常駐的應用程式程序、web 伺服器與它之間的連線、一個請求在協定裡的樣子,以及 SCRIPT_FILENAME 由 web 伺服器決定會帶來的安全邊界(cgi.fix_pathinfo 與 try_files) 2026-07-06
十二要素基線
服務能上線了、但一換機器 / 換環境就出狀況、設定散在各處、log 不知道去哪找時回來讀 — 讓服務好部署好搬家的幾條基本紀律 2026-05-07
5.C4 Mobileye:Workloads 遷移到 EKS
大規模工作負載遷移到 managed Kubernetes 的分段治理案例。 2026-04-23
5.4 service discovery
整理 endpoint discovery 與 DNS 2026-04-22
6.4 版本偵測與 feature gate
依版本與環境能力啟用功能 2026-10-05
PHP-FPM:常駐 PHP worker 的程序管理與主要的調校旋鈕
說明 PHP-FPM 怎麼管理一群常駐的 PHP worker:pool 怎麼做到每個站台不同執行帳號、pm 的三種開程序策略、max_children 如何決定並發上限與請求排隊、max_requests 定期換掉 worker 控制記憶體、request_terminate_timeout 與 slowlog 怎麼處理跑太久的請求、status 頁怎麼讀,以及每一項對壓測數字的影響 2026-08-03
假故障與靜默失效的診斷
自建的 Apps Script 流量統計看起來壞了、或看起來正常但數字不對時,分辨症狀出現的位置與問題所在的位置 2026-07-06
自架還是託管:以資料庫為例
在 VPS 上自己跑一個 DB container 很便宜、看到 RDS / Cloud SQL 一個月要幾十鎂而猶豫時回來讀 — 成本差在哪、差價其實在買什麼 2026-05-07
5.C5 Miro:Managed EKS 遷移
從自維運平台轉向 managed EKS 的組織與技術協同案例。 2026-04-24
5.5 平台與入口威脅建模(Threat Modeling)
以概念層判讀部署平台弱點,聚焦入口、生命週期、設定與交付節奏 2026-04-23
8.4 Microsoft:雲端基礎設施的一部分
看 Go 如何支撐雲端基礎設施與平台工具 2026-04-22
7.5 Kubernetes、systemd 與 load balancer 合約
理解部署平台如何影響 Go 服務的 shutdown、health 與資源限制 2026-10-05
OPcache 與程序壽命:編譯結果的快取在各種執行模型下的效果
說明 OPcache 快取的是什麼、它存在哪裡,以及為什麼它的效果取決於執行 PHP 的程序活多久:CGI 下命中次數永遠為零、PHP-FPM 的 worker 共用同一份快取;框架請求開與關 OPcache 的延遲差、memory_consumption 與 max_accelerated_files 的估算,以及部署新程式碼時 validate_timestamps 與 revalidate_freq 決定舊版還會執行多久 2026-07-06
備份與還原的地基
有了線上資料、知道「要備份」但不確定備什麼、多久一次、以及為什麼「沒測過還原的備份等於沒有」時回來讀 — 備份的地基認識 2026-05-12
6.5 跨進 production 的 routing 中樞
個人 dev → 團隊 → production LLM 服務的三層演化、跟 backend/07 對應卡片的 routing 清單 2026-05-11
5.6 Platform Lifecycle Contract
說明 runtime、startup、readiness、liveness、shutdown 與 drain 如何組成平台生命週期合約。 2026-05-07
5.C6 Airbnb:Kubernetes 叢集擴縮演進
從手動擴縮走向自動化容量治理的部署平台案例。 2026-10-05
容器裡的 Nginx 與 PHP-FPM:拆成兩個容器與放進同一個容器的做法與各自的陷阱
說明把 Nginx 與 PHP-FPM 放進容器的兩種擺法:官方 php-fpm 映像檔替容器改掉的預設值(log 導向、clear_env、監聽位址、停機訊號),拆成兩個容器時程式碼要兩邊都有、否則靜態檔會被 PHP 回成 200 的 HTML,以及放進同一個容器時要自己處理的程序監看、停機訊號轉送與 FastCGI 的監聽範圍 2026-05-11
5.7 Traffic、Config 與 Control Plane Boundary
說明流量、設定、secret、service discovery 與管理面如何分責任與回退。 2026-05-07
5.C7 Airbnb:Istio 升級治理
service mesh 升級在大規模環境下如何保持高可用。 2026-10-05
常駐 worker 模型:FrankenPHP worker 模式、Laravel Octane 與跨請求殘留的狀態
說明讓 PHP 應用程式只啟動一次、在記憶體裡連續處理請求的常駐 worker 模型:它省下的是每個請求重新啟動框架的成本,失去的是 shared-nothing 的隔離;以 FrankenPHP 的 worker 模式與 Laravel Octane 實測靜態屬性跨請求累積、記憶體隨請求數線性增長與 max-requests 重啟,以及寫給這個模型的程式要避開的寫法 2026-05-11
5.8 Deployment Rollout with Drain and Rollback(實作示範)
以 checkout service 示範部署切換如何交付 canary evidence、drain signal、release gate 與 incident decision log。 2026-05-27
5.9 邊緣分發與靜態資源(CDN / Origin Protection)
整理 CDN 與 edge cache 在部署平台中的責任邊界、origin protection、purge 與 invalidation 策略 2026-05-07
5.C9 反例:平台切流未先 Draining
切流時忽略連線清退造成請求錯誤與重試風暴。 2026-05-06
Deployment Dry Run
說明發布前如何用預演檢查部署條件與風險 2026-07-06
Dockerfile 設計:指令、layer 與 multi-stage
image 大得離譜、code 一改就整包重 build、或 multi-stage 複製 binary 後 container 起不來說找不到 library 時回來讀 — Dockerfile 指令怎麼變成 layer、build 與 runtime 怎麼分離 2026-06-16
5.10 Outbound Tunnel 入口與生命週期
整理 cloudflared / Tailscale 等反向隧道的入口形態、生命週期合約與故障模式 2026-05-18
Kubernetes Graceful Shutdown:termination 序列跟你以為的不一樣
K8s pod termination 五步序列、preStop / SIGTERM / terminationGracePeriodSeconds 的真實時序、5 個 production 踩雷(500 期間 502、connection drain race、init container 重啟、StatefulSet 串行終止、Job 不 graceful)、跟 service mesh / readiness probe 整合 2026-05-12
4.9 Production 部署的資源評估原理
從本地單 user 到 production multi-tenant:concurrent users、cost model、observability、SLA、capacity planning 的設計取捨 2026-05-07
5.C10 對照:規模差異下的平台遷移
平台遷移策略在小中大型組織下的差異。 2026-06-26
程式碼版控與 FTP 部署紀律
無 SSH 環境的 PHP 專案的程式碼怎麼從 FTP 拉回來建 Git repo、設定檔怎麼分離、FTP 部署怎麼建立可追蹤的流程、以及怎麼用 CI 取代手動上傳 2026-05-12
4.10 衍生產物管理原理:什麼進 git、什麼不該
LLM 應用的 source / derived / external 三類產物對應 git / build cache / registry、與 production 部署的 reproducibility / cost / share 取捨 2026-06-20
Container 部署設計
Docker 部署 collector 的設計 — SQLite 在 overlay filesystem 的 I/O 考量、volume mount、graceful shutdown、資源限制 2026-05-12
4.16 靜態 / serverless RAG deployment:架構選擇與資安取捨
沒 backend 的場景怎麼做 RAG:四種 deployment 方案、API key 暴露問題、CORS / abuse / 第三方信任、跟模組六的 routing 2026-07-06
Docker Compose:多 service dev 環境編排
一個 app 要好幾個 container(DB / cache / web)、手動 docker run 串不起來、或 compose 起來後 app 連不到 DB 或 DB 還沒 ready 就被連時回來讀 — 多 service 怎麼宣告式編排 2026-10-26
Smoke Test(冒煙測試)
部署或重建之後要決定先跑哪一組檢查、冒煙測試全部通過而使用者仍回報錯誤,或要判斷一組部署後檢查涵蓋到哪裡、沒有涵蓋到哪裡時 2026-07-06
BuildKit 與跨平台 build
docker build 每次重下載套件很慢、要同時出 amd64 與 arm64 image、或 build 時要用私有存取憑證卻不想烤進 image 時回來讀 — BuildKit 的 cache/secret mount 與 buildx 跨平台 build 2026-07-06
image 版本管理與升級:不動舊的、建新的
有一個跑著的 stack 要升版(PHP / MySQL 升級)、不想弄壞現在能跑的、又不確定多個版本的 image 跟 Dockerfile 怎麼管時回來讀 — image 不可變下的升級與版本管理 2026-04-30
7.22 資安風險如何進入 Release Gate
發版流程已有功能測試與 SLO 關卡、要決定哪些變更該因為資安條件被卡下來、以及卡下來時要求什麼證據 2026-05-12
LLM Deployment 供應鏈完整性
把 LLM 模型權重、推論伺服器、第三方 plugin 三條 production 供應鏈納入既有 artifact trust 框架的判讀 2026-07-06
Container-per-Service(一容器一職責)
第一次發現一個 web app 要開好幾個 container、不懂為什麼不塞一個大 container、或不確定什麼該獨立成一個 container 時回來讀 — 一容器一職責的理由與邊界 2026-07-06
QEMU binfmt Emulation(跨架構模擬)
docker 跑非原生架構的 image 報 exec format error、mysql:5.7 在 Apple Silicon 要 platform: linux/amd64、或跨平台 build 特別慢時回來讀 — 非原生 image 怎麼被模擬跑起來 2026-07-06
Immutable Image(不可變映像)
想「修改 / 升級一個已經 build 好的 image」、或搞不懂為什麼同一個 tag 隔天內容變了時回來讀 — image 是不可變的 build 產物、改了就是新 image 2026-06-23
Startup Probe
保護慢啟動服務不被 liveness probe 過早重啟的探針 2026-06-23
Canary Release
分批把流量導向新版本、用 stop condition 控制 blast radius 的部署策略 2026-06-18
Outbound Tunnel
反向隧道把出站連線轉成可達入口、與傳統 port-forward 的責任倒轉 2026-10-05
Pod
在 Kubernetes 的輸出或設定裡看到 Pod,要知道它和容器的關係、為什麼它的 IP 與名稱會變、以及誰負責替補它時 2026-10-05
Kubernetes Service
在 Kubernetes 裡要讓其他服務連到一組會換 IP 的 Pod、或排查請求為什麼沒有送到 Pod 時:Service 如何用標籤選 Pod、ClusterIP 與 DNS 名稱、EndpointSlice 與 ready 狀態 2026-10-05
Ingress
要讓叢集外的 HTTP 請求依網域與路徑進到 Kubernetes 裡不同的服務、Ingress 建立了卻連不進去、或 ingress-nginx 結束維護後要換 controller 時:Ingress 物件與 Ingress controller 的分工、IngressClass,以及 Gateway API 的關係 2026-10-05
Control Loop(控制迴圈)
讀到「期望狀態」「reconcile」,或 Kubernetes 的 apply 成功了服務卻沒起來時:控制迴圈如何持續比對期望狀態與實際狀態並修正落差,以及它和只在下指令時比對一次的宣告式工具差在哪 2026-10-05
Namespace(命名空間)
看到 kubectl 的 -n、kube-system、default,或跨 namespace 的 Service 名稱連不到時:namespace 劃分物件名稱的範圍、預設用哪一個、對 DNS 名稱與權限的影響 2026-10-05
Taint 與 Toleration
節點故障後 Pod 等了幾分鐘才搬走、Pod 排不上某些節點、或看到 node.kubernetes.io/not-ready 這類鍵名時:taint 如何把 Pod 擋在節點外或趕出節點、toleration 如何讓 Pod 容忍它 Tarragon (CC BY 4.0) | 使用 hugo 製作