SlideShare a Scribd company logo
1 of 111
Download to read offline
技術在我們手上 世界就在我們手上
Testing in Production,
Deploy on Fridays
曾義峰 (Ant)
yftzeng@gmail.com
曾義峰 (aka Ant)
➔
LeadBest Consulting Group 首席執行顧問
➔
TGO 台北分會學習委員
➔
臺灣資安社群 CHROOT 成員
➔
曾任資安顧問及電子票證公司顧問
➔
開源人年會 (COSCUP) 2009 及 2012 講師
➔
臺灣駭客年會 (HITCON) 2008 及 2009 講師
➔
臺灣 Modern Web 2015/2016/2017/2018/2019 講師
3/111
Deploy on ... Fridays
技術在我們手上 世界就在我們手上
4/111
Deploy on ... Fridays
No
NoNoNO
Don't
Do
that
Image Credit : https://kknews.cc/pet/pqbxb8.html
Font Credit : https://www.dafont.com/theme.php?cat=109 (Defused)
技術在我們手上 世界就在我們手上
5/111
技術在我們手上 世界就在我們手上
Image Credit : https://www.getdigital.eu/deploy-on-friday.html
我應該在星期五下午 5 點部署嗎?
我只是想要 ( 做一點小變更 )...
不行
不行就是不行 ~
6/111
技術在我們手上 世界就在我們手上
Image Credit : https://medium.com/openclassrooms-product-design-and-engineering/do-not-deploy-on-friday-92b1b46ebfe6
7/111
技術在我們手上 世界就在我們手上
Image Credit : https://medium.com/openclassrooms-product-design-and-engineering/do-not-deploy-on-friday-92b1b46ebfe6
他們說在星期五進行部署一切都會沒事的 ...
8/111
技術在我們手上 世界就在我們手上
Credit : https://twitter.com/kvlly/status/1116672656781266944
9/111
技術在我們手上 世界就在我們手上
Credit : https://twitter.com/kvlly/status/1116672656781266944
I am not to blame, it is about (team) culture
10/111
技術在我們手上 世界就在我們手上
Image Credit : https://thecodinglove.com/wishing-you-all-a-nice-friday
Team Discipline
11/111
技術在我們手上 世界就在我們手上
Image Credit : https://thecodinglove.com/wishing-you-all-a-nice-friday
12/111
Why
技術在我們手上 世界就在我們手上
13/111
技術在我們手上 世界就在我們手上
Confidence vs. Risk
&Trust
Why
14/111
技術在我們手上 世界就在我們手上
Confidence vs. Risk
&Trust
Why
如果團隊害怕在星期五部署,是不是意謂著星期一、二、三、四的部署也同樣令人不安
如果你提供的是 24/7 全天候服務,那麼星期五與其他時間應該沒有什麼不同!
15/111
技術在我們手上 世界就在我們手上
Confidence vs. Risk
&Trust
Why
如果團隊害怕在星期五部署,是不是意謂著星期一、二、三、四的部署也同樣令人不安
如果你提供的是 24/7 全天候服務,那麼星期五與其他時間應該沒有什麼不同!
團隊對部署有沒有信心,這才是重要的問題
Progressive Deployment & NoDeploy
曾義峰 (Ant)
yftzeng@gmail.com
2019-08-28
Credit : https://www.slideshare.net/yftzeng/progressive-deployment-nodeploy
17/111
技術在我們手上 世界就在我們手上
Credit : https://www.slideshare.net/yftzeng/progressive-deployment-nodeploy
13,692 views
18/111
~Dark 1980s 2008 2014
ITIL
Design for Anti-FragilityDesign for Robustness Design for Resilience
DevOps
堅實性設計 抗脆性設計 復原性設計
精心設計。
嚴格管控。
故障被設計為需要異常
處理。
將開發及維運為一體。
視故障為正常狀態。
為故障發生設計隔離。
將維運視為工程。
最小化人為錯誤。
為故障復原至正常狀態。
轉型
轉型
進化
SRE Dev(ops)
Design for Deployless
Partial Credit : https://noops.connpass.com
NoDeploy
2019
想像
想像進化
無部署設計
19/111
Code Test Acceptance Deploy Operate
Continuous Integration / 持續整合
Continuous Delivery / 持續交付
Continuous Deployment / 持續部署
DevOps / SRE
Commit Dev Test Staging Test Deploy Prod
Continuous Deployment
Local Dev Staging Prod
Environments
Chaos
Test
20/111
Code Test Acceptance Deploy Operate
Continuous Integration / 持續整合
Continuous Delivery / 持續交付
Continuous Deployment / 持續部署
DevOps / SRE
Image Credit : https://software.af.mil/training/devops/
技術在我們手上 世界就在我們手上
21/111
Code Test Acceptance Deploy Operate
Continuous Integration / 持續整合
Continuous Delivery / 持續交付
Continuous Deployment / 持續部署
DevOps / SRE
Deploy on Fridays
Image Credit : https://software.af.mil/training/devops/
技術在我們手上 世界就在我們手上
22/111
Code Test Acceptance Deploy Operate
Continuous Integration / 持續整合
Continuous Delivery / 持續交付
Continuous Deployment / 持續部署
DevOps / SRE
Image Credit : https://software.af.mil/training/devops/
技術在我們手上 世界就在我們手上
23/111
Image Credit : https://www.freepik.com/free-icon/silo_869863.htm
Sales
Marketing
Dev Ops Compliance
(Security)
Value
DevOps
Cost Cost
技術在我們手上 世界就在我們手上
24/111
技術在我們手上 世界就在我們手上
Image Credit : https://thecodinglove.com/wishing-you-all-a-nice-friday
25/111
技術在我們手上 世界就在我們手上
Image Credit : https://thecodinglove.com/wishing-you-all-a-nice-friday
26/111
技術在我們手上 世界就在我們手上
Weekends
Image Credit : https://thecodinglove.com/wishing-you-all-a-nice-friday
27/111
技術在我們手上 世界就在我們手上
Weekends
20% of the week
Image Credit : https://thecodinglove.com/wishing-you-all-a-nice-friday
28/111
技術在我們手上 世界就在我們手上
No-Deploy-Fridays
29/111
技術在我們手上 世界就在我們手上
No-Deploy-Fridays
No-Merge-Fridays
30/111
技術在我們手上 世界就在我們手上
No-Deploy-Fridays
No-Merge-Fridays
Conflicts ⬆
31/111
技術在我們手上 世界就在我們手上
No-Deploy-Fridays
No-Merge-Fridays
Conflicts ⬆
Trunk
Trunk
PUSH
⬇️
No-Merge-Fridays
PUSH
⬇️
PUSH
⬇️
PUSH
⬇️
PUSH
⬇️
PUSH
⬇️
PUSH
⬇️
PUSH
⬇️
PUSH
⬇️
time
32/111
技術在我們手上 世界就在我們手上
No-Deploy-Fridays
No-Merge-Fridays
Conflicts ⬆
Image Credit : https://www.git-tower.com/help/guides/branches-and-tags/merge-conflicts/windows
33/111
技術在我們手上 世界就在我們手上
No-Deploy-Fridays
No-Merge-Fridays
Conflicts ⬆ Lead Time ⬆
34/111
技術在我們手上 世界就在我們手上
No-Deploy-Fridays
No-Merge-Fridays
Conflicts ⬆ Lead Time ⬆
Image Credit : https://www.qualysoft.com/en/blog/tech-blog-introduction-part-2-cicd-patterns-and-best-practices
35/111
技術在我們手上 世界就在我們手上
No-Deploy-Fridays
No-Merge-Fridays
Conflicts ⬆ Lead Time ⬆
Image Credit : https://www.qualysoft.com/en/blog/tech-blog-introduction-part-2-cicd-patterns-and-best-practices
36/111
技術在我們手上 世界就在我們手上
No-Deploy-Fridays
No-Merge-Fridays
Conflicts ⬆ Lead Time ⬆ Problems Debug⬆ ⬇
37/111
技術在我們手上 世界就在我們手上
No-Deploy-Fridays
No-Merge-Fridays
Conflicts ⬆ Lead Time ⬆ Problems Debug⬆ ⬇
Small
Commits
Release
Big
Commits
Release
Vs.
38/111
技術在我們手上 世界就在我們手上
Image Credit : https://doc.oroinc.com/cloud/environments/
Image Credit : https://oroinc.com/b2b-ecommerce/blog/testing-and-staging-environments-in-ecommerce-implementation/
39/111
技術在我們手上 世界就在我們手上
Image Credit : https://doc.oroinc.com/cloud/environments/
Image Credit : https://oroinc.com/b2b-ecommerce/blog/testing-and-staging-environments-in-ecommerce-implementation/
40/111
技術在我們手上 世界就在我們手上
Image Credit : https://www.slideshare.net/cPrime/kanban-testing-54239643
Image Credit : https://jaxenter.com/deployment-best-practices-172662.html
Image Credit : https://www.slideshare.net/LaunchDarkly/the-staging-server-is-dead-long-live-the-staging-server
41/111
技術在我們手上 世界就在我們手上
Image Credit : https://www.slideshare.net/cPrime/kanban-testing-54239643
Image Credit : https://jaxenter.com/deployment-best-practices-172662.html
Image Credit : https://www.slideshare.net/LaunchDarkly/the-staging-server-is-dead-long-live-the-staging-server
42/111
技術在我們手上 世界就在我們手上
Image Credit : https://www.slideshare.net/cPrime/kanban-testing-54239643
Image Credit : https://jaxenter.com/deployment-best-practices-172662.html
Image Credit : https://www.slideshare.net/LaunchDarkly/the-staging-server-is-dead-long-live-the-staging-server
43/111
技術在我們手上 世界就在我們手上
Image Credit : https://www.slideshare.net/cPrime/kanban-testing-54239643
Image Credit : https://jaxenter.com/deployment-best-practices-172662.html
Image Credit : https://www.slideshare.net/LaunchDarkly/the-staging-server-is-dead-long-live-the-staging-server
這些網站都告訴我們應該這麼做,好像世界就應該要長成這個樣子
44/111
技術在我們手上 世界就在我們手上
Image Credit : https://www.slideshare.net/cPrime/kanban-testing-54239643
Image Credit : https://jaxenter.com/deployment-best-practices-172662.html
Image Credit : https://www.slideshare.net/LaunchDarkly/the-staging-server-is-dead-long-live-the-staging-server
這些網站都告訴我們應該這麼做,好像世界就應該要長成這個樣子
缺點是什麼?
45/111
Staging
Staging 環境必須與 Production 環境幾乎
相同,這十分困難,否則測試就不準了。
Trying to mirror your staging
environment to production is a fool’s
errand. Just give up.
嘗試將 Staging 視為 Production 是一個愚蠢的事。放棄吧。
Partial Credit : https://thenewstack.io/honeycombs-charity-majors-go-ahead-test-in-production/
46/111
Credit : https://www.infoq.cn/article/b9lG4O8oJ8bWcFFQfFKE
Staging
47/111
Image Credit : Progressive Deployment, Experimentation, Multitenancy, No Downtime, Cloud Security (2018-02-23).pdf
Microsoft/Azure
48/111Image Credit : https://jaxenter.com/deployment-best-practices-172662.html
Image Credit : https://www.reddit.com/r/ProgrammerHumor/comments/ing3jx/works_on_my_machine/
Image Credit : https://www.pngitem.com/middle/hwwmRmi_dove-clipart-flame-clipart-flame-png-transparent-png/
技術在我們手上 世界就在我們手上
在我電腦環境就沒問題
49/111
大膽的想法
50/111
大膽的想法
純真的想法
51/111
Testing in Production
在 Microservices 環境中,尤其是 FaaS 環境中,
Testing in production 是一種實際的需要。
52/111
Chaos Engineering @ Netflix
這些是需要整合測試的故障模式示例,因為它們涉及服務之間的互動。在某
些情況下,可能只能在 Production 進行完全整合測試。在 Netflix ,根本不
可能完全重現整個架構並運行端到端測試。
當可以在 Testing 環境中重現整個系統時,我們仍然相信需要在 Production
運行實驗,因為在 Testing 環境中永遠不可能完全重現系統的所有方面。總
是存在差異,例如合併客戶端與真實客戶端相比的行為方式或 DNS 配置問
題。
Credit : Chaos Engineering IEEE Software (2016-05-05).pdf
Testing in Production
53/111
技術在我們手上 世界就在我們手上
“
If you aren't testing in prod
you aren't testing in reality
”
如果不在正式環境測試,
你的測試就不會是真實的
Credit : https://twitter.com/mipsytipsy/status/1147863838647185408
Image Credit : https://store.steampowered.com/app/561970/REALITY/
54/111
技術在我們手上 世界就在我們手上
“
Dev will match Prod,
if you develop on production
”
如果在正式環境上進行開發,
開發環境就會與正式環境相稱
Credit : Blue is the new green (2019-03-26).pdf
Image Credit : https://tw.voicetube.com/videos/62711
55/111
Your aim won’t be perfect,
control over the blast radius.
你的瞄準並不完美,
請控制好爆炸半徑。
Image Credit : https://www.behance.net/gallery/57558081/FREE-BUSINESS-ICONS
Progressive Deployment
56/111Credit : https://thenewstack.io/the-rise-of-progressive-delivery-for-systems-resilience/
Image Credit : https://www.trisignup.com/Race/24568/Sponsor/94608
Progressive deployment is continuous deploy
with fine-grained control over the blast radius.
漸進式部署是對爆破半徑進行細部控制的連續部署。
Progressive Deployment
57/111Credit : https://thenewstack.io/the-rise-of-progressive-delivery-for-systems-resilience/
Image Credit : https://support.google.com/optimize/answer/7012154?hl=en
Deploying a service is not that same as activating it for all users.
部署一個服務,未必需要讓所有使用者皆同時生效。
Progressive Deployment
58/111
Code Test Acceptance Deploy Operate
Continuous Integration / 持續整合
Continuous Delivery / 持續交付
Continuous Deployment / 持續部署
DevOps / SRE
技術在我們手上 世界就在我們手上
59/111
Code Test Acceptance Deploy Operate
Continuous Integration / 持續整合
Continuous Delivery / 持續交付
Continuous Deployment / 持續部署
DevOps / SRE
技術在我們手上 世界就在我們手上
60/111
Code Test Acceptance Deploy Release
Continuous Integration / 持續整合
Continuous Delivery / 持續交付
Continuous Deployment / 持續部署
Continuous Deployment + Feature Flag / 持續部署 + 功能標誌
技術在我們手上 世界就在我們手上
Operate
DevOps / SRE
61/111
Code Test Acceptance Deploy Release
Continuous Integration / 持續整合
Continuous Delivery / 持續交付
Continuous Deployment / 持續部署
Continuous Deployment + Feature Flag / 持續部署 + 功能標誌
技術在我們手上 世界就在我們手上
Operate
DevOps / SRE
Code Push ➡
Deployment
Developer
Production
Server User
Feature Flaged ➡
Release
62/111
Feature Flag
01 所有程式皆為部署,並可控制開關,減少整合問題
All code is deployed, but control exposure, reduces integration issue.
02 控制細緻度可至特定層級或是開發分支
Flags provide runtime control down to individual user.
03 開發者可以增加或刪除功能,無需再次部署
Users can be added or removed with no redeployment
04 暗啟動
Enables dark launch
Credit : Progressive Deployment, Experimentation, Multitenancy, No Downtime, Cloud Security (2018-02-23).pdf
Image Credit : https://opensource.com/article/18/2/feature-flags-ring-deployment-model
Cost in Time
時間成本
hours
mins ~ hour
secs
~
mins
Applicability
適用性
2%
8%
90%
Toggle
Feature Flag
ReDeploy
Previous Version
Rollback
Revert Commit
Incident Recovery
事件恢復
64/111
Why
⬇
How
技術在我們手上 世界就在我們手上
65/111
技術在我們手上 世界就在我們手上
01 Feature Flag with Story Mapping
功能標誌及使用者故事對照
02 Progressive Deployment
漸進式部署
03 Data(base) Synchronization Strategy
資料 ( 庫 ) 同步策略
04 Pull Requests to Pair/Mob Programming
從 Pull Requests 轉為 Pair/Mob Programming
05 Service Mesh
服務網格
Testing in Production, Deploy on Fridays
66/111
技術在我們手上 世界就在我們手上
01 Feature Flag with Story Mapping
功能標誌及使用者故事對照
02 Progressive Deployment
漸進式部署
03 Data(base) Synchronization Strategy
資料 ( 庫 ) 同步策略
04 Pull Requests to Pair/Mob Programming
從 Pull Requests 轉為 Pair/Mob Programming
05 Service Mesh
服務網格
Testing in Production, Deploy on Fridays
67/111
技術在我們手上 世界就在我們手上
Group = Beta
Group = Normal
If ( group = “beta” ) {
...
}
else {
...
}
Beta
Normal
By User Group
TimeURIIP AddressUser Group
68/111
技術在我們手上 世界就在我們手上
IP = o.o.o.o
IP = x.x.x.x
If ( IP = “o.o.o.o” ) {
...
}
else {
...
}
Beta
By IP Address
TimeURIIP AddressUser Group
Normal
69/111
技術在我們手上 世界就在我們手上
URI ~ ?flag=1
If ( URI ~ “flag=1” ) {
...
}
else {
...
}
Beta
Normal
By URI
TimeURIIP AddressUser Group
70/111
技術在我們手上 世界就在我們手上
URI ~ 20201005
If ( URI ~“20201005”) {
...
}
else {
...
}
Beta
Normal
By Time
TimeURIIP AddressUser Group
71/111
技術在我們手上 世界就在我們手上
Story Mapping
Code Test Acceptance Deploy Release Done
#19
Fix
Login Bug
#20
Fix
Email Bug
#21
Perf.
Tuning
#17
Sort By
Date
#18
Filter By
Group
#22
German
i18n
72/111
技術在我們手上 世界就在我們手上
Story Mapping
Code Test Acceptance Deploy Release Done
#19
Fix
Login Bug
#20
Fix
Email Bug
#21
Perf.
Tuning
#17
Sort By
Date
Flag#3
#18
Filter By
Group
Flag#4
#22
German
i18n
Flag#5
73/111
技術在我們手上 世界就在我們手上
Story Mapping
Code Test Acceptance Deploy Release Done
#19
Fix
Login Bug
#20
Fix
Email Bug
#21
Perf.
Tuning
#17
Sort By
Date
Flag#3
#18
Filter By
Group
Flag#4
#22
German
i18n
Flag#5
#17
Sort By
Date
Flag#3
74/111
#22
German
i18n
Flag#5
技術在我們手上 世界就在我們手上
Story Mapping
Code Test Acceptance Deploy Release Done
#19
Fix
Login Bug
#20
Fix
Email Bug
#21
Perf.
Tuning
#17
Sort By
Date
Flag#3
#18
Filter By
Group
Flag#4
75/111
01 提交程式至主幹可能會影響其他功能
Commit code on trunk may affects other features.
02 未完成的功能可能也會部署,如果配置有誤可能將未完成的功能開啟
Unfinished features may be deployed, and turned on if the configuration is incorrect.
Image Credit : https://opensource.com/article/18/2/feature-flags-ring-deployment-model
Feature Flag
76/111
#22
German
i18n
Flag#5
技術在我們手上 世界就在我們手上
Story Mapping
Code Test Acceptance Deploy Release Done
#19
Fix
Login Bug
#20
Fix
Email Bug
#21
Perf.
Tuning
#17
Sort By
Date
Flag#3
#18
Filter By
Group
Flag#4
77/111
技術在我們手上 世界就在我們手上
01 Feature Flag with Story Mapping
功能標誌及使用者故事對照
02 Progressive Deployment
漸進式部署
03 Data(base) Synchronization Strategy
資料 ( 庫 ) 同步策略
04 Pull Requests to Pair/Mob Programming
從 Pull Requests 轉為 Pair/Mob Programming
05 Service Mesh
服務網格
Testing in Production, Deploy on Fridays
78/111
Facebook
Image Credit : https://engineering.fb.com/web/rapid-release-at-massive-scale (2017-08-31)
技術在我們手上 世界就在我們手上
79/111
Microsoft/Azure
Image Credit : Progressive Deployment, Experimentation, Multitenancy, No Downtime, Cloud Security (2018-02-23).pdf
技術在我們手上 世界就在我們手上
80/111
技術在我們手上 世界就在我們手上
01 Feature Flag with Story Mapping
功能標誌及使用者故事對照
02 Progressive Deployment
漸進式部署
03 Data(base) Synchronization Strategy
資料 ( 庫 ) 同步策略
04 Pull Requests to Pair/Mob Programming
從 Pull Requests 轉為 Pair/Mob Programming
05 Service Mesh
服務網格
Testing in Production, Deploy on Fridays
81/111
技術在我們手上 世界就在我們手上
Image Credit : https://blog.codonomics.com/2020/08/multi-tenant-architectures.html
Multi-tenant Architectures ( 多租戶架構 )
Shared Database Separate Database
82/111
技術在我們手上 世界就在我們手上
Image Credit : https://blog.codonomics.com/2020/08/multi-tenant-architectures.html
Multi-tenant Architectures ( 多租戶架構 )
Shared Database Separate Database
83/111
技術在我們手上 世界就在我們手上
Image Credit : https://blog.codonomics.com/2020/08/multi-tenant-architectures.html
Multi-tenant Architectures ( 多租戶架構 )
Shared Database Separate Database
84/111
技術在我們手上 世界就在我們手上
Image Credit : https://blog.codonomics.com/2020/08/multi-tenant-architectures.html
Multi-tenant Architectures ( 多租戶架構 )
Shared Database Separate Database
Disable DROP/TRUNCATE/DELETE
Soft Delete
85/111
技術在我們手上 世界就在我們手上
Image Credit : https://blog.codonomics.com/2020/08/multi-tenant-architectures.html
Multi-tenant Architectures ( 多租戶架構 )
Shared Database Separate Database
86/111
技術在我們手上 世界就在我們手上
Image Credit : https://jaxenter.com/deployment-best-practices-172662.html
Code Push ➡
5 mins
⬅ Data Sync
? mins
Code Push ➡
15 mins
Code Push ➡
15 mins
⬅ Data Sync
? mins
⬅ Data Sync
? mins
Easy
Hard
87/111
技術在我們手上 世界就在我們手上
Image Credit : https://memezila.com/Pizza-rolls-in-the-oven-vs-in-the-microwave-meme-3854
88/111
技術在我們手上 世界就在我們手上
Image Credit : https://twitter.com/GitPushAll/status/1309533288567058434
89/111
技術在我們手上 世界就在我們手上
01 Feature Flag with Story Mapping
功能標誌及使用者故事對照
02 Progressive Deployment
漸進式部署
03 Data(base) Synchronization Strategy
資料 ( 庫 ) 同步策略
04 Pull Requests to Pair/Mob Programming
從 Pull Requests 轉為 Pair/Mob Programming
05 Service Mesh
服務網格
Testing in Production, Deploy on Fridays
90/111
技術在我們手上 世界就在我們手上
Image Credit : https://www.atlassian.com/blog/bitbucket/5-pull-request-must-haves
Pull Requests
91/111
技術在我們手上 世界就在我們手上
Image Credit : https://www.atlassian.com/blog/bitbucket/5-pull-request-must-haves
Pull Requests
Code Reviews are great
But slow pipeline
92/111
技術在我們手上 世界就在我們手上
Image Credit : https://www.atlassian.com/blog/bitbucket/5-pull-request-must-haves
Pull Requests
Code Reviews are great
But slow pipeline
Code Reviews Latency
93/111
技術在我們手上 世界就在我們手上
Image Credit : https://blog.submain.com/code-review-vs-pair-programming-2/
Pair Programming
94/111
技術在我們手上 世界就在我們手上
Image Credit : https://blog.submain.com/code-review-vs-pair-programming-2/
Pair Programming
Code Reviews Inline
95/111
技術在我們手上 世界就在我們手上
Image Credit : https://team-coder.com/mob-programming/
Mob Programming
96/111
技術在我們手上 世界就在我們手上
Image Credit : https://team-coder.com/mob-programming/
Mob Programming
Continuous Code Reviews Inline
97/111
技術在我們手上 世界就在我們手上
01 Feature Flag with Story Mapping
功能標誌及使用者故事對照
02 Progressive Deployment
漸進式部署
03 Data(base) Synchronization Strategy
資料 ( 庫 ) 同步策略
04 Pull Requests to Pair/Mob Programming
從 Pull Requests 轉為 Pair/Mob Programming
05 Service Mesh
服務網格
Testing in Production, Deploy on Fridays
98/111
技術在我們手上 世界就在我們手上
Image Credit : https://docs.microsoft.com/zh-tw/dotnet/architecture/cloud-native/service-mesh-communication-infrastructure
Service Mesh
99/111
技術在我們手上 世界就在我們手上
01 Feature Flag with Story Mapping
功能標誌及使用者故事對照
02 Progressive Deployment
漸進式部署
03 Data(base) Synchronization Strategy
資料 ( 庫 ) 同步策略
04 Pull Requests to Pair/Mob Programming
從 Pull Requests 轉為 Pair/Mob Programming
05 Service Mesh
服務網格
Testing in Production, Deploy on Fridays
100/111
技術在我們手上 世界就在我們手上
Image Credit : https://jaxenter.com/deployment-best-practices-172662.html
Testing in Production
101/111
技術在我們手上 世界就在我們手上
Image Credit : https://jaxenter.com/deployment-best-practices-172662.html
Testing in Production
102/111
技術在我們手上 世界就在我們手上
Image Credit : https://jaxenter.com/deployment-best-practices-172662.html
Testing in Production
Reality ⬆
Cost ⬇
Maintenance ⬇
103/111
技術在我們手上 世界就在我們手上
Image Credit : https://twitter.com/reillyusa/status/1260272851778768903
104/111
技術在我們手上 世界就在我們手上
Image Credit : https://twitter.com/reillyusa/status/1260272851778768903
105/111
技術在我們手上 世界就在我們手上
Image Credit : https://twitter.com/reillyusa/status/1260272851778768903
SRE≠ 呂布 (Reboot)
106/111Image Credit : https://jaxenter.com/deployment-best-practices-172662.html
Image Credit : https://www.reddit.com/r/ProgrammerHumor/comments/ing3jx/works_on_my_machine/
Image Credit : https://www.pngitem.com/middle/hwwmRmi_dove-clipart-flame-clipart-flame-png-transparent-png/
技術在我們手上 世界就在我們手上
在我電腦環境就沒問題
107/111Image Credit : https://jaxenter.com/deployment-best-practices-172662.html
Image Credit : https://www.reddit.com/r/ProgrammerHumor/comments/ing3jx/works_on_my_machine/
Image Credit : https://www.pngitem.com/middle/hwwmRmi_dove-clipart-flame-clipart-flame-png-transparent-png/
技術在我們手上 世界就在我們手上
在我電腦環境就沒問題
108/111Image Credit : https://jaxenter.com/deployment-best-practices-172662.html
Image Credit : https://www.reddit.com/r/ProgrammerHumor/comments/ing3jx/works_on_my_machine/
Image Credit : https://www.pngitem.com/middle/hwwmRmi_dove-clipart-flame-clipart-flame-png-transparent-png/
技術在我們手上 世界就在我們手上
在我電腦環境就沒問題
Confidence & Trust ⬆
109/111
Deploy on ... Fridays
Image Credit : https://memes.tw/collection/388
技術在我們手上 世界就在我們手上
110/111
yftzeng@gmail.com
https://www.facebook.com/yftzeng.tw
https://twitter.com/yftzeng
曾義峰 (Ant)
技術在我們手上 世界就在我們手上
曾義峰 (Ant)
LeadBest Consulting Group 首席執行顧問
yftzeng@gmail.com

