Backend - 개요
이 문서에는 Backend 관련 공통된 내용을 정리해 두었습니다.
목표
저의 백엔드는 다음과 같은 목표를 가지고 있습니다.
- API와 MCP 양쪽을 지원합니다.
- 상황에 따라 한 쪽만 지원할 수도 있지만, 항상 양쪽을 지원할 수 있도록 합니다.
- 모두가 최대한 공통된 구조를 유지합니다.
- 이를 통해 서비스 추가도 자유롭게 하고, 유지보수도 쉽게 하려고 합니다.
- 최대한 MSA 아키텍쳐를 지향합니다.
핵심 구현 내용
- 비즈니스 로직은 프로토콜 의존성을 가지지 않아야 합니다.
- 의도적으로
Request
와Response
라는 네이밍을 사용하지 않고 대신Input
과Output
을 사용하고 있습니다.
MCP도 따지고 본다면 HTTP 통신이지만, 미래에 어떤 프로토콜이 등장해도Input
과Output
이라는 명칭은 유효하다고 생각했기 때문입니다.
- 의도적으로
- API/MCP 인터페이스에서는 Protocol-specific한 로직만 처리합니다.
- 공통적으로 Auth → 입력값 추출,검증 → 비즈니스 로직 호출 → Return 이라는 Flow로 단순하게 유지하고 있습니다.
- 폴더 구조는 Golang 표준을 기반으로 하되, 개인의 성향에 맞추어 재구성하였습니다.
또한 Batch Job이나 일반적이지 않은 서비스가 필요해 구조가 달라지는 경우도 있었습니다.
이 부분은 지속적인 리팩토링으로 계속 개선해 나가야 하는 부분입니다. - 인증에 관련된 부분이 고민이었습니다. MSA에서는 API Gateway라는 개념을 사용하지만, 아직 "MCP Gateway"라는 개념은 성숙하지 않았습니다.
그래서 고민 끝에 인증용 모듈을 별도로 구현하여 API/MCP 인터페이스에서 사용하도록 하였습니다.