[백앤드 개발자는 필연적으로 프론트 개발자와 합을 맞추며, 어플리케이션을 완성해 가야한다.]
DEMO : https://mocksal.super100.app/
협업을 하게되면, 의외로 발목을 잡는 부분이 서로간의 일정/개발 진행상황등이 맞지 않게 되면서,
어느 한쪽이 개발진행이 뒤쳐지는 상황이 나오게 된다는 것이다.
이 경우, 가장 일반적인 방법은 서버 웹코드상에서 Mock API를 만들어서 제공을 하는 방법이 있다.
실제로 요청,응답 DTO들 또한 추가를 해야하고,
Mocking을 위한 코드를 해당 브랜치에 반영을 해야하니,
코드관리가 지저분해지는것이 단점이다.
또한, 어느 순간 없어질 Mock API에 너무 많은 시간을 할애하게 되는 문제 또한 발생한다.
Mock API는 이런 문제를 해결하고,
스펙정의가 명확하지 않지만, 프론트 개발쪽에서 개발이 가능하도록 API를 빠르게 제공해야할때,
특히 그 힘을 발휘하게 된다.
Mock API기능은 내가 지속적으로 고민을 하던 문제이고, 관심을 갖고 있었던 차에,
25년의 마지막날... (연말에 아이디어가 떠오르다니..)에 완전한 아이디어가 떠올라,
25년 마지막날 밤을 코딩으로 모두 사용하게 되었다..ㅠ (개발에 6시간을 투자)
하지만, 완성된 서비스를 보니, 그럴듯하고 사용성과 아이디어면에서 만족하기에 후회는 없다.
그럼, 내가 만든 Mock API 서비스인, Mocksal (목살)을 소개한다. (이름이 참..ㅎㅎ)


목살은 자바 Agent기능을 이용한 Mock API 서비스이다. 큰 특징은 아래와 같다.
1. Agent기반으로 구동하기에, 서비스코드에 어떤 코드추가등이 필요없다.
2. Mock대상 API를 자동 스캔하여, API들 목록을 어드민에서 보여주고, UI를 통해, Mock api를 on/off할수있다
(UI가 쉽다는 이야기)
3. Mock API에 나만의 로직을 넣을수있다. (단순한 정적값만을 응답하는게 아닌, Mock API도 로직을 넣을수있다)
4. Mock API를 관리하는 ADMIN을 제공한다.

기능중에서 특히,
javascript코드를 이용해, mock api에 로직을 직접 넣을수있는 기능은 정말 마음에 든다.
좀더 유연하고, 의미있는 mock 데이터를 제공할수있는 기회를 제공한다.
위 화면과 같이 스크립트를 작성하는 화면을 어드민에서 제공을 하는데,
왼쪽은 Agent로 구동시킨, 사용자의 API서버에서 API를 자동스캔하고,
해당 API의 요청,응답 파라미터의 정보또한 스캔하여, Mocking할 api의 정보를 보여주게된다.
오른쪽의 스크립트는 onRequest (요청값 조작)와 onResponse (응답값 조작)라는 함수를 제공하고,
해당 함수 안에서 각각 요청 파라미터를 조작하고, 응답 파마리터를 조작할수있게 기능을 제공한다.
예전 기획자의 요청중에 목데이터중에 요청값이 A이면 응답을 1로, 요청값이 B이면 응답을 2로 내려달라는 요청이 있었는데,
이게 단순 정정적으로 내려주는 mock코드로는 상당히 귀찮은 구현으로 제공해야하기에.. 고민을 했던 부분이 있다
(Mock로직을 실제 API에 코드를 작성해서 제공해야하다니..)
다행이 기존부터, 자바에 빌트인으로 제공하는 nashorn 자바스크립트 컴파일러가 있는것을 알고있었기에,
위와같은 아이디어를 접목하여 mock api에 로직을 사용자가 추가하여 적용할수있게 만들었다.
그리고 어드민에서 제공하는 기능중에, 에이전트가 현재 동작중인지 아닌지를 알수있는 현황 대시보드를 제공하는데,
여기서도 깜찍한 아이디어로 간단히 구현을 하게 되었다.
에이전트가 시작되는 이벤트에서, Y 마킹을 하고, 종료되는 이벤트에서 N 마킹을 하여, 에이전트 동작여부를 보여줄수도있지만,
이경우,
강제종료를 하는경우는 종료 이벤트를 받지못하고 종료되기에, 계속 Y로 (에이전트 동작하고있어요) 표시가 되는 문제가 있다.
이 부분은 고민을 하다가, 모니터링 스레드를 하나 동작시키고, 해당 스레드에서는 일정시간(5초)으로 타임을 업데이트하게 했다. 그리고 ADMIN에서는 5초간격으로 해당 타임을 API를 통해 요청하고, 현재시간과 해당 타임의 간격이 5초이상 벌어진다면,
에이전트가 죽은것으로 간주하고 N으로 보여주게 로직을 간단히 짜서, 해결하였다.
'MY어플리케이션' 카테고리의 다른 글
| [자작] 실시간 이벤트 플랫폼 - Stationery-ink (0) | 2026.01.10 |
|---|---|
| [자작] 암화화폐 거래소 - Silverstring (0) | 2026.01.10 |
| [자작] 맛집추천 - 판교맛집 (0) | 2026.01.10 |
| [자작] 경제지표 제공 서비스 - 모두의리치 (0) | 2026.01.10 |
| [자작] 블록체인 모니터링 서비스 - Crypto-Sherlock (1) | 2026.01.09 |
