自我介紹

對各種系統充滿著好奇心的資深開發者,主攻 Web 後端開發、DevOps 自動化與基礎設施管理。
相信運作良好的系統不只是工程師們的努力,更上一層樓的關鍵是與業務單位的合作無間

  • Web 後端開發 (熟悉 Node.js / Python,略懂 .NET core / Golang / PHP)
  • Web 前端開發 (Vue.js)
  • 伺服器與應用程式管理
    • 使用 Proxmox VE / VMWare ESXi 建立虛擬化叢集
    • Linux VM 建立與維護,使用 Ubuntu / Debian / CentOS / Alpine Linux
    • Docker 容器管理,使用 Docker Compose 與 AWS ECS
    • 將舊有 VM 佈署的應用程式遷移至 Docker 佈署,根據程式需求自行編寫 Dockerfile
    • DevOps CI/CD pipeline 建立與維護,使用過 Drone, Gitlab CI, Jenkins, Azure DevOps
    • 使用 ELK 和 Grafana Labs 系列開源軟體進行伺服器監控與 log 收集
    • 使用 Prometheus 監控服務與網路設備健康狀態,針對沒有現成 Prometheus exporter 的設備自行開發監控程式
    • 使用 CDN 與 WAF 服務阻擋惡意攻擊,使用 Imperva 與 AWS Cloudfront + WAF
  • 雲端服務
    • Amazon Web Services
    • Google Cloud Platform
    • Linode
    • Vultr
  • 網路管理
    • 使用 AS38852 做 BGP Peering / Transit,並租用兩個 Class C 的 IP 使用

經歷

網站可靠性工程師

May. 2023 - 現在
拍付國際資訊股份有限公司 (Pi 拍錢包 / PCHomePay 支付連)

帶領 MIS 同仁們盤點沒有留下文件的網路架構,協助日常網路設備與伺服器維護,並主導 Pi 拍錢包上雲計畫的技術規劃

在 2023 年 5 月時,為了解決系統的技術債,同時擴充系統容量以應付雙 11 的大量交易,我們決定於 7 月展開上雲計畫,最後於 10 月中成功上線,遷移期間交易不中斷,讓對消費者與合作廠商的影響降到最小。
此計畫主要難點在前人留下的文件甚少,因此除了盤點所有網路設備設定以外,應用程式環境也是參考線上環境從零重建而成,同時將環境從傳統的 x86 架構轉換到 ARM 架構,可以節省 20-25% 的運算成本。