More Related Content

What's hot

twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#44 讓我們用 k6 來進行壓測吧twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#44 讓我們用 k6 來進行壓測吧twMVC
 
XunitとMoq 公開用
XunitとMoq 公開用XunitとMoq 公開用
XunitとMoq 公開用ESM SEC
 
JIRA / Confluence の 必須プラグインはこれだ
JIRA / Confluence の必須プラグインはこれだJIRA / Confluence の必須プラグインはこれだ
JIRA / Confluence の 必須プラグインはこれだNarichika Kajihara
 
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugJava ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugMasatoshi Tada
 
Test Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるかTest Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるかTakuto Wada
 
コンテナを止めるな! PacemakerによるコンテナHAクラスタリングとKubernetesとの違いとは
コンテナを止めるな!  PacemakerによるコンテナHAクラスタリングとKubernetesとの違いとはコンテナを止めるな!  PacemakerによるコンテナHAクラスタリングとKubernetesとの違いとは
コンテナを止めるな! PacemakerによるコンテナHAクラスタリングとKubernetesとの違いとはksk_ha
 
OCIランタイムの筆頭「runc」を俯瞰する
OCIランタイムの筆頭「runc」を俯瞰するOCIランタイムの筆頭「runc」を俯瞰する
OCIランタイムの筆頭「runc」を俯瞰するKohei Tokunaga
 
