2021 DevOpsDays Taipei
Tags: summit, devops, taipei
Published: 2022-03-01 04:58:19

---
title: 2021 DevOpsDays Taipei 
tags: Summit, devops, taipei
author: Corey Lai
---
Author: Corey Lai
Date: 2021.11.24

共同筆記：https://hackmd.io/@DevOpsDay/2021/%2F6KHX2iVFTPyyCDOY6ouI0Q

# 奇勳 iThome 總編輯 
650人報名 * 3240 = $2106000

軟體更新速度：　
程式碼 commit 頻率 卓越 973倍
deploy lead time 6570倍
穩定度
企業跑在程式碼上

# TSMC DevOps Journey
陳蕙猛 | TSMC
Lances 
台積電IT全程DevOps 2000人 it 線上工廠4萬人

## Intro

::: info
學習如何自動化任何東西
晶片缺就蓋廠，製成出新 1~2年，Scale Up 
PMP PMO Product Mobe
:::

- 全員 DevOps
- IT needs IaC when infra scale out.
- How to turn project mode to product mode.

## 公司問題
五百億個電晶體，2000~5000個機台
每個廠都有好幾個phase
每廠
每天需要留下的資料 1~2 TB 
8~10 m Manufacturing 
400k OHT Travel
MES / 設備製程控制

## IT Product & Teams
> TSMC是一個run在軟體上的公司。
- MES
- Fab Automation
- Yield
- Business
	- CRM

## 建立新廠
operation.create 
copysystemfrom
modifyfrom
newfab.system.run
failed to recover
發展ai 來幫助確認機器錯誤

林宏達 CIO
當沒有網路時，應該要如何運作
engineering  ouptut
帶領工廠做數位轉型

## DevOps Change
### Tech Change
- technology
  - chaos engineering 
  - Coding to do everything
    - 硬體都用code來做
    - 軟體都用API
  - On-Prem (cloud native platform)
  - recovery plan

Infra service -> automation -> networking -> data center retrofit -> infra api -> coding to do everthing -> service mesh -> observability

api first -> agile plan -> realtime message -> code review -> microservice -> sla/slo / ci/cd -> metrics -> recovery drill

-> on premise cloud native platform

### Value System Change: 
  - everything in code
  - use on-premise kubernetes to imporve configuration management

### Culture Change
- review performance with OKR
- align business target from different departments together
- 同理心
- Agile planning & feedback
  - 建立互信都溝通
  - 用共識決，一起決定要實踐的任務。
 
## Journey to Product DevOps
### Plan - Feature to Code

:::info
code review的目的之一是要讓大家看得懂，並且核對coding的規則。也是一個凝聚團隊的過程。
:::
Transform product roadmap and user feedbacks into backlogs
### Code Quality
pull request -> unit test & code review

### CI/CD 流程
Dev commit -> repo -> ci -> push image
Ops change config -> dev Repo -> diff & sync -> argo CD -> dev/test/prod

### Management 流程
Planning -> Daliy meeting -> ut coverage / pr/ code review -> release process

# 談假設思維之下的開發者體驗
Ruddy | 91App

## 為什麼要關注開發者體驗
Devops 背後的科學
DX <--> UX
80%操作不需要使用手冊
協同合作，彼此回饋
敏捷為假設思維
假設思維 use case storyboard
專注於 coding 不是開發環境與開發過程

# Running and Operating Large Scale Real-time Data system on Cloud 
Terry Wu（吳家威）│趨勢科技

Backend of **Trend Micro Vision One - XDR**
XDR 資安數據分析
API SIEM SOAR
Trend Micro XDR Ratings Overview 
Gartner

## System Overivew
High Level Architecture overview

- hundreds if bullions log a day
- running on production
- multi-region
- multi-cloud vendor

log collection -> analytics(Apache FLink / EMR / AKS) -> result / (prometeus / cloud watch -> grafana / elastic search) monitoring / operation

## Design
Logs -> Kinesis/Kafka/EventHub -> Analytics Engine (Flink) -> Alert

## Develop
Where to start
- Build POC to process jist 100k
- iterate from it
- key is speed of iterations
- visibility
- E2E First
- Bottom-up thinking

