SlideShare a Scribd company logo
探索 API 開發的挑戰與解決之道
Alan Tsai
簡單的自我介紹
• Alan Tsai
• 蔡孟玹
• 後端工程師 - .NET 技術為主
• 喜歡學習不同東西
• Azure
• Data Science、Chatbot
• Container、DevOps
• 加强開發的Tools、架構
• 翻譯文章/軟體
• 兩本翻譯書
• 三門線上課程
• 看小說、玩手游
@Alan Tsai 的學習筆記 4
教就是最好的學習方式 - 喜歡考證驗證所學
@Alan Tsai 的學習筆記 5
喜歡技術分享
• 2022 .NET Conf
• 談 Event Driven Architecture 之前
是不是該把 Event 規格搞定? CloudEvents 是什麼?
| 邁上 Cloud Native App 之路
• 2021 .NET Conf
• 不會 Javascript 沒關係
用 Blazor 來解決前端需求成為 Full Stack .NET 開發者吧
• 2020 Global Azure
• Azure API Management
協助邁向Open API及Micro Service架構的好用服務
@Alan Tsai 的學習筆記 6
喜歡技術分享
• Tibame
• AZ-900、AZ-104、AZ-204
• GitHub Copilot
企業導入,在製造業、金融業、服務業,已培訓近800人次
• Trainocate
• AZ-104、AZ-204、AZ-400、DP-200、DP-201、PL-900、DA-100
• 台灣智慧自動化與機器人協會
• 運用Python進行大數據分析、機器學習基礎理論課程及人工智慧 – ML.NET
• 中華電信學院
• DevOps與CI/CD實務研習班、Windows Container 技術實務班
• 使用Azure AI打造有人工智能的Line聊天機器人
@Alan Tsai 的學習筆記 7
歡迎訂閲、按讚 + 分享
FB 粉絲頁
http://fb.alantsai.net
Alan Tsai 的學習筆記
https://blog.alantsai.net http://yt.alantsai.net http://bili.alantsai.net
影片
contact@alantsai.net contact@alantsai.net
@Alan Tsai 的學習筆記 8
Agenda
• API First 要解決什麼問題?
• 軟體開發的生命週期有什麼可以協助我們?
• 設計
• 開發
• 維運/上線
@Alan Tsai 的學習筆記 9
大家有聽過 Death Star Architecture 嗎?
@Alan Tsai 的學習筆記 10
11
@Alan Tsai 的學習筆記
What is Death Star Architecture and why you should care
12
@Alan Tsai 的學習筆記
What is Death Star Architecture and why you should care
• 改 A 壞 B => 有程式碼品質問題
• Gate Keepers 變成英雄
• 為了加速開發,我們導入 “敏捷” 專注
在 Process, Documentation, Planning
• 整個糾結在一起,value stream 散落在
各個解決方案
• 開始有很多分支 (但是 DB 是同一座…)
• 商業需求不會因為開發變慢而停下
• 各個部門解決自己的問題,而沒有思考
整體公司。沒有一致步調前進
從 Monolithic 到 Microservices
Migrate a monolithic application to microservices
using domain-driven design
從 Monolithic 到 Microservices
Mastering the Art of API Design
API 的風格是什麼?
Mastering the Art of API Design
從設計開始
Code First or API First ?
API
(OpenAPI Spec)
Domain Model
(Class Diagram)
Entity Model
(ERD Diagram)
Code First
API
(OpenAPI Spec)
Domain Model
(Class Diagram)
Entity Model
(ERD Diagram)
API First
API Contract
(OpenAPI Spec)
Domain Model
(Class Diagram)
Entity Model
(ERD Diagram)
Code First or API First ?
Mastering the Art of API Design
如何 Design API?
API 的成功與否,規格定的好不好 (這是設計
議題) 占了 70% 以上,規格定對了,後面的
實做 (效能,可靠度等等) 做得好才有加分。
---安德魯
如何 Design API?
API First - 從理想的 API Spec 設計開始 - Youtube
API First - 從理想的 API Spec 設計開始 - 文章
API 設計好了,怎麼變成 Contract?
有誰有手刻過 OpenAPI 文件?
4 年前的我
Typespec
• 文件
• Playground
怎麼知道規格異動的影響範圍是什麼?
Breaking 和 Changelog 的差異
https://www.oasdiff.com/home
避免 Breaking Change 的兩種情況
https://www.oasdiff.com/home/breaking-changes
產生出人看的懂的異動記錄
進入開發
Mock Server
https://openapi.tools/#mock
如何可以快速使用 API?該用 SDK 嗎?
• 不想要有其他的套件相依
• SDK 的品質不夠好
• 需要有高速需求
• 不知道有 SDK
Kiota
• 專門給使用端的產生工具
• C#, CLI, Go, Java, PHP, Python,
Ruby, Swift and Typescript
• 有 discovery, selection,
generation
• 支援 OpenAPI
• 微軟 Support, Open Source
35
@Alan Tsai 的學習筆記
https://github.com/Azure/data-api-builder/tree/main
初探 Data API Builder:在幾分鐘內將資料庫轉換成 REST 和 GraphQL 不再是夢想
Scenario
• Local
• Install DAB
• Container MSSQL Database Setup
• DAB Setup
• API
• GraphQL
36
@Alan Tsai 的學習筆記
準備 DAB
• 需要是 .NET 6+ SDK
37
@Alan Tsai 的學習筆記
​​dotnet --list-sdks
dotnet tool install --global Microsoft.DataApiBuilder
dab --version
透過 Docker Container
38
@Alan Tsai 的學習筆記
​​docker run -e "ACCEPT_EULA=Y" -e
"MSSQL_SA_PASSWORD=yourStrong(!)Password" -p 1433:1433 -d
mcr.microsoft.com/mssql/server:2022-latest​
dab init --database-type "mssql" --connection-string
"Server=localhost;Database=BookTest;User
ID=sa;Password=yourStrong(!)Password;TrustServerCertificate=true" --host-mode
"Development"
dab start
上線啦
如何被呼叫?
The API gateway pattern versus the Direct client-to-microservice communication
API Gateway 應該做什麼事情?
What are the differences between a
load balancer and an API gateway?
Azure APIM
Azure APIM
https://www.youtube.com/watch?v=zVvJck6qxWM
Azure APIM - Self-hosted gateway
Self-hosted gateway overview
功能差異比較
全公司的 API 到底有多少?
Azure API Center – Public Preview
Azure API Center
• API Inventory
• API Governance
• Metadata
• API Discovery
key concepts
Azure API Center – 整合 GitHub Copilot Chat
如果只是資料庫簡單的 CRUD 怎麼做?
結論
• 設計
• Typespec 寫規格
• oasdiff 審規格
• 開發
• Mock API
• Kiota 產生呼叫的 API
• Data API Builder (DAB) DB as API
• 維運
• Azure API Center 管理 API
• Azure API Management Gateway 服務
50
@Alan Tsai 的學習筆記

