顯示具有 電腦 標籤的文章。 顯示所有文章
顯示具有 電腦 標籤的文章。 顯示所有文章

2026年4月4日 星期六

Building Serverless Applications with Google Cloud Run

 

ISBN:9781492057093

最近感覺對開發人員來說,雲端平台的學習與推廣存在一種成本上的悖論。有心想了解、試作的軟體工程師,面對處處以秒計費的各種雲端平台功能,如果要自己掏腰包嘗試,總會躊躇不前,無法放開手腳。相較於POC(Proof of Concept/功能驗證)時期長時間、大規模的使用,即便有免費額度可申請,也只是九牛一毛。因此,我認為資訊產業中成功導入雲平台的企業組織,多半採取開放心態,鼓勵員工嘗試並導入各種雲端功能,且不吝於投入雲端支出的各項費用,才能成事。

近十幾年來,以美國為首的各大雲平台崛起,其實也鬆動了原本已經僵固的軟體工程師職務分際。尤其資料系統的架構範型(Pattern),被解析、重構成易學、易用的各項功能元件,讓資淺的工程師也能依樣畫葫蘆地打造出世界級的資訊系統,系統架構師的價值因此被稀釋、邊緣化。而各種全代管服務(Managed Services)的出現,讓資料庫、訊息佇列、noSQL、負載平衡等中介層都可以即插即用。在兩者相輔相成之下,新創產業得以站在雲端平台巨人的肩膀上快速蓬勃成長,卻也容易埋下「知其然而,不知其所以然」的隱憂。

《Building Serverless Applications with Google Cloud Run》是一本講解如何使用GCP平台Cloud Run服務,打造現代常見網路應用程式的書籍。Cloud Run的全代管程式運行概念並非新事物,早在近十年前,GCP就已推出其前身App Engine。不過App Engine在程式語言與開發風格上有所限制,因此未能掀起浪潮。隨著Docker容器化技術在軟體產業中風行,融合容器化的新一代全代管應用程式平台「Cloud Run」,讓GCP重新獲得開發人員的關注與青睞。藉由Docker帶來的應用程式標準化,若再搭配Jenkins等CI/CD自動化部署工具,將專案程式直接部署至Cloud Run的運行引擎,並運用其內建的流量負載平衡機制以及藍綠部署功能,開發團隊便能在不導入Kubernetes這類龐大系統的情況下,於輕量級的容器運行平台Cloud Run上執行資源最佳化的應用程式。

書中內容從最基礎的程式容器化開始說明,並提及Cloud Run平台必備的映像檔儲存服務Artifact Registry。接著由簡單的網頁應用範例,逐步進展到整合關聯式資料庫,並帶入Cloud SQL的實作。隨後介紹網頁應用常見的Session概念與實作方式,當然GCP也提供多種noSQL服務,其中Memorystore是相當合適的選擇。在專案進行過程中會面臨的相關議題,如權限設定的IAM、記錄分析的Cloud Logging,以及基礎架構即程式碼(IaC)的Terraform,都是在GCP上運行專案必須克服的關卡,而透過研讀本書,多半可以迎刃而解。

GCP本身確實提供即時且詳盡的官方技術文件,也有大量線上教學與範例程式碼。然而,對於初次接觸如此龐大、多樣且錯綜複雜服務的開發者而言,即便是資深工程師,也可能不知該如何踏出第一步。因此,一本專注於特定主題的技術書,能夠由淺入深地講解如何運用GCP平台打造具體服務,就顯得格外可貴,如春風化雨。

本書在介紹非同步呼叫的實作時,採用了較為過時的Cloud Tasks(與 App Engine 同期技術),而非Pub/Sub服務,可能讓讀者錯失選擇最佳方案的機會,算是美中不足。但考量到GCP平台本身持續快速演進,只要能成功帶領讀者跨出擁抱GCP的第一步,仍不失為一本值得推薦的好書。


2024年4月24日 星期三

Elasticsearch in Action, Second Edition

 

在用慣了Apache Solr以及Splunk的工作環境下,一直沒有動力去使用Elasticsearch或是整合度更高的ELK(Elasticsearch、Logstash和Kibana)。即便ELK在大數據應用領域中有著不可忽視的優勢與地位,我先前也沒有動心起念要研究、導入這個解決方案。但隨著大數據資料收集的需求逐步增長,此時如果將不含商業價值的系統紀錄檔放在以容量計價的Splunk商品裡,不免讓人覺得像個富少般擺闊。此時開源、在限定條件下免費使用的ELK,儼然就是替代Splunk的最佳備胎。

由於ELK的開箱即用、橫向擴充架構以及它在資料收集、檢索的強大功能,容易讓人造成兩個迷思。一是公司導入ELK平台後,就是有了大數據的核心技術;二是使用ELK只要下一步、下一步點點點,藉由軟體預設值的協助,即使是初學者,三兩下也能建置好一套堪用的巨量資料查詢平台。這些迷思問題在於,ELK雖然是收集巨量資料的極佳方案,但對於資料運算上有它的侷限性,大概就是條件查詢、彙總等統計分析。無法做到像Hadoop/Spark大數據引擎般,用簡單、暴力的平行運算執行返覆的自訂邏輯。其次,ELK看似簡單易用,揭開面紗後是運用Kibana友善的Web介面,包裹Elasticsearch令人驚豔的分散式搜尋引擎。平台裡的所有資料收集、拆分與儲存、查詢與計算,都是Elasticsearch的核心功能。所以想要對ELK得心應手,非得對Elasticsearch下一番功夫,這也是我翻閱這本Elasticsearch in Action, Second Edition的起因。

