728x90
반응형
Spring
- Java의 웹 프레임워크로 JAVA 기반으로 사용됩니다.
- 프로젝트를 진행하는 경우 분업으로 작업을 해도 중복되는 코드가 발생합니다.
- Spring은 이러한 중복코드의 사용량을 줄여주고 비즈니스 로직을 더 간단하게 작성해 줄 수 있도록 도와줍니다.
- Spring은 오픈소스를 좀 더 효율적으로 가져다 쓰기 좋은 구조입니다.
- 간단히 Spring은 JAVA 기술들을 더 쉽게 사용할 수 있게 해주는 오픈소스 프레임 워크입니다.
- 자바 엔터프라이즈 개발을 편하게 해주는 오프소스 경량급 애플리케이션 프레임워크입니다.
프레임워크
- 어떠한 목적을 달성하기 위해 복잡하게 얽혀 있는 문제를 해결하기 위한 구조이자 약속이며 소프트웨어 개발에 있어서 하나의 뼈대 역할을 합니다.
- 자주 쓰일 만한 기능들을 한데 모아 놓은 유틸(클래스)들의 모음(집합)이라 정의할 수 있습니다.
- 설계 기반이 되는 부분을 기술한 확장 가능한 기반 코드와 사용자가 이 코드를 자기 입맛대로 수정, 확장하는데 필요한 라이브러리 이 두 가지 요소가 통합되어 제공되는 형태입니다.
- 이 코드는 일정 수준 이상의 품질을 보장받아 비교적 이른 시간에 완성, 유지 보수가 가능한 환경을 제공해 주는 설루션입니다.
- 프레임워크는 기본적인 설계, 필요한 라이브러리들을 알아서 제공해 주고 개발자는 만들고 싶은 기능을 구현하는 데 집중하라는 취지로 만들어졌습니다.
라이브러리
- 소프트웨어 개발 시 사용되는 프로그램의 구성요소로, 공통으로 사용될 수 있는 특정한 기능들을 모듈화 한 것입니다.
- 대상 환경(플랫폼)에서 바로 실행할 수 있는 형태로 제공됩니다.
- 개발자가 필요한 순간에 라이브러리를 직접 추가할 수 있습니다.
프레임워크, 라이브러리 의 차이점
- 라이브러리는 프로그램 기능 구현에만 도움을 줄 수 있고 프레임 워크는 필요한 라이브러리와 기능 구현에 필요한 설계도 틀을 함께 제공해 줍니다.
- 즉 프레임워크는 라이브러리+설계도가 함께 옵니다.
- ※ 설계도 틀 :
- 확장할 수 있는 기반 코드, 재사용할 수 있는 형태의협 업화 된 클래스와 같은 뜻입니다.
- 기반이 되는 부모 클래스라 생각할 수 있습니다.
스프링 프레임워크
- 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로서 엔터프라이즈급 애플리케이션을 개발하기 위한 모든 기능을 종합적으로 제공하는 경량화된 설루션입니다.
자바 엔터프라이즈 개발
- 보안, 트랜잭션과 같은 엔터프라이즈 개발에서 요구되는 기술에 신경 쓰지 않고 비즈니스 로직만 집중할 수 있게 만드는 것을 의미합니다.
경량화
- 가장 단순한 서버 환경인 톰캣, 제티에서도 완벽하게 동작할 수 있습니다.
- 단순한 개발 툴, 기본적인 개발 환경으로 애플리케이션을 만들기 충분합니다.
- EJB를 포함한 여타 프레임워크에서 동작하기 위해 작성된 코드보다 상대적으로 작고 단순합니다.
애플리케이션 프레임워크
- 일반적인 프레임워크는 특정 계층에서 동작하는 한 가지 기술 분야에만 집중됩니다.
- 스프링은 다르게 특정 계층이나 기술, 업무 분야에 국한되지 않고 애플리케이션 전 영역을 포괄하는 범용적인 프레임워크인 ‘애플리케이션 프레임워크’라는 특징을 갖고 있습니다.
- 스프링을 MVC 프레임워크, JDBC/ORM 지원 프레임워크라고 생각하는 것은 스프링이 다루는 일부 영역만을 사용한 것입니다.
- 스프링의 일차원적인 존재 목적은 핵심 기술에 담긴 프로그래밍 모델을 일관되게 적용해서 엔터프라이즈 애플리케이션 전 계층에 기능을 제공해 줌으로써 애플리케이션을 편리하게 해주는 애플리케이션 프레임워크로 사용되는 것을 생각해야 합니다.
스프링 목적
- 엔터프라이즈 개발의 복잡함
- 엔터프라이즈 시스템이란
- ▷서버에서 동작하며 기업과 조직의 업무를 처리해 주는 시스템
- 기술의 복잡함
- 엔터프라이즈 시스템은 많은 사용자의 요청을 동시 처리해야 하여 서버의 자원을 효율적으로 공유하고 분배해서 사용할 수 있어야 합니다.
- 기업이 핵심 정보를 다루어 보안, 확장성, 안전성 면에도 뛰어나 아야 합니다.
- 엔터프라이즈 시스템을 개발하는 경우 순수한 비즈니스 로직을 구현하는 것 외에도 기술적으로 고려할 사항이 많아집니다.
- 비즈니스 로직의 복잡함
- 기업 업무 프로세스를 수시로 변경되는 경우 시스템 개발과 유지보수, 추가 개발 등의 작업 부담이 커지고 그에 따른 개발 난도는 더욱 증가합니다.
- 복잡함을 가중시키는 원인
- 근본적인 비즈니스 로직과 엔터프라이즈 기술이라는 두 가지 복잡함이 얽혀 있어 쉽게 다루기 어렵다는 의미입니다.
- 각종 엔터프라이즈 기술 서비스를 적용하기 위한 코드와 각종 기술적인 API의 호출 코드를 비즈니스 로직에 대한 구현 코드와 함께 덕지덕지 붙여서 만드는 것은 매우 어렵습니다.
- 설령 구현 후에도 유지보수하는 난이도도 대폭으로 상승합니다.
- 스프링의 해결책
- 근본적인 엔터프라이즈의 복잡함은 제거 대상이 아닙니다.
- 기술적인 복잡함을 해결하는 경우 보안을 취약하게 방치하거나 사용자가 늘어난 경우 더 이상 확장이 불가한 프로그램을 만들 수 없습니다.
- 기술적 복잡함을 상대하는 전략
▷ 특정 환경에 종속적인 기술 (서비스의 추상화)
- 환경, 서버가 변경되는 경우 적용되는 조건을 바꾸면서 적용하는 기술이 달라지고 그에 따라 코드로 변경되는 심각한 문제가 발생합니다.
- 하지만 스프링은 서비스 추상화를 이용해서 로우 레벨의 기술 구현 부분과 기술을 사용하는 인터페이스를 분리하고 환경과 세부 기술에 독립적인 접근 인터페이스를 제공합니다.
▷ 기술적인 코드가 비즈니스 로직에 섞여 등장(AOP)
- AOP는 기술과 비즈니스 로직이 지저분하게 얽혀 있는 것을 분리할 뿐만 아니라 중복적으로 작성된 기술 코드를 처리해 주는 강력한 기술입니다.
- 비즈니스 로직의 복잡함
- 이 영역은 스프링이 관여하지 않습니다.
- 비즈니스 로직의 복잡함을 상대하는 전략이 객체지향 기술의 자바 자체입니다.
- 스프링은 단지 객체지향 언어의 장점을 제대로 살리지 못하게 방해하는 요소를 제거합니다.
JAVA Spring은 경량화된 설루션으로 자바 엔터프라이즈 개발에서 필요한 기술을 신경 쓰지 않고 비즈니스 로직에 집중할 수 있게 해주는 애플리케이션 프레임워크입니다.
스프링은 서비스 추상화와 AOP를 이용하여 기술적인 복잡함을 해결하고 객체지향 언어의 장점을 살리는 것을 목적으로 합니다.
728x90
반응형
'백수 > Spring' 카테고리의 다른 글
ORM(Object Relation Mapping) (0) | 2023.07.14 |
---|---|
영속성(Persistence) (0) | 2023.06.20 |
어노테이션 기초 정리 (0) | 2023.05.30 |
Spring 기초 (0) | 2023.05.23 |
스프링이란 (0) | 2022.10.06 |