### Dev.2
Bottleneck
1. query redis
2. queries to web server (slow)
3. memory capacity
4. CPU
*1ms per log 1000 logs per sec per machine*

### Dev. 3
No clear role on who is doing what
任何人可以做任何事情
Business requiement 不追求短期利益

### Monrting
prometheus & grafana (EKS) flink

### Real time quality
追蹤request 時間
停留時間

### Flink Prometheus
Filnk -> pulling -> Prometheus -> query Grafana

### Visibility
difficult to trace bug

### Engineering 
Kinesis shard same number of flink task manager to consume?
kinesis 送log 到 flink 只集中在某幾個 flink 新加入的flink linesis 拿不到資料

## Use Dashboard to prove

## Real time streaming
AWS kinesis -> AWS LAMBDA -> Amazon Cloudwatch
amazon s3 -> AWS SQS -> AWS LAMBDA

# 如何在零信任環境下提高 Kubernetes 的安全性
Yulei Liu（刘宇雷）│ HashiCorp
## Local 環境應用較於簡單

:::info
在雲環境實體就無法被保護，失去物理層的控制
:::

- 內部網路存取是嚴格信任
- 應用程式未使用大量微服務，聯繫是安全的

## Meanwhile in Kubernetes
88% 已經使用k8s 
94% 被攻擊
55% 因被攻擊而被迫退出

## k8s 常見安全問題
secret 並不 secret
base64加密隨使可以解碼
configmap 是使用明文方式保存

### 秘密氾濫
- yaml 文件內有各種祕密
密碼可能被放在 配置文件、email、excel、sharepoint、wiki

### 秘密氾濫後果
- 帳號共享
- 無法進行審計
- 無法更換 (用於多個應用導致無法更換密碼)
- 不安全

### HashiCorp Vault 解決密碼氾濫
USER -> FE -> Public API -> Product API / Payment API
解密 : base64 -d

db-configmap
connection string 其中的設定為明文

### Vault 
會公開於repositry
product-api 動態產生用戶名與密碼
可設置有效時間

解決k8s 不安全問題

### K8S 不使用 SSL
- SSL Certificate 是驗證服務身分
- Certificate 保證沒有人可以偷聽

### K8S SSL 實際困難
- SSL 申請流程複雜
- SSL 生命週期複雜
- 不可超過 13 個月 ，瀏覽器聯盟不認可

### HashiCorp and Cert Manager 解決 K8S SSL 問題
1. vault write 創建網域名稱
2. issue Certificate
3. 立即生成 certificate
4. 進行檢測 SSL SHOPPER

### SSL Ingress
kubernetes-class : 
cert-manager.io/issuer : 
service name frontend
vault ui
可以透過公有 ca 發放

### 進一步思考
HashiCorp Vault 可以管理 secret / ssl

### 其他問題
- k8s 集群安全node pool, network, etc
- pod 通訊安全性
- 保存在storage 之上的數據本身的安全性 , encryption at reset 

# Ansible AWX - 輕鬆打造你的 IaC 基礎架構即程式碼平台 
Weithenn（王偉任）│ Micron Technology, Inc.
## IaC (Infra as Code)
Bimodal IT Mobe 1 / Mobe 2

Mobe 1
- Traditional Infra 
- physical server

Mobe 2
- Infra Agility
- Software Defined(SDC,SDS,SDN)
- vm/ container / microservice
- Agility / DevOps

**DevOps Is Code**

Dev -> stage -> prod
- Habits
-  Production first mindset
- Infra as flexible resource

## Why Anisble AWX
### Ansible Language of automation
- Cross Platform
- Human readable
- Perfect Desc of app
- Version control
- Dynamic Inventories 
- Orchestration plays well with others
- AWS is a opensource for ansible tower
- RBAC 
- PUSH BUTTON - Easy to execute playbook
- RESETFUL API 
- WORKFLOW 
- ENTERPRISE INTEGRATION 
- CERTRALIZED LOGGING 

### AWX Operator
- 單次部屬3000台在小型伺服器中可以正常運作

### RBAC
可以使用flow 允許操作

使用者只需要登入，並按下所需要的playbook 火箭 即可執行
Automation Workflow

