2024. 2. 10. 19:49ㆍTechnology/Others
백엔드 개발을 하다 보면 쉽게 화두 될 수 있는 ‘어떤 것부터 개발해?’에 대해 경험을 공유해보고자 한다.
프론트와 백 사이의 체계적인 업무를 구성해 보는 것이 처음이라 ‘원래’ 어떻게들 개발하는지 모른다.
그렇기 때문에 내가 경험하고 주도하고자 하는 방법이 정답은 아님을, 하나의 경험 공유일 뿐임을 당부한다.
1. 너와 나의 연결고리
개발해야 할 내용이 분명해지면 일단 같이 개발할 동료와 이해한 바를 확인하고 싱크 한다.
서로 알고 있는 개념 하나씩 도메인 이름을 정하고, 네모에 그려 넣는다.
그리면서 연관된 다른 개념의 도메인과 연결한다.
이때부터 각자 어떻게 이해했는지 알 수 있게 된다.
🐻: “Member는 여러 개의 Profile을 가질 수 있으니까..”
🐹: “엇, 하나의 Profile만 가질 수 있는 것 아니에요? A에서 만든 Profile 하나로 B, C에서 가져다 쓴다고 이해했어요.”
기획이 나왔는데 이런 상황이 왜 발생하냐면... 기획서도 기획자도 없기 때문이다.🤓
그래서 ‘우리 팀’에 첫 시작으로 꼭 필요한 단계, 너와 나의 이해를 맞추는 과정이 있다.

무튼 50%는 기획 싱크를 같이 하면서 기반이 될 최소한의 도메인 설계를 한눈에 보이도록 정리한다.
하면서 어쩔 수 없이 미비한 기획에 대한 질문도 생기니까 기획 검토도 되고 일석이조이다.
이렇게 정리한 내용 토대로 도메인 설계 문서를 꼼꼼히 작성한다.

도메인에 필요한 요소들을 정하고, 도메인 로직으로 구분하여 정의할 주요 사항들을 최대한 자세히 적는다.
2. Mock 마른 프론트
백오피스 개발과 동시에 진행하게 된 백엔드와 달리, 기획 의사결정이 이루어지는 프로덕트 회의에 참여하는 프론트 팀은 비교적 빠르게 결정된 내용을 인지하고 UI를 그려내었다.
이런 프론트 팀은 UI를 그리는 족족 Mock Server가 있어주면 유연하게 순서와 방향을 조정해 가며 개발을 할 수 있을 것이다.
그니까 Mock이 마려운 프론트를 위해, 어쩌면 수순인 API 설계 및 해당 설계 기반 Mock Server가 필요해진다.
여기서 미니 싱크를 한 번 하고 간다.
앞서 말한 것처럼 서로 이해한 기획이 맞는지 시냅스처럼 원활한 소통이 가능한 상태로 만드는 것이다.
‘언제 어디서 어떻게’ API를 사용할지 간단히 정하고 리스트를 뽑아내면, Controller에 TODO() 메소드를 활용해 껍데기를 만든다.

해당 API의 핵심 비즈니스 로직 덩어리를 제외하고 URI 이름 명명과 Request 값, 반환해 줄 Response 값 설계가 가능하다.
이 내용을 OAS(OpenAPI Sepecification)에 맞게 Swagger Editor*를 이용해 문서화한다.
상황상 명세한 스펙에 맞게 Mock Server를 구축해야 했는데, Swagger Editor가 Mock Server Integration을 제공해 주어서 RestDocs 대신 Swagger 이용을 선택했다.
Integrations에서 API Auto Mocking을 선택하고,

Editor에 발급된 주소를 추가해주기만 하면 된다.

발행된 문서 안에서 해당 Mock Server 주소로 Try it out도 가능하다.

3. TDD (TODO() Develop)
마지막으로 껍데기에 속을 알차게 채워 넣으면 된다.
TODO() 자리를 TDD(Test Driven Develop)로 앞서 싱크 했던 내용을 코드에 녹여낸다.
이때 중요한 것은 기술적 고민도 놓치지 않는 것이다.
DIP 개념을 적용해 보거나, Instancio* 같은 새로운 라이브러리도 써보는 등 말이다.
이상적이라고 생각하는 TDD 사이클에 대한 글은 지난 글로 대신한다.
🔗TDD - Test Scenario, Test Case, Test Code
나는 붕어빵 머리부터 먹는다.
가끔 내킬 땐 꼬리부터 먹기도 한다.
맛은 똑같다.
그러니까 개발도 취향껏, 소신껏 방향을 잡아나가면 된다.🐟
*Swagger Editor: 더 모던한 디자인의 New Swagger Editor를 쓰고 싶었는데, Mock Server Integration 제공이 안 되어서 못 썼다.
*Instancio: Fixture Object를 만들 때 활용하는 라이브러리 중 하나로, 다음 글의 주제가 될 예정이다.
'Technology > Others' 카테고리의 다른 글
| T라 미숙해 (feat. 제네릭, 어디까지 써봤니?) - 2 (1) | 2024.09.08 |
|---|---|
| T라 미숙해 (feat. 제네릭, 어디까지 써봤니?) - 1 (3) | 2024.09.08 |
| 선배 Proxy 고려해서 equals 오버라이드 해주세요, 탕탕 후루후루~ (2) | 2024.07.26 |
| Test Code 500개 도달 여정 (feat. DIP, 맞다이로 드루와) (5) | 2024.05.14 |
| TDD - Test Scenario, Test Case, Test Code (0) | 2023.09.24 |