決済サービスのSpring Bootのバージョンを2系に上げた話
決済サービスのSpring Bootのバージョンを2系に上げた話決済サービスのSpring Bootのバージョンを2系に上げた話
決済サービスのSpring Bootのバージョンを2系に上げた話Ryosuke Uchitate
 
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)Takuto Wada
 
使用 Passkeys 打造無密碼驗證服務
使用 Passkeys 打造無密碼驗證服務使用 Passkeys 打造無密碼驗證服務
使用 Passkeys 打造無密碼驗證服務升煌 黃
 
TDD のこころ @ OSH2014
TDD のこころ @ OSH2014TDD のこころ @ OSH2014
TDD のこころ @ OSH2014Takuto Wada
 
なぜ初心者は webpackが解らないのか?- Why can’t you understand the webpack? -
なぜ初心者は webpackが解らないのか?- Why can’t you understand the webpack? - なぜ初心者は webpackが解らないのか?- Why can’t you understand the webpack? -
なぜ初心者は webpackが解らないのか?- Why can’t you understand the webpack? - 健人 井関
 
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Taku Miyakawa
 
ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』Yoshitaka Kawashima
 
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法Tetsutaro Watanabe
 
CQRS+ESをAkka Persistenceを使って実装してみる。
CQRS+ESをAkka Persistenceを使って実装してみる。CQRS+ESをAkka Persistenceを使って実装してみる。
CQRS+ESをAkka Persistenceを使って実装してみる。Matsushita Satoshi
 
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)NTT DATA Technology & Innovation
 

