Bruno는 요청 중심(request-first)인가요? 네, 그렇습니다. Bruno는 HTTP 요청을 작성하고, 구성하고, 보내는 것에 중점을 둡니다. 컬렉션을 만들고, 요청을 추가하고, `.bru` 파일에 작성하고, 실행하고, 이 모든 것을 Git에서 버전 관리합니다. 이러한 모델은 빠르고 Git 친화적이며, 이미 존재하는 API를 탐색할 때 진정한 즐거움을 선사합니다.
그러나 "요청 중심(request-first)"과 "설계 중심(design-first)"은 서로 다른 질문에 답합니다. 요청 중심은 이 엔드포인트를 어떻게 호출해야 하는가?를 묻습니다. 설계 중심은 누군가 이를 처리할 코드를 작성하기 전에 이 엔드포인트는 어떤 모습이어야 하는가?를 묻습니다. 이 두 질문 사이의 간극은 새로운 또는 공유 API를 구축하는 팀들이 마찰을 느끼기 시작하는 지점입니다. 이 글은 Bruno의 요청 중심 대 설계 중심의 장단점을 솔직하게 다루고, OpenAPI 기반의 설계 중심 워크플로가 가치를 발휘하는 지점을 보여줍니다.
요청 중심(Request-first) vs 설계 중심(Design-first), 간단히
두 접근 방식은 경쟁자라기보다는 다른 시작점에 가깝습니다. 다음은 간략한 설명입니다.
| 차원 | 요청 중심 (Bruno) | 설계 중심 (OpenAPI 기반) |
|---|---|---|
| 시작 아티팩트 | 보낼 수 있는 요청 | 계약 (OpenAPI 사양) |
| 가장 적합한 경우 | 기존 API 탐색 및 테스트 | 코드 작성 전 새/공유 API 설계 |
| 진실의 원천 | 요청 컬렉션 | 사양 |
| 팀 간 검토 | 엔드포인트가 존재한 후 | 서버 코드 한 줄 작성 전 |
| 시각적 디자인 표면 | 기본적으로 없음 | 시각적 디자이너 + 스키마 편집기 |
| 불일치 위험 | 컬렉션이 실제 API보다 뒤처질 수 있음 | 사양이 단일 계약으로 유지됨 |
| Git 통합 | 강력함 (평문 .bru) |
도구가 사양을 Git과 동기화할 때 강력함 |
어떤 열도 "틀렸다"고 할 수 없습니다. 올바른 선택은 API가 이미 존재하는지, 아니면 지금 정의하는지에 따라 달라집니다.
Bruno의 요청 중심 모델
Bruno는 자신의 역할을 잘 수행하며, 그 역할이 무엇인지 정확히 아는 것이 중요합니다. Bruno는 요청을 사용자가 소유한 폴더에 평문 .bru 파일로 저장합니다. 의무적인 클라우드 계정도, 독점적인 동기화도, 선택 해제해야 하는 백그라운드 원격 측정 기능도 없습니다. API 클라이언트가 나머지 코드베이스처럼 동작하기를 원하는 개발자들에게 이것은 진정한 장점이며, 많은 팀이 채택한 Git-native API 워크플로의 핵심입니다.