### 困難點
**時菸是最匱乏的資源 - Oeter Drucker**
- 實際紀錄使用時間
- 減少浪費時間的項目
- 改變行事曆的排法
- OTPR 敏捷工作法
#### 組織導致的時間耗損
- 英勇救火隊
- 無效會議過多
#### 善用零碎時間
- 正確幫助同事的姿勢
- 在需要的時候幫助他
- 避免好為人師
- 避免家長方式教育
- 避免自以為是的幽默(頂多自嘲)
- 未請求幫助時，無須提供個人意見，但可以推薦
- 實際餐與會議，了解痛點
- 建立信任感，重啟新局
#### Comfort Zone
- comfort zone
- 感到舒適
- 非理性的安全感/缺乏危機感
- 惰性
- Optimal Performance Zone
- 焦慮增加/壓力增加
- Danger Zone
- 焦慮爆表/壓力爆表
##### 排除導入時遭遇的困難
- 幫助跨出舒適圈
- 未導入IaC造勢
- 贊成/中間/反對
- 對抗焦慮
- 拆解不確定性的源頭
- 風險管理
- 規避 / 承擔 / 減緩 / 轉嫁
##### 心流 Mihaly Csikszentmihalyi
- 大腦處理能力
- 人體現110 - 120b /s
- 談話交流 60~70b /s
- 最佳體驗
- 刻意練習
- 專注力
- 古典約制力
- 大腦也需要休息
- 避免生活噪音
- 心流汗放空互相交替


# 如何實踐品質內建之企業級DevOps流程架構
D.C.（蔣政道）│玉山銀行
## DevOps 實行背景
### Fintech 時代
### 永續發展數位轉型
### 注重客戶體驗價值創造
### 快速響應效率回饋

## 施行痛點
## 安全與高品質交付流程
## 容器安全

## 實際專案開發流程規劃
OA 開立需求 ->分支標準化 -> codereview -> 測試檢核 -> CICD 

OA 表單起頭 使用 api 開啟議題 -> 議題需求來源 測試案例  開發文件 問題紀錄
Confluence 統一歸檔
JIRA 建立發布版本 script runner

## 版更流程
模擬取得 gitlab 資訊 repo 的資訊 透過介面決定版本
UAT_版本號 (UAT 測試環境)
SIT_版本號 (SIT 測試環境)

進入 UAT

自動留言提示git操作

審核程式碼 發出PR / MR

合併集成

## 單元測試
UAT 測試時可挑選需求進行差異上板，JIRA會依據相依性檢核挑選的需求，以確保勝完整性
SA 系統分岐人員
相異檢查jira 效能
Quality gate 

Confluence api 進行人員清查
邁向 DEVSECOPS
交付速度交付品質

## 改善問題 
測試 人工方式 紀錄追蹤不易

## 資安
查驗流程耗時 淺在風險高 完整流水線

## 腳色分切
劃分流程中腳色 pg、sa、sd、pm
議題追蹤流程管理
落實安全


## 自動化測試框架
- 即時監控
    - Prometheus
- Log 蒐集
    - SynopseRT
    - Fluentd 蒐集資訊
    - kibana 顯示監控
- 品質監控
    - sonarqube 做品質管控
- 安全測試靜態分析
    - HCL APPSCAN 黑箱測試
    - NEXUS CONTAINER 黑箱安全
    - NEXUS LIFECYCLE
    - CLAIR 靜態容器安全 
    - Red Hat Quay
    - CHEKMARX 靜態程式安全

## 資安檢測
- KM文件
- ISMS 安全規章
- 符合容器化安全
- Admission Control 阻擋有風險的 pod 啟用服務

# 公有雲平台維運之 DevOps 流程
Dr. Aug（趙逢毅）│台灣智慧雲端服務股份有限公司

>TWCC - 國家前瞻計畫 
國家前瞻計畫 HIPAA 認證

## 台灣杉二號
Taiwania 2
nvidia tesla v100

Large Scale Surveillance AI Workload
**1488 streaming videos and vehicle detected speed data (provided by freeway beuro)**
Hdaoop Platform: stream data gray scaling image  downsizing and preparing
datasets.
AI Traning: submit k8s and slurm jobs evenly

