[Spring] 스프링의 이해를 위한 스프링 정의 풀이해석

    스프링의 정의

    스프링의 정의를 통해 스프링이 어떤 것인지 큰 그림으로 이해하려고 노력해야 한다.  따라서 정의를 이해하려는 노력은 스프링을 깊이 이해하고 그 가치를 파악하는 데 도움이 될 것이다. 스프링의 여러가지 정의가 있지만 가장 대표적인 정의는 이렇다.

     

    "자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크"

     

    정의를 봐도 스프링이 무엇인지 감이 바로 오지 않을것이다. 하지만 이 정의에 스프링의 중요한 특징이 잘 담겨 있다.

    그래서 이 정의를 하나씩 풀어봐야 한다.

     

    애플리케이션 프레임워크

    프레임워크란, 특정한 목적에 맞게 프로그래밍을 쉽게 하기 위한 약속 이다.

    일반적으로 라이브러리나 프레임워크는 특정 업무 분야나 한 가지 기술에 특화된 목표를 가지고 만들어진다.  그래서 프레임워크는 애플리케이션의 특정 계층에서 주로 동작하는 한 가지 기술 분야에 집중된다.  하지만 스프링은 이와 다르게 애플리케이션 프레임워라는 특징을 갖고 있다.

    애플리케이션 프레임워크는 특정 계층이나, 기술, 업무 분야에 국한되지 않고 애플리케이션의 전 영역을 포괄하는 범용적인 프레임워크를 말한다. 애플리케이션 프레임워크는 애플리케이션 개발의 전 과자ㅓㅇ을 빠르고 편리하며 효율적으로 진행하는데 일차적인 목표를 두는 프레임워크다. 

     

    스프링이 애플리케이션 프레임워크라고 불리는 이유는 애플리케이션의 전 영역을 관통하는 일관된 프로그래밍 모델과 핵심 기술을 바탕으로 해서 각 분야의 특성에 맞는 필요를 채워주고 있기 때문에, 애플리케이션을 빠르고 효과적으로 개발할 수가 있다. 바로 이것이 스프링이 애플리케이션 프레임워크라고 불리는 이유다. 

     

    스프링을 MVC 프레임워크 또는 JDBC/ORM 지원 프레임워크라고 생각하는 것은 스프링이 다루는 일부 영역만 봤기 때문이다. 또, 스프링을  IoC/DI 프레임워크나 AOP 툴이라고 보는 이유는 스프링이 제공하는 핵심 기술에만 주목했기 때문이다. 스프링의 일차적인 존재 목적은 핵심 기술에 담긴 프로그래밍 모델을 일관되게 적용해서 엔터프라이즈 애플리케이션 전 계층과 전 영역에 전략과 기능을 제공해줌으로써 애플리케이션을 편리하게 개발하게 해주는 애플리케이션 프로엠워크로 사용된다는 것을 명심해야 한다.

     

     

    경량급(lightweight)

    스프링이 경량급이라는 건 스프링 자체가 아주 가볍다거나 작은 규모의 코드로 이뤄졌다는 뜻은 아니다. 오히려 스프링은 20여 개의 모듈로 세분화되고 수십만 라인에 달하는 코드를 가진 매우 복잡하고 방대한 규모의 프레임워크다. 그럼에도 스프링이 가볍다고 하는 이유는 불필요하게 무겁지 않다는 의미다. 즉 반복되는 코드가 없고 가장 단순하고 가벼운 코드만 남아 있다는 뜻이다. 만들어진 코드가 지원하는 기술수준은 비슷하더라도 그것을 훨신 빠르고 간편하게 작성하게 해줌으로써 생산성과 품질 면에서 유리하다는 것이 바로 경량급이라는 말로 표현되는 스프링의 특징이다. 

     

     

    자바 엔터프라이즈 개발을 편하게

    스프링은 근복적인 부분에서 엔터프라이즈 개발의 복잡함을 제거해내고 진정으로 개발을 편하게 해주는 해결책을 제시한다. 개발자가 복잡하고 실수하기 쉬운 로우레벨 기술에 많은 신경을 쓰지 않으면서도 애플리케이션의 핵심인 사용자의 요구사항, 즉 비즈니스 로직을 빠르고 효과적으로 구현하는 것을 말한다. 또한 엔터프라이즈 개발의 기술적인 복잡함과 그에 따른 수고를 제거해준다. 

     

     

    오픈소스

    오픈소스란 말 그대로 소스가 모두에게 공개되고, 특별한 라이센스를 취득할 필요없이 얼마든지 가져다 자유롭게 이용해도 된다는 뜻이다. 소스르르 자유롭게 열함하고 자신의 목적에 맞게 사용할 수 있을 뿐만 아니라, 필요하면 만대로 수정할 수 있고, 수정된 제품과 소스를 다시 공개적으로 배포하는 자유도 허용된다.

    오픈소스의 장점은 공개된 커뮤니티의 공간 안에서 투명한 방식으로 다양한 참여를 통해 개발되기 때문에 매우 빠르고 유연한 개발이 가능하다는 것이다. 오픈소스 제품의 사용자는 소스코드를 다운받아서 품질과 기능을 얼마든지 검증하고 분석해 볼 수 있다. 

    하지만 오픈소스의 개발 모델에 단점이있다. 오픈소스 개발 방식의 가장 큰 취약점은 지속적이고 안정적인 개발이 계속될지가 불확실하다는 것이다.  상다수의 오픈소스 제품은 핵심 개발자의 여가시간을 이용해 일종의 취미활동으로 만들어지기 때문이다. 이러한 단점을 막기위해 기업이나 기관의 지원을 받는 전문 개발자가 오픈소스 개발을 책임지게 하는 것이다.그래서 스프링의 창시자인 로드 존슨을 비롯한 최상급 개발자가 주축이 돼서 만든 스프링소스 라는 회사가 있다 이 회사는 스프링에 대한 전문적인 기술지원과 컨설팅 그리고 스프링을 기반으로 개발된 시스템을 안정적으로 운용할 수 있도록 돕는 제품을 제공함으로써 수익을 얻고, 한편으로는 오픈소스 프로젝트로서 스프링이 효율적으로 개발되도록 지원하고 있다. 그래서 스프링은 오픈소스의 장점을 충분히 취하면서 동시에 오픈소스 제품의 단점과 한계를 잘 극복하고 있는, 전문적이고 성공적인 오픈소스 소프트웨어라고 할 수 있다. 

     

     

    참조: 토비의스프링3/ 에이콘/ 이일민 지음

    댓글

    Designed by JB FACTORY