前言
大家好,我是在 Alpha Dev, Central Dev Team 擔任 Intern 的 Ryan Chang 張睿玹。
在加入 LINE 之前,我對容器化技術的理解僅限於開發環境的應用。當時的我,知道如何將服務打包成 Image,並透過 docker-compose 串接多個組件,但對於「大規模系統」如何部署、如何在高負載下穩定維運,坦白說完全沒有概念。
這正是我加入 LINE 的初衷。回想起 Intern 面試時,主管問我為何選擇這裡,我當時的回答很直接:「我想學習在大企業中,真實的維運與開發流程是如何運作的。」
在 Alpha Dev 團隊的這一年,我確實達成了這個目標。在這個以內部系統為核心的團隊裡,我不僅精進了技術工具,更實際參與到一個專案的生命週期,在多方需求與複雜溝通之間,尋求平衡點、構建穩定、可擴展的系統架構。今天我想將這段旅程記錄下來,分享給同樣對前後端開發與基礎設施有興趣的朋友。
Alpha Dev 負責的任務
Alpha Dev 是一個以內部系統開發為主的團隊,和面向外部用戶的產品線不同,所打造的系統直接服務公司內部各部門。
也正因為如此,這個角色非常重視溝通。內部同事的需求往往不像產品需求那樣被完整定義,而是在來回討論中逐步釐清。並非每位同事都具備開發背景,有時只是一個模糊的想法,對實作規模、開發時程毫無概念,這時工程師的職責不只是把功能做出來,更要主動提問、協助對方想清楚需求,共同找出可行的解決方案。
SCRUM 敏捷開發
實習期間,我們團隊先後負責兩個內部使用的專案,在 SCRUM 的開發節奏下,每個 Sprint 都會領取數張任務票,參與的功能開發範疇涵蓋前後端實作、API 串接,乃至 DevOps 相關作業,實際接觸到了開發流程中的多個面向。
SCRUM 的運作由幾個固定儀式構成:Daily Meeting 讓團隊每天同步進度、即時發現阻礙;Refinement 用來釐清每張票的細節與範疇;Planning 則在每輪開始前安排好工作目標;Retro 在 Sprint 結束後讓大家一起回顧哪些事做得好、哪些地方還能改進。實際跑過之後才真正理解它的價值,穩定的節奏讓團隊能持續產出,快速迭代的同時也保有對品質的掌控。
串接內部認證機制:第一次學到 Forward Auth
在開發過程中,有一個讓我印象特別深刻的挑戰,是處理內部系統的單一登入與權限驗證需求。
乍看之下好像只是「把登入串進去」,但實際做起來複雜很多。既有的認證服務有其特定的邏輯,需要先理解它的實作方案,再設法將開發的服務正確接上。整個過程踩了很多坑,也花了大量時間在了解他的運作過程,但也是因為這次串接,第一次真正接觸到 Traefik 的 Forward Auth 機制。
所謂的 Forward Auth, 是一種把認證邏輯外掛到 reverse proxy 層的設計模式:每一個進來的 request,都會先被轉發到一個外部的認證服務做驗證,認證通過後才把 request 繼續送到後端服務。這樣的好處是認證邏輯可以集中管理,不需要每個服務各自實作一套,對於大規模的微服務架構來說非常實用。
從什麼都不懂開始查文件、看 Traefik 的設定格式、一邊 debug 一邊理解整個 auth flow,這段經歷讓我對「網路請求到底經過哪些層」有了更具體的感受,也讓我對 reverse proxy 的應用場景理解更深。
進入 Kubernetes 的世界
說到這次實習讓我收穫最大的技術,毫無疑問是 Kubernetes。
在進 LINE 之前,我的基礎是 VM 和 Docker。知道怎麼把服務容器化,也知道 docker run、docker-compose,但 Kubernetes 對我來說只是一個聽過但沒碰過的名詞。
Harbor:私有的容器映像倉庫
進到團隊後接觸的第一個新工具,是 Harbor。
Harbor 是一套開源的私有 Container Registry,功能上類似 DockerHub,但可以自行部署在公司內部,兼顧了安全性與管控需求。我們絕大部分服務的 image 都透過 Harbor 管理,從 build 完成後推上去、到 k8s 部署時拉下來,都是走這條路。
Kubernetes:從一知半解到真正理解
接著就是本篇的主角——Kubernetes,也有人叫他 k8s。
一開始看到 Kubernetes 的概念,什麼 Pod、Deployment、ReplicaSet、Service、Ingress、KNative,密密麻麻的 YAML 設定,說不懵是騙人的。
團隊內部實際上使用 KNative 來管理服務部署——KNative 建立在 k8s 之上,將 Service、Route、Configuration、Revision 這些概念封裝起來,讓開發者不需要直接面對底層的 Deployment 或 Ingress 設定,很多基礎設施的部分也都由 SRE 團隊統一維護了。
但也正是因為碰了 KNative,才有動力去往下追:它底層到底在跑什麼?Pod 是什麼、Service 又是什麼?這些問題讓我開始主動去理解 k8s 的基礎架構,知道每一層在解決什麼問題,即使實作上不需要親自實作,理解背後的設計邏輯,遇到問題時才知道該往哪個方向找。
ArgoCD:GitOps 讓部署變成可追蹤的流程
光有 k8s 還不夠,還需要一套方式讓部署流程有規矩、可追蹤。這就是 ArgoCD 的角色。
ArgoCD 是一套實踐 GitOps 理念的 CD 工具。核心概念很直接:把 Kubernetes manifest 放進 Git repository,ArgoCD 持續監控這個 repo,一旦偵測到變動,就自動將最新設定同步到 cluster 上。部署歷 史完全跟著 Git commit 走,任何改動一目瞭然;如果某次部署出了問題,直接回滾到上一個版本,不用煩惱「到底是誰改了什麼導致 production 炸掉」。
對我來說,這是一種思維上的轉變。以前部署可能是開一台 VM、手動跑 git pull,充滿人工操作與不確定性。有了 GitOps 之後,以 Image 為單位,每次更新就是銷毀舊容器、重建新容器——部署不再是一件需要人盯著做的事,而是一個有 Git 版控作為基礎、可預期、可重現的流程。
從 VM/Docker 到 CKA:考證照這件事
在實習的過程中,我越來越發現自己對 Kubernetes 有很強烈的興趣。它設計上的優雅、解決的問題、以及背後整套的架構思維,都讓我忍不住想要往更深的地方探索。
所以在理解了工作上的 k8s 使用場景後,我開始系統性地自學:從 Kubernetes 的架構(Control Plane、Worker Node、etcd 的角色)、網路模型(CNI、ClusterIP、NodePort、LoadBalancer 的差別)、到安全相關的 RBAC、NetworkPolicy,一路往下挖。
這個過程最終促使我去報考了 CKA(Certified Kubernetes Administrator) 認證。
CKA 是由 CNCF(Cloud Native Computing Foundation)官方認可的 Kubernetes 管理員認證,考試全程是在真實的 k8s cluster 上實際操作,需要在限定時間內完成各種情境任務,包括 cluster 的故障排查、Pod 的部署與設定、RBAC 的配置。
備考的過程說不累是騙人的,但也正是這段過程,讓我對 k8s 的理解從「會用」提升到「真正理解它在做什麼」。最後順利拿下 CKA,某種程度上也算是對這段實習學習旅程的一個交代。
在 LINE 的成長與收穫 & 實習生活寫照
回顧這段實習,可以分成幾個面向來說。
技術能力是最直觀的收穫。從只會 VM 和 Docker,到能夠理解 k8s 的整體架構並在真實環境中部署服務;從只知道「有 CI/CD 這東西」,到親手接觸 Harbor、ArgoCD、Traefik Forward Auth 的完整 DevOps 流程;還有最後拿下 CKA 作為學習旅程的里程碑。這些都是在學校或個人專案中很難獲得的系統性體驗。
溝通能力是我沒想到會有這麼多成長的地方。Alpha Dev 的內部系統性質,讓我必須頻繁溝通,理解同事們的需求、把技術方案解釋的讓非工程師也能理解、並在來回討論中把模糊的需求變成可以實作的 spec。
當然,實習生的生活不只有寫程式。
每到中午,一群實習生就會一起去買午飯,坐在二樓的桌邊邊吃邊聊——聊最近在忙什麼、遇到什麼問題、又學到什麼新技術。這看似平凡的日常,卻是我每天最期待的時光。大家工作之外都有各自精彩的一面:有人熱愛攝影,會拍照剪影片;有人會 Beatbox;有人會 DJ。那些一起吃飯的午後,是這段實習裡我最難忘的片段之一。
辦公室的環境也很舒適,按摩椅、飛鏢機隨時都可以去放鬆一下。每個月有實習生月會,會有人來分享各種主題;團隊也會定期舉辦 Team Building。身為一個 LINEer,生活確實比想像中豐富許多。