Only Computing Cost
1488 streaming videos
Hadoop cluster with 32v cpu + 128gb mem+60gb Disk x60 capable

of processing 40000 image/sec

for AI training test requires for all sources,
3635.89 GPU hrs to prepare 1 day model

## Performance Benchmark
TesNet 50 on 17 nodes Large Scale benchmark

AWS 節點架構 EHTERNET 
超級電腦 架構不同

## 維護運行
### Current Capacity
VSC: more than 1300 nodes, incl. V100 T4 and other GPU
CCS: more than
One AI 
AI ML
雲端檔案服務
台南市政府口罩偵測

## Woodpecker Project
### 雲平台OSS整合
- 服務現況
- 平台元件穩定度
- 用戶情境驗證

### 用戶情境持續測試
### ITCM information technology change management
台灣固網技術提供

# 團隊導入 Mob Programming
Yuan（洪立遠）│LINE 株式会社

:::info
自組織：當某個團隊成員不在時，團隊
仍能正常運作
跨職能：每個人幾乎都能夠負責團隊的所有事物
:::

## 常見促進組織或跨職能的方式
1. 鼓勵團隊成員在會議中分享更多資訊、進度、細節(跨職能)
2. 特意舉辦Learning session 知的會議，提升成員技術能力(跨職能)

## 團隊成員對專案的資訊共享
1. P1 P2 P3

## 會議中分享更多資訊可提升能力
1. 不在專案中的成員，可能還是聽得很胡，因為沒有hand on 或是特定問題去孑孓
2. 解決問題的思考方式太過於細節，沒有被分享出來

## Learning Session
1. 對於團隊成員，專案進度負擔
2. 分享的技術跟現有的問題關聯不大，導致成員動機不高

## Mob Programming
團隊成員再一起在同一時間解決同一問題。
資訊、know how 共享
促進團最自組織，會有自然的領導順位產生，一起解決最難的問題
鍛鍊每個成員領導力、溝通力(自組織、跨職能)

## 團隊成員跨職能能力成長
系統的底層邏輯
解決bug 問題的思路
Linux Shell Command
好用的熱鍵

## Mob Programming 主題

::: info
同一時間，團隊在同一台電腦，解決同一個問題
鍛鍊每個成員的領導力、溝通力（自組織、跨職能）
:::
- project中的困難點 (所以在mob中可以深入context Sharing)
- 系統設計的討論
- investigate 與修復緊急bug

## Mob Programming 主題準備

## Host
- Host 就是主導mob的人，大家看的電腦，以現在線上的情況來看，大家會看著他的共享畫面
- 採用round robin
- 身為下一個team manager，建議每次mob都需要準備一下，避免該host 不知所措
- 但是每個人都要有自覺，要主動積極餐與討論

## 時長
- 每次兩小時
- host 最多更換一次
- 但現在多半是一個host 撐兩小時

## Note
可以用 wiki boxnote google doc etc

## 要訣
- 提前告知主題與決定host
- 身為下一個team manager 我建議每次 mob都至少準備一下，避免mob不知知所措
- 但是為了JUNIOR HOST鍛鍊，還是保留一定的空間，讓他們主導
- 每次MOB一開市需要先分享CONTEXT ，討論與設計，在進入到CODING避免直接開始寫CODE
- 但是MOB 還是可以保有HANDON的細緻

## 自身享受的好處
- 學習LINUX指令 
- 看出每個成員優勢與能力
- 一起解決最難的問題
- 自己的領導力、主持會議能力也有所增強
- 有一個固定的時間可以RESOLVE BLOCKER

## 舉例
實例 LINUX COMMMAND nc 傳送檔案，改/etc/hosts 來 hijack request 到自己的測試 Server 用 Pref 搭配 Flame Chart 來做 Profiling
學會資深工程師 Debug 思維，先用各種工具縮小範圍，避免一開始就直接跳進去coding

## 個人成長團隊產出兩難

## 結論
高校共享context 技術教學，一起解決最難的問題，以及鍛鍊成員的領導力、溝通力、主持力，
他會付出團隊生產力代價，因為共同在一個時間一起做同一件事情，但是成員能力的提昇會值得的。