Bruno가 빛을 발하는 곳:
- 기존 API 탐색. 실행 중인 서비스에 연결하고, 요청을 보내고, 응답을 검사하고, 반복합니다. 피드백 루프가 빠릅니다.
- 로컬 우선 및 Git 친화적. Diff는 읽기 쉽고, 병합은 깔끔하며, 요청 기록은 코드와 동일한 PR에 존재합니다.
- 스크립팅 및 테스트. 대부분의 엔지니어에게 필요한 일상적인 테스트는 요청 전후 스크립트, 어설션, 환경 변수로 커버됩니다.
- 종속성 없음. 형식은 개방적이며 파일은 사용자 소유입니다.
만약 당신의 작업이 이미 존재하는 API를 사용하고 검증하는 것이라면, 요청 중심(request-first) 방식이 가장 직접적인 경로가 될 것입니다. 우리는 이 Bruno 대안 분석에서 더 광범위한 플랫폼과 비교할 때 이와 같은 내용을 언급했습니다.
설계 또는 계약 계층이 없는 비용
API가 아직 존재하지 않거나, 하나 이상의 팀이 API의 모습에 동의해야 하는 순간에 이러한 장단점이 드러납니다.
시각적 디자이너 없음. 요청 중심 도구는 엔드포인트를 요청으로 표현하며, 리소스, 스키마, 응답 모델로는 표현하지 않습니다. 제품 엔지니어, 백엔드 리더, 프론트엔드 개발자가 핸들러를 작성하기 전에 동일한 리소스 형태를 보고 동의할 수 있는 캔버스가 없습니다. 요청으로 설계한다는 것은 예시로 설계한다는 것을 의미하며, 예시는 구조를 강제하지 않습니다.
계약 불일치(Contract drift). 컬렉션이 진실의 원천인 경우, 이는 누군가가 이미 호출한 내용만 반영합니다. 실제 API는 변경될 수 있고, 필드를 추가하고, 매개변수를 더 이상 사용하지 않거나, 유효성 검사를 강화할 수 있으며, 컬렉션은 테스트가 실패할 때까지 조용히 뒤처집니다. 사양 중심의 워크플로는 이를 뒤집습니다. 즉, 계약이 참조이고 구현은 이에 대해 검사됩니다.
코드 작성 전 팀 간 검토가 더 어려움. 요청 폴더를 검토하는 것은 오늘날 엔드포인트가 어떻게 호출되는지를 알려줍니다. 구현 전에 검토자가 승인할 수 있는 깨끗하고 선언적인 문서를 제공하지 않습니다. 설계 검토를 통해 API 변경 사항을 통제하는 팀의 경우, 일급 계약의 부재는 검토를 더 느리고 즉흥적으로 만듭니다.
이 모든 것이 Bruno를 형편없는 도구로 만드는 것은 아닙니다. 단지 Bruno가 요청 중심(request-first)으로서 적합한 작업이 아닌 곳에서 사용될 때 발생하는 문제입니다.
설계 중심(design-first)이 승리하는 경우
설계 중심은 특히 세 가지 상황에서 효과를 발휘합니다.
- 그린필드(Greenfield) API. 아직 아무것도 존재하지 않을 때, 사양 자체가 디자인입니다. 리소스, 스키마, 오류 형태를 한 번 정의한 다음, 나중에 요청에서 역설계하는 대신 단일 계약에서 서버 스텁, 목업, 문서를 생성합니다.
- 다중 팀 계약. 백엔드 팀과 하나 이상의 클라이언트 팀이 동의해야 할 때, OpenAPI 사양은 합의서가 됩니다. 프론트엔드는 실제 엔드포인트를 기다리는 대신, 계약이 승인되는 즉시 목업을 기반으로 구축할 수 있으며, 이는 백엔드 구현과 병렬로 진행됩니다.
- 공개 API. 외부 개발자가 당신에게 의존할 때, 안정성과 명확한 문서는 제품 그 자체입니다. 잘 관리된 계약은 생성된 참조 문서, 버전 관리 규율, 의도적으로 주요 변경 사항을 알리는 방법을 제공합니다.

공통점: 설계 중심은 API가 코드를 작성하기 전에 합의가 필요한 공유 인터페이스일 때, 즉 출시 후에 단순히 탐색하는 서비스가 아닐 때 승리합니다.
Apidog의 설계 중심(Design-first) 및 사양 우선(Spec-First) 모드
Apidog는 설계 중심(design-first)으로 구축되었으며, 여기서 중요한 점은 이를 위해 OpenAPI 기반의 Git 친화적인 경험을 포기할 필요가 없다는 것입니다.

