First Design 더욱 잘 활용하기 아하! 이런 오해가 있었구나 결론 오늘 이야기 할 내용은? 1 2 Part 1 : API 에 대한 과거 개발 경험과 문제점 API로부터 고통받는 순간들 실제 경험했던 API 문제점 Part 2 : API FIRST DESIGN 이야기하기 1 2 3 4 5
문서에 따라 코드 구현 API 문서 전달 비즈니스 요구사항 변경으로, 기존 API 를 변경해야 할 때.. 그러나, 이 단계를 SKIP 한 뒤, Frontend 에게 구두나 텍스트를 통해 직접 전달 최종 변경사항이 API 문서에 반영되지 않음 시간이 지나 Frontend 개발자와 불필요한 의사소통을 하는 경우 발생 문서화 도구 이용
콘텐츠 증진 ContentBoosting ContentPromotion 이벤트 / 혜택 콘텐츠 AffiliateContent EventContent 이외, 추후 발견되는 문제 의미하는 바는 같지만, 코드에 사용되는 용어가 다른 문제점 발생 2 실제 경험했던 API 문제점 API 변경사항을 API 명세보다 코드 구현 작업에 중점
콘텐츠 증진 ContentBoosting ContentPromotion 이벤트 / 혜택 콘텐츠 AffiliateContent EventContent 이외, 추후 발견되는 문제 의미하는 바는 같지만, 코드에 사용되는 용어가 다른 문제점 발생 이해관계자들 간 용어에 대한 문맥을 맞추기 위한 불필요한 의사소통이 발생 2 실제 경험했던 API 문제점 API 변경사항을 API 명세보다 코드 구현 작업에 중점
get: … responses: 200 : description: 데이터 전송 성공 content: application/json: example: id: 1L amount: 1000L 계약서 Contract API FIRST DESIGN 정의하기 1 api order contract.yaml
get: … responses: 200 : description: 데이터 전송 성공 content: application/json: example: id: 1L amount: 1000L 계약서 Contract API FIRST DESIGN 정의하기 1 OPEN API Specification OAS
to HTTP APIs which allows both humans and computers to discover and understand the capabilities of the service without access to source code, documentation, or through network traffic inspection. When properly defined, a consumer can understand and interact with the remote service with a minimal amount of implementation logic. : 사람과 컴퓨터가 소스 코드, 문서에 액세스하거나 네트워크 트래픽 검사를 통하지 않고도 서비스의 기능을 발견하고 이해할 수 있도록 하는 언어에 구애 받지 않는 HTTP API 표준 인터페이스 OPEN API Specification 이란? API FIRST DESIGN 정의하기 1
버전, 라이센스 URL 경로, 메서드, 요청, 응답 API 서버 접근 정보 등 재사용 가능한 객체 스키마, 요청, 응답, 파라미터 등 API 그룹화 태깅 API FIRST DESIGN 정의하기 1 OPEN API Specification 생김새 api order contract.yaml
get: … responses: 200 : description: 데이터 전송 성공 content: application/json: example: id: 1L amount: 1000L 계약서 Contract API 명세가 작성된 계약서를 통해 문제점 해결 가능 API FIRST DESIGN 로 문제 해결하기 2 api order contract.yaml
도구 활용 구현 API 문서 전달 API FIRST DESIGN 로 문제 해결하기 2 Backend 개발자 Frontend 개발자 paths: /apis/order: get: … responses: 200 : description: 데이터 전송 성공 content: application/json: example: id: 1L amount: 1000L API FIRST DESIGN 개발 프로세스 api order contract.yaml
도구 활용 구현 API 문서 전달 API FIRST DESIGN 로 문제 해결하기 2 Backend 개발자 Frontend 개발자 이해관계자 토론 및 공유 paths: /apis/order: get: … responses: 200 : description: 데이터 전송 성공 content: application/json: example: id: 1L amount: 1000L API FIRST DESIGN 개발 프로세스 api order contract.yaml
도구 활용 구현 API 문서 전달 API FIRST DESIGN 로 문제 해결하기 2 🚜 Code Generators 📄 API 문서 💻 Mock Server Server implementations Client implementations 🏠 API Gateway API FIRST DESIGN 개발 프로세스
도구 활용 구현 API 문서 전달 개발자 이해관계자 토론 공유 Implements API / 이해 관계자에게 전달 API FIRST DESIGN 로 문제 해결하기 2 CODE FIRST 에서 API FIRST 로 변경 계약서 Contract 계약서 Contract API FIRST DESIGN 개발 프로세스
설계 토론 공유 Open API 도구 활용 구현 API 문서 전달 개발자 이해관계자 토론 공유 Implements API / API / Microservice API FIRST DESIGN 로 문제 해결하기 2 코드 FIRST 에서 API FIRST 로 변경 계약서 Contract API 계약서 Path Method RequestBody ResponseSchema paths: /apis/order: get: … responses: 200 : description: 데이터 전송 성공 content: application/json: example: id: 1L amount: 1000L 서비스 개발의 첫 단계에서..
설계 토론 공유 Open API 도구 활용 구현 API 문서 전달 개발자 이해관계자 토론 공유 Implements API / API / Microservice 배포 API FIRST DESIGN 로 문제 해결하기 2 코드 FIRST 에서 API FIRST 로 변경 계약서 Contract API 계약서 Path Method RequestBody ResponseSchema paths: /apis/order: get: … responses: 200 : description: 데이터 전송 성공 content: application/json: example: id: 1L amount: 1000L 서비스 개발의 첫 단계에서.. 일관된 품질의 API 문서 유지
설계 토론 공유 Open API 도구 활용 구현 API 문서 전달 개발자 이해관계자 토론 공유 Implements API / API FIRST DESIGN 로 문제 해결하기 2 코드 FIRST 에서 API FIRST 로 변경 계약서 Contract paths: /apis/order: get: … responses: 200 : description: 데이터 전송 성공 content: application/json: example: id: 1L amount: 1000L 서비스 개발의 첫 단계에서..
도구 활용 구현 API 문서 전달 개발자 이해관계자 토론 공유 Implements API / API FIRST DESIGN 로 문제 해결하기 2 코드 FIRST 에서 API FIRST 로 변경 paths: /apis/order: get: … responses: 200 : description: 데이터 전송 성공 content: application/json: example: id: 1L amount: 1000L 서비스 개발의 첫 단계에서.. 하나의 API 문서 유지 이해 관계자에게 전달 계약서 Contract 계약서 Contract
설계 토론 공유 API 문서 전달 개발자 이해관계자 토론 공유 Implements API / API FIRST DESIGN 로 문제 해결하기 2 코드 FIRST 에서 API FIRST 로 변경 계약서 Contract paths: /apis/order: get: … responses: 200 : description: 데이터 전송 성공 content: application/json: example: id: 1L amount: 1000L 서비스 개발의 첫 단계에서.. 변경사항 발생 OPEN API 명세서 변경 Open API 도구 활용 구현
설계 토론 공유 API 문서 전달 개발자 이해관계자 토론 공유 Implements API / API FIRST DESIGN 로 문제 해결하기 2 코드 FIRST 에서 API FIRST 로 변경 계약서 Contract paths: /apis/order: get: … responses: 200 : description: 데이터 전송 성공 content: application/json: example: id: 1L amount: 1000L 서비스 개발의 첫 단계에서.. 변경사항 발생 OPEN API 명세서 변경 API 명세서 자체 변경으로 문서 업데이트 불필요 Open API 도구 활용 구현
있다. Backend 개발팀 Frontend 개발팀 이해관계자 OPEN API 명세서 기반의 API 설계 리뷰 ü 어떤 용어를 사용해서 표현할 것인가? ü URL이 내포하고 있는 의미가 적절한가? ü 적절한 요청/응답의 데이터를 가지고 있는가? API FIRST DESIGN 더욱 잘 활용하기
있다. Backend 개발팀 Frontend 개발팀 이해관계자 빠른 API 설계 피드백과 함께 서비스를 만들어 간다 라는 공감대 형성 ü 어떤 용어를 사용해서 표현할 것인가? ü URL이 내포하고 있는 의미가 적절한가? ü 적절한 요청/응답의 데이터를 가지고 있는가? API FIRST DESIGN 더욱 잘 활용하기 OPEN API 명세서 기반의 API 설계 리뷰
Tam, technical co founder of the dictionary site Wordnik. During the development of Wordnik s products, the need for automation of API documentation and client SDK generation became a major source of frustration. Tam designed a simple JSON representation of the API … : 자동화된 API 문서화와 클라이언트 SDK 생성을 필요성으로 Tony Tam 은 API 를 간단한 JSON Yaml 으로 표현을 설계했다. 4 아하! 이런 오해가 있었구나 1. Swagger는 API문서화 도구이다.
4 아하! 이런 오해가 있었구나 Open API 명세서 설계 반복적 설계 토론 공유 Open API 도구 활용 구현 API 문서 전달 개발자 이해관계자 토론 공유 Implements API / Open API 명세 활용 이해 관계자에게 전달 계약서 Contract 계약서 Contract
설계 토론 공유 Open API 도구 활용 구현 API 문서 전달 개발자 이해관계자 토론 공유 Implements API / Open API 명세 활용 이해 관계자에게 전달 계약서 Contract 계약서 Contract 2. API First Design 은 API 을 한번에 결정하는 것이다.