Postman Mock Server로 팀 프로젝트의 개발 속도와 갈등을 개선하기

카우치코딩·2021년 12월 21일
32

포트폴리오강의

목록 보기
17/20
post-thumbnail

이번 포스팅에서는 팀 개발 시 개발의 효율을 개선을 해주는 솔루션인 Mock Server에 대해서 설명하고, Postman을 통해서 Mock Server를 만드는 방법에 대해서 알아보겠습니다.

Mock Server는 왜 사용할까?

프로젝트의 개발 효율을 저해시키는 요소에는 정말 여러가지가 있습니다. Mock Server는 개발 효율을 저해시키는 요소 중에 개발 병목현상불명확한 커뮤니케이션을 해결할 수 있는 좋은 솔루션입니다.

여기 백엔드 개발자 A와 프론트엔드 개발자 B가 같이 개발을 하는 개발 프로젝트가 있습니다. 프론트엔드 개발자 B는 개발자 A가 API를 만들어주면 만들어진 API에 대한 프론트엔드 기능을 구현을 하는 형식으로 개발을 진행합니다.

그런데 이 회사에는 개발 테스트 환경과, 배포 환경을 만들 수 있는 사람이 A씨 밖에 없다고 합시다. 그래도 A씨는 개발속도가 빨라 본인 생각에는 테스트 환경과, 배포 환경을 자신의 업무에 더해도 일정에 영향이 없을 것이라 생각해서 개발 전에 개발환경도 구축하기로 하였습니다.

그러나 A의 개발 시작 시간이 느려지자 B씨의 개발도 같이 늦어질 수 밖에 없었고, 프로젝트는 기간을 맞추지 못하였고 실패하였습니다. A와 B는 서로의 잘못을 이야기하며 책임을 떠넘기려고합니다.

왜 이런 문제가 생겼을까요? 앞선 프로젝트의 가장 큰 문제는 개발의 병목현상입니다. 실제로는 A씨와 B씨는 개발에 들어간 시간이 거이 비슷합니다. 그러나 B씨의 개발과정은 A씨의 개발 결과에 크게 영향을 받습니다. 만약 A씨가 속도가 빠르지 못한 개발자이거나, 앞선 사례처럼 많은 업무가 있어 B씨에게 필요한 업무가 먼저 처리되지 못한다면 전체적인 개발 속도가 느려질 수 밖에 없습니다. 모든 개발자의 업무는 독립적으로 유지해 주어야 팀 예기치 못한 상황에서도 업무를 무사히 끝 마칠 수 있습니다.

이러한 문제를 해결하기 위해 할 수 있는 솔루션이 바로 Mock(모조품)입니다. 프로젝트에서는 개발에 들어가기전 각각의 팀이나 개발자의 결과물의 인터페이스를 정의합니다. 가장 많이 하는 것은 프론트엔드와 백엔드 개발자의 소통읠 위해 HTTP API를 설계하는 것이죠. 그 후에 자신이 개발 범위에 의존성이 있는 컴포넌트에 정해진 요청에 정해진 응답을 해주는 Mock을 만들어주고 개발을 진행합니다.

이렇게 Mock을 만들어 개발을 하면 다른 개발자의 결과물에 영향을 최소한으로 받으면서 개발을 할 수 있습니다. 특별히 Mock Server는 HTTP API를 Mock으로 만든 결과물 입니다. 사전에 API의 요청과 응답의 Spec을 정의하면 Mock Server는 Spec에 정의된 응답을 보내줍니다.
이렇게 Mock Server를 사전에 만들면 프론트엔드 개발자는 백엔드 개발자의 API개발 속도나 순서에 영향을 받지 않고 개발을 진행할 수 있습니다.

Postman으로 Mock Server 만들기

Postman은 정말 많이 사용되는 API 테스팅 도구입니다. GUI를 통해 원하는 주소에 HTTP 요청을 할 수 있죠. 최근에는 HTTP 메세지를 보내는 기능 뿐아니라 API 개발에 대한 다양한 도구들을 적으로 제공하고 있습니다. 대표적인 기능이 API DocumentationMockServer이죠.

Postman 공식 홈페이지에 방문해서 설치와 가입을 진행해봅시다.

앞으로 Collection을 통해 API리스트를 만들고, Collection의 API를 통해 Mock Server를 만들어보겠습니다.

1. 새로운 workspace 생성하기

Postman을 킨 후, Workspace를 눌려 새로운 워크스페이스를 생성해 봅시다. 아래 사진처럼 workspace를 눌러 새로운 워크스페이스를 만드시면 됩니다. 본 예제에서는 postman-sample이라는 이름으로 만들었습니다.

2. Collection 생성하기

