본문 바로가기

카테고리 없음

api개발시 프론트엔드 <->백엔드의 독립적인 개발,소통일원화를위한 - api 솔루션 도입기(apidog)

배경

지금까지의 개발프레스는 다음과 같다

  1. notion으로 백엔드와 프론드가 api명세를 정의
  2. 개발진행
    • 프론트엔드: msw등 자체 mocking 환경 구성
    • 백엔드: Postman으로 api개발 후 swagger에 배포
  3. 개발 url에서 정상동작 확인
  4. 배포

여기서 겪었던 문제점으로

  1. 개발과정에서 api명세가 수정되었을 때 특정 툴에만 수정사항이 반영됨
    • 동일한 작업을 내가아닌 다른 동료가 해야하는 상황이 발생하였을때 명세가 수정되어있지않음
    • 결국 개발서버에서 테스트를 할 때까지 모르다가 확인 후 수정하여 다시 배포하는 번거로움이 발생
  2. 구두로 소통 후 각자의 개발환경에서만 수정하고 개발을 진행하게 됨
  3. 시간이 지나면서 개개인마다 주로 참고하는 툴들이 달라짐
    • 개발팀 내 일관성이 떨어져 불필요한 소통비용이 발생함
  4. notion 같은 경우 정해진 양식이 없다 보니 작성하는 사람마다 작성 스타일이 달라 일관성이 떨어짐
  5. 프론트입장에서 api명세를 보고 mock데이터를 만들고 api 요청, 응답 인터페이스를 만드는 일련의 보일러플레이트 코드 작업이 귀찮음

→ 개발하는 과정에서 api명세에 수정사항이 발생했을 때마다 관련된 모든 툴들을 계속 수정하는 것이 귀찮고 시간이 오래 걸리는데 좀 더 효율적으로 api를 관리할 수 있는 방법은 없을까?

Apidog을 고려하게 된 이유

Apidog은 API 설계, 개발, 테스트, 관리, 문서화 및 모킹을 위해 설계된 포괄적인 api협업 플랫폼이다.

  1. api를 개발하는 과정에서 명세를 동시에 수정할 수 있어, api에 대한 single source of truth를 지킬 수 있음(프론트엔드,백엔드)
  2. 코드레벨단에서 모킹환경을 세팅해 줄 필요 없음(프론트엔드)
  3. 데이터모델을 재사용할 수 있어 특정 api의 응답 스키마를 빠르게 작성할 수 있음(백엔드)
  4. 응답 목데이터 json파일을 일일이 작성할 필요 없이 스키마에 따라 자동생성(프론트엔드,백엔드)
  5. api document를 api명세기반으로 자동 생성해 줌으로써 팀 내 일관성을 유지시켜줌(프론트엔드,백엔드)

Apidog을 적용했을 때의 개발 프로세스

1) api 명세정의하기

기획안 및 디자인시안을 확인하면서 api스펙을 정의

 

응답 스키마 설정

필드값의 타입을 지정할 수 있고, 필드명에 맞는 대략적인 목데이터를 자체적으로 파악하여 생성해 줌으로, 추후 목데이터를 생성하는데 시간을 단축시켜 줌(내부적으로 Faker.js를 사용)

 

또한 자주 사용되는 데이터모델은 저장해 놓고 재사용이 가능하여 응답 예시를 작성하는데 시간을 단축할 수 있음.

자주사용되는 데이터 schema재사용
데이터 schema불러오기

api응답값 자동생성

응답 json자동 생성

저장 후에 보이는 응답값

저장후에 보여지는 응답값

2) 개발팀 검토

  • 개발팀 내에서 리뷰를 하면서 api의 use case를 정의

해당 api에 정의된 use case3가지

3) 개발 시작(프론트엔드,백엔드)

  • 프론트엔드: local mock server, 자체제공 cloud mock server의  mockapi를 호출하여 화면 개발
    • 2단계에서 정의한 use case를 모두 통과하는 것을 목표로 개발
    • 개발 후 api테스트 자동화기능을 사용하여 검증 가능백엔드
  • 개발과정에서  api수정사항이 발생하더라도, api스펙에 수정된 사항이 자동으로 반영됨으로써 api의 single source of truth를 유지할 수 있게됨(프론트 ↔ 백엔드 소통비용 감소)

4) 개발이 모두 완료되면 개발 서버 url로 변경 후 브라우저에서 테스트 진행

5) api 문서 배포

작성된 api를 기반으로 자동생성해주는 api문서

결과

api의 관리포인트의 일원화관점에서는 작용하였으나, 아무래도 커뮤니티가 매우 작고 출시한 지 얼마 안 된 툴이기 때문에 새로운 팀원이 합류했을 때 툴에 대한 사용법을 이해하는데 시간이 다소 걸렸다.

예를 들어 백엔드개발자는 기존에 Postman개발에 익숙하기 때문에 그렇게 큰 이질감은 없었지만, 프론트엔드 개발자 중에선 단순 mock환경은 쉽게 적용했지만, 세밀한 mock환경을 세팅하는데 다소 시간이 걸리는 상황이 발생했었다.