What's hot (20)

twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#44 讓我們用 k6 來進行壓測吧twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#44 讓我們用 k6 來進行壓測吧
 
XunitとMoq 公開用
XunitとMoq 公開用XunitとMoq 公開用
XunitとMoq 公開用
 
JIRA / Confluence の 必須プラグインはこれだ
JIRA / Confluence の必須プラグインはこれだJIRA / Confluence の必須プラグインはこれだ
JIRA / Confluence の 必須プラグインはこれだ
 
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsugJava ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsug
 
Test Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるかTest Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるか
 
コンテナを止めるな! PacemakerによるコンテナHAクラスタリングとKubernetesとの違いとは
コンテナを止めるな!  PacemakerによるコンテナHAクラスタリングとKubernetesとの違いとはコンテナを止めるな!  PacemakerによるコンテナHAクラスタリングとKubernetesとの違いとは
コンテナを止めるな! PacemakerによるコンテナHAクラスタリングとKubernetesとの違いとは
 
OCIランタイムの筆頭「runc」を俯瞰する
OCIランタイムの筆頭「runc」を俯瞰するOCIランタイムの筆頭「runc」を俯瞰する
OCIランタイムの筆頭「runc」を俯瞰する
 
SpringBootTest入門
SpringBootTest入門SpringBootTest入門
SpringBootTest入門
 
