728x90
✍️ 학습 목표
- 스프링이란?
- 스프링 부트란?
- 차이점
📌 스프링이란?
자바 엔터프라이즈 개발을 편하게 만들어주는 가벼운 애플리케이션 프레임워크이다.
이 한 문장이 스프링의 모든 특징을 잘 말해주고 있다.
✔️ 애플리케이션 프레임워크
- 일반적인 프레임워크는 특정 분야나 한 가지 기술에 특화되어 있다.
- 애플리케이션 프레임워크는 많은 영역을 포괄하는 프레임워크를 말한다.
- 스프링은 전 영역을 관통하는 프로그래밍 모델과 각 영역별로 필요로 하는 조건을 채워주는 기술로 개발의 모든 과정을 빠르고 편리하면서 효율적으로 진행할 수 있게 한다.
✔️ 가볍다
- 단순히 가볍다거나 코드의 양이 적다는 의미가 아니다.
- 가볍고 단순한 환경에서도 대규모 개발의 고급 기술을 대부분 사용 가능하고 빠르고 간편하게 코드를 작성할 수 있어 유리한 생산성과 품질을 가지는 게 스프링이 말하는 가벼움이다.
✔️ 엔터프라이즈 개발을 편하게 만든다
- 스프링은 프레임워크가 제공하는 기술이 아니라 작성하는 애플리케이션 로직에 더 집중할 수 있게 한다.
- 대규모 개발에 필요한 기술적 요구들을 충족하면서 개발을 복잡하게 만들지 않아 개발이 더 편해진다.
📌 스프링의 목적
앞서 정의에서 살펴봤듯이 엔터프라이즈 개발을 편하게 하기 위해서다.
그럼 왜 엔터프라이즈 개발은 편하지 않을까??
✔️ 너무 복잡한 엔터프라이즈 개발
엔터프라이즈 시스템이란 서버에서 동작하는 기업과 조직의 업무를 처리해주는 시스템이다.
따라서 많은 요청을 동시에 처리할 수 있어야 하고 중요한 정보를 안전하게 다룰 수 있어야 한다.
개발의 복잡함의 주요 원인은 다음 2가지로 볼 수 있다.
- 기술적인 제약과 요구사항이 점점 늘어난다.
- 구현해야 할 비지니스 로직들의 복잡함이 점점 증가한다.
그 자체로도 이미 충분히 복잡한데 실제로 개발을 하면 로직과 기술이 얽히면서 더 복잡해진다.
나아가 복잡함 범벅인 코드 유지 보수하는 것은 더 큰 문제이다.
📌 스프링의 전략
스프링의 기본적인 전략은 "비지니스 로직의 코드와 엔터프라이즈 기술의 코드를 분리시키기"이다.
근본적인 복잡함은 없앨 수 없기 때문에 엉켜있는 두 문제점을 분리해서 하나씩 대응하는 것이다.
✔️ 기술적 복잡함 상대하기
- 서비스 추상화 : 환경 변화에 따라 변화하는 코드에 대한 번거로움을 줄인다. 스프링이 제공하는 템플릿/콜백 패턴은 반복적인 작업과 API 사용 코드를 제거해 준다.
- AOP : 지저분히 얽혀있는 기술과 로직 분리해 별도의 모둘로 관리하게 해준다. 코드에 적용되는 기술 그 자체 이상으로 불필요하게 사용되지 않도록 도와준다.
✔️ 로직의 복잡함 상대하기
- 어떠한 방해만 없으면 OOP의 장점으로 로직의 복잡함을 효과적으로 다루는 코드를 만드는 건 어렵지 않다.
- 결국 로직의 복잡함을 해결하는 건 객체지향 기술 그 자체이다.
결국 스프링은 개발자들이 마주했던 다양한 방해 요소로부터 해방시켜 객체지향의 장점을 제대로 살려 개발을 할 수 있도록 도와주는 프레임워크이다.
2편에서 계속...
참고 : https://12bme.tistory.com/157
'Web > Spring' 카테고리의 다른 글
[Spring] Spring의 DB 접근 기술 (0) | 2022.08.23 |
---|---|
[Spring] Spring의 핵심 : IoC, DI (23.05.16 updated) (0) | 2022.08.23 |
[Spring] Spring vs Spring Boot (2) (0) | 2022.08.23 |
[Spring] Spring Data JPA (2) (0) | 2022.08.13 |
[Spring] Spring Data JPA란? (0) | 2022.08.13 |
댓글