작성
·
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