Orders Service는 HTTP Gateway와 gRPC Client 역할을 함께 맡는다

클라이언트는 `/api`만 호출하고, 게이트웨이는 자체 주문 로직과 Users gRPC 호출을 조합해 응답합니다.

HTTP surface

@Controller('api')

GET /api/orders/1/details

외부 요청 표면은 HTTP로 고정합니다.

Gateway logic

OrdersController

lastValueFrom(userService.GetUserById())

주문 조회와 사용자 조회를 한 응답으로 합칩니다.

Internal call

Users gRPC

localhost:50051

내부 서비스는 gRPC 계약으로 호출합니다.

/api/users

Users Service로 라우팅

사용자 생성과 조회는 gRPC로 위임합니다.

/api/orders

Orders Service 자체 처리

주문 생성은 게이트웨이 앱의 도메인 로직을 씁니다.

/api/orders/:id/details

응답 합성

주문과 사용자 정보를 묶어 클라이언트에 돌려줍니다.

핵심: 게이트웨이는 외부에는 하나의 HTTP API처럼 보이고, 내부에서는 필요한 서비스 계약을 선택해 호출합니다.