More Related Content

PDF
拒絕再寫無效規格,來學學實例化需求! (Agile Summit TW 2023)
PDF
從 GitHub Copilot 到 Enterprise Copilot:打造符合企業需求的智能開發助手之路 | .NET Conf 2023 Taiwan
PDF
架構這件事 - Azure 可以幫助什麼 - 如何選擇使用什麼 Azure 服務
PDF
10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
PPTX
Introduction to jenkins
PDF
30分でわかるマイクロサービスアーキテクチャ 第2版
PPTX
Introduction to linux containers
PPTX
Jenkins CI
拒絕再寫無效規格,來學學實例化需求! (Agile Summit TW 2023)
從 GitHub Copilot 到 Enterprise Copilot:打造符合企業需求的智能開發助手之路 | .NET Conf 2023 Taiwan
架構這件事 - Azure 可以幫助什麼 - 如何選擇使用什麼 Azure 服務
10+ Deploys Per Day: Dev and Ops Cooperation at Flickr
Introduction to jenkins
30分でわかるマイクロサービスアーキテクチャ 第2版
Introduction to linux containers
Jenkins CI

What's hot (20)

PDF
Debianの修正はどのように出荷されるか
PDF
OpenShift 4 installation
PDF
【解説】IKE(IIJ Kubernetes Engine):= Vanilla Kubernetes + 何?
 
PDF
Learn O11y from Grafana ecosystem.
PPTX
Kubernetes Introduction
PDF
ソフトウェアパターン概論およびパターンを活用したアーキテクチャ設計
PPTX
CI/CD for React Native
PDF
User Story Mapping
PPTX
Agile Training: Roles and Expectations
PPTX
Jenkins tutorial for beginners
PDF
我的 DevOps 故事
PPTX
Docker 基礎介紹與實戰
PDF
Devops - Microservice and Kubernetes
PPTX
このPHP QAツールがすごい!2019
PPTX
BPM Patterns & Best Practices with OutSystems BPT
PDF
ユーザーインタビューするときは、どうやらゾンビのおでましさ
PDF
過來人經驗 - 在企業中推行 DevOps 前該具備的認知與工具箱
PPTX
XP - Extreme Programming
PDF
Linux KVMではじめるカンタン仮想化入門
PPT
Jenkins Overview
Debianの修正はどのように出荷されるか
OpenShift 4 installation
【解説】IKE(IIJ Kubernetes Engine):= Vanilla Kubernetes + 何?
 
