토비의 스프링 정리
토비의 스프링 - 9.1 자바 엔터프라이즈 플랫폼과 스프링 애플리케이션
ksb-dev
2022. 10. 27. 21:32
9.1.1 클라이언트와 백엔드 시스템
- 스프링이 만들 수 있는 애플리케이션의 종류에는 제한이 없음
- 단, 스프링은 주로 자바 엔터프라이즈 환경에서 동작하는 애플리케이션을 개발하는 목적으로 사용됨
- 자바 엔터프라이즈 애플리케이션은 서버에서 동작하며 클라이언트를 상대로 서비스 제공을 목적으로 함
- 클라이언트 없이 정해진 시간이나 특정 이벤트 발생에 따라 독자적 작업을 수행하기도 함
- 서버에서 동작하는 엔터프라이즈 애플리케이션을 제외한 다른 형태의 애플리케이션에 스프링을 적용하기 위해서는 SpringRCP 또는 Spring.ME 같은 추가적 스프링 기술지원이 필요함
- 엔터프라이즈 애플리케이션은 자신이 클라이언트 또는 백엔드 시스템이 되어 동작할 수 있음
- 또한, 클라이언트와 백엔드 시스템의 종류와 개수의 제한을 받지 않음
9.1.2 애플리케이션 서버
- 스프링으로 만든 애플리케이션을 자바 서버환경에 배포하려면 JaveEE(또는 J2EE) 서버가 필요함
- JavaEE 표준을 따르는 애플리케이션 서버는 크게 두 가지로 구분할 수 있음
- JavaEE의 대부분 표준 기술을 지원하고 다양한 형태의 모듈로 배포가 가능한 완전한 웹 애플리케이션 서버(WAS)
- 미션 크리티컬한 시스템에서 요구하는 고도의 안정성 및 고성능 시스템에서 필요함
- 또한, 기존 EJB로 개발된 모듈을 함께 사용해야 하는 경우에도 필요함
- 여러 대의 서버를 동시에 운영할 때 유리한 점이 많음
- 웹 모듈의 배포만 가능한 경량급 WAS 또는 서블릿/JSP 컨테이너
- 스프링은 기본적으로 톰캣(Tomcat)이나 제티(Jetty)같은 가벼운 서블릿 컨테이너만 있어도 충분함
- 서블릿 컨테이너로도 엔터프라이즈 애플리케이션에 필요한 핵심 기능을 대부분 이용할 수 있음
- JavaEE의 대부분 표준 기술을 지원하고 다양한 형태의 모듈로 배포가 가능한 완전한 웹 애플리케이션 서버(WAS)
- 스프링 개발팀은 비용을 들이더라도 적합한 조건을 가진 WAS를 사용할 것을 권장함
9.1.3 스프링소스 tcServcer
- 실제 개발환경에서 가장 많이 사용되는 자바 서버는 웹 모듈만 지원하는 서블릿 컨테이너인 아파치 톰캣임
- 스프링 개발을 책임지고 있는 스프링소스에서는 아파치 프로젝트인 HTTPD 서버와 톰캣의 핵심 개발자가 포진되어 있음
- 톰캣 전문가들의 주도하에 스프링 애플리케이션에 최적화된 경략급 애플리케이션 서버인 tcServer을 개발했음
- tcServcer를 이용하면 기존 톰캣에서 아쉬웠던 고급 서버 관리 기능, 배포 기능, 진단 기능 및 톰캣 전문가에게 받는 기술지원도 받을 수 있음
- tcServcer의 가장 큰 장점은 스프링 개발회사가 개발했기 때문에, 스프링 애플리케이션 개발과 운영에 필요 및 중요한 기능이 많이 제공된다는 것임
- tcServcer를 정식 운영서버에서 사용하고 기술지원을 받기 위해서 유료 라이선스를 구매해야 함
9.1.4 스프링 애플리케이션의 배포 단위
- 스프링으로 만든 애플리케이션은 세 가지 단위로 배포할 수 있음
- 독립 웹 모듈
- war로 패키징 된 상태로 배포 됨
- 톰캣과 같은 서블릿 컨테이너를 쓴다면 독립 웹 모듈이 유일한 방법임
- 가장 단순하고 편리한 배포 단위임
- 엔터프라이즈 애플리케이션
- ear로 패키징 된 상태로 배포 됨
- 스프링 애플리케이션에서 EJB를 쓰거나, EJB에서 스프링 애플리케이션을 사용해야 한다면 EJB와 스프링 웹 모듈을 엔터프라이즈 애플리케이션으로 통합해서 배포하는 방식임
- 또는, 하나 이상의 웹 모듈과 별도로 분리되고 공유 가능한 스프링 컨텍스트 엔터프라이즈 애플리케이션으로 묶어 배포하는 방식에서도 사용됨
- 백그라운드 서비스 모듈
- rar로 패키징 된 상태로 배포 됨
- rar은 리소스 커넥터를 만들어 배포할 때 사용하는 방식임
- 스프링으로 만든 애플리케이션이 UI를 가질 필요는 없고, 서버내에서 백그라운드 서버처럼 동작 할 필요가 있을 때 배포하는 방식임
- 이때, J2EE 1.4나 그 이상의 표준을 따르는 WAS가 반드시 필요함
- 독립 웹 모듈
- 서버의 종류는 개발 중에라도 언제든지 필요에 따라 변경 가능함
- 모두 JavaEE 표준의 일부이기 때문임
- 다만, 특정 서버환경에서만 제공하는 기능을 사용하면 변경이 힘들 수 있음
- 때문에, 서버 기능에 종속적이지 않도록 추상화해서 사용해야 함