[Spring] Spring 이란?

WOOK JONG KIM·2022년 10월 21일
0

패캠_java&Spring

목록 보기
38/103
post-thumbnail

Spring

20년 가까이 단 한번도 자바 엔터프라이즈 어플리케이션 개발의 최고 자리를 놓친 적이 없는 프레임 워크

Spring의 구성은 20여가지로 구성되어있으며 이러한 모듈들은 스프링의 핵심기능(DI, AOP, etc)를 제공해주며, 필요한 모듈만 선택하여 사용 가능하다

현재 서버가 단일 아키텍쳐(모놀리스), 마이크로서비스 아키텍쳐로 변환 중에 있으며 이에 맞춰 스프링도 진화하는 상태

여러 모듈이 있지만 스프링 부트, 스프링 클라우드, 스프링 데이터, 스프링 배치, 스프링 시큐리티에 중점을 둠

테스트의 용이성, 느슨한 결합에 중점을 두고 개발
-> 옛날엔 작성/테스트가 어려웠다 (특히: 데이터베이스와 같이 외부에 의존성을 두는 경우 테스트 힘듬)

다른 프레임워크와 가장 큰 차이점 -> IOC

스프링 부트

스프링부트(Spring Boot)는 자바의 웹 프레임워크로 기존 스프링(Spring) 프레임워크에 톰캣 서버를 내장하고 여러 편의 기능들을 추가하여 꾸준한 인기를 누리고 있는 프레임워크

즉 스프링부트는 웹 프로그램을 쉽고 빠르게 만들 수 있도록 도와주는 웹 프레임워크

스프링 클라우드

Spring Cloud는 마이크로서비스의 개발, 배포, 운영에 필요한 아키텍처를 쉽게 구성할 수 있도록 지원하는 Spring Boot기반의 프레임워크

즉 MSA구성을 지원하는 Springboot기반 Framework

스프링 데이터

목적: 기본 데이터 저장소의 특수한 특성을 유지하면서 데이터 접근을 위한 친숙하고 일관된 Spring 기반의 프로그래밍 모델을 제공하는 프로젝트

Spring Data는 데이터 접근 기술, relational and non-relational database, map-reduce 프레임워크, 클라우드 기반의 서비스를 쉽게 사용할 수 있도록 해준다.

데이터베이스와 관련된 많은 하위 프로젝트(Spring Data JPA, Spring Data REST, …)를 포함하는 포괄적인 프로젝트이다.

스프링 배치

엔터프라이즈 시스템의 운영에 있어 대용량 일괄처리의 편의를 위해 설계된 가볍고 포괄적인 배치 프레임워크

  • 대용량의 비즈니스 데이터를 복잡한 작업으로 처리해야하는 경우

  • 특정한 시점에 스케쥴러를 통해 자동화된 작업이 필요한 경우 (ex. 푸시알림, 월 별 리포트)

  • 대용량 데이터의 포맷을 변경, 유효성 검사 등의 작업을 트랜잭션 안에서 처리 후 기록해야하는 경우

  • Spring Batch는 로깅/추적, 트랜잭션 관리, 작업 처리 통계, 작업 재시작, 건너뛰기, 리소스 관리 등 대용량 레코드 처리에 필수적인 재사용 가능한 기능을 제공,
    또한 최적화 및 파티셔닝 기술을 통해 대용량 및 고성능 일괄 작업을 가능하게 하는 고급 기술 서비스 및 기능을 제공

스프링 시큐리티

스프링 시큐리티는 스프링 기반의 애플리케이션의 보안(인증과 권한, 인가 등)을 담당하는 스프링 하위 프레임워크입니다. 즉 인증(Authenticate, 누구인지?) 과 인가(Authorize, 어떤것을 할 수 있는지?)를 담당하는 프레임워크를 말합니다.

스프링 시큐리티에서는 주로 서블릿 필터(filter)와 이들로 구성된 필터체인으로의 구성된 위임모델을 사용합니다. 그리고 보안과 관련해서 체계적으로 많은 옵션을 제공해주기 때문에 개발자 입장에서는 일일이 보안관련 로직을 작성하지 않아도 된다는 장점

profile
Journey for Backend Developer

0개의 댓글