이번 시간은 스프링이 무엇인지에 대해 알아보는 시간이었다.
- 스프링이란?
스프링의 생태계에 대해서 소개를 했는데, 스프링은 어떤 하나가 아니라 여러가지의 모음이라고 할 수 있다.
필수적으로, 스프링의 핵심이 되는 스프링 프레임워크와,
여러 기술들을 편리하게 사용할 수 있도록 도와주는 스프링 부트가 있다.
선택적 요소로는, 스프링 데이터, 세션, 시큐리티, Rest Docs, 배치(Batch), 클라우드 등등 여러가지가 있다.
스프링 데이터는 관계형 데이터베이스에서 대부분 CRUD는 비슷하기 때문에 이런것들을 편리하게 사용할 수 있도록 도와주는게 스프링 데이터 라는 기술이다. 가장 많이 쓰이는 것이 스프링 데이터 JPA이다.
스프링 배치(Batch)는, 예를 들면, 천만명의 데이터를 한번에 업데이트 해라 라는 상황이 주어진다면,
실시간으로 하기 어렵기 때문에 데이터를 천만건 중에서 천건씩 처리하고 저장하고, 반복하고..
이런식으로 대용량으로 데이터 처리하는 것을 배치 처리하고 하는데, 스프링 배치는 이런 처리에 특화된 기술이다.
스프링 공식 사이트에서 Projects -> Overview에서 확인해보면 위의 사진에서 소개된 기술 이외에도,
수많은 기술들이 소개가 되어있다~~~
- 스프링 프레임 워크의 기술
스프링 프레임 워크의 기술들은 아래와 같이 있다.
핵심 기술로는 스프링 DI 컨테이너, AOP, 이벤트 등등.. 이 있고
웹 기술은 스프링 MVC, 스프링 WebFlux.
DB 접근 기술은 트랜잭션, JDBC, ORM 지원.
기술 통합, 테스트 기술들이 있고,
언어는 자바, 코틀린, 그루비 등을 지원한다.
최근에는 이런 스프링 프레임워크만 쓰는게 아니라,
기본적으로 편리하게 사용할 수 있도록 도와주는 스프링 부트를 통해서 스프링 프레임워크를 사용한다.
- 스프링 부트의 특징
스프링 부트의 특징으로는,
1. 단독으로 실행할 수 있는 스프링 애플리케이션을 쉽게 생성할 수 있다.
2. Tomcat과 같은 웹 서버를 내장하고 있기 때문에, 별도로 설치하지 않아도 된다.
이전에는 웹 어플리케이션 개발 프로젝트를 하려고 하면, 빌드를 하고, 톰캣 서버를 설치한다.
그리고 톰캣 서버의 특정 위치에 빌드한 파일을 넣어야되고... 이렇게 복잡하다.
이런 과정들을 자체적으로 실행하기 때문에 생략할 수 있게 해주는 기술이 스프링 부트이다.
3. 손쉬운 빌드 구성을 위한 starter 종속성 제공
이전에는 스프링 프레임 워크를 쓰기 위해서는 라이브러리 세팅을 다 해줬어야 했는데,
spring boot starter, spring boot aop starter, spring boot data jpa starter 등등..
라이브러리 하나만 추가하면 그 이외에 필요한 나머지 라이브러리를 알아서 받아준다!
4. 스프링과 3rd party 라이브러리 자동 구성
과거에는 스프링 부트와 호환이 잘 되는 버전의 외부 라이브러리를 찾는게 힘들었다...
하지만 요즘 스프링 부트를 사용하면 호환이 잘 되는 외부 라이브러리들 버전을 알아서 챙겨주기 때문에,
매우 편리하다는 장점이 있다.
5. 메트릭, 상태 확인, 외부 구성과 같은 프로덕션 준비 기능을 제공한다.
운영 환경에서 모니터링은 중요하기 때문에, 스프링이 관련된 기능들을 제공한다.
6. 관례에 의한 간결한 설정을 해준다.
과거에 스프링 프레임 워크를 쓸 때, 설정이 매우 복잡하고 힘들었다.
스프링 부트는 보통 디폴트 설정값이 있고, 매뉴얼에 나와있기 때문에,
필요할 경우, 매뉴얼을 확인하고 설정을 조금만 변경하면 된다.
대부분 관례에 의한 설정을 하고, 필요한 부분만 커스터 마이징을 통해서 변경해서 사용하면 된다.
- 스프링 부트만 별도로 사용 가능한가?
스프링 부트는 스프링 프레임 워크와 별도로 사용할 수 있는게 아니다.
스프링 부트는 스프링 데이터, 시큐리티, 배치 등 이런 기술들을 중간에서 편리하게 사용할 수 있는 기능들을 제공하는 것이기 때문이다.
그렇기 때문에 스프링 부트는 스프링 프레임 워크를 사용해서 나머지 필요한 기능들을 가져올 수 있도록 도와주는 기술이며, 이것만 가지고는 동작을 하지는 않음!
- 스프링 단어의 의미
스프링이라는 단어는 의미는 문맥에 따라서 다르게 사용되며,
좁은 의미로써는, 스프링 빈을 관리하는 기능과 같은 스프링 DI 컨테이너 기술을 의미하기도 한다.
스프링 프레임 워크를 의미를 의미하기도 하고,
스프링 부트, 스프링 프레임 워크 등을 포함한 모든 스프링 생태계를 의미하기도 한다.
- 스프링을 만든 이유
스프링의 핵심 개념은 자바 언어 기반의 프레임 워크이다.
자바 언어가 가진 가장 큰 특징은 객체 지향 언어이다.
스프링은 객체 지향 언어가 가진 강력한 특징을 살려내는 프레임 워크이다.
그렇기 때문에, 스프링을 만든 이유는, 좋은 객체 지향 애플리케이션을 개발할 수 있도록
도와주는 프레임 워크 역할을 하기 위해 만들어졌다.
댓글