SlideShare ist ein Scribd-Unternehmen logo
1 von 120
Downloaden Sie, um offline zu lesen
Modern Web Architecture
Design Journey
Ant
yftzeng@gmail.com
2017-08-11
2/120
程式開發 X 資訊安全 X 智慧財產權 X 創業
自介
3/120
程式開發 X 資訊安全 X 智慧財產權 X 創業
自介
懂一點程式開發
4/120
程式開發 X 資訊安全 X 智慧財產權 X 創業
自介
台灣駭客年會 2 次的演講經驗
待過 3 年資訊安全產業
5/120
程式開發 X 資訊安全 X 智慧財產權 X 創業
自介
涉獵一點著作權、商標權及專利權
撰寫過數篇發明專利
6/120
程式開發 X 資訊安全 X 智慧財產權 X 創業
目前負責四間新創公司的技術選型
協助數間友人新創公司的架構討論
無償
自介
7/120
程式開發 X 資訊安全 X 智慧財產權 X 創業
目前負責四間新創公司的技術選型
協助數間友人新創公司的架構討論
無償
自介
血淚史
8/120
程式開發 X 資訊安全 X 智慧財產權 X 創業
目前負責四間新創公司的技術選型
協助數間友人新創公司的架構討論
自介
9/120
技術選型
技術選型,選擇對公司或團隊最佳的技術組合
10/120
技術選型
技術選型,選擇對公司或團隊最佳的技術組合
理想
11/120
技術選型
所謂技術選型,大多數情況仍由關鍵人物決定偏好
例如 CTO 或架構師
現實
12/120
技術選型
所謂技術選型,大多數情況仍由關鍵人物決定偏好
例如 CTO 或架構師
現實
這是我遇過最多的抱怨!
13/120
技術選型
所謂技術選型,大多數情況仍由關鍵人物決定偏好
例如 CTO 或架構師
現實
很多人認為【空降神兵】能解決問題。
但有時解決的反而是《提出問題的人》。
公司內部?顧問?接案 / 外包?
14/120
技術選型
所謂技術選型,大多數情況仍由關鍵人物決定偏好
例如 CTO 或架構師
現實
天降神兵: .NET 不行,全部改 Java 。
天降神兵: PHP 開發太慢,全部改 RoR 。
天降神兵: AngularJS 沒人用,全部改 VueJS 。
這些決策未必錯,但問題是《為什麼》
以及更重要的:有無《信服人的理由》
15/120
偶爾任性是可愛,一天到晚任性是妖孽
~ ANT ~
16/120
➊ 架構先決
無視人員、流程只講技術,是耍性子
架構會影響公司文化、商業擴展;思維更要超越程式碼層次
CTO/ 架構師不該只懂技術
17/120
➋ 沒有完美的架構,只有最適的架構
無視場景只講架構,是耍流氓
若無法舉出架構的缺陷,代表你還無法掌握
盲目套用別人的架構,並不會讓你變得跟他一樣好
沒有一個架構能適用所有場景
18/120
➌ 架構是演進的,預想但不過早調優
無視未來只求急行軍,是耍短視
兵馬未動,糧草先行,預想下一步,下下一步,甚至下下下一步 ...
歡迎進入八奇的思考領域
19/120
Cost
reduction
Flexibility
Time to market
Business
debt
Premature
debt
Scalability
debt
Optimum
20/120
Cost
reduction
Flexibility
Time to market
Business
debt
Premature
debt
Scalability
debt
Optimum
省 好
快
21/120
Cost
reduction
Flexibility
Time to market
Business
debt
Premature
debt
Scalability
debt
Optimum
Architectural debt
{ }
省 好
快
架構債
22/120
有經驗的技術團隊
23/120
有經驗的技術團隊
喜歡採用最新、最好、最大的架構
24/120
You Are Not Google
Facebook
Amazon
別為了高大尚,而迷失自我
25/120
欠缺架構經驗的團隊
26/120
Non-reusable Code
Non-HA / NonScalability
Legacy Code
債築債
問題
27/120
( 起初 ) 不缺錢的團隊
28/120
Fund raising !
or
Burnout !?
利逐債
奔耗
29/120
Cost reduction Flexibility
Time to market
Business
debt
Premature
debt
Scalability
debt
Optimum
Architectural debt
30/120
Cost reduction Flexibility
Time to market
Business
debt
Premature
debt
Scalability
debt
Optimum
延展性不足以支撐業務成長
架構升級積重難返
約束 ( 硬限制 ) 未滿足
Architectural debt
徵兆
31/120
救世主 ?
32/120
33/120
Agile? 敏捷教練?
34/120
Architect? 架構師?
Agile? 敏捷教練?
35/120
Agile Architect
Agile 與 Architect 是有交集的
36/120
Good architecture brings agility
好的架構帶來敏捷
- Saugatuck -
37/120
Minimum Viable Product
最小可行產品
38/120
MVP 若沒有控制好,技術債將迅速增長
Minimum Viable Product
先前程式少能復用
遺舊程式難以去除
架構變動牽扯不清
最小可行產品
39/120
E = mc
2
40/120
E = mc
2
Errors = (more code)
2
41/120
E = mc
2
錯誤隨著程式碼數量呈平方次成長
Errors = (more code)
2
42/120
最後廢碼定理
程式廢碼產生的速率,隨著接近專案最後死線呈等比倍增
43/120
真相只有一個,但死相可以有很多個
~ ANT ~
44/120
Minimum Viable Product
Debt
Time
Debt Ceiling
理想與現實
Debt Baseline
45/120
Minimum Viable Product
Debt
Time
Debt Ceiling
理想與現實
理想
Debt Baseline
46/120
Debt
Time
Debt Ceiling
Minimum Viable Product
理想與現實
現實
Debt Baseline
47/120
Debt
Time
Debt Ceiling
Minimum Viable Product
Pivot?
理想與現實
現實
Debt Baseline
Pivot?
Pivot?
48/120
Pivot 聽起來很稀鬆平常,就像放屁一樣,但只有蠟筆小新放屁會飛
~ Ricky Chen ~
49/120
Minimum Viable Product
市場驗證成功後,我再拿投資人的錢來技術轉型就好了。
大家可能聽過一些說法:
事實上,迅速成長的公司,沒太多時間進行技術轉型。
再加上之前為了快速驗證 MVP 所遺留的技術債。
只會讓技術轉型變得遙不可及。
50/120
Minimum Viable Product
現有團隊不行,我砸錢找大神 ( 大牛 ) 重構系統總可以吧。
於是:
51/120
Minimum Viable Product
強烈的既視感?
52/120
更重要的是
有考慮過大神 ( 大牛 ) 的感受嗎?
架構重構是個苦工,很多時候他們也是千百個不願意
53/120
空中換引擎
落地換引擎
技術難度高。
但迅速成長的公司,仍然有很多需求待開發。
同時還要處理累積的技術債,很可能因債築債而嚴重惡化。
技術難度低。
但商業模式是否能夠允許新功能推進緩慢或無進展?
空中小修
地面重建
資源投入巨大。
不是現行團隊拆分戰力,就是要另招一批團隊開發新引擎。
但若問題本質不解決,新引擎未來也會遭遇一樣的問題。
54/120
架構債
非技術上 技術上
55/120
架構債
非技術上 技術上
需求的坑
56/120
架構債
非技術上 技術上
需求的坑 程式的坑
57/120
架構債
非技術上 技術上
需求的坑 程式的坑
58/120
架構債
非技術上 技術上
需求的坑 設計的坑 程式的坑
59/120
架構債
非技術上 技術上
需求的坑 設計的坑 程式的坑{
Agile, Scrum, Kanban, DevOps, TDD, BDD, ...
60/120
架構債
非技術上 技術上
需求的坑 設計的坑 程式的坑{
Conceptual Integrity
Conceptual debt
Agile, Scrum, Kanban, DevOps, TDD, BDD, ...
( 概念完整性 )
61/120
架構之始,在於需求
架構債
非技術上 技術上
需求的坑 設計的坑 程式的坑
62/120
架構債
非技術上 技術上
需求的坑 設計的坑 程式的坑
我以為你知道!
這本來就是要的,只是我忘了講!
我要的不是這樣!
我要的你應該要替我想到,我又不懂技術
你沒跟我說過。
怪我囉。
可是需求書是這樣 / 需求書不明確
你 !!!
出了問題時
需求方 開發方
63/120
架構債
非技術上 技術上
需求的坑 設計的坑 程式的坑
我以為你知道!
這本來就是要的,只是我忘了講!
我要的不是這樣!
我要的你應該要替我想到,我又不懂技術
你沒跟我說過。
怪我囉。
可是需求書是這樣 / 需求書不明確
你 !!!
程式還是要趕,
班還是照加。
出了問題時
需求方 開發方
64/120
需求永遠是不明確的
但我們能做的是讓架構更具彈性
65/120
需求永遠是不明確的
但我們能做的是讓架構更具彈性
被動 主動
需求方 開發方 需求方 開發方
66/120
被動 主動
Dependency inversion principle
依賴反轉原則
需求方 開發方 需求方 開發方
需求永遠是不明確的
但我們能做的是讓架構更具彈性
Modern Web 2016
恰如其分的 MySQL 設計技巧
Ant
yftzeng@gmail.com
2016-08-24
引用去年簡報
68/120
Business
License
Elastic business
Workload
Technology
Scale-up
Application
Connection
Database
File system
OS Kernel
Hardware
Scale-out
Replication
Clustering
Sharding
Disaster Recovery
Multi Regional Resiliency
CONSILIENCE
Architecture
and more ...
引用去年簡報
69/120
當業務需求變更程式設計時
預想但不過早調優
總工程師不該把每次新需求都認為獨立需求
( 多想二分鐘,團隊可以不必自虐 )
Elastic business引用去年簡報
70/120
預想但不過早調優
71/120
Premature optimization is the root of all evil.
過早最佳化是萬惡的根源
72/120
Premature optimization is the root of all evil.
過早最佳化是萬惡的根源
手拿菜刀砍電線,一路火花帶閃電
73/120
Premature optimization is the root of all evil.
過早最佳化是萬惡的根源
手拿菜刀砍電線,一路火花帶閃電
74/120
We should forget about small efficiencies,
say about 97% of the time:
Premature optimization is the root of all evil.
Yet we should not pass up our opportunities in that critical 3%.
75/120
We should forget about small efficiencies,
say about 97% of the time:
Premature (micro) optimization is the root of all evil.
Yet we should not pass up our opportunities in that critical 3%.
76/120
Premature (micro) optimization is the root of all evil.
Do some { Architectural optimizations, Algorithms, … } early.
77/120
Premature (micro) optimization is the root of all evil.
Do some { Architectural optimizations, Algorithms, … } early.
程式與架構需懂得區分
【架構】異動會牽扯組件邊界,影響巨大
78/120
Premature (micro) optimization is the root of all evil.
Do some { Architectural optimizations, Algorithms, … } early.
即未來需求變更時,屬程式異動,還是架構異動?
程式與架構需懂得區分
【架構】異動會牽扯組件邊界,影響巨大
簡言之,如果需求發生異動,需花多久時間滿足?
79/120
狀態
原表格設計
Elastic business
id name ... is_deleted
1 Apple ... 0
2 Banana ... 1
引用去年簡報
80/120
狀態
新業務需要儲存「鎖定」狀態
Elastic business
id name ... is_deleted
1 Apple ... 0
2 Banana ... 1
id name ... is_deleted is_locked
1 Apple ... 0 1
2 Banana ... 1 0
引用去年簡報
81/120
狀態
其實若狀態是沒交集的,則可以合併
Elastic business
id name ... status
1 Apple ... 2
2 Banana ... 0
id name ... is_deleted is_locked
1 Apple ... 0 1
2 Banana ... 1 0
{ 0: deleted, 1: enabled, 2: locked }
引用去年簡報
82/120
標籤雲
原表格設計
Elastic business
id name tag1
1 Apple admin
2 Banana reporter
3 Cherry reporter
SELECT * FROM {Table}
WHERE tag1 = ‘admin’
引用去年簡報
83/120
標籤雲
新增標籤
Elastic business
id name tag1 tag2 tag3
1 Apple admin reporter programmer
2 Banana reporter programmer NULL
3 Cherry reporter admin NULL
SELECT * FROM {Table}
WHERE (tag1 = ‘admin’ OR tag2 = ‘admin’ OR tag3 = ‘admin’)
AND (tag1 = ‘reporter’ OR tag2 = ‘reporter’ OR tag3 = ‘reporter’)
SELECT * FROM {Table}
WHERE ‘admin’ IN (tag1, tag2, tag3)
AND ‘reporter’ IN (tag1, tag2, tag3)
ALTER TABLE !!
引用去年簡報
84/120
Tag
Elastic business
id tag
1 admin
1 reporter
1 programmer
2 reporter
... ...
新增標籤 ( 另他法 )
標籤雲
id name X X X
1 Apple X X X
2 Banana X X X
SELECT * FROM {Table}
INNER JOIN ‘Tag’ AS t1 USING (id)
INNER JOIN ‘Tag’ AS t2 USING (id)
WHERE t1.tag = ‘admin’
AND t2.tag = ‘reporter’
引用去年簡報
85/120
Elastic business
或是 M:N
標籤雲
id name
1 Apple
2 Banana
id tag_id
1 1
1 2
1 3
2 2
2 3
tag_id name
1 admin
2 reporter
3 programmer
引用去年簡報
86/120
Elastic business
廣告需求
營運有新的需求,受眾在
一天內不要看到相同廣告。
瞭解,預計一個工作天。
第一天
引用去年簡報
87/120
Elastic business
廣告需求
營運有新的需求,受眾在
小時內不要看到相同廣告。
瞭解,預計二個工作天。
第二天
時間粒度不同
引用去年簡報
88/120
Elastic business
廣告需求
營運有新的需求,受眾在
一天內不要看到同類廣告。
瞭解,預計八個工作天。
第三天
目標粒度不同
不能一次講清楚嗎?
引用去年簡報
89/120
Elastic business
廣告需求
受眾在 M 時間內不要看到 N 廣告
預想
該需求的延伸會是什麼?
M → 年 / 季 / 月 / 週 / 時 / 分 / 秒
N → 相同 / 同類
看到的次數? 1/2/3...
裝置有別?
區域?
廣告主屬性?
引用去年簡報
90/120
架構債
非技術上 技術上
需求的坑 設計的坑 程式的坑
KISS(Keep it simple, stupid!)
DRY(Don't repeat yourself)
SOLID Principles
...
略過
91/120
架構債
非技術上 技術上
需求的坑 設計的坑 程式的坑
設計:權衡需求與實現的藝術
92/120
Business
License
Elastic business
Workload
Technology
Scale-up
Application
Connection
Database
File system
OS Kernel
Hardware
Scale-out
Replication
Clustering
Sharding
Disaster Recovery
Multi Regional Resiliency
CONSILIENCE
Architecture
and more ...
引用去年簡報
93/120
Workload
Processing Intensive Capacity
CPU intensive
Memory intensive
Storage/IO intensive
Bandwidth intensive
OLTP
OLAP
Data warehouse
Throughput
Latency
Memory footprint
Service-level agreement
Bond
Performance
Security
Cost restriction
引用去年簡報
94/120
Workload
Processing Intensive Capacity
CPU intensive
Memory intensive
Storage/IO intensive
Bandwidth intensive
OLTP
OLAP
Data warehouse
Throughput
Latency
Memory footprint
Service-level agreement
Bond
Performance
Security
Cost restriction
引用去年簡報
95/120
Workload
Capacity
Latency
Memory
footprint
Trade-off
Throughput
引用去年簡報
96/120
Workload
Capacity
High throughput Low latency
引用去年簡報
97/120
Workload
Capacity
High throughput Low latency
重點在於找出需求的【硬限制】
引用去年簡報
98/120
遇到瓶頸還不是最慘,慘得是過了瓶頸,還有瓶蓋
~ Anonymous ~
99/120
2015
千萬人同時在線
電子商務、線上出版媒體
低延遲回應
廣告平台 RTB(30ms)
高頻交易 (0.5~3ms)
多人線上遊戲 (30fps: 100~150ms, 60fps: 60~70ms)
醫療等關鍵設備
100/120
Workload
Capacity
Low latency
非指 PHP 無法做到低延遲 ( 例如 30ms) ,而是
我們願意 ( 只能 ) 花多少資源 ( 資金硬限制 ) ,以及
我們手中工程師的數量與實力 ( 人力硬限制 ) 。
很多事情 ( 例如 latency) 不是靠 Scale Out 能解決
高手人數?訓練成本?
101/120
Workload
Capacity
Low latency
此時, PHP 相較 C/C++/Go 通常會更辛苦。
伺服器規格需求較高?較多?
工程師技能要求較高?
徵聘更強的工程師?
案主:不好意思,我只能給你兩台一般的伺服器
PHP Extension ? Swoole ?奇技淫巧?未來徵人的訓練成本?
高手為什麼要來?有無足夠的產品吸引力?足夠的給薪條件?
102/120
Ref: http://eugenedvorkin.com/seven-micro-services-architecture-advantages/
103/120
Monolith
Microservices
SOA
Nanoservices
Picoservices
SOA
104/120
Monolith
Microservices
SOA
Nanoservices
Picoservices
SOA
有沒有能力駕馭微服務、奈米服務、微微服務?
105/120
MonolithFirst
《單體》優先的技術選型
~ Martin Fowler (ThoughtWorks 的首席科學家 ) ~
Ref: https://martinfowler.com/bliki/MonolithFirst.html
對於《微服務》,他注意到了這兩種問題,
➊ 幾乎所有成功的微服務案例,都是從過大的《單體》拆分的。
➋ 幾乎所有他見過一開始就投入《微服務》的案例,最後都遭遇嚴重麻煩。
106/120
MonolithFirst
網友提出不同見解
~ krisdol ~
Ref: https://news.ycombinator.com/item?id=9652893
Fowler 遇到的案例都是出問題的公司。 ThoughtWorks 是一家顧問公司,
也就是說,他們會在某個公司出現問題時提供幫助。
簡言之, Fowler 所見都是不對的組織採用了錯誤的架構,也就是他會見到
一開始採用《微服務》而失敗的公司,但不會見到成功的。
107/120
MonolithFirst
網友提出不同見解
~ room271 ~
Ref: https://news.ycombinator.com/item?id=9652893
當你是顧問時,一開始很容易提倡採用《單體》,因為你會在《單體》出現
問題前,就已經完成專案離開了。
已有兩年《微服務》經驗的他,提出了兩個見解:
➊ 當公司或團隊很小時,除非你們技藝超群,否則不建議採用《微服務》。
➋ 當公司或團隊很大時,採用《微服務》有助於解隅組織並促進敏捷。
108/120
Ref: https://www.slideshare.net/ufried/towards-complex-adaptive-architectures (p37)
組織會影響架構
109/120
Monolith
Microservices
SOA
Nanoservices
Picoservices
SOA
110/120
救世主 ?
111/120
112/120
Serverless
Serverless ≠ Architectureless
113/120
Serverless
Serverless ≠ Architectureless
Ref: https://martinfowler.com/articles/serverless.html
114/120
Serverless
Serverless ≠ Architectureless
Ref: https://aws.amazon.com/serverless/
115/120
➊ 架構先決
➋ 沒有完美的架構,只有最適的架構
➌ 架構是演進的,預想但不過早調優
116/120
Sacrificial Architecture ( 犧牲的架構 )
~ Martin Fowler ~
即使捨棄現有架構,重構組件新架構,也未必是一件失敗的事
重點是【為什麼】、【新架構怎麼執行】及【何時執行】
簡言之,如果清楚明白打掉重練比較好,就勇敢執行吧!
Ref: http://www.infoq.com/news/2014/11/sacrificial-architecture
117/120
Sacrificial Architecture ( 犧牲的架構 )
~ Martin Fowler ~
即使捨棄現有架構,重構組件新架構,也未必是一件失敗的事
重點是【為什麼】、【新架構怎麼執行】及【何時執行】
簡言之,如果清楚明白打掉重練比較好,就勇敢執行吧!
Ref: http://www.infoq.com/news/2014/11/sacrificial-architecture
但免不了的,還是要面臨這些問題
118/120
空中換引擎
落地換引擎
技術難度高。
但迅速成長的公司,仍然有很多需求待開發。
同時還要處理累積的技術債,很可能因債築債而嚴重惡化。
技術難度低。
但商業模式是否能夠允許新功能推進緩慢或無進展?
空中小修
地面重建
資源投入巨大。
不是現行團隊拆分戰力,就是要另招一批團隊開發新引擎。
但若問題本質不解決,新引擎未來也會遭遇一樣的問題。
119/120
共 勉 之
120/120
yftzeng@gmail.com
https://www.facebook.com/yftzeng.tw

Weitere ähnliche Inhalte

Ähnlich wie Modern Web Architecture Design Journey

Catia v5 CAM enhancement
Catia v5 CAM enhancementCatia v5 CAM enhancement
Catia v5 CAM enhancementJimmy Chang
 
Rsa2012 下一代安全的战略思考-绿盟科技赵粮
Rsa2012 下一代安全的战略思考-绿盟科技赵粮Rsa2012 下一代安全的战略思考-绿盟科技赵粮
Rsa2012 下一代安全的战略思考-绿盟科技赵粮NSFOCUS
 
Exam 98-375 HTML5 Application Development Fundamentals
Exam 98-375 HTML5 Application Development FundamentalsExam 98-375 HTML5 Application Development Fundamentals
Exam 98-375 HTML5 Application Development FundamentalsChieh Lin
 
腾讯大讲堂30 运维工具让你的开发运营更轻松
腾讯大讲堂30 运维工具让你的开发运营更轻松腾讯大讲堂30 运维工具让你的开发运营更轻松
腾讯大讲堂30 运维工具让你的开发运营更轻松Michael Zhang
 
腾讯大讲堂30 运维工具让你的开发运营更轻松
腾讯大讲堂30 运维工具让你的开发运营更轻松腾讯大讲堂30 运维工具让你的开发运营更轻松
腾讯大讲堂30 运维工具让你的开发运营更轻松areyouok
 
Spirent_securityLab-服務介紹_2022.pdf
Spirent_securityLab-服務介紹_2022.pdfSpirent_securityLab-服務介紹_2022.pdf
Spirent_securityLab-服務介紹_2022.pdfssuserdfa916
 
建立PHP & MySQL應用程式開發環境 - XAMPP安裝與測試
建立PHP & MySQL應用程式開發環境 - XAMPP安裝與測試建立PHP & MySQL應用程式開發環境 - XAMPP安裝與測試
建立PHP & MySQL應用程式開發環境 - XAMPP安裝與測試吳錫修 (ShyiShiou Wu)
 
大型互联网应用架构设计
大型互联网应用架构设计大型互联网应用架构设计
大型互联网应用架构设计thinkinlamp
 
IBM System X
IBM System XIBM System X
IBM System Xyangfan
 
广告投放代码和创意代码持续优化
广告投放代码和创意代码持续优化广告投放代码和创意代码持续优化
广告投放代码和创意代码持续优化taobao.com
 
資訊證照講座
資訊證照講座資訊證照講座
資訊證照講座Ryan Chung
 
[DevOpsDays] 硬體產業的DevOps導入與實踐 - 以工控產業為例
[DevOpsDays] 硬體產業的DevOps導入與實踐 - 以工控產業為例[DevOpsDays] 硬體產業的DevOps導入與實踐 - 以工控產業為例
[DevOpsDays] 硬體產業的DevOps導入與實踐 - 以工控產業為例TIM WANG
 
漫談 Source Control Management
漫談 Source Control Management漫談 Source Control Management
漫談 Source Control ManagementWen-Shih Chao
 
OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发leneli
 
51 cto linuxops_issue2
51 cto linuxops_issue251 cto linuxops_issue2
51 cto linuxops_issue2Yiwei Ma
 
易思捷云操作系统概述
易思捷云操作系统概述易思捷云操作系统概述
易思捷云操作系统概述炳富 杨
 
新技术新挑战
新技术新挑战新技术新挑战
新技术新挑战xiang.zhaox
 
一次搞懂雲端資安,同步傳授資安絕招
一次搞懂雲端資安,同步傳授資安絕招一次搞懂雲端資安,同步傳授資安絕招
一次搞懂雲端資安,同步傳授資安絕招Amazon Web Services
 

Ähnlich wie Modern Web Architecture Design Journey (20)

Catia v5 CAM enhancement
Catia v5 CAM enhancementCatia v5 CAM enhancement
Catia v5 CAM enhancement
 
Rsa2012 下一代安全的战略思考-绿盟科技赵粮
Rsa2012 下一代安全的战略思考-绿盟科技赵粮Rsa2012 下一代安全的战略思考-绿盟科技赵粮
Rsa2012 下一代安全的战略思考-绿盟科技赵粮
 
Exam 98-375 HTML5 Application Development Fundamentals
Exam 98-375 HTML5 Application Development FundamentalsExam 98-375 HTML5 Application Development Fundamentals
Exam 98-375 HTML5 Application Development Fundamentals
 
腾讯大讲堂30 运维工具让你的开发运营更轻松
腾讯大讲堂30 运维工具让你的开发运营更轻松腾讯大讲堂30 运维工具让你的开发运营更轻松
腾讯大讲堂30 运维工具让你的开发运营更轻松
 
腾讯大讲堂30 运维工具让你的开发运营更轻松
腾讯大讲堂30 运维工具让你的开发运营更轻松腾讯大讲堂30 运维工具让你的开发运营更轻松
腾讯大讲堂30 运维工具让你的开发运营更轻松
 
Spirent_securityLab-服務介紹_2022.pdf
Spirent_securityLab-服務介紹_2022.pdfSpirent_securityLab-服務介紹_2022.pdf
Spirent_securityLab-服務介紹_2022.pdf
 
Sec.3 遠端安全連線解決方案-array adonis
Sec.3 遠端安全連線解決方案-array adonisSec.3 遠端安全連線解決方案-array adonis
Sec.3 遠端安全連線解決方案-array adonis
 
建立PHP & MySQL應用程式開發環境 - XAMPP安裝與測試
建立PHP & MySQL應用程式開發環境 - XAMPP安裝與測試建立PHP & MySQL應用程式開發環境 - XAMPP安裝與測試
建立PHP & MySQL應用程式開發環境 - XAMPP安裝與測試
 
大型互联网应用架构设计
大型互联网应用架构设计大型互联网应用架构设计
大型互联网应用架构设计
 
IBM System X
IBM System XIBM System X
IBM System X
 
广告投放代码和创意代码持续优化
广告投放代码和创意代码持续优化广告投放代码和创意代码持续优化
广告投放代码和创意代码持续优化
 
資訊證照講座
資訊證照講座資訊證照講座
資訊證照講座
 
[DevOpsDays] 硬體產業的DevOps導入與實踐 - 以工控產業為例
[DevOpsDays] 硬體產業的DevOps導入與實踐 - 以工控產業為例[DevOpsDays] 硬體產業的DevOps導入與實踐 - 以工控產業為例
[DevOpsDays] 硬體產業的DevOps導入與實踐 - 以工控產業為例
 
20150206 aic machine learning
20150206 aic machine learning20150206 aic machine learning
20150206 aic machine learning
 
漫談 Source Control Management
漫談 Source Control Management漫談 Source Control Management
漫談 Source Control Management
 
OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发
 
51 cto linuxops_issue2
51 cto linuxops_issue251 cto linuxops_issue2
51 cto linuxops_issue2
 
易思捷云操作系统概述
易思捷云操作系统概述易思捷云操作系统概述
易思捷云操作系统概述
 
新技术新挑战
新技术新挑战新技术新挑战
新技术新挑战
 
一次搞懂雲端資安,同步傳授資安絕招
一次搞懂雲端資安,同步傳授資安絕招一次搞懂雲端資安,同步傳授資安絕招
一次搞懂雲端資安,同步傳授資安絕招
 

Mehr von Yi-Feng Tzeng

重新想像:如何做技術選型決策 / Rethinking : Technical Decision
重新想像:如何做技術選型決策 / Rethinking : Technical Decision重新想像:如何做技術選型決策 / Rethinking : Technical Decision
重新想像:如何做技術選型決策 / Rethinking : Technical DecisionYi-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
 
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
 
量子技術 (2018 03-31)
量子技術 (2018 03-31)量子技術 (2018 03-31)
量子技術 (2018 03-31)Yi-Feng Tzeng
 
邏輯優化的灰色面:針對網頁應用的時序攻擊 (2018臺灣資安大會: 軟體安全論壇)
邏輯優化的灰色面:針對網頁應用的時序攻擊 (2018臺灣資安大會: 軟體安全論壇)邏輯優化的灰色面:針對網頁應用的時序攻擊 (2018臺灣資安大會: 軟體安全論壇)
邏輯優化的灰色面:針對網頁應用的時序攻擊 (2018臺灣資安大會: 軟體安全論壇)Yi-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
 
Redis, another step on the road
Redis, another step on the roadRedis, another step on the road
Redis, another step on the roadYi-Feng Tzeng
 
淺入淺出 MySQL & PostgreSQL
淺入淺出 MySQL & PostgreSQL淺入淺出 MySQL & PostgreSQL
淺入淺出 MySQL & PostgreSQLYi-Feng Tzeng
 
The Future of Classical Music
The Future of Classical MusicThe Future of Classical Music
The Future of Classical MusicYi-Feng Tzeng
 
2014-04-24 社群經營的法律議題-ant
2014-04-24 社群經營的法律議題-ant2014-04-24 社群經營的法律議題-ant
2014-04-24 社群經營的法律議題-antYi-Feng Tzeng
 

Mehr von Yi-Feng Tzeng (20)

重新想像:如何做技術選型決策 / Rethinking : Technical Decision
重新想像:如何做技術選型決策 / Rethinking : Technical Decision重新想像:如何做技術選型決策 / Rethinking : Technical Decision
重新想像:如何做技術選型決策 / Rethinking : Technical Decision
 
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
 
淺談量子機器學習 - 當機器學習遇見量子計算
淺談量子機器學習 - 當機器學習遇見量子計算淺談量子機器學習 - 當機器學習遇見量子計算
淺談量子機器學習 - 當機器學習遇見量子計算
 
量子技術 (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臺灣資安大會: 軟體安全論壇)
 
善用 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)
 
Redis, another step on the road
Redis, another step on the roadRedis, another step on the road
Redis, another step on the road
 
淺入淺出 MySQL & PostgreSQL
淺入淺出 MySQL & PostgreSQL淺入淺出 MySQL & PostgreSQL
淺入淺出 MySQL & PostgreSQL
 
The Future of Classical Music
The Future of Classical MusicThe Future of Classical Music
The Future of Classical Music
 
2014-04-24 社群經營的法律議題-ant
2014-04-24 社群經營的法律議題-ant2014-04-24 社群經營的法律議題-ant
2014-04-24 社群經營的法律議題-ant
 

Modern Web Architecture Design Journey