동일한 프로젝트에서 두 가지 방식으로 작업할 수 있습니다. 엔드포인트, 요청 및 응답 스키마, 재사용 가능한 구성 요소를 YAML을 직접 작성하지 않고 정의하는 시각적 디자이너가 있으며, 이는 대부분의 사람들이 "설계 중심"이라고 들었을 때 상상하는 것입니다. 그리고 사양을 진정한 진실의 원천으로 삼아 OpenAPI 문서를 직접 작성하는 코드 편집기인 사양 우선(Spec-First) 모드가 있습니다. 이 두 가지는 동기화 상태를 유지하므로, 백엔드 엔지니어는 원시 OpenAPI에서 작업하고 제품 엔지니어는 캔버스에서 작업하면서도 동일한 계약을 편집할 수 있습니다.
사양 우선(Spec-First) 모드는 양방향 Git 동기화도 지원합니다. 사양은 실제 파일로 저장소에 존재하며, 변경 사항은 양방향으로 흐르고, API 디자인은 코드와 동일한 풀 리퀘스트 및 검토 과정을 거칩니다. 이것은 Bruno 사용자들이 중요하게 생각하는 Git-native 속성으로, 요청 컬렉션이 아닌 계약에 적용됩니다. 전체 작동 방식은 사양 우선 모드 문서에 설명되어 있습니다.

그 결과는 두 가지 질문을 모두 다루는 하나의 워크플로입니다. 필요할 때 계약을 먼저 설계하고, 엔드포인트가 활성화되었을 때는 요청 중심 클라이언트처럼 테스트할 수 있습니다. 이 모델들이 만나는 지점에 대해 더 자세히 알아보려면 Apidog의 사양 우선(spec-first) 대 설계 중심(design-first)을 참조하세요.
팀 성숙도에 따른 선택
결정하는 간단한 방법: 선호도보다는 API의 수명 주기 단계에 맞는 도구를 선택하세요.
- 단독 또는 소규모 팀, 주로 API 소비. 요청 중심(request-first)으로도 충분합니다. Bruno의 로컬 우선 모델은 방해가 되지 않으며, 필요 없는 공식 계약을 유지하는 오버헤드를 감당할 필요가 없습니다.
- 자체 API를 출시하는 성장하는 팀. 이것이 변곡점입니다. 두 번째 팀이 귀하의 엔드포인트에 의존하게 되면, 비공식적인 컬렉션은 확장성을 잃고 명시적인 계약은 검토 주기와 통합 버그를 줄여주기 시작합니다.
- 공개 또는 많은 내부 API를 가진 성숙한 조직. 설계 중심(design-first)이 사실상 필수입니다. 사양은 거버넌스, 문서화, 온보딩이 동시에 되며, Git 동기화 기능이 있는 OpenAPI 기반 도구는 이를 투명하게 유지합니다.
Bruno의 요청 중심(request-first) 대 설계 중심(design-first)에 대한 솔직한 평가는 취향보다는 성숙도가 일반적으로 결정한다는 것입니다. 팀은 API가 다른 사람들이 의존하는 계약이 됨에 따라 요청 중심에서 시작하여 설계 중심으로 발전하는 경향이 있습니다.
자주 묻는 질문
Bruno는 요청 중심(request-first)인가요, 설계 중심(design-first)인가요?
Bruno는 요청 중심(request-first)입니다. 핵심 모델은 평문 파일로 저장된 요청을 작성하고, 구성하고, 보내는 것이며, 이는 이미 존재하는 API를 탐색하고 테스트하는 데 이상적입니다. API가 구축되기 전에 OpenAPI 계약을 작성하는 데 중점을 두지 않습니다.
Bruno에서 설계 중심(design-first) 작업을 할 수 있나요?
사양 중심 도구가 하는 방식으로는 기본적으로 불가능합니다. Bruno는 시각적 디자이너나 OpenAPI 문서를 진실의 원천으로 삼기보다는 요청에 중점을 둡니다. 코드 작성 전에 계약을 정의하고 검토해야 한다면, 설계 중심의 OpenAPI 기반 도구가 해당 작업에 더 적합합니다.
설계 중심(design-first)으로 가려면 Git 친화성을 포기해야 하나요?
아니요. Git-native 속성, 즉 저장소의 평문 파일, 읽기 쉬운 diff, PR을 통한 검토는 사양 자체에도 적용될 수 있습니다. Apidog의 사양 우선(Spec-First) 모드는 양방향 동기화를 통해 OpenAPI 문서를 저장소에 유지하므로, 설계 중심(design-first)이 Git을 포기하는 것을 의미하지는 않습니다.