負責以下專案:

  • Pi 錢包上雲

    此專案主要分成四大步驟進行:
    1. 重建應用程式部署環境
    2. 盤點現有基礎架構,釐清系統架構
    3. 製作與實行遷移計畫
    4. 監控遷移以後系統狀況
    • 重建應用程式部署環境
      • 因前人沒有留下 deployment guide,因此參考正在線上運作的 VM,整理出執行程式所需要的 PHP 版本、資料庫、快取服務等 dependency
      • 考慮到開發環境以 ARM 架構為主,同時使用 ARM 架構在雲端上可以節省 20 ~ 25% 的運算成本,因此便以前者為基礎從零開始編寫 Dockerfile,重新 compile 所有 PHP extension,並將佈署方式從 Apache 轉為效率更好的 Nginx + php-fpm
    • 盤點現有基礎設施,釐清系統架構
      • 盤點網路架構,包含線路盤點、子網路切分、VLAN、路由規則、防火牆規則、load balancer 設定、CDN 設定。
      • 盤點應用層所有對外 API 入口與內部系統 API 端點的依賴關係,釐清資料流向
    • 製作與實行遷移計畫

      與 AWS 的 solution architect 合作,除了 review 架構設計以外,AWS 所提供的 migration plan 樣板規劃步驟,失敗時的 rollback plan 等,在許多細節上提供了非常大的協助。
      技術重點摘要如下:

      • 使用 AWS Elastic Container Service (ECS) 從零重新架設所有交易核心服務
      • 使用 AWS VPC Security Group 與 AWS WAF 將原有的防火牆規則遷移至 AWS
      • 使用 Oracle Data Pump 與 AWS Database Migration Service 將資料庫從實體機遷移至 AWS Relational Database Service (RDS),不只執行單次匯入,也持續同步後續變更資料
      • 使用 AWS site to site VPN 與 AWS Direct Connect 打通 IDC 的內網與 AWS VPC,並導入 OSPF 與 BGP 讓機器自動交換路由,減少要逐台機器設定的麻煩。也使用 AWS Transit Gateway 讓 VPN 與 Direct Connect 互為備援
      • 部分無法使用 AWS ECS 重新架設的服務使用 AWS Application Migration Service (MGN) 將 VM 整台遷移至 AWS EC2
      • 使用 AWS Step Functions 與 AWS EventBridge 將排程工作從使用 linux crontab 在 VM 上執行轉為在 ECS Cluster 上執行,讓運算所需的成本減少達 90% 以上,且更利於掌握執行成功狀況與時間長度,同時讓失敗的任務能夠在 Slack 發出警告或是自動重試。
        此部分使用 AWS Cloud Development Kit (CDK) 編寫讓 AWS 上的資源也能如程式一般進行版本控制、複製與刪除。
    • 監控遷移以後系統狀況
      • 架設 Prometheus + Grafana 監控系統,在 Grafana 整合 prometheus / AWS CloudWatch 的監控資料,並在系統異常時發出警告到 Slack 通知 SRE 人員
      • 自行編寫 Prometheus exporter 抓取如交易數量等業務性質資料,讓一個 Grafana dashboard 同時能從系統與業務角度掌握健康狀態。
  • 網路設備與伺服器維護
    • 盤點網路架構,並協助日常設定修改。
      使用設備包含:
      • Cisco 2960/3560/3850 series switch (Cisco IOS)
      • Cisco N3K series switch (NX-OS)
      • Citrix ADC load balancer
      • Fortigate firewall
      • CheckPoint firewall
      • A10 Thunder ADC load balancer
    • 協助維護 HP / Dell / Supermicro 伺服器,使用 VMWare ESXi 做為 VM Host,使用 vCenter 管理叢集

技術長

Jul. 2019 - May. 2023 (3yrs 10mos)
趣味金融科技有限公司 / 廿一世紀數位科技股份有限公司 / 二十一世紀數位科技股份有限公司

從零開始建立公司的資訊基礎架構,並主導公司內部系統與嘗試性新專案等多項專案開發

在母公司 (廿一世紀數位科技股份有限公司) 被網路家庭國際資訊股份有限公司 (PCHome) 收購與收購喬睿科技股份有限公司 (TapPay) 以後,協助團隊之間的技術合作與團隊整合與協作規劃

負責以下專案:

  • 慢點付 Paylater (系統架構設計與後端服務開發)
    • 是一個先買後付 (BNPL) 的支付平台,消費者只要提供身分證與個人基本資料,透過自行開發的信用評分系統,只需幾秒鐘審核就可取得消費額度
    • 導入微服務架構,讓支付服務可以獨立快速擴展,不需要在容量不足時擴展整套系統
    • 支付 API 規格相容 Line Pay,讓已經串接 Line Pay 的商家可以快速串接 Paylater
    • 與兩家銀行串接 ATM 和超商繳款,提供消費者繳交帳單服務
    • 信用評分系統串接政府各種查詢資料 API,並綜合上千萬筆法律相關資料建構出的評分模型,可在數秒內決定要給予消費者多少額度
    • 導入 TypeScript、自行開發的程式範本與 Linter,讓初級工程師可以快速上手為專案貢獻程式碼
    • 利用 Grafana 與 Redash 建構非技術人員也可簡單了解各種商業指標的 dashboard,同時也被用來抓出有問題的交易
  • 電話訪問系統 (系統架構設計與後端開發)
    • 為一多功能的雲端總機系統,基於 Asterisk 進行開發,包含名單自動撥號、來電佇列、大量簡訊發送、回撥、多層可客製化的權限等功能
    • 全套系統架設於 GCP 台灣區,並直接連線至遠傳 SIP Trunk,中間不經過任何地端設備,提供最低的延遲與維護成本
    • 藉由將總機架設在雲端,不需要 VPN 或昂貴的專線才可串聯不同辦公室之間的話機,實測在 NAT 環境下也可正常運作無虞
    • 提供話機與 App 兩種使用方式,讓人員在公司內外皆可使用
    • 架設 Kamailio 讓多台 Asterisk 可以共用同一批號碼撥出與撥入,更可在不同公司和用途之間切換號碼以避免號碼被回報為騷擾電話
  • 挖礦機房建置 (協助進行規劃)
    • 協助規劃兩個乙太幣挖礦機房建置,兩者加起來有超過 40 台礦機與超過 150 張 NVidia GTX 3070/3080 顯示卡
    • 規劃機房網路架構,利用 GRE Tunnel 與辦公室內網串聯,並利用 OSPF 協定交換路由,讓機房的資料可以直接回傳公司
    • 協助進行電力與冷氣容量估算與驗算,電力使用超過 50kW,同時提供 55kW 以上的冷房能力
    • 使用 NodeMCU 搭配 DHT22 溫濕度感測器建立感測節點,加上 Raspberry Pi 4 執行自行編寫的 Prometheus Exporter 作為主機建立 IoT 環境監控,並搭配 Prometheus + Alertmanager 在溫度異常時自動告警