決済サービスのSpring Bootのバージョンを2系に上げた話
決済サービスのSpring Bootのバージョンを2系に上げた話決済サービスのSpring Bootのバージョンを2系に上げた話
決済サービスのSpring Bootのバージョンを2系に上げた話
 
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
 
使用 Passkeys 打造無密碼驗證服務
使用 Passkeys 打造無密碼驗證服務使用 Passkeys 打造無密碼驗證服務
使用 Passkeys 打造無密碼驗證服務
 
WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介WebSocket / WebRTCの技術紹介
WebSocket / WebRTCの技術紹介
 
TDD のこころ @ OSH2014
TDD のこころ @ OSH2014TDD のこころ @ OSH2014
TDD のこころ @ OSH2014
 
なぜ初心者は webpackが解らないのか?- Why can’t you understand the webpack? -
なぜ初心者は webpackが解らないのか?- Why can’t you understand the webpack? - なぜ初心者は webpackが解らないのか?- Why can’t you understand the webpack? -
なぜ初心者は webpackが解らないのか?- Why can’t you understand the webpack? -
 
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
 
ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開
 
ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』
 
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
 
CQRS+ESをAkka Persistenceを使って実装してみる。
CQRS+ESをAkka Persistenceを使って実装してみる。CQRS+ESをAkka Persistenceを使って実装してみる。
CQRS+ESをAkka Persistenceを使って実装してみる。
 
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
 

Similar to Testing in Production, Deploy on Fridays

Proud Plone on Cloud
Proud Plone on CloudProud Plone on Cloud
Proud Plone on CloudTsungWei Hu
 
重新想像:如何做技術選型決策 / Rethinking : Technical Decision
重新想像:如何做技術選型決策 / Rethinking : Technical Decision重新想像:如何做技術選型決策 / Rethinking : Technical Decision
重新想像:如何做技術選型決策 / Rethinking : Technical DecisionYi-Feng Tzeng
 
20140610 net tuesday - 行動裝置安全
20140610 net tuesday - 行動裝置安全20140610 net tuesday - 行動裝置安全
20140610 net tuesday - 行動裝置安全Net Tuesday Taiwan
 
Ansible & GitLab CI / CD Workshop 101 ( @Agile Tour Taipei 2017)
Ansible & GitLab CI / CD Workshop 101 ( @Agile Tour Taipei 2017)Ansible & GitLab CI / CD Workshop 101 ( @Agile Tour Taipei 2017)
Ansible & GitLab CI / CD Workshop 101 ( @Agile Tour Taipei 2017)Chen Cheng-Wei
 