Learn O11y from Grafana ecosystem.
Kubernetes Introduction
ソフトウェアパターン概論およびパターンを活用したアーキテクチャ設計
CI/CD for React Native
User Story Mapping
Agile Training: Roles and Expectations
Jenkins tutorial for beginners
我的 DevOps 故事
Docker 基礎介紹與實戰
Devops - Microservice and Kubernetes
このPHP QAツールがすごい!2019
BPM Patterns & Best Practices with OutSystems BPT
ユーザーインタビューするときは、どうやらゾンビのおでましさ
過來人經驗 - 在企業中推行 DevOps 前該具備的認知與工具箱
XP - Extreme Programming
Linux KVMではじめるカンタン仮想化入門
Jenkins Overview
Ad

Similar to 探索 API 開發的挑戰與解決之道 | .NET Conf 2023 Taiwan (20)

PPTX
20200425 GlobalAzure-Azure API Management-協助邁向Open API及Micro Service架構的好用服務
PPTX
不會 Javascript 沒關係,用 Blazor 來解決前端需求 - 成為 Full Stack .NET 開發者吧 - .NET Conf 2020...
PDF
01 DevOps and Azure DevOps overview
PDF
初探 Prompt Flow 開發生成式 AI 應用的利器 | R-Ladies Taipei
PDF
Global Azure Bootcamp @ 廣州 - 智能聊天機器人四代目
PPTX
2021 Net Conf Taiwan-初探 Azure Communication Service 讓 App 也有視訊、通話、即時聊天、簡訊和電話功能
PDF
03 azure devops pipeline - release
PDF
Kamigo reviews 20191127
PDF
初探 Data API Builder:在幾分鐘內將資料庫轉換成 REST 和 GraphQL 不再是夢想
PDF
02 azure devops pipeline - build
PPTX
2024 Hello World Dev Conference 從觀察到實踐 打造符合公司需求的GitLab DevOps流水線
PDF
iThome Modern Web 2018: 如何打造高效的機器學習平台
PPTX
2024/11/29 DevOps Taiwan #64 : 從初建到進階:打造符合公司需求的混合雲端 GitLab DevOps 流水線
PDF
2023 08 - SRE 實踐與開發平台指南 - 書友見面會
PPTX
Codeigniter 3.0 之 30 分鐘就上手
PPTX
海豚浏览器CTO刘铁锋:Web App发展现状
PPTX
聊天機器人概論 Introduce to chat bot sevices
PPTX
2021 ee大会-旷视ai产品背后的研发效能工具建设
PDF
Langchain and Azure ML and Open AI
PDF
⼤語⾔模型 LLM 應⽤開發入⾨
20200425 GlobalAzure-Azure API Management-協助邁向Open API及Micro Service架構的好用服務
不會 Javascript 沒關係,用 Blazor 來解決前端需求 - 成為 Full Stack .NET 開發者吧 - .NET Conf 2020...
01 DevOps and Azure DevOps overview
初探 Prompt Flow 開發生成式 AI 應用的利器 | R-Ladies Taipei
Global Azure Bootcamp @ 廣州 - 智能聊天機器人四代目
2021 Net Conf Taiwan-初探 Azure Communication Service 讓 App 也有視訊、通話、即時聊天、簡訊和電話功能
03 azure devops pipeline - release
Kamigo reviews 20191127
初探 Data API Builder:在幾分鐘內將資料庫轉換成 REST 和 GraphQL 不再是夢想
02 azure devops pipeline - build
2024 Hello World Dev Conference 從觀察到實踐 打造符合公司需求的GitLab DevOps流水線
iThome Modern Web 2018: 如何打造高效的機器學習平台
2024/11/29 DevOps Taiwan #64 : 從初建到進階:打造符合公司需求的混合雲端 GitLab DevOps 流水線
2023 08 - SRE 實踐與開發平台指南 - 書友見面會
Codeigniter 3.0 之 30 分鐘就上手
海豚浏览器CTO刘铁锋:Web App发展现状
聊天機器人概論 Introduce to chat bot sevices
2021 ee大会-旷视ai产品背后的研发效能工具建设
Langchain and Azure ML and Open AI
⼤語⾔模型 LLM 應⽤開發入⾨
Ad

