Spring MVC 

Spring MVC는 웹 애플리케이션을 개발하거나 구축하기 위한 웹 MVC 프레임워크입니다.

 

Spring Boot

Spring Boot는 Spring MVC와 달리 내장 웹 컨테이너에서 애플리케이션을 실행하기 때문에 JAVA만 설치되어 있으면 개발이 가능합니다. 또한 Spring Boot에는 웹 애플리케이션을 개발하기 위한 다양한 의존성들이 있어, 빠르게 Spring 기반 애플리케이션을 개발하거나 구축할 수 있습니다.

 


WebContainer

웹 컨테이너는 자바 서블릿과 상호작용하는 웹서버 컴포넌트로, 서블릿의 생명주기를 관리하고 URL과 서블릿을 매핑하는 역할을 합니다. 그중 대표적인 웹 컨테이너가 톰캣인데, 스프링 부트에는 내장 톰캣이 포함되어 있습니다.

 

때문에 Spring MVC를 사용하면 톰캣을 배포하고 연동하는 과정을 거쳐야 하지만, Spring Boot를 사용하면 이러한 과정이 불필요합니다. 그렇다면 내장 톰캣을 사용하였을 때 단점은 없을까요?

 

EmbeddedTomcat을 사용하였을때 

포트번호

서비스마다 포트 번호가 다르기 때문에 모든 URL을 관리하고 모니터링하는 것이 번거로울 수 있습니다.

하나의 톰캣 서버에 연동된 3개의 스프링 애플리케이션을 동작시키기 위해, 서비스 A의 포트번호는 8081, 모듈 B는 8082, 모듈 C는 8083과 같이 구성해야 합니다.

톰캣 서버수 증가

여러 스프링 부트 애플리케이션을 사용할 경우 각 애플리케이션마다 내장 톰캣 서버가 존재하기 때문에 관리해야 할 톰캣 서버가 늘어난다는 단점이 있습니다. 하지만 이러한 단점은 각 서비스의 메모리, 스레드 및 JVM과 같은 전반적인 상태 및 리소스를 모니터링하는 spring-boot-admin을 사용하여 이 문제를 해결할 수 있습니다. 또한 이러한 문제는 마이크로서비스를 구축할 때 유연성을 제공하기 때문에 장점이 됩니다.

 

 

참고

https://medium.com/javarevisited/spring-boot-with-embedded-tomcat-pros-and-cons-84da418e7af1

https://stackoverflow.com/questions/61006680/spring-boot-microservices-embedded-tomcat-vs-external-tomcat

+ Recent posts