twMVC#24 | 開發團隊的敏捷之路(未完成)
twMVC#24 | 開發團隊的敏捷之路(未完成)twMVC#24 | 開發團隊的敏捷之路(未完成)
twMVC#24 | 開發團隊的敏捷之路(未完成)twMVC
 
摩登開發團隊的DevOps之道 (@DevOpsTaiwan)
摩登開發團隊的DevOps之道 (@DevOpsTaiwan)摩登開發團隊的DevOps之道 (@DevOpsTaiwan)
摩登開發團隊的DevOps之道 (@DevOpsTaiwan)Chen Cheng-Wei
 
在B2B硬體產業運用 Agile 與 DevOps 的實務與心法
在B2B硬體產業運用 Agile 與 DevOps 的實務與心法在B2B硬體產業運用 Agile 與 DevOps 的實務與心法
在B2B硬體產業運用 Agile 與 DevOps 的實務與心法TIM WANG
 
Effective DevOps (Agile Tour HsinChu 2017)
Effective DevOps (Agile Tour HsinChu 2017)Effective DevOps (Agile Tour HsinChu 2017)
Effective DevOps (Agile Tour HsinChu 2017)Chen Cheng-Wei
 
Effective DevOps:一場文化與技術的轉型運動 (陳正瑋)
Effective DevOps:一場文化與技術的轉型運動  (陳正瑋)Effective DevOps:一場文化與技術的轉型運動  (陳正瑋)
Effective DevOps:一場文化與技術的轉型運動 (陳正瑋)AgileTour@TW
 
程式交易介紹及 FinTech 創作分享
程式交易介紹及 FinTech 創作分享程式交易介紹及 FinTech 創作分享
程式交易介紹及 FinTech 創作分享Philip Zheng
 
從研發團隊管理及產品發展的角度看 DevOps
從研發團隊管理及產品發展的角度看 DevOps從研發團隊管理及產品發展的角度看 DevOps
從研發團隊管理及產品發展的角度看 DevOpsTIM WANG
 
從理想、到現實的距離,開啟品味軟體測試之路 - 台灣軟體工程協會 (20220813)
從理想、到現實的距離,開啟品味軟體測試之路 - 台灣軟體工程協會 (20220813)從理想、到現實的距離,開啟品味軟體測試之路 - 台灣軟體工程協會 (20220813)
從理想、到現實的距離,開啟品味軟體測試之路 - 台灣軟體工程協會 (20220813)Rick Hwang
 
51 cto linuxops_issue2
51 cto linuxops_issue251 cto linuxops_issue2
51 cto linuxops_issue2Yiwei Ma
 
[DevOpsDays] 硬體產業的DevOps導入與實踐 - 以工控產業為例
[DevOpsDays] 硬體產業的DevOps導入與實踐 - 以工控產業為例[DevOpsDays] 硬體產業的DevOps導入與實踐 - 以工控產業為例
[DevOpsDays] 硬體產業的DevOps導入與實踐 - 以工控產業為例TIM WANG
 
20170430 python爬蟲攻防戰-攻防與金融大數據分析班
20170430 python爬蟲攻防戰-攻防與金融大數據分析班20170430 python爬蟲攻防戰-攻防與金融大數據分析班
20170430 python爬蟲攻防戰-攻防與金融大數據分析班Paul Chao
 
[Agile Tour Hsinchu 2019] Our practice in the DevOps Process for Manufacture ...
[Agile Tour Hsinchu 2019] Our practice in the DevOps Process for Manufacture ...[Agile Tour Hsinchu 2019] Our practice in the DevOps Process for Manufacture ...
[Agile Tour Hsinchu 2019] Our practice in the DevOps Process for Manufacture ...Edward Kuo
 
Proxmox VE 功能概觀、案例分享與實用工具 [2019/12/07] @Proxmox VE 中文使用者社團 2019 年會
Proxmox VE 功能概觀、案例分享與實用工具 [2019/12/07] @Proxmox VE 中文使用者社團 2019 年會Proxmox VE 功能概觀、案例分享與實用工具 [2019/12/07] @Proxmox VE 中文使用者社團 2019 年會
Proxmox VE 功能概觀、案例分享與實用工具 [2019/12/07] @Proxmox VE 中文使用者社團 2019 年會Jason Cheng
 
How to integrate GitLab CICD into B2B service
How to integrate GitLab CICD into B2B serviceHow to integrate GitLab CICD into B2B service
How to integrate GitLab CICD into B2B serviceAlex Su
 
如何使用微軟Power系列服務的看法
如何使用微軟Power系列服務的看法如何使用微軟Power系列服務的看法
如何使用微軟Power系列服務的看法Edward Kuo
 
Is it really easy for companies to import Ansible automation
Is it really easy for companies to import Ansible automationIs it really easy for companies to import Ansible automation
Is it really easy for companies to import Ansible automationChu-Siang Lai
 

Similar to Testing in Production, Deploy on Fridays (20)

Proud Plone on Cloud
Proud Plone on CloudProud Plone on Cloud
Proud Plone on Cloud
 
重新想像:如何做技術選型決策 / Rethinking : Technical Decision
重新想像:如何做技術選型決策 / Rethinking : Technical Decision重新想像:如何做技術選型決策 / Rethinking : Technical Decision
重新想像:如何做技術選型決策 / Rethinking : Technical Decision
 
20140610 net tuesday - 行動裝置安全
20140610 net tuesday - 行動裝置安全20140610 net tuesday - 行動裝置安全
20140610 net tuesday - 行動裝置安全
 
Ansible & GitLab CI / CD Workshop 101 ( @Agile Tour Taipei 2017)
Ansible & GitLab CI / CD Workshop 101 ( @Agile Tour Taipei 2017)Ansible & GitLab CI / CD Workshop 101 ( @Agile Tour Taipei 2017)
Ansible & GitLab CI / CD Workshop 101 ( @Agile Tour Taipei 2017)
 
twMVC#24 | 開發團隊的敏捷之路(未完成)
twMVC#24 | 開發團隊的敏捷之路(未完成)twMVC#24 | 開發團隊的敏捷之路(未完成)
twMVC#24 | 開發團隊的敏捷之路(未完成)
 
摩登開發團隊的DevOps之道 (@DevOpsTaiwan)
摩登開發團隊的DevOps之道 (@DevOpsTaiwan)摩登開發團隊的DevOps之道 (@DevOpsTaiwan)
摩登開發團隊的DevOps之道 (@DevOpsTaiwan)
 
在B2B硬體產業運用 Agile 與 DevOps 的實務與心法
在B2B硬體產業運用 Agile 與 DevOps 的實務與心法在B2B硬體產業運用 Agile 與 DevOps 的實務與心法
在B2B硬體產業運用 Agile 與 DevOps 的實務與心法
 
Effective DevOps (Agile Tour HsinChu 2017)
Effective DevOps (Agile Tour HsinChu 2017)Effective DevOps (Agile Tour HsinChu 2017)
Effective DevOps (Agile Tour HsinChu 2017)
 
