• 스프링을 이용해 애플리케이션 프로젝트를 처음 구성할 때 알아야할 내용을 알아보자.
  • 스프링 개발에 도움이 되는 개발 툴과 빌드 방법도 살펴보자.
  • 스프링을 애플리케이션에 적용할 수 있는 아키텍처의 종류와 특징에 대해서 알아보자.

자바 엔터프라이즈 플랫폼과 스프링 애플리케이션

  • 스프링으로 만들 수 있는 애플리케이션의 종류에는 제한이 없음. 자바 언어를 사용하는 모든 종류의 프로젝트라면 어디든 사용할 수 있음.
    • 스윙이나 이클립스 RCP로 만드는 독립형 프로그램
    • 애플릿이나 모바일 애플리케이션 개발
    • 스프링을 핵심 엔진으로 사용하는 엔터프라이즈 미들웨어 제품
  • 스프링은 주로 자바 엔터프라이즈 환경에서 동작하는 애플리케이션을 개발하는 목적으로 사용됨.
  • 자바 엔터프라이즈 애플리케이션은 서버에서 동작하며 클라이언트를 상대로 서비스를 제공하도록 되어 있음.

클라이언트와 백엔드 시스템

  • 엔터프라이즈 애플리케이션은 자신이 클라이언트가 돼서 또 다른 엔터프라이즈 시스템에 서비스를 요청할 수 있음.
  • 또는 데이터베이스나 레거시 시스템 같은 EIS(엔터프라이즈 정보 시스템)라고 불리는 백엔드 시스템의 기능을 이용해 동작함.
  • 클라이언트(웹 브라우저) - 백엔드 시스템(DB) 구조가 가장 많이 사용됨.

애플리케이션 서버

  • 스프링 애플리케이션을 자바 서버환경에 배포하려면 JavaEE 서버가 필요함.
  • JavaEE 표준을 따르는 애플리케이션 서버
    1. WAS(웹 어플리케이션 서버)
    • JavaEE의 대부분의 표준 기술을 지원하고 다양한 형태의 모듈로 배포가 가능
    • 미션 크리티컬한 시스템에서 요구하는 고도의 안정성이나 고성능 시스템에서 필수적인 안정적인 리소스 관리, 레거시 시스템의 연동이나 기존 EJB로 개발된 모듈을 사용할 필요가 있다면 사용 또는 오픈소스 WAS를 이용할 수 있음.
    • 상대적으로 관리 기능이나 모니터링 기능이 뛰어나 여러 대의 서버를 동시 운영할 때 유리한 점이 있음.
    1. 웹 모듈의 배포만 가능한 경량급 WAS 또는 서블릿/JSP 컨테이너
    • 스프링은 톰캣이나 제티 같은 서블릿 컨테이너만 있어도 충분함.
  • 스프링의 개발팀은 적합한 조건을 가진 WAS를 사용할 것을 권장함.

스프링소스 tcServer

  • 개발환경과 운영환경에서 가장 많이 사용되는 자바 서버는 아파치 톰캣임.
  • tcServer - 톰캣을 기반으로 엔터프라이즈 스프링 애플리케이션에 최적화된 경량급 애플리케이션 서버

스프링 애플리케이션의 배포 단위

    1. 독립 웹 모듈
    1. 엔터프라이즈 애플리케이션
    1. 백그라운드 서비스 모듈

개발도구와 환경

SpringSource Tool Suite

  • STS - 최신 이클립스를 기반으로 주요 스프링 지원 플러그인과 관련 도구를 모아서 스프링 개발에 최적화되도록 만들어진 IDE임.

라이브러리 관리와 빌드 툴

  • 애플리케이션의 아키텍처를 결정하고 사용기술을 선정하고 나면 애플리케이션 프로젝트를 IDE에 구성할 차례임.
    • 필요한 프레임워크 모듈과 라이브러리 파일을 선택해서 프로젝트의 빌드 패스에 넣어주는 일임.
  • 라이브러리 관리의 어려움
    • 스프링만해도 20개 가까이 세분화된 jar 모듈이 존재함.
    • 필요한 라이브러리의 조합을 만들다 보면 복잡한 의존관계 속에서 같은 라이브러리의 다른 버전이 동시에 필요해서 문제가 발생하기도 함.
  • 라이브러리 선정
    • 스프링으로 만드는 애플리케이션에서 정확히 어떤 기능이 필요한지를 정리해야함.
  • 스프링 모듈
    • 사용할 기술과 기술 목록이 만들어졌다면 스프링 모듈부터 선정함. 필수 의존 모듈과 선택 의존모듈을 구분해서 선정하자
  • 라이브러리
      1. 스프링 관련 라이브러리 jar 파일을 모두 가져다 하나의 폴더에 몰아넣고 각각 별도의 폴더에 압축을 품.
      1. 클래스가 어느 라이브러리 jar 파일에서 나온 것인지 확인해봄.
      1. 다시 테스트나 애플리케이션을 돌려서 필요한 클래스와 라이브러리 파일을 계속 추가함.
    • 어떤 기능을 동작시켰을 때 어떤 클래스와 라이브러리가 필요했는지 기록해두면 나중에 도움이 됨.
    • 불필요한 라이브러리는 처음부터 추가하지 않아야 하며, 불필요해진 라이브러리도 바로 제거하도록 노력함.
  • 빌드 툴과 라이브러리 관리
    • Maven과 ANT는 자바의 대표적인 빌드 툴임.

참고 자료