[토비의 스프링] Week14(Chapter 8)

4 분 소요

토비의 스프링 3.1 Chapter 8

Chapater 8.1 - 스프링

스프링이란?

일반적으로 다음과 같이 스프링에 대하여 생각한다.

IOC와 DI를 편하게 적용하도록 돕는 컨테이너

하지만, 위 단계를 넘어서 엔터프라이즈 애플리케이션 개발의 전 영역에 걸쳐 다양한 종류의 기술에 관여한다.

따라서 정의를 다시 말하면 다음과 같다.

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

애플리케이션 프레임워크

일반적으로 라이브러리나 프레임워크는 일반적으로 특정 기술에 특화된 목표를 가지고 있다.

하지만, 스프링은 특정 계층이나, 기술, 업무 분야에 국한되지 않고 애플리케이션의 전 영역을 포괄하는 범용적인 프레임워크이다.
–> 애플리케이션 프레임워크

따라서, 스프링을 MVC 프레임워크 또는 JDBC/ORM 지원 프로엠워크, IoC/DI, AOP 툴이라고 보는 것은 스프링이 제공하는 일부 기술에만 주목하는 것이다.

🙂정리
스프링의 목적은 핵심 기술에 담긴 프로그래밍 모델을 일관되게 적용해서 엔터프라이즈 애플리케이션 전 계층과 전 영역에 전략과 기능을 제공해줌으로써 애플리케이션을 편리하게 개발하게 해주는 애플리케이션 프레임워크로 사용되는 것

경량급

경량급? 스프링이 가볍다거나, 작은 규모의 코드로 이루어져있다는 뜻이 아니다.
스프링 이전 EJB와 같은 과도한 엔지니어링이 적용된 기술의 복잡함에 반대되어서 경량급이라는 뜻이다.

EJB

  • 개발 환경, 서버, 개발과 빌드 등등 모두 무겁고 복잡
  • 고가의 WAS가 필요

    스프링
  • 가장 단순한 서버환경인 Tomcat, Jetty에서도 동작
  • 단순한 개발툴과 기본적인 개발환경으로 엔터프라이즈 개발에서 필요로 하는 주요한 기능을 갖춘 애플리케이션을 개발하기 충분

🙂정리
경량급이란?
만들어진 코드가 지원하는 기술 수준은 비슷하더라도 그것을 훨씬 빠르고 간편하게 작성하게 해줌으로써 생산성과 품질 면에서 유리하다는 것

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

스프링은 근본적인 부분에서 엔터프라이즈 개발의 복잡함을 제거해내고 진정으로 개발을 편하게 해주는 해결책을 제시

🤔편리한 애플리케이션 개발이란?
개발자가 복잡하고 실수하기 쉬운 로우레벨 기술에 많은 신경을 쓰지 않으면서도 애플리케이션의 핵심인 비즈니스 로직을 빠르고 효과적으로 구현하는 것

🙂정리
스프링프레임워크는 개발자들이 프레임워크 기술보다 애플리케이션의 로직에 더 많은 관심과 시간을 쏟게 해줌.

오픈소스

스프링의 오픈소스 라이센스 : Apache License 2.0

  • 상업 목적의 제품에 포함해도 되고, 수정해서 써도 수정한 소스를 공개할 의무가 없음

😋오픈소스의 장점

  • 투명한 방식으로 다양한 참여
  • 매우 빠르고 유연한 개발이 가능

😑오픈소스의 단점

  • 지속적이고 안정적인 개발이 계속될지가 불확실
  • 개발자 개개인에게 의존적임
  • 스프링같은 프레임워크는 엔터프라이즈 시스템 개발에 사용되는데, 버그가 방치되거나 안정적인 개발이 진행되지 않는건 크리티컬하다

-> 오픈소스 개발의 단점을 극복하는 방법은, 기업이나 기관의 지원을 받는 전문 개발자가 오픈소스 개발을 책임지게 하는 것이다.

🙂정리 스프링은 오픈소스 개발이라는 방법을 선택하였다.
이를 통해 오픈소스의 장점인 다양한 개발자들의 참여로 유연한 개발이라는 이득을 취하였으며, 공식적 개발은 SpringSource라는 기업이 전담하여 단점을 극복하였다.

Chapater 8.2 - 스프링의 목적

모든 기술과 지식은 목적을 이해하고, 그 목적을 이루는 도구로 잘 활용해야 제대로 된 가치를 얻을 수 있다.

-> 자바를 절차지향적으로 사용한다면, 객체지향 프로그래밍의 장점인 유연하고 확장성 좋은 애플리케이션을 만든다는 장점을 얻을 수 없음

🙂그렇다면 스프링의 목적은?
스프링의 목적은 엔터프라이즈 애플리케이션 개발의 복잡성에 대응하여 편하게 하려는 것

엔터프라이즈 개발의 복잡함

엔터프라이즈 시스템이란?
-> 서버에서 동작하며 기업과 조직의 업무를 처리해주는 시스템

시간이 지날 수록, 기업에서 사용되는 엔터프라이즈 시스템에서 기술적인 제약조건과 요구사항이 늘어나며, 비즈니스 로직의 복잡함이 증가하였다.

또한 엔터프라이즈 시스템을 개발하는 데는 순수한 비즈니스 로직을 구현하는 것 외에도 기술적으로 고려할 사항이 많다.
Ex) XML, JDBC, JTA, 트랜잭션 등등…

이는 곧 비즈니스 로직과 엔터프라이즈 기술이 섞이게 되어 복잡함이 몇 배로 가중되었다.

그 결과 스프링이 도입되기 전, 많은 기업들이 자바 엔터프라이즈 프로젝트를 실패하였다.

댓글남기기