Collection은 Postman에서 API의 목록을 관리를 도와주는 기능입니다. Collection에 API리스트를 등록하고, 한번 만들어진 Collection을 다른사람과 공유할 수 있습니다.
workspace에서 +버튼을 눌러 새로운 Collection을 생성해 봅시다.

저는 Sample이라는 이름으로 Collection을 만들었습니다.

3. 요청 추가하기

새로만들어진 Collection에서 마우스 오른쪽 버튼을 눌러 Add Request를 통해 새로운 Request를 생성해 봅시다.

sample List를 가져오는 API /samples를 다음 그림과 같이 만들었습니다. 이때 http주소를 {{url}}로 설정해 줍시다. 이유는 추후에 알려드리겠습니다.
Postman 요청에서는 Method, Parameter, Header, Authorization, Body등을 설정할 수 있습니다.

4. 응답 예제 추가하기

이제 요청에 따른 응답 예제를 추가해봅시다. 요청에 따른 응답 설정은 Add Example을 통해 할 수 있습니다.

여기서 만든 Example은 Postman에서 API 문서를 만들때 응답 예제로 보여줄 수 있으며 Mock Server에서 특정 요청에 대한 응답으로 보여줄 수 있습니다.

Add Example을 눌러 예제를 추가해봅시다.

아래 응답에 간단한 응답을 추가하면 해당 응답이 MockServer에서 사용할 수 있습니다.

5. mock server 만들기

이제 mock server를 만들어 봅시다. Collection에서 오른쪽 버튼을 눌러 Mock collection을 선택해 줍시다.

server name을 sample로 설정하고 진행을 합니다. 지금은 Environment를 설정한 적이 없으므로 No Environment로 선택하고, 다음을 누릅시다.

-> 만약 팀원만 사용할 수 있는 MockServer를 만ㄷ를러면 Make mock server private를 눌러 활성화 합니다. (이때 요청마다 API키를 x-api-key 헤더에 API key를 넣어주어야합니다.)

-> 네트워크 딜레이를 만들어서 테스트하고 싶으면 아래 Simulate fixed network delay를 눌러서 딜레이를 추가해줍니디ㅏ.

이제 mock server가 완료되었습니다. mock server의 주소를 확인하고 사용하면 됩니다.

6. 테스트 하기

먼저 테스트를 하기 위해서는 postman envirnoment를 설정해 {{url}} 을 mock server의 주소로 연결해주어야 합니다.

environments에 들어가보면 우리가 만든 Mock server 의 이름으로 하나 environment가 만들어졌을 것입니다. Environments의 환경변수는 postman에서 url이나 body에 메세지를 보낼때 {{ 변수명 }}으로 사용할 수 있습니다.

이제 다시 Request로 들어와 Send를 누르면 정상적으로 응답이 오는걸 확인 할 수 있습니다.

7. 요청에 따른 응답 분기 처리하기

우리가 지금까지 만든 응답은 하나의 API 요청에 하나의 응답만을 기술하였습니다. 그러나 우리는 요청 메세지에 따라서 다른 응답을 받아야하고, 에러 및 예외처리도 Mock을 해야 정확하게 데이터를 추가할 수 있습니다.

3~4의 과정을 반복해 하나의 sample 하나를 가져오는 GetSample api를 만들어 봅시다.


request에는 파라미터를 <id>로 하였고 실제 예제에서는 실제 <id>를 지워줍시다.

테스트시 제대로 나오는 것을 확인 할 수 있습니다.

이제 특정 id로 보내면 not found error가 나오도록 예제를 만들어 보겠습니다. /samples/5로 메세지를 보내면 notfound error가 나오게 해보죠.


url을 /samples/5로 보내고 status code를 404로 변경하였습니다. 응답메세지도 그에 따라 변경하였구요.

이제 저장을하고 메세지를 보내보면 404응답이 오는 것을 확인 할 수 있습니다.

8. API 문서를 확인하고 Deploy하기

mock server에 들어가면 view documentation을 통해 mock server의 api문서를 볼 수 있습니다.

publish를 눌러 서 인터넷에 올릴 수도 있습니다. 외부 공개용 문서일 경우 environments를 변경해 url을 실 서버 url이 나오도록 변경해 주시면 됩니다.

여기서 샘플 코드를 확인해보세요

About Couchcoding

카우치코딩에서는 1:1 코딩 문제해결 멘토링 서비스입니다. 가르치는데 관심있는 멘토분들이나 문제해결이 필요한 멘티분들 방문해주세요~
또한 별도로 6주 포트폴리오 수업을 진행중에있습니다. 혼자 포트폴리오 준비를 하는데 어려움이 있으면 관심가져주세요~

profile
포트폴리오 수업 & 코딩 멘토링 서비스 카우치코딩입니다.

0개의 댓글