본문으로 건너뛰기
  1. 포스트/

OpenAPI 우선 개발: 프론트엔드와 백엔드를 나란히 달리게 하기

· loading · loading ·
인재덕
작성자
인재덕
서울에 거주하는 리더 겸 소프트웨어 엔지니어
OpenApi - 이 글은 시리즈의 일부입니다.
부분 1: 이 글

지금까지 본 것 중 일정을 가장 확실하게 망치는 건 어려운 엔지니어링이 아닙니다. “거의 다 됐다"는 엔드포인트를 프론트엔드가 하염없이 기다리는 상황이죠. 회사에서 정착시킨 해법은 지루하지만 잘 듣습니다. 코드를 쓰기 전에 OpenAPI로 API 계약부터 합의하는 겁니다.

기다림의 게임
#

전통적인 흐름은 직렬입니다. 백엔드가 API를 설계하고 구현한 뒤, 엔드포인트가 실제로 동작해야 프론트엔드가 통합을 시작합니다. 백엔드의 지연은 전부 프론트엔드 일정에 그대로 얹히는데, 릴리스 날짜가 적혀 있는 곳이 대개 프론트엔드 일정표입니다.

코드보다 계약이 먼저
#

스키마 우선 흐름에서는 양쪽이 거의 동시에 출발합니다. 코드가 한 줄도 없는 시점에 API 구조를 OpenAPI 스키마로 적어 둡니다. 모든 엔드포인트, 요청·응답 모델, 인증 방식, 에러 코드까지요. 이 문서가 프론트엔드와 백엔드 사이의 계약서가 됩니다.

효과는 바로 나타납니다. 만들기 전에 모두가 기능을 같은 모양으로 이해하게 됩니다. 백엔드가 구현 중인 동안 프론트엔드는 UI를 만들 수 있고요. 합의된 단일 진실 공급원 하나만 고치면 되니 변경도 빨리 돕니다. 게다가 스키마에서 바로 목 서버를 생성할 수 있어서, 진짜 엔드포인트가 하나도 없는 단계부터 프론트엔드 테스트가 시작됩니다.

실제로 돌리는 순서
#

  1. 요구사항을 모읍니다. 뭘 만들든 똑같죠.
  2. 스키마를 설계합니다. 엔드포인트, 요청/응답 모델, 인증, 에러 코드.
  3. 프론트엔드와 백엔드 양쪽이 함께 리뷰합니다. 계약이 제값을 하는 순간이 바로 여기입니다.
  4. 목 서버를 생성하고(Swagger, Postman 둘 다 됩니다) 프론트엔드는 그걸 상대로 통합을 진행합니다.
  5. 백엔드는 같은 스키마에 맞춰 진짜 엔드포인트를 구현합니다.
  6. 완성되는 대로 목을 진짜 엔드포인트로 갈아 끼우고, 계약이 지켜지는지 계속 테스트합니다.
  7. 대화를 이어갑니다. 스키마는 살아 있는 문서지 석판이 아니니까요.

걸리는 부분
#

공짜는 아닙니다. 꼼꼼한 스키마를 미리 쓰는 데는 실제로 시간이 듭니다. 요구사항이 바뀌면 스키마부터 고쳐야 하고, 그 파장은 두 팀 모두에 미칩니다. 그리고 전원이 OpenAPI와 주변 도구에 최소한의 감은 갖고 있어야 하죠.

그래도 이 선행 투자가, 그 덕에 막을 수 있는 통합 지옥에 지는 걸 본 적이 없습니다. 프론트엔드는 첫날부터 달리기 시작하고, 논쟁은 깨진 빌드가 아니라 문서 위에서 벌어지게 됩니다.

OpenApi - 이 글은 시리즈의 일부입니다.
부분 1: 이 글