---
# System prepended metadata

title: 八月

---

# 八月

全部 Tech days 2023 資訊更新與提醒：
1. Tech days 2023 Theme：Be water - How technology has to evolve to drive business
   1.1 全部的技術都是為了支援商業需求，請描述商業目的 (說明 Why)
2. 請各部門於6/2(五)下班前提供議題：
   2.1 每個部門提供至少長、短議題各1，再透過機制決選 (有的部門參與同仁超過一個人以上，鼓勵多貢獻議題)
3. 參與人員數量確認：可以再增加人員，可以挑選有潛力的同仁，目前還有2個名額可供爭取
4. 因應參加公司調整，我們將選出3大、2小議題進行分享
   4.1 參與者勾選想要聽的議題，依據長、短議題各5票
   4.2 參與者投票後，會由評審團進行最後決定
5. 分享議題決定後，將再－通知議題Owner準備簡報，先行於內部試講 (日期待訂)
6. 大會另有安排Lighting show (閃電秀)時間：提供一個5分鐘的機會，給所有參與人員可以上台分享想要分享的議題 (排除已經安排分享的議題)，屆時到會場時，進行申請

p.s 因我 6/5~6/14員工旅遊，將請 Allen 協助相關事宜

https://docs.google.com/spreadsheets/d/1hnaDdN7j5R6C_jEOXnUSP5ucJp_aOQOU-gPRxKAfYbQ/edit#gid=197618659



## 短標題
From IIS to K8s
1. 容器化
* 減少環境造成的影響
* 讓開發, 測試與正式環境更相近
2. auto-scaling & auto-failover
* 開發部署更簡單且更安全
3. 如何影響使用者
* Downtime減少
* 產品穩定度變高
4. 如何影響我們
* micro service
* 更快速部署
* 更安心的睡覺

區塊鏈
1. 什麼是區塊鏈
* 區塊鏈簡介
2. 移植到區塊鏈給我們的影響
* 標準的event driven
* 更單純的Service
* 重新被檢視的code
* 帶給我們未來重構的方向

## 長標題
### 重構讓產品活起來
1. 重構的好與壞
2. 重構帶來的變化
3. 我們遇到的問題
4. 我們如何解決
5. 現況與心得

### 產品生命延長之後 要維持快速的交付效率 需要好的設計架構

### 前情提要
* 接手其他團隊開發一年的前端Vue專案
* 接手的工程師們是React && 後端工程師，需要時間熟悉基礎
* UI/邏輯混雜，維護/新增feature不容易（動輒六七百行以上的元件）
* state龐大且混亂，難以管理功能
* 專案沒有測試保護，稍有不慎就會改壞

### 開始重構的漫漫長路
#### 初期的新feature：在現有的code下擴充程式碼
* 一個元件有數十個states以及methods，難以預測元件的行為
* 原有程式碼邏輯多且複雜，元件的互動交織在一起，很容易碰到「遺漏新增/修改某處」導致功能全壞的狀況
* 嘗試補unit/integration/component test，但元件太大太雜導致測試困難
* 出了好幾次的production issue

#### 顛簸地前行幾個sprint之後，決定咬緊牙關來重構
* 在原有邏輯不更動的情況下抽邏輯（React: custom hook/Vue: composable），按照不同工作將function們分門別類，並一點點將測試補上。
* 先從重要度較低的Header/Sidebar開始翻修重構
* Cypress做e2e測試

#### 漸漸了解整個專案的細節之後，開始結構性的重新設計
* 用OO寫數個Service/Provider/Helper，用來管理各個不同的工作：
    * BlockchainService：網站中所有跟區塊鏈的互動都由他做代理執行
    * SiteProvider：提供各個Site的Config
    * ChainProvider：提供區塊鏈各個Chain的詳細參數
    * BlockchainHelper：集中管理所有區塊鏈的methods們
    * ApiHelper：所有跟打api相關的操作都在這
    * StoreHelper：不直接dispatch action更新store而是透過StoreHelper的method

* 同樣都是拆邏輯，比起用框架提供的工具（custom hooks/composable），我們選擇用vanilla class來撰寫功能
    * 讓開發人員們擺脫框架的制約，不這麼熟悉Vue（React/後端）也沒關係
    * OOP讓大家有共同的convention，不會被框架/前後端給限制，彼此的溝通也更順暢
    * 享受design pattern的好處
    * 終於可以輕鬆地幫那些功能們寫測試啦！！！！！！！！！！！

### 現況與心得