More from Alan Tsai (20)

PDF
Microsoft Learn AI 挑戰賽-實戰三 MLOps | Alan Tsai
PDF
Visual Studio 開發密技大補帖 | Study4.TW 2021 小聚#2
PPTX
我和阿九(Azure)有約 17 Azure Sql Database 基本介紹
PPTX
我和阿九Azure有約 39 Azure Blob Storage 如何省錢? 設定 Access Tier 以及透過 Lifecycle Managem...
PPTX
我和阿九Azure有約 38 Azure Blob Storage 如何省錢? 搞懂Access Tier (Alan Tsai 的學習筆記)
PPTX
我和阿九Azure有約 37 Azure Blob Storage 如何檔案異動自動記錄建立檔案版本?Version Preview (Alan Tsai...
PPTX
我和阿九Azure有約 36 Azure Blob Storage 如何開啟snapshot保留目前狀態 (Alan Tsai的學習筆記)
PPTX
我和阿九Azure有約 35 Azure Blob Storage 如何開啟 Soft Delete?避免誤刪檔案 (Alan Tsai的學習筆記)
PPTX
我和阿九Azure有約 34 Azure File Storage 什麼時候適合用Azure File? File vs Disk Storage (Al...
PPTX
我和阿九Azure有約 33 Azure File Storage 什麼時候適合用Azure File? File vs Blob (Alan Tsai的...
PPTX
我和阿九Azure有約 32 Azure File Storage 介紹 (Alan Tsai的學習筆記)
PPTX
Azure Taiwan - Keep azure cost down (Azure 成本管控)
PPTX
我和阿九(Azure)有約 31 Azure Blob Storage 使用azcopy進行自動化作業 (Alan Tsai 的學習筆記)
PPTX
Insider Dev Tour Taipei 2019 - Future proof your desktop apps with .net core
PPTX
2018 .NET Conf - 利用Machine Learning .NET整合機器學習至應用程式
PPTX
2018 beijing azure bootcamp-azure migration - 2018 北京 azure bootcamp azure 搬遷...
PPTX
用Octopus deploy做自動部署 - 快速上手
PDF
.Net core 與 .net standard 實戰教學 開發指南
PPTX
電子內容管理 使用Git 與 github 2
PPTX
電子內容管理 使用Git 與 github 1
Microsoft Learn AI 挑戰賽-實戰三 MLOps | Alan Tsai
Visual Studio 開發密技大補帖 | Study4.TW 2021 小聚#2
我和阿九(Azure)有約 17 Azure Sql Database 基本介紹
我和阿九Azure有約 39 Azure Blob Storage 如何省錢? 設定 Access Tier 以及透過 Lifecycle Managem...
我和阿九Azure有約 38 Azure Blob Storage 如何省錢? 搞懂Access Tier (Alan Tsai 的學習筆記)
我和阿九Azure有約 37 Azure Blob Storage 如何檔案異動自動記錄建立檔案版本?Version Preview (Alan Tsai...
我和阿九Azure有約 36 Azure Blob Storage 如何開啟snapshot保留目前狀態 (Alan Tsai的學習筆記)
我和阿九Azure有約 35 Azure Blob Storage 如何開啟 Soft Delete?避免誤刪檔案 (Alan Tsai的學習筆記)
我和阿九Azure有約 34 Azure File Storage 什麼時候適合用Azure File? File vs Disk Storage (Al...
我和阿九Azure有約 33 Azure File Storage 什麼時候適合用Azure File? File vs Blob (Alan Tsai的...
我和阿九Azure有約 32 Azure File Storage 介紹 (Alan Tsai的學習筆記)
Azure Taiwan - Keep azure cost down (Azure 成本管控)
我和阿九(Azure)有約 31 Azure Blob Storage 使用azcopy進行自動化作業 (Alan Tsai 的學習筆記)
Insider Dev Tour Taipei 2019 - Future proof your desktop apps with .net core
2018 .NET Conf - 利用Machine Learning .NET整合機器學習至應用程式
2018 beijing azure bootcamp-azure migration - 2018 北京 azure bootcamp azure 搬遷...
用Octopus deploy做自動部署 - 快速上手
.Net core 與 .net standard 實戰教學 開發指南
電子內容管理 使用Git 與 github 2
電子內容管理 使用Git 與 github 1

探索 API 開發的挑戰與解決之道 | .NET Conf 2023 Taiwan