# [電影欣賞] DevOps 潮流下的 API First 開發策略  影片網址: https://www.youtube.com/watch?v=xDMTP2OVROo ## 什麼是 API First? 推動 API First 的期待是什麼呢? **API-First 方法的定義** ([14m35s](https://youtu.be/xDMTP2OVROo?t=875)): - 先有 API,再拿 API 來開發自己的產品。而不是先有產品,再來生出 API。 - 先把 API 的 contract (就是 interface) 定出來,有了 contract 就驗證 Spec 與 Design 能不能用、好不好用 (在寫 code 之前)。 **老闆期待的 API First 是什麼** ([15m57s](https://youtu.be/xDMTP2OVROo?t=957))? → 有了好用的 API,就可以透過它來組合出各種產品,也減少客戶需要製客化的需求 → 可規模化 **哪些東西該作成 API?哪些不用呢?**([20m59](https://youtu.be/xDMTP2OVROo?t=1259)) - 跟 UI 高度相關的最好不要 - 以產品的角度來說,核心的功能應該有 API - API 不見得要涵蓋所有的產品功能,cover 太多反而限制了產品發展的空間 - 儘可能取得技術與商業需求的平衡 **2002 年的 AWS 的 API 授權備忘錄** ([28m07s](https://youtu.be/xDMTP2OVROo?t=1687)) - 跨團隊的服務,只能用 API 溝通 - 沒限制只能用 HTTP API,但得是 API - 禁止使用不恰當的技術跨團隊溝通 **流程與決策順序改變,必須先改變團隊的文化與能力** ([32m51s](https://youtu.be/xDMTP2OVROo?t=1971)) - (開讀書會…) - 介紹 3 本書給你 ## API 的開發策略 [34m53s](https://youtu.be/xDMTP2OVROo?t=2093) - 開發流程 - contract first vs requirement first - 分析設計方式 & Ownership - 先由 domain 開始,而非 database schema 開發 - 安全控管的改變 (**註:我覺得是這場 talk 最重要的精華**) - 你怎麼做 OAuth 權限設計的!? **開發流程的改變** ([38m32s](https://youtu.be/xDMTP2OVROo?t=2312)) - Contract First  - 決定好 Contract 後,生出 Mock API,直接讓 Client 端試用。這時還不需要去管 Database 怎麼設計,直接做 e2e testing 看看有沒有什麼設計的問題。 - 擴大解說一下 Contract First ([40m31s](https://youtu.be/xDMTP2OVROo?t=2431))  - 有了 mock api 後,進行 e2e testing 每個角色都有事情可以做了 - 前端可以實作、SDK 可以實作、文件也可以寫了、QA 也能動起來了。  - 我們的作法:design spring, PoC 確認你的 contract works ([46m14s](https://youtu.be/xDMTP2OVROo?t=2774))  --- 更具體的設計分隔線 (前方高能) --- **API 設計方式的改變與標準化** [48m06s](https://youtu.be/xDMTP2OVROo?t=2886) - 以**狀態機**表達:resource 的生命週期與可用的行為 - 通常不是 CRUD 能搞定的事,你需要狀態機。 - CRUD 能搞定的事,你 codegen 就好了啊! 會員管理實例 [50m23s](https://youtu.be/xDMTP2OVROo?t=3023)   理清狀態與可以呼叫的行為對應後,(權限部分的) 商業邏輯的整理就更加明確了:  - API Access Scope 參考範例 ([1:00:41](https://youtu.be/xDMTP2OVROo?t=3641)) - 對比典型的 CRUD API ([1:06:53](https://youtu.be/xDMTP2OVROo?t=4013)) 金句誕生 ([1:07:47](https://youtu.be/xDMTP2OVROo?t=4067)) > 因為 CRUD 是系統資料存取的動作不是你 Domain 的動作,所以你很難判斷的出這件事情的意圖。那你判斷不是意圖…. 你真正要管控的是意圖,所以你的權限管制就會很困難。 > - 設計 API 的安全機制:授權管理 ([1:10:46](https://youtu.be/xDMTP2OVROo?t=4246)) - 不同的權限管控方式:車票 vs 識別證 ([1:13:45](https://youtu.be/xDMTP2OVROo?t=4425)) - 外部使用 vs 內部使用 **思考是否會過度設計?** [1:18:46](https://youtu.be/xDMTP2OVROo?t=4726) **總結** [1:23:16](https://youtu.be/xDMTP2OVROo?t=4996) **Q & A 開始** [1:29:12](https://youtu.be/xDMTP2OVROo?t=5352)
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.