技術領導人, 共同創辦人

Oct. 2018 - Jun. 2019 (9 mos)
山英資訊有限公司

提供家庭與辦公室電腦購置維護、網路設備規劃建置、資訊系統外包製作服務

主導下列專案:

  • 線上開店平台
    • 一個簡易的線上開店平台,提供基本的進銷存與下訂單功能,且多間商店可共用同一個後端並套用不同版面
    • 使用 Vue.js + Node.js 開發,且所有 API 都使用 GraphQL,讓 GraphQL schema 本身即是 API 文件
  • 樂分期 網站維護
    • 使用 Prometheus + Grafana 進行網站上線狀況監控與告警
    • 使用 Twillio 搭配自行開發的 script 在網站出問題時自動撥打手機通知值班人員進行處理
    • 協助進行原始碼 Review,抓出系統內數個 SQL injection 漏洞與造成嚴重效能異常的程式

後端工程師

Mar. 2017 - Oct. 2018 (1yr 8mos)
鉑鑉股份有限公司 (MyProGuide)

將舊有的官方網站與行程訂購網站翻新,開發新系統並導入 AWS 與 CI/CD 流程

  • 主導將舊有 server side rendering 的 jQuery + Django 架構漸進轉移到新的前後端分離 Angular + Node.js 架構,轉換中新舊兩個版本的後端同時運作且無資料不同步的問題
  • 將後端從舊有的 Heroku 平台轉換至 AWS,並改以 Docker + ECS 進行部署
  • 新架構串接 PayPal 與綠界金流,讓顧客在網站上下單完即可馬上付款
  • 轉換至新架構時將業務邏輯完全重新梳理,讓訂單流程減少了 1/3 的步驟,同時減少了一半的訂單狀態
  • 使用 AWS CodePipeline 與 CodeBuild 導入 CI/CD 流程,從 commit, build 到 deploy 一氣呵成
  • 使用 AWS S3 + Cloudfront 部署舊有台北市立導遊協會網站,並協助使用 EC2 + PHP 7 + Wordpress 建置新版網站

技術能力

Node.js TypeScript Python PostgreSQL MySQL MacOS Linux Docker Bash Git Amazon Web Services Google Cloud Platform

學歷

淡江大學

2014 - 2021
資訊工程系學士
  • 資工系實驗室
    • 在實驗室導入 Docker 與 NAS,讓教授自行開發的 Java based 系統可以一個 script 完成部署,同時在電腦有問題時只要 15 分鐘即可將整套系統在另一台電腦上部署完成,同時有一套 shell script 讓不熟 Docker 的同學也可簡單管理
  • 資工系計算機中心
    • 提供網頁空間與可執行 shell 且有 root 權限的 Docker container 供系上學生申請使用,學生只需使用學校 email 信箱驗證即可自動開通,最高同時有超過千個 container 同時在線運作
    • 負責規劃整體系統架構和基礎設施維運
    • 利用 consul 與 registrator 管理所有學生 container 的上線狀況,並利用 sshpiper 轉發 SSH 連線,最後用 consul-template 在學生註冊時自動更新 sshpiper 和 nginx 的設定檔
    • 利用 Docker overlay2 檔案系統的特性,讓學生的 container 疊在客製化的基底容器上,達成底下共通的 library 與工具可以共用不額外消耗硬碟空間,學生又可以自行依據需求安裝自己所需的 Library