Effective DevOps:一場文化與技術的轉型運動 (陳正瑋)
Effective DevOps:一場文化與技術的轉型運動  (陳正瑋)Effective DevOps:一場文化與技術的轉型運動  (陳正瑋)
Effective DevOps:一場文化與技術的轉型運動 (陳正瑋)
 
程式交易介紹及 FinTech 創作分享
程式交易介紹及 FinTech 創作分享程式交易介紹及 FinTech 創作分享
程式交易介紹及 FinTech 創作分享
 
從研發團隊管理及產品發展的角度看 DevOps
從研發團隊管理及產品發展的角度看 DevOps從研發團隊管理及產品發展的角度看 DevOps
從研發團隊管理及產品發展的角度看 DevOps
 
從理想、到現實的距離,開啟品味軟體測試之路 - 台灣軟體工程協會 (20220813)
從理想、到現實的距離,開啟品味軟體測試之路 - 台灣軟體工程協會 (20220813)從理想、到現實的距離,開啟品味軟體測試之路 - 台灣軟體工程協會 (20220813)
從理想、到現實的距離,開啟品味軟體測試之路 - 台灣軟體工程協會 (20220813)
 
51 cto linuxops_issue2
51 cto linuxops_issue251 cto linuxops_issue2
51 cto linuxops_issue2
 
[DevOpsDays] 硬體產業的DevOps導入與實踐 - 以工控產業為例
[DevOpsDays] 硬體產業的DevOps導入與實踐 - 以工控產業為例[DevOpsDays] 硬體產業的DevOps導入與實踐 - 以工控產業為例
[DevOpsDays] 硬體產業的DevOps導入與實踐 - 以工控產業為例
 
20170430 python爬蟲攻防戰-攻防與金融大數據分析班
20170430 python爬蟲攻防戰-攻防與金融大數據分析班20170430 python爬蟲攻防戰-攻防與金融大數據分析班
20170430 python爬蟲攻防戰-攻防與金融大數據分析班
 
[Agile Tour Hsinchu 2019] Our practice in the DevOps Process for Manufacture ...
[Agile Tour Hsinchu 2019] Our practice in the DevOps Process for Manufacture ...[Agile Tour Hsinchu 2019] Our practice in the DevOps Process for Manufacture ...
[Agile Tour Hsinchu 2019] Our practice in the DevOps Process for Manufacture ...
 
Proxmox VE 功能概觀、案例分享與實用工具 [2019/12/07] @Proxmox VE 中文使用者社團 2019 年會
Proxmox VE 功能概觀、案例分享與實用工具 [2019/12/07] @Proxmox VE 中文使用者社團 2019 年會Proxmox VE 功能概觀、案例分享與實用工具 [2019/12/07] @Proxmox VE 中文使用者社團 2019 年會
Proxmox VE 功能概觀、案例分享與實用工具 [2019/12/07] @Proxmox VE 中文使用者社團 2019 年會
 
How to integrate GitLab CICD into B2B service
How to integrate GitLab CICD into B2B serviceHow to integrate GitLab CICD into B2B service
How to integrate GitLab CICD into B2B service
 
如何使用微軟Power系列服務的看法
如何使用微軟Power系列服務的看法如何使用微軟Power系列服務的看法
如何使用微軟Power系列服務的看法
 
Is it really easy for companies to import Ansible automation
Is it really easy for companies to import Ansible automationIs it really easy for companies to import Ansible automation
Is it really easy for companies to import Ansible automation
 

More from Yi-Feng Tzeng

擁抱開源:企業應如何善用開源技術,才能得其利而防其弊-加強版
擁抱開源:企業應如何善用開源技術,才能得其利而防其弊-加強版擁抱開源:企業應如何善用開源技術,才能得其利而防其弊-加強版
擁抱開源:企業應如何善用開源技術,才能得其利而防其弊-加強版Yi-Feng Tzeng
 
COSCUP 2020 Day 2 - Opening Keynote
COSCUP 2020 Day 2 - Opening KeynoteCOSCUP 2020 Day 2 - Opening Keynote
COSCUP 2020 Day 2 - Opening KeynoteYi-Feng Tzeng
 
COSCUP 2020 Day 1 - Opening Keynote
COSCUP 2020 Day 1 - Opening KeynoteCOSCUP 2020 Day 1 - Opening Keynote
COSCUP 2020 Day 1 - Opening KeynoteYi-Feng Tzeng
 
Severless PHP Case : Agile Dashboard via GitLab Board API
Severless PHP Case : Agile Dashboard via GitLab Board APISeverless PHP Case : Agile Dashboard via GitLab Board API
Severless PHP Case : Agile Dashboard via GitLab Board APIYi-Feng Tzeng
 
給資安工程師開源授權觀念
給資安工程師開源授權觀念給資安工程師開源授權觀念
給資安工程師開源授權觀念Yi-Feng Tzeng
 
Progressive Deployment & NoDeploy
Progressive Deployment & NoDeployProgressive Deployment & NoDeploy
Progressive Deployment & NoDeployYi-Feng Tzeng
 
Dev(Sec)Ops - Architecture for Security and Compliance
Dev(Sec)Ops - Architecture for Security and ComplianceDev(Sec)Ops - Architecture for Security and Compliance
Dev(Sec)Ops - Architecture for Security and ComplianceYi-Feng Tzeng
 
擁抱開源:企業應如何善用開源技術,才能得其利而防其弊
擁抱開源:企業應如何善用開源技術,才能得其利而防其弊擁抱開源:企業應如何善用開源技術,才能得其利而防其弊
擁抱開源:企業應如何善用開源技術,才能得其利而防其弊Yi-Feng Tzeng
 
淺談量子機器學習 - 當機器學習遇見量子計算
淺談量子機器學習 - 當機器學習遇見量子計算淺談量子機器學習 - 當機器學習遇見量子計算
淺談量子機器學習 - 當機器學習遇見量子計算Yi-Feng Tzeng
 
A Modern Web Architecture for (GDPR) Compliance
A Modern Web Architecture for (GDPR) ComplianceA Modern Web Architecture for (GDPR) Compliance
A Modern Web Architecture for (GDPR) ComplianceYi-Feng Tzeng
 
量子技術 (2018 03-31)
量子技術 (2018 03-31)量子技術 (2018 03-31)
量子技術 (2018 03-31)Yi-Feng Tzeng
 
邏輯優化的灰色面:針對網頁應用的時序攻擊 (2018臺灣資安大會: 軟體安全論壇)
邏輯優化的灰色面:針對網頁應用的時序攻擊 (2018臺灣資安大會: 軟體安全論壇)邏輯優化的灰色面:針對網頁應用的時序攻擊 (2018臺灣資安大會: 軟體安全論壇)
邏輯優化的灰色面:針對網頁應用的時序攻擊 (2018臺灣資安大會: 軟體安全論壇)Yi-Feng Tzeng
 
Modern Web Architecture Design Journey
Modern Web Architecture Design JourneyModern Web Architecture Design Journey
Modern Web Architecture Design JourneyYi-Feng Tzeng
 