想要透過閱讀來學會Elasticsearch像是在玩踩地雷遊戲,一不小心就會買到一本雷包書。主因是在Elasticsearch和ELK火熱時的那些年,相關主題的書目,內容介紹的都是舊版本。不巧卻遇到Elasticsearch在6.x後的大改版,更動最核心的索引資料層級,捨去mapping type的設計,連帶修改了各種資料操作的API格式。這般大破大立的氣魄,除了讓已使用ELK的團隊得苦惱改版事宜,也注定出版社沒賣完的舊作只能丟到垃圾筒裡。這也使得Elasticsearch in Action在時隔多年後,得配合版本差異發行第二版。

全書詳盡完整地從資料欄位到索引分片等基礎講起,接著是花了近一半的篇幅介紹查詢語法,畢竟Elasticsearch是搜尋引擎,賣點是提供優質的資料查找機制。後續也有針對建置、管理議題提供相關的知識,讓讀者未來面對維運的課題時,能有基礎的能力。總結來說,想用好ELK平台,對於Elasticsearch這產品不能不深入瞭解,而目前在中外文出版品中,Elasticsearch in Action, Second Edition是編寫最用心、主題最全面的好書,推薦給有心想導入使用ELK平台的朋友們。

2021年3月28日 星期日

Data Pipelines with Apache Airflow

 

同事曾對我說走資訊這行真的是「學海無涯、不進則退」,仔細想想確實如他所言。不斷推陳出新的程式語言、底層框架與應用工具,難用一己之力盡悉底蘊。面對「生也有涯,知也無涯」的難題,我個人的心法是「有益則用、須用則厲學」,不要嘩眾取寵地學習當下流行的技術。「弱水三千,取一瓢飲」,導入新技術必須能確切改善、解決即有環境中的不便和問題,才值得投入有限的心力學習。

後端工程師肯定對crontab不陌生,這個易學易用的系統工具成就了不計其數的資訊系統。但在大數據/人工智慧應用百花齊放的今日,crontab就顯得左支右絀。因為大數據工程包括了資料匯入、預處理、執行演算法或訓練建模、匯出結果等工作流程,流程間的執行順序有依賴關係,延用crontab的「定時器」概念將難以達到精確、有效的排程控制。像是機器學習建模時間的不定性、大數據故障還原後的數據回補作業,都是維運人員心中的痛點。Apache Airflow這個後起之秀,正吸引著眾多數據工程師的目光,它也被AWS和GCP青睞而納入自家服務平台,未來將有希望成為業界公認的標準工具(如同crontab)。當然針對工作流程相依的問題,市面上少說有近十套「工作流程管理」工具,像在Hadoop軟體生態系中,就有知名的Azkaban和Oozie扮演這個角色,然而它們都只能用來協調MapReduce作業,不如Airflow那般可以驅動各種執行環境(Bash、Python、AWS、GCP)。

Airflow具有三大特色,首先是「設定即文件」,工程師利用可自我描述的Python程式碼,即可設定複雜的工作流程管線(Workflow pipeline),用來啟動各式各樣的程式。透過Airflow附帶的Web管理介面,能一目瞭然地看到排程啟動時間、工作流程間的相依性、執行後的歷史記錄等重要資訊。其次是「排程相依」,這正是導入工作流程管理工具的主要目的。讓失敗的排程自己發出訊號,中止與它相關的後續排程,避免浪費資源執行無謂的運算。更可貴的是,透過將依存關係定義清楚的工作流程,維運工程師可以輕鬆地用「一鍵重跑」來回補遺失的數據資料,顯著減少錯誤復原中工程師需要的處理工時。最後是「跨主機協作」,不論是大數據或是人工智慧,免不了必須整合不同的程式執行環境。可能是先呼叫本地程式匯入資料到HDFS,再啟動Hadoop進行資料預處理,最後才丟入Spark進行數據建模。傳統的crontab,面對這種的跨主機情境,只能對各個程式多抓冗餘的Buffer來進行時間設定,避免前支程式尚未跑完,後一支程式已經啟動。透過Airflow的分散佈署,相依的工作流程可以跨主機連動,從根本上解決協作問題,也縮短整組排程的總完成時間(因為不用抓Buffer)。

Apache絕對是開源碼世界中的金字招牌,許多你覺得棘手的IT病徵,或許能在Apache開源軟體中找到藥方。然而自學Apache開源項目的過程可不是清新小旅行,殘缺不全的官方文件、結構零散的章節、見樹不見林的參數說明,都足以讓人一頭霧水澆熄學習的熱情。還好Manning出版社所出的Apache系列叢書(也被稱為人像書),常會挑選被受關注的開源項目,邀請專家執筆撰寫專書。這些所費不貲的英文原文書,就像汪洋中的明燈般,適時地對迷航在新技術的工程師們伸出援手。由淺入深漸近式引導、詳盡且聚焦的範例程式、全面性討論該技術的相關議題(例如:如何測試、維運)。Manning長久以來穩定的高品質、針對開源社群推出專書的用心,讓它成為我最仰賴的新技術自學導師。雖然閱讀原文書比較費力,但每次總能獲得扎實有用的新技能,活用在後續參與的專案中。這本「Data Pipelines with Apache Airflow」確實讓我的大數據實作提升到更棒的新境界,真心推薦給每位後端工程師同業。