Spring이란 무엇인가?
제 8장 스프링이란 무엇인가?
⚓️서론
어느 날 누군가 나에게 “스프링이 뭐야?”라고 묻는다면 어떻게 대답해야 할까?
난 당황하고 뭘 말해야 할지 안절부절못할 것이다.
이 장을 통해서 ‘스프링이란 무엇인지 ?’, 스프링을 모르는 사람에게 간략하게라도 설명이 가능할 정도라도 알고 있어야겠다.
어디 가서 너는 무엇을 하니? 라고 할 때, 말과 글로 설명할 수 있는 사람이 되어보자.
➡️스프링
스프링에 대해 가장 잘 알려진 정의
자바 엔터프라이즈 개발을 편하게 해주는 오픈소스 경량급 애플리케이션 프레임워크
위에 있는 말들을 하나씩 풀어보자.
✅애플리케이션 프레임워크
- 애플리케이션 프레임워크란?
- 특정 계층이나, 기술 업무 분야에 국한되지 않고 애플리케이션의 전 영역을 포괄하는 범용적인 프레임워크를 말한다.
- 스프링의 기원
- 스프링이 자바 엔터프라이즈 개발의 전 영역을 포괄하는 애플리케이션 프레임워크가 된 데는 스프링의 탄생배경과 밀접한 관련이 있다고 한다.
- 스프링의 기원은 J2EE (Java 2 Enterprise Edition) 기술서적에 딸린 예제코드이다.
- 로드 존슨(Rod Johnson)이라는 유명 자바 개발자가 2003년에 책 『Expert One-on-One J2EE Design and Development』 출간했다. 이 책에서 스프링의 기원이 시작됨.
- 스프링의 일차적 존재 목적 : 핵심 기술에 담긴 프로그래밍 모델을 일관되게 적용해서 엔터프라이즈 애플리케이션 전 계층과 전 영역에 전략과 기능을 제공해줌으로써 애플리케이션을 편리하게 개발하게 해주는 애플리케이션 프레임워크로 사용되는 것임을 주목하자.
✅경량급
- 스프링이 경량급이라는 건 스프링 자체가 아주 가볍다거나 작은 규모의 코드로 이뤄졌다는 뜻이 아니다.
- 스프링이 가볍다는 이유는 ? 불필요하게 무겁지 않다는 의미.
- 처음 스프링이 등장하던 시절의 자바 주류 기술이었던 예전의 EJB 같은 과도한 엔지니어링이 적용된 기술과 스프링을 대비시켜 설명하려고 했던 표현
- EJB에 비해 가볍고 단순하다.
- EJB과 스프링은 만들어진 코드가 지원하는 기술수준은 비슷하더라도 스프링은 훨씬 빠르고 간편하게 작성하게 해줌으로써 생산성과 품질 면에서 유리하다는 것이 바로 경량급이라는 의미.
✅자바 엔터프라이즈 개발을 편하게
- EJB가 처음 등장했을 때 나온 말.
EJB를 사용하면 애플리케이션 작성을 편하게 할 수 있다. 로우레벨의 트랜잭션이나 상태 관리, 멀티스레딩, 리소스 풀링과 같은 복잡한 로우레벨의 API따위를 이해하지 못하더라도 아무런 문제 없이 애플리케이션을 개발할 수 있다. -Enterorise JavaBeans 1.0 Specification, chatper 2 Goals
- 하지만 스프링에서의 ‘개발을 편하게 해준다’의 말의 무게는 다르다.
- 스프링은 엔터프라이즈 개발의 기술적인 복잡함과 그에 따른 수고를 제거해준다.
- 엔터프라이즈 개발에서 필연적으로 요구되는 기술적인 요구를 충족하면서도 개발을 복잡하게 만들지 않는다는 점이 스프링의 뛰어난 면이다.
✅오픈소스
- 오픈소스의 장점
- 공개된 커뮤니티의 공간 안에서 투명한 방식으로 다양한 참여를 통해 개발되기 때문에 매우 빠르고 유연한 개발이 가능하다는 것
- 버그 신고가 어떻게 처리되고 있는지도 이슈트래커 시스템을 통해 공개적으로 확인이 가능하며, 수정된 코드도 언제든지 살펴 볼 수 있다.
- 소스코드가 투명하게 공개되기 때문에 다양한 현장에 있는 사용자의 피드백이 빨리 전달되고 반영된다.
- 오픈소스의 단점
- 오픈소스 개발방식의 가장 큰 취약점은 지속적이고 안정적인 개발이 계속될지가 불확실하다는 것이다.
- 상당수의 오픈소스 제품은 핵심 개발자의 여가시간을 이용해 일종의 취미활동으로 만들어지기 때문에 핵심 개발자가 떠나면 프로젝트 자체가 사장되는 최악의 상황까지도 갈 수 있다.
📎참고
- 토비의 스프링 3.1