謝俊宥

後端/Devops 軟體開發工程師 ・Taipei, TW

[email protected]

0988091205

具備 6-7 年的後端與 devops 工作經驗,目前在團隊內主要常用語言為 Golang 與 shell script ,在過往的經歷中導入 Docker, Kubernetes, CI/CD, Grafana 等監控工具,減少管理服務成本,使工程師們可以更專注於開發與專求技術,免於過頻繁的處理 server 問題。


我擅長與其他團隊溝通,因為在過往的經驗中長時間的與不同單位合作與協商,例如: 客服團隊、MIS團隊、PM或者其他 RD 團隊,並且有 devops 和後端開發的經驗。 我會主動尋找一些工具來幫助我節省更多的工作時間與優化專案底層,讓我有更多的時間可以專心追求技術的樂趣。

工作經歷

後端工程師  •  雲策科技有限公司

五月 2023 - Present

主要產品:體育投注聊天室、賽事預測文章、主播直播 API 串接

使用技術

  • Golang
  • WebSocket
  • RabbitMQ
  • Kafka
  • Redis
  • MySQL
  • DocumentDB
  • Docker
  • Docker Compose
  • Makefile

技術亮點

  • 高效能與高併發服務:設計並實現了服務架構,RPS 可達到每秒 1 萬次以上的請求。在歐洲盃賽事期間,系統達到同時在線有效用戶(有效登入 token)約 10 萬名(訪客不計算在內),當下查看系統推算每秒 RPS 可達 1 萬次以上的請求。
  • 微服務架構:主要使用微服務架構進行系統設計和實現,確保系統的高可擴展性和維護性。
  • Redis 快取:實現了 Redis 快取機制,通過緩存穿透和緩存雪崩保護策略,有效減少了直接訪問資料庫的次數,防止 DB loading 過重。
  • Local Cache:針對特定不常變更的資料實現了本地快取(local cache),以減少對 Redis server 的請求次數,優化了系統性能。
  • 預熱機制:針對即時性要求高的場景(例如請求第三方 API 或 DB 行為),啟用了排程預熱機制,降低用戶主動請求 DB 的次數,從而加速了請求回應並降低了機器負載。
  • 自建立 Snowflake ID 生成:聊天室訊息儲存方式使用自建立的 Snowflake ID 生成系統,確保訊息 ID 及相關賽事文章 ID 的唯一性和高效性,數據有序性,並提高了未來搜索資料時命中索引的效率。
  • 本地開發環境:為了讓每位開發人員可以迅速建制本地環境,透過 Docker 和 Docker Compose 結合 Makefile,使熟悉 Docker 的開發人員能夠迅速架起地端服務。

貢獻

  • 參與並主導了多項核心功能的設計與實現,確保系統在高負載下穩定運行。
  • 通過優化快取策略和預熱機制,有效提升了系統的響應速度,降低了服務器的負載。
  • 確保系統在高並發場景下的穩定性和高效能,為公司的主要產品提供了可靠的技術支持。
  • 開發並維護了多個賽事相關的預測文章 API 及主播直播 API 的串接,豐富了產品功能。
  • 透過 Docker 和 Docker Compose 結合 Makefile,快速搭建本地開發環境,提高了開發效率。



後端工程師  •  麻豆傳媒

五月 2022 - 三月 2023

主要職責:

  1. 擔任後端組長,帶領4人 Golang 團隊,負責需求開發及進度追蹤。

  2. 跨部門溝通與合作,對需求功能進行對焦。

需求開發:

  1. ModelTV 專案
    • 串接第三方 API:實現 Gash 金流付款、退款、查單等功能,維護並優化中華國際金流 API 流程,管理綠界開立發票、身份審查,開發寄發郵件及 Telegram Bot 功能。
    • 開發內部 API 以支持訂單管理和使用者數據分析,涵蓋前後台的 CRUD 操作。