善用 MySQL 及 PostgreSQL - RDBMS 的逆襲 - part1
善用 MySQL 及 PostgreSQL - RDBMS 的逆襲 - part1善用 MySQL 及 PostgreSQL - RDBMS 的逆襲 - part1
善用 MySQL 及 PostgreSQL - RDBMS 的逆襲 - part1Yi-Feng Tzeng
 
恰如其分的 MySQL 設計技巧 [Modern Web 2016]
恰如其分的 MySQL 設計技巧 [Modern Web 2016]恰如其分的 MySQL 設計技巧 [Modern Web 2016]
恰如其分的 MySQL 設計技巧 [Modern Web 2016]Yi-Feng Tzeng
 
談 Uber 從 PostgreSQL 轉用 MySQL 的技術爭議
談 Uber 從 PostgreSQL 轉用 MySQL 的技術爭議談 Uber 從 PostgreSQL 轉用 MySQL 的技術爭議
談 Uber 從 PostgreSQL 轉用 MySQL 的技術爭議Yi-Feng Tzeng
 
資料庫索引數據結構及主鍵設計(b+tree)(part 1)
資料庫索引數據結構及主鍵設計(b+tree)(part 1)資料庫索引數據結構及主鍵設計(b+tree)(part 1)
資料庫索引數據結構及主鍵設計(b+tree)(part 1)Yi-Feng Tzeng
 
軟體接案自由職業者 (Freelancer) 意想不到的風險
軟體接案自由職業者 (Freelancer) 意想不到的風險軟體接案自由職業者 (Freelancer) 意想不到的風險
軟體接案自由職業者 (Freelancer) 意想不到的風險Yi-Feng Tzeng
 
Enterprise Architecture Case in PHP (MUZIK Online)
Enterprise Architecture Case in PHP (MUZIK Online)Enterprise Architecture Case in PHP (MUZIK Online)
Enterprise Architecture Case in PHP (MUZIK Online)Yi-Feng Tzeng
 

More from Yi-Feng Tzeng (20)

擁抱開源:企業應如何善用開源技術,才能得其利而防其弊-加強版
擁抱開源:企業應如何善用開源技術,才能得其利而防其弊-加強版擁抱開源:企業應如何善用開源技術,才能得其利而防其弊-加強版
擁抱開源:企業應如何善用開源技術,才能得其利而防其弊-加強版
 
COSCUP 2020 Day 2 - Opening Keynote
COSCUP 2020 Day 2 - Opening KeynoteCOSCUP 2020 Day 2 - Opening Keynote
COSCUP 2020 Day 2 - Opening Keynote
 
COSCUP 2020 Day 1 - Opening Keynote
COSCUP 2020 Day 1 - Opening KeynoteCOSCUP 2020 Day 1 - Opening Keynote
COSCUP 2020 Day 1 - Opening Keynote
 
Severless PHP Case : Agile Dashboard via GitLab Board API
Severless PHP Case : Agile Dashboard via GitLab Board APISeverless PHP Case : Agile Dashboard via GitLab Board API
Severless PHP Case : Agile Dashboard via GitLab Board API
 
給資安工程師開源授權觀念
給資安工程師開源授權觀念給資安工程師開源授權觀念
給資安工程師開源授權觀念
 
Progressive Deployment & NoDeploy
Progressive Deployment & NoDeployProgressive Deployment & NoDeploy
Progressive Deployment & NoDeploy
 
Dev(Sec)Ops - Architecture for Security and Compliance
Dev(Sec)Ops - Architecture for Security and ComplianceDev(Sec)Ops - Architecture for Security and Compliance
Dev(Sec)Ops - Architecture for Security and Compliance
 
擁抱開源:企業應如何善用開源技術,才能得其利而防其弊
擁抱開源:企業應如何善用開源技術,才能得其利而防其弊擁抱開源:企業應如何善用開源技術,才能得其利而防其弊
擁抱開源:企業應如何善用開源技術,才能得其利而防其弊
 
淺談量子機器學習 - 當機器學習遇見量子計算
淺談量子機器學習 - 當機器學習遇見量子計算淺談量子機器學習 - 當機器學習遇見量子計算
淺談量子機器學習 - 當機器學習遇見量子計算
 
A Modern Web Architecture for (GDPR) Compliance
A Modern Web Architecture for (GDPR) ComplianceA Modern Web Architecture for (GDPR) Compliance
A Modern Web Architecture for (GDPR) Compliance
 
量子技術 (2018 03-31)
量子技術 (2018 03-31)量子技術 (2018 03-31)
量子技術 (2018 03-31)
 
Swoole Love PHP
Swoole Love PHPSwoole Love PHP
Swoole Love PHP
 
邏輯優化的灰色面:針對網頁應用的時序攻擊 (2018臺灣資安大會: 軟體安全論壇)
邏輯優化的灰色面:針對網頁應用的時序攻擊 (2018臺灣資安大會: 軟體安全論壇)邏輯優化的灰色面:針對網頁應用的時序攻擊 (2018臺灣資安大會: 軟體安全論壇)
邏輯優化的灰色面:針對網頁應用的時序攻擊 (2018臺灣資安大會: 軟體安全論壇)
 
Modern Web Architecture Design Journey
Modern Web Architecture Design JourneyModern Web Architecture Design Journey
Modern Web Architecture Design Journey
 
善用 MySQL 及 PostgreSQL - RDBMS 的逆襲 - part1
善用 MySQL 及 PostgreSQL - RDBMS 的逆襲 - part1善用 MySQL 及 PostgreSQL - RDBMS 的逆襲 - part1
善用 MySQL 及 PostgreSQL - RDBMS 的逆襲 - part1
 
恰如其分的 MySQL 設計技巧 [Modern Web 2016]
恰如其分的 MySQL 設計技巧 [Modern Web 2016]恰如其分的 MySQL 設計技巧 [Modern Web 2016]
恰如其分的 MySQL 設計技巧 [Modern Web 2016]
 
談 Uber 從 PostgreSQL 轉用 MySQL 的技術爭議
談 Uber 從 PostgreSQL 轉用 MySQL 的技術爭議談 Uber 從 PostgreSQL 轉用 MySQL 的技術爭議
談 Uber 從 PostgreSQL 轉用 MySQL 的技術爭議
 
資料庫索引數據結構及主鍵設計(b+tree)(part 1)
資料庫索引數據結構及主鍵設計(b+tree)(part 1)資料庫索引數據結構及主鍵設計(b+tree)(part 1)
資料庫索引數據結構及主鍵設計(b+tree)(part 1)
 
軟體接案自由職業者 (Freelancer) 意想不到的風險
軟體接案自由職業者 (Freelancer) 意想不到的風險軟體接案自由職業者 (Freelancer) 意想不到的風險
軟體接案自由職業者 (Freelancer) 意想不到的風險
 
Enterprise Architecture Case in PHP (MUZIK Online)
Enterprise Architecture Case in PHP (MUZIK Online)Enterprise Architecture Case in PHP (MUZIK Online)
Enterprise Architecture Case in PHP (MUZIK Online)
 

Testing in Production, Deploy on Fridays