百人團隊敏捷轉型
暨持續整合與交付實踐
2017.10.28 @ MOPCON
Taien Wang <taien.wang@gmail.com>
早期從事資安顧問、全端工程師及創業等
加入時間軸後致力於為本土網路公司樹立開發典範
興趣在品酒文化,目前專注於葡萄酒盲品
王志清 Taien Wang
◉ 現任
○ 安世泰有限公司 董事
◉ 經歷
○ 時間軸科技/遠時數位科技 技術總監
○ 時間軸科技 研發工程師/部經理
○ 台灣微軟 研發助理
○ 網駭科技 資安顧問
時間軸科技 服務藍圖
O2O手機票券購物平台
電子支付系統
實體通路M化解決方案
巷弄
場域:
台北 台南 台中 高雄
實體通路O2O 解決方案
時間市集
內容共創、導購分潤平台
為策展原生創作而生
就算是一卷衛生紙也有它的特色
Yahoo!奇摩行動遊戲入口
台灣最具規模卡牌網站
卡牌搜尋、組隊系統、遊
戲攻略
Y!Play
導購/自媒體 解決方案
成效媒體投遞
品牌全媒策劃
媒體廣告代理
AA pixel 廣告監控系統
AA Miner
廣告採購 解決方案
品牌電商客製開店
客製電商平台開發
主機系統維護
廣告採購
影音直播
策展議題
網紅導購
爆品打造
加購變價式購物
場域出發 付費會員制
忙碌上班族的好夥伴
線上購物 解決方案
策展
影音電商
創新
全館變價
品牌
旗艦開店
Traffic Model
Sales Model
3
• 2013 獲得 遠傳電信投資(4G行動發展重要佈局)
• 創造 多元行動生活服務
• 立足三網 行動網路、社群網路、網際網路
• 持續發展 內容服務、行動商務、社群
• 應用發展 行動商務、O2O、數位媒體通路
• 公司規模 350人 ( 台北、台南)
行動 商務 社群 媒體
2016
4
回顧時間軸行動商務里程碑
2013
1
• 06 遠傳併購時間軸
• 07 巷弄改版
• 10 FB Ads 黑客松
全球第一
併購擴張
2014
2
2015
3
2016
4
2017
5
• 01 自建搜尋引擎
• 01 巷弄 x 台南
• 07 推薦系統
• 10 friDay加購
• 全站變價, 架構調整
深根強化
• 02 friDay購物小網 1.0
• 05 friDay購物小網 2.0
• 08 巷弄 2.0
佈局電商 2.0
• 04 O2O QBon
• 10 friDay購物
n 大網, android, ios
• 10 共用系統服務
n 金流, 物流, 發票, 推
播…
佈局電商 1.0
• 08 friDay購物 x
GoHappy
集團合縱
延伸資料
• 歷年相關獎項:http://www.hiiir.com/
• 時間軸創業歷程:https://www.slideshare.net/chiahsienl/hiiir-78764367
5
2014 佈局電商 1.0
9 個月綜合電商 friDay購物(大網、App)
技術債、 完整功能、穀倉
難以避免
> 15 個平台與系統
x 5 倍產品團隊
自建私有雲、全面叢集式架構
質化指標
6
“
集團/大公司下的綜合電商MVP:
是傳統產業電子化
好處
◉ 職能分工省時間
◉ 建立開發技能規範
◉ 團隊職涯發展明確
壞處(隨時間)
◉ 政治問題、穀倉效應
◉ 溝通越來越花時間(指數上升)
◉ 每個人都是螺絲釘
心得
◉ 文化,核心團隊信任
◉ 必需再一開始建立合作方法與開發流程
◉ 初期若無時間或方法溝通,短期就有政
治問題
職能團隊(Functional Team)建立
PM 工程師 QA
Director
Big Boss
8
系統架構 1.0
9
10
產品鬼故事
規劃初期
◉ 利害關係者:這功能要怎樣
怎樣…
[一個月過去]
◉ 利害關係者:怎麼還沒出來
◉ PM:…
開發過程(1/2)
◉ PM:老闆要這個功能
◉ 工程師:為什麼?想解決什
麼?
◉ PM:不知道,時間很趕沒有
那麼多為什麼。
◉ 工程師:…
開發過程(2/2)
◉ PM:該功能下個月上線
◉ 工程師:那請把規格書(功
能、畫面)等細節給我們
◉ PM(心裡):RD 很難合作,規
格書也沒有標準
◉ PM/工程師:…
驗收階段
◉ 工程師A:時間不夠,還有哪
裡可以節省時間
◉ 工程師B:有 QA 交給他們驗
證就好
功能上線
◉ 利害關係者:這不是我要的
◉ 產品團隊:…
◉ 產品團隊:不是我的錯,都
是對口單位的問題
以上內容如有雷同,純屬巧合
圖片來源
• http://pic.kekenet.com/2012/0214/20120214012551217.jpg
驗收階段
◉ QA:每次都是我們卡在最後,
測試案例寫不完怎麼辦?
◉ ??:找多點人測試,有人背書
就好
◉ …
◉ 上版人員:最後是我 ,出包
我就要加班了
到底是誰的問題?
老闆?公司?絕對不是自己的問題
資本與方法論的衝突
◉精實創業(Lean Startup)與精實分析(Lean Analytics)
◉過早資本進入後其要求讓產品失衡
資料來源
• Running Lean, 2nd Edition: Iterate from Plan A to a Plan That Works, Ash Maurya
11
12
好處
◉ 大破大立
壞處
◉ 失敗將使整個組織重大衝擊
心得
◉ 不要怕弄髒手
◉ 文化建立至關重要
• 文化
• 教練
• 打造有自我公司特色的 XXX
破除穀倉
經理人或新團隊加入/使用新方法
PM 工程師 QA
Director
Big Boss
手下1/3主管跳槽
他竟一年半讓業績翻倍
資料來源
• 商業週刊: http://magazine.businessweekly.com.tw/Article_mag_page.aspx?id=63571
13
文化/組織/戰略
戰技
戰術
戰略
公司(公司/集
團戰略)
總經理
處
部/組
成員
部/組
成員
處
部/組
成員
文化
◉ 標語
○ 尊重、榮耀、關懷、快樂
◉ 文化
○ 價值驅動
○ 數據為王
○ 溝通(上、下、平行)
◉ 非一個人形成的,文化是所
有人的產出
◉ 文化影響價值觀、將影響未
定義的事,並串連所有人
◉ 文化不是口號
○ 每次會議或溝通
○ 決策與危機處理
○ 適當的標語願景
• 做什麼?為什麼?更好的做法?
延伸閱讀
• 數位時代 - 馬克‧佐克柏發表公開信,談Facebook五大核心精神
14
Agile/Scrum 簡介
Scrum
◉ Agile 敏捷開發方法的其中
一個分支
◉ 敏捷宣言價值觀
n 個體和互動高於流程和工具
n 可用的軟體高於詳細的文件
n 客戶合作高於合約談判
n 響應變化高於遵循計畫
圖片來源
• AGILE SCRUM FOR WEB DEVELOPMENT:https://www.neonrain.com/agile-scrum-web-development/
15
瀑布式開發
確認
目的/需求
PM
初步整理
PM
簡單會議
意見回饋
PM/RD/QA/Art
主管或有想法的
人
確認會議
確定要做的項目
PM/RD/QA/Art
起始會議
說明規格/預計時程
PM/RD/QA/Art
開發>修正>上線
撰寫案例>驗收>上線
提供需求
營運/工程/產品
RD: 可行性評估 RD: 可行性評估/時程
後續
檢討會議
16
Scrum開發
確認
目的/需求
PO
初步整理
PO
簡單會議
意見回饋
PO/RD/QA/Art
主管或有想法的
人
確認會議
確定要做的項目
PO/RD/QA/Art
起始會議
說明規格/預計時程
PO/RD/QA/Art
開發>修正>上線
撰寫案例>驗收>上線Stakeholder
提供需求
營運/工程/產品
Planning Meeing
說明/切任務/估點數
可行性評估
Sprint
說明/切任務/估點數
後續
Retrospective
17
招式從來不是問題
重點是思維
◉價值先決
◉網路世代需要創意,更需空間
◉沒有夕陽產業,只有夕陽思維
圖片來源
• Waterfall, Agile & the “Triple Constraint” - http://tom-sylvester.com/lean-agile/waterfall-agile-the-triple-constraint/
18
“
敏捷既然把傳統瀑布要做好
因應快速變化的幾點要素都定義了
你為什麼不用呢?
“
遊戲化讓實踐中充滿樂趣
2016 深耕強化
資料來源
• 遠傳旗下時間軸科技再推電商平台「friDay 加購」,以創新經營模式保證最低價
• friDay「加購」新平台不是「COSTCO」模式,傳統零售B2C終結槍響起…
21
全球數位商業創新界奧斯卡
艾奇獎(ECI Award)2017 年年度獎
friDay加購
虛擬經濟消費級商業模式創新類銅獎
資料來源
• John Yeh 臉書
22
2016 深耕強化
CTR x 3自建推薦系統
電商模組 Components 化、容器化
視覺化監控、數據視覺化
全面敏捷
0 個慢查詢
2 倍開發效能
1/4 倍常規任務
±70%平均測試覆蓋率
23
Product Owner 委員會
功能團隊3
功能團隊2
功能團隊1
有 Hiiir 特色的 Scrum(1/2):
職能團隊改功能(feature)團隊
PM 工程師 QA工程師 AppApp
技術/
架構委員會特殊部隊
Large-Scale Scrum, LeSS
要點
◉ 職能團隊還是要負責職涯發展
◉ 沒經驗有教練是需要的
◉ 讓團隊說真話,避免利益衝突
◉ 功能團隊安排講究平衡
○ 講究戰力(資深、資淺)
○ 跨職能(全端)
○ 男女
好處
◉ 解決穀倉問題
◉ 避免 know-how 鎖在特定團隊
◉ 透明資訊,所有人可直接參與產品
◉ 溝通日見順暢
其他
◉ 組建技術/架構委員會
◉ 內部地位平等
◉ 決策技術重大議題
○ 技術選型
○ 重大更新
○ …
Scrum Master
24
團隊眼中的我
有 Hiiir 特色的 Scrum(1/2):
將技術管理設為內建必要,取之社會用之社會
26
系統架構 2.0
27
延伸資料
• Sylius - http://sylius.org/
“
作架構是一種取捨
且要做到呼吸一樣自然
更多 Hiiir Scrum 細節
請參考以下連結
“
文化與教練都有了
團隊的成效自然精彩可期
做好敏捷的兩基底
敏捷管理 技術
31
做好敏捷的兩基底
敏捷管理 技術
32
做好敏捷的兩基底
敏捷領導 技術
33
讓團隊發揮創意而非工廠 技術增加速度與門檻
“
把光給團隊
主管不是來成就個人的
是成就事、成就一群人
持續整合(CI)
與持續部署(CD)
CI: Continuous Integration
◉ 持續整合(CI)是一種軟體工程流程,鼓勵開發人員在編寫程式時持續關注程式品質和正確性。程式整
合和質量測試不是在開發週期結束時,而是在開發過程中頻繁整合,從而允許早期檢測和糾正缺陷。實
踐的方式,開發人員將他們的工作拆成小份量,通常是一天的工作量大小。每塊工作包含程式開發與測
試 (unit tests)。程式每次 commit 並 push 到 master 與主線整合,減少未來發生整合錯誤的數量。由於程
式庫保持良好的狀態,QA團隊可以在開發過程的早期進入測試。
CD: Continuous Delivery/Continuous Deployment
◉ 持續交付(英語:Continuous delivery,縮寫為 CD),是一種軟體工程手法,讓軟體產品的產出過程在
一個短週期內完成,以保證軟體可以穩定、持續的保持在隨時可以釋出的狀況。它的目標在於讓軟體的
建置、測試與釋出變得更快以及更頻繁。這種方式可以減少軟體開發的成本與時間,減少風險。
資料來源
• wiki – 持續整合
35
資料來源
• wiki – 持續交付
持續整合(CI)
36
Definition of Done, DoD
Hiiir DoD
◉ 測試、品質、可說明程式的資料(程式碼、程式碼說明文件、架構文件等)
○ Coded - 程式完成開發,可以正常執行,不是樣板或 Demo
○ Tested - 程式通過靜態分析(coding style)及檢查(tests) 並達到預定品質指標
○ Documented - 開發及維護之相關文件及程式註解
○ Usable - 有效且有效率的運作,例如操作介面要達到流暢性,網頁反應時間在可接受標準時間內
○ Ready to be Release - 準備好可以交付給其他單位使用(測試),交付的內容可以是產品,可以是設計文
件,或者是階段性工作.
37
自動與手工區分
自動化(交給 CI)
重複性的工作給機器
◉ Code Style
◉ PMD
◉ 計算 Unit Test 覆蓋率
◉ Git Comment 格式
◉ …
手工(架構審閱)
人類要處理最重要的事
• 資料庫結構設計審閱
• 程式架構審閱
• MVC
• 命名語意
• 例外處理架構
• 環境區分架構
• …
找到固定模式後
開發工具放到自動
38
DevOps 具體實踐
…
Hiiir CI/CD Solution Stack
40
Redmine + 看板開發(Kanban)
◉ 整合外掛
○ Redmine Agile Plugin
○ Gitlab Hook Plugin
○ Rocket Chat
○ Testlink Plugin
○ …
◉ 客製化欄位
○ 解決工作任務+審閱紀錄+部署工作整
合需求
○ 合規內稽內控
◉ 數位 Kanban
○ 視覺化開發並加速討論
41
程式碼管理方式
◉ 程式碼管理採用基於 trunk
◉ 以提早碰撞為原則
◉ 例:Composer
資料來源
• What is Trunk-Based Development?
42
資料來源
• Hiiir 架構師
◉ CI/CD 與 Scrum 的整合 (Development)
◉ CI/CD 與 Scrum 的整合 (Release)
CI/CD 與 Scrum 的整合
43
程式碼品質追蹤
Before After
• 傳統 Excel • 透過彙整到 Tableau 分析
• 每日異動趨勢、即時計算是否達成該月目標
◉ 問題:團隊需每月手動追蹤目標達成狀況,僅能看到是否達成目標,無法看到持續的進步
◉ 行動方案:透明團隊成果提昇改善動力,並讓其感受進步
◉ 元素: Duplicate Code、Check Style、Coverage Rate、其他評分
44
記錄中心 2.0
◉ 起因:ELK(Elasticsearch, Logstash, Kibana)在問題彙整與處理不便,較適合用在記錄搜集與分析,因此尋
找更適合得解決方案。原 ELK 保留紀錄分析功能。
Before After
• 查詢需要下指令
• 問題無法彙整
• 問題直接匯整,並分析出現趨勢
• 直覺的介面(1. 可透過點選查詢 2. 程式執行細節呈現,非單一訊
息)
• 管理團隊可在第一時間發現可能問題
45
程式效能管理APM:XHprof GUI
46
知識管理
47
◉ 起因:原技術相關文件撰寫於各地(Gitlab、Redmine、Google Docs…),且有部分基於外部雲端服務
Before After
• 到處撰寫存放
• 團隊無法有效管理交流
• 內部統一平台並儲存,並有良好的權限控管
• 提升知識補完速度
程式開發效能縱觀
◉ 在文化調整後,力求上班時最高產能
◉ 半夜上傳程式碼,反而是要關懷他的
2014
2015
2016
2016
圖片來源
• Google Search: Git Stat
• EazyBI - https://eazybi.com/integrations/git
48
“
用數據與事實說服人
可讓底氣更厚更長
DevOps 實踐
Development + Operations
◉ DevOps(Development和Operations的組合詞)是一種重視「軟體開發人員(Dev)」和「IT運維技術人
員(Ops)」之間溝通合作的文化、運動或慣例。透過自動化「軟體交付」和「架構變更」的流程,來
使得構建、測試、發布軟體能夠更加地快捷、頻繁和可靠。
Hiiir DevOps
◉ 開發往系統維運跨、維運往開發靠
◉ 虛擬維運團隊:一起讓系統穩健、準時下班不用被呼叫
資料來源
• wiki - DevOps
50
品質與監控電視牆
◉ 透明產品即時狀態
◉ 程式碼品質
◉ 服務架構監控
n 實體、虛擬、業務邏輯
◉ 即時通訊告警(Slack > RocketChat)
n 部署、異常、群組討論
51
透明的文化
52
數據分析與應用
圖片來源
• AWS Summit 2017 Taipei - 如何利用大數據分析打造電商數位儀表板
推薦系統 即時數位儀表板
53
資安佈局
參考來源
• 使安全成為軟體開發的必要部分
54
資安管理系統
程式安全培養
安全系統發展
生命週期
自建
或其他防禦方案
關注資安資訊
與漏洞通報平台
結論
◉ 謹慎團隊建立
◉ 避免穀倉問題
◉ 敏捷面對挑戰
◉ 技術創造門檻
◉ 永遠投資機會
Hiiir PD&RD
實踐敏捷與 DevOps
大型本土團隊
流程
組織
文化
55
“
業務一直是老司機
該讓技術開車了
Any questions ?
You can find me at
◉ fb: taien.tw, mobile: +886 963 151 438
◉ taien.wang@gmail.com
Thanks!

百人團隊敏捷轉型暨持續性整合與交付實踐