본문으로 건너뛰기

Backend - 개요

이 문서에는 Backend 관련 공통된 내용을 정리해 두었습니다.

목표

저의 백엔드는 다음과 같은 목표를 가지고 있습니다.

  1. API와 MCP 양쪽을 지원합니다.
    • 상황에 따라 한 쪽만 지원할 수도 있지만, 항상 양쪽을 지원할 수 있도록 합니다.
  2. 모두가 최대한 공통된 구조를 유지합니다.
    • 이를 통해 서비스 추가도 자유롭게 하고, 유지보수도 쉽게 하려고 합니다.
  3. 최대한 MSA 아키텍쳐를 지향합니다.

핵심 구현 내용

  1. 비즈니스 로직은 프로토콜 의존성을 가지지 않아야 합니다.
    • 의도적으로 RequestResponse라는 네이밍을 사용하지 않고 대신 InputOutput을 사용하고 있습니다.
      MCP도 따지고 본다면 HTTP 통신이지만, 미래에 어떤 프로토콜이 등장해도 InputOutput이라는 명칭은 유효하다고 생각했기 때문입니다.
  2. API/MCP 인터페이스에서는 Protocol-specific한 로직만 처리합니다.
    • 공통적으로 Auth → 입력값 추출,검증 → 비즈니스 로직 호출 → Return 이라는 Flow로 단순하게 유지하고 있습니다.
  3. 폴더 구조는 Golang 표준을 기반으로 하되, 개인의 성향에 맞추어 재구성하였습니다.
    또한 Batch Job이나 일반적이지 않은 서비스가 필요해 구조가 달라지는 경우도 있었습니다.
    이 부분은 지속적인 리팩토링으로 계속 개선해 나가야 하는 부분입니다.
  4. 인증에 관련된 부분이 고민이었습니다. MSA에서는 API Gateway라는 개념을 사용하지만, 아직 "MCP Gateway"라는 개념은 성숙하지 않았습니다.
    그래서 고민 끝에 인증용 모듈을 별도로 구현하여 API/MCP 인터페이스에서 사용하도록 하였습니다.