[Web] 應用程式部署方法論 – Web Application Deployment

Intro Web application 部署方式整理 Methodologies 部署策略 Rolling Update 滾動升級 Performing a Rolling Update – Kubernetes 通常用於已 Container 化環境,配合如 Load Balancer 來逐步轉導流量到新的版本。 主要利用逐步引入新版本的 instance 方式 ,替換舊的 instance 並在完成後關閉。 Blue-Green 藍綠部署 部署前準備好一組新版本的環境,等於同時有兩個不同版本的相同環境。配合 Load Balancer 將所有流量一次轉導到新的環境,有問題時只需要 rollback 即可,缺點為維護期間需要兩組環境的成本。 Blue-green deployment Canary Deployment 金絲雀部署 […]

[HTTP-Headers] Cookie – Secure flag 指南

Intro Wikipedia – HTTP cookie – Secure and HttpOnly Secure flag 旨在要求將cookie加密,使瀏覽器僅能通過安全/加密連接(HTTPS)使用cookie。 另外經常被一起討論的還有 HttpOnly Flag: [[HTTP-Headers] Cookie – HttpOnly flag 指南 實作於程式語言 PHP Option 1: 實作於 Application 層級 <?php ini_set(‘session.cookie_secure’, 1); session_start(); ?> 一般知名 PHP framework 會提供 Secure flag 的 […]

[HTTP-Headers] Cookie – HttpOnly flag 指南

Intro Wikipedia – HTTP cookie – Secure and HttpOnly DEVCORE – HttpOnly – HTTP Headers 的資安議題 (3) HttpOnly flag 要求瀏覽器不要通過 HTTP/HTTPS 以外的管道使用cookie。意即無法通過客戶端Script(尤其是JavaScript)存取cookie,因此無法通過跨站點指令碼攻擊輕易竊取。 另外經常被一起討論的還有 Secure Flag: [HTTP-Headers] Cookie – Secure flag 指南 實作於程式語言 PHP Option 1: 實作於 Application 層級 <?php ini_set(“session.cookie_httponly”, […]

[DNS] CAA – Certification Authority Authorization 指南

Intro DNS CAA (DNS憑證頒發機構授權) – Wikipedia RFC 6844 通過域名持有人指定其域名的白名單憑證頒發機構來實現的安全機制。 該政策透過一個新的域名系統資源記錄(Record)「CAA」來實現,Record範例如下: example.com. CAA 0 issue “ca.example.net” 設定 首先 DNS records 要能夠支援 CAA record 再來針對憑證機構產生及設定 CAA record 即可,以下範例以 Letss Encrypt 機構為例: example.com. CAA 0 issue “letsencrypt.org” CAA Record Helper – CAA資源記錄產生器 References […]

[Kafka] Apache Kafka 指南

Intro Kafka – wikipedia 主要 API Producer API: 推送資料角色使用 Consumer API: 拉取資料角色使用。實作上是各語言透過 SDK 反覆呼叫 consume 請求,consumer 會向 broker request messages。 Connect API: 一般指 Kafka Connect 中的外部 Storage connector plugin 使用。 Admin API: Kafka admin 角色使用。可以設定 Topic, partition 等。 Kafka Connect […]

[Mongo] MongoDB 指南

Intro MongoDB – Wikipedia Introduction to MongoDB Cluster MongoDB Clusters Sharding MongoDB Sharding 分散式儲存架構建置 (概念篇) MongoDB Sharding 分散式儲存架構建置 (實作篇) Replica MongoDB Replica Set 高可用性架構搭建 Query / Mongo Shell [Mongo] Query & Mongo Shell 指南

[並行控制] Concurrency control 指南 – 樂觀鎖|悲觀鎖

Intro Concurrency control – 並行控制 分類上目前可分為三種: 樂觀鎖(Optimistic Locking) 悲觀鎖(Pessimistic Locking) 半樂觀鎖 (Semi-optimistic Locking) * Database – 資料庫管理系統 樂觀鎖 – OCC 樂觀並行控制 – Optimistic Concurrency Control,縮寫「OCC」 不利用內建鎖機制,而是利用應用層邏輯解決衝突 可透過讀取資料時分派一個版本或時間戳,通過校驗後寫入否則中斷(實作上可利用寫入連帶驗證版本達成) 適合交易之間資料競爭(data race)概率較小的應用情境 MySQL 實現範例 update DB.table set quantity = quantity -1 , version […]

[Android][Webview] Intent Handle 指南 – ERR_UNKNOWN_URL_SCHEME

Intro Andriod App 使用內建瀏覽器開啟 intent:// 若出現錯誤: Web page not available The web page at intent://…. could not be loaded because: net::ERR_UNKNOWN_URL_SCHEME 則表示在 Application 的 WebView 沒有處理 Intent,做法詳見 Android Intents with Chrome – Chrome Developers。 可以透過定義 shouldOverrideUrlLoading 方法,判斷連結若符合intent://開頭,則解析 intent 內容並最終利用 startActivity() […]