인프런 커뮤니티 질문&답변

lsh941007님의 프로필 이미지
lsh941007

작성한 질문수

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

HttpServletRequest에 관한 질문

작성

·

257

1

안녕하세요. 어느덧 고급강좌 수강까지 95프로는 완료한 수강생입니다. (감사합니다 재밌게 공부하고 있습니다)

 

스프링을 공부하면서 다른 웹 서버와 한번 비교하다가 궁금한점이 생겨서 이렇게 질문 남깁니다.

 

<질문 상황 제시>

일반적으로 tomcat이 내장된 스프링은 한명의 클라이언트 요청에 대해 request와 response를 생성하여 한 쓰레드를 제공해주는 것으로 이해하고 있습니다.

 

@RestController 와 맵핑된 하나의 컨터롤러 이후, 

만일 비즈니스로직 도메인이 

```

a작업 -> b 작업 -> c 작업  -> d작업 -> response return 

```

과 같은 순서라면 일반적으로 하나의 트랙잭션을 가정하고 개발을 진행할 것 같습니다.

 

<메인 질문>

만일 데이터베이스가 여러개 분리가 되어있거나 다른 reverse proxy 서버와 소통해야 하는 작업이 필요하다면...? 이란 궁금증이 생겼습니다. 예를들어

```

a 작업 |-> b -> c  // (mysql 서버와 연동)

             |-> d -> e // (다른 프록시 서버에게 rest api 연동)

```

과 같이 db나 프록시 서버에서 분리된 요청을 수행한다면..? 저라면 하나의 api 호출이지만 쓰레드를 하나 더 생성할 순 없을지 고민하게 될 것 같습니다. 

실제로 go lang에서는 위 상황시 고루틴을 2개 생성하고, 혹시나 2개의 로직 수행중 에러가 표시된다면 전부 롤백할 수 있는 `channel` 과 `context`의 개념이 있다는 글을 읽고 문득 궁금해서 질문드립니다.

 

그래서 결론적으로 실제 현업에서는 위와 같은 상황시 어떻게 해결하나요? 정답을 알려주셔도 좋고, 수업에서 처럼 어떠한 추상 클래스, 인터페이스, 구체 클래스에 대해서 검색해봐라~ 라고 알려주셔도 좋습니다.

질문이 참 길었던것 같습니다. 읽어주셔서 감사하고, 또 좋은 강좌 제공해주신점 다시한번 감사드립니다~

답변 1

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. lsh941007님

자바에서는 이런 경우 주로 별도의 쓰레드를 생성해서 처리합니다.

자바 쓰레드 부분을 공부해보시면 도움이 되실꺼에요.

감사합니다.

lsh941007님의 프로필 이미지
lsh941007

작성한 질문수

질문하기