- 스프링을 이용해 애플리케이션 프로젝트를 처음 구성할 때 알아야할 내용을 알아보자.
- 스프링 개발에 도움이 되는 개발 툴과 빌드 방법도 살펴보자.
- 스프링을 애플리케이션에 적용할 수 있는 아키텍처의 종류와 특징에 대해서 알아보자.
자바 엔터프라이즈 플랫폼과 스프링 애플리케이션#
- 스프링으로 만들 수 있는 애플리케이션의 종류에는 제한이 없음. 자바 언어를 사용하는 모든 종류의 프로젝트라면 어디든 사용할 수 있음.
- 스윙이나 이클립스 RCP로 만드는 독립형 프로그램
- 애플릿이나 모바일 애플리케이션 개발
- 스프링을 핵심 엔진으로 사용하는 엔터프라이즈 미들웨어 제품
- 스프링은 주로 자바 엔터프라이즈 환경에서 동작하는 애플리케이션을 개발하는 목적으로 사용됨.
- 자바 엔터프라이즈 애플리케이션은 서버에서 동작하며 클라이언트를 상대로 서비스를 제공하도록 되어 있음.
클라이언트와 백엔드 시스템#
- 엔터프라이즈 애플리케이션은 자신이 클라이언트가 돼서 또 다른 엔터프라이즈 시스템에 서비스를 요청할 수 있음.
- 또는 데이터베이스나 레거시 시스템 같은 EIS(엔터프라이즈 정보 시스템)라고 불리는 백엔드 시스템의 기능을 이용해 동작함.
- 클라이언트(웹 브라우저) - 백엔드 시스템(DB) 구조가 가장 많이 사용됨.
애플리케이션 서버#
- 스프링 애플리케이션을 자바 서버환경에 배포하려면 JavaEE 서버가 필요함.
- JavaEE 표준을 따르는 애플리케이션 서버
- WAS(웹 어플리케이션 서버)
- JavaEE의 대부분의 표준 기술을 지원하고 다양한 형태의 모듈로 배포가 가능
- 미션 크리티컬한 시스템에서 요구하는 고도의 안정성이나 고성능 시스템에서 필수적인 안정적인 리소스 관리, 레거시 시스템의 연동이나 기존 EJB로 개발된 모듈을 사용할 필요가 있다면 사용 또는 오픈소스 WAS를 이용할 수 있음.
- 상대적으로 관리 기능이나 모니터링 기능이 뛰어나 여러 대의 서버를 동시 운영할 때 유리한 점이 있음.
- 웹 모듈의 배포만 가능한 경량급 WAS 또는 서블릿/JSP 컨테이너
- 스프링은 톰캣이나 제티 같은 서블릿 컨테이너만 있어도 충분함.
- 스프링의 개발팀은 적합한 조건을 가진 WAS를 사용할 것을 권장함.
스프링소스 tcServer#
- 개발환경과 운영환경에서 가장 많이 사용되는 자바 서버는 아파치 톰캣임.
- tcServer - 톰캣을 기반으로 엔터프라이즈 스프링 애플리케이션에 최적화된 경량급 애플리케이션 서버
스프링 애플리케이션의 배포 단위#
- 독립 웹 모듈
- 엔터프라이즈 애플리케이션
- 백그라운드 서비스 모듈
개발도구와 환경#
- STS - 최신 이클립스를 기반으로 주요 스프링 지원 플러그인과 관련 도구를 모아서 스프링 개발에 최적화되도록 만들어진 IDE임.
라이브러리 관리와 빌드 툴#
- 애플리케이션의 아키텍처를 결정하고 사용기술을 선정하고 나면 애플리케이션 프로젝트를 IDE에 구성할 차례임.
- 필요한 프레임워크 모듈과 라이브러리 파일을 선택해서 프로젝트의 빌드 패스에 넣어주는 일임.
- 라이브러리 관리의 어려움
- 스프링만해도 20개 가까이 세분화된 jar 모듈이 존재함.
- 필요한 라이브러리의 조합을 만들다 보면 복잡한 의존관계 속에서 같은 라이브러리의 다른 버전이 동시에 필요해서 문제가 발생하기도 함.
- 라이브러리 선정
- 스프링으로 만드는 애플리케이션에서 정확히 어떤 기능이 필요한지를 정리해야함.
- 스프링 모듈
- 사용할 기술과 기술 목록이 만들어졌다면 스프링 모듈부터 선정함. 필수 의존 모듈과 선택 의존모듈을 구분해서 선정하자
- 라이브러리
- 스프링 관련 라이브러리 jar 파일을 모두 가져다 하나의 폴더에 몰아넣고 각각 별도의 폴더에 압축을 품.
- 클래스가 어느 라이브러리 jar 파일에서 나온 것인지 확인해봄.
- 다시 테스트나 애플리케이션을 돌려서 필요한 클래스와 라이브러리 파일을 계속 추가함.
- 어떤 기능을 동작시켰을 때 어떤 클래스와 라이브러리가 필요했는지 기록해두면 나중에 도움이 됨.
- 불필요한 라이브러리는 처음부터 추가하지 않아야 하며, 불필요해진 라이브러리도 바로 제거하도록 노력함.
- 빌드 툴과 라이브러리 관리
- Maven과 ANT는 자바의 대표적인 빌드 툴임.
참고 자료#