架構優化:

  1. 在回應中引入日誌追蹤 ID,使得在5分鐘內可迅速找到對應日誌,提升問題處理速度。

  2. 為各資料庫(MySQL、Redis、MongoDB)實施連接池,減少伺服器與資料庫之間的 TCP 連接資源消耗。

  3. 使用 Redis 的 RPUSHBRPOP 實現隊列功能。

  4. 開發並導入 CronJob 框架以進行排程任務。

  5. 引入 pprof 以監控 CPU、記憶體和 goroutine 的資源消耗。

  6. 建立線上 Dockerfile 以簡化部署流程。

  7. 通過增加緩存、減少不必要的 GORM 預加載、提升用戶數據收集,並利用 channel、goroutine 和 waitgroup 進行高併發處理的代碼優化。

  8. 加強 Redis 緩存以防止緩存雪崩,透過分散緩存紀錄時間和定期更新緩存過期時間進行處理。

  9. 開發 GitLab CI 自動化部署工具,提升上版流程的效率。


後端工程師,Devops工程師  •  長青資訊股份有限公司

九月 2018 - 五月 2022

《導入 Golang與微服務架構》
建置能穩定獨立運行且具高網路傳輸性能的服務,藉以減少故障停擺風險,降低服務之間的依賴性。

1. 架構規劃與汰換:初期除了需維運 PHP 現有服務外,同時進行Golang 底層架構的規劃與設計、新專案開發,並將PHP 專案全數重構為Golang。

2. 導入微服務架構:設計分佈式服務,按造業務拆分各項服務,引用 grpc 做微服務之間的溝通橋樑,建置—遊戲中心、會員中心、管理者中心、圖片中心等專案,提高系統乘載量以及服務穩定度,降低服務間彼此依賴。

《導入Docker 與 kubernetes》
運用 docker 與 kubernetes ,大幅降低維運成本,如減少虛擬機的管理工作、開發人員管理 server 的時間與成本等,讓開發人員能專注於程式與邏輯撰寫。

1. 初期—Docker導入:為了便利建立與管理服務,開始規劃導入 Docker,以手動於機器上建置 Container,大幅縮減建置服務所需耗時。
2. 中期—K8S導入:隨著 Container 服務越來越多,維運成本也隨之浮現,有幸遇上公司大力推廣導入 K8S ,逐漸將 Container 轉向 K8S 上做管理。
3. 後期—Helm導入:考量到降低各環境的建置成本,導入 Helm 管理 K8S,透過一套 template 部署於各環境。
4. 優化:透過 grafana、prometheus、elasticsearch、datadog 等 log 監控server 效能運作,使開發人員能快速並清楚了解自身產品的效能運行程度與問題追蹤

《導入CICD》
考量 Jenkins 學習成本較高,多方參考後選擇使用Golang的Drone。

1. 大幅縮減部署時間與建置專案規則的繁雜度
2. 結合 telegram 推播通知結果,即時監控程式上版狀況


後端工程師  •  中佑集團 凡谷興業

七月 2016 - 七月 2018

1. 伺服器管理
『伺服器架構、虛擬機連線配置、機器對外、開放防火牆、DNS解析設定、F5負載平衡、套件安裝...』等細節設定,皆需要與專案人員及MIS人員討論,至虛擬機器建制完成後的Apache或Nginx配置、檢查機器。ex:機器規格、機器數據監控、套件版本檢查、連線測試、DNS解析或憑證、logroate等設定。

2. 專案開發 & Bug issue tracking
具備Restful API的設計經驗,在專案開發過程中導入「敏捷式開發」,了解MVC概念運作方式,專案開發上使用Git協同專案作業,也曾用過PHP的Laravel框架自行練習PHP語言、究過Google開發的Go Lang,但實際在專案上開發時,是使用Node JS與Express框架進行開發。

因工作職務主要是負責維運偵錯,也曾經協助專案人員排除Memcache、Redis連線、資料存取、Port連線異常,故也略懂該項技術的運作方式;另外也時常會接到同事間反應與機器有相關的問題,ex: Apache 或 Nginx異常(服務異常停止、設定檔吃錯Position、新增設定檔設定)、Domain連線時好時壞、機器空間異常增量...經歷過這些經驗後,當再次接到問題時,更能掌握問題點,並縮小問題查找範圍,大幅降低問題處理時間。


學歷

Asia University of Taiwan 亞洲大學

資訊多媒體應用學系

2011 - 2015

連結


技能


  • DevOps
  • DevOps / CI / CD
  • Backend Development
  • backend engineer
  • Golang Backend
  • Kubernetes/Docker
  • Helm Charts
  • Helm
  • Linux
  • Redis
  • Shell Script
  • MySQL / Mariadb
  • Git
  • PHP development

語言


  • Chinese — 母語或雙語
  • English — 中階