# 八月 全部 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的好處 * 終於可以輕鬆地幫那些功能們寫測試啦!!!!!!!!!!! ### 現況與心得
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up