Spring Framework

HH_Nebula·2023년 1월 18일
0
post-thumbnail

스프링 프레임워크란?

자바 웹 개발의 핵심은 자바와 서블릿이라 볼 수 있지만 성능과 안정성, 보안, 다른 서비스와의 연계 등 단순한 기능 외에 고려할 사항이 많다. 이러한 문제를 해결하기 위해 Java EE가 탄생했으나 스펙의 복잡함과 구현의 어려움으로 완전히 정착되지는 못했다.

스프링 프레임워크는 자바 기반의 오픈소스 프레임워크로 Java EE에서 요구하는 수준의 복잡한 기능을 Java EE를 사용하지 않고 구현하고자 시작한 것이다.

스프링 프레임워크의 특징은 다음과 같다.

  • 경량 컨테이너
    객체 생성, 소멸과 같은 생명 주기를 관리하며 스프링 컨테이너로부터 필요한 객체를 얻어 올 수 있다.

  • 제어의 역행 지원 ( IoC )
    메서드나 객체의 호출 제어권이 사용자가 아닌 프레임워크에 있어 필요에 따라 스프링에서 사용자의 코드를 호출한다.

  • 의존성 주입 지원 ( DI )
    각 계층이나 서비스 간에 의존성이 존재할 경우 프레임워크가 서로 연결 해준다.

  • 관점 지향 프로그래밍 지원 ( AOP )
    트랜잭션이나 로깅, 보안과 같이 여러 모듈에서 공통적으로 사용하는 기능의 경우 해당 기능을 분리하여 관리할 수 있다.

스프링 부트란?

스프링 프레임워크는 핵심 프레임워크 외에 여러 서브 프로젝트로 구성되어 있으며 실제 사용은 주로 스프링 부트를 통해 이루어진다. 스프링 부터는 스프링 프레임워크 프로젝트를 손쉽게 시작할 수 있도록 하며 개발과 관련한 스프링 구성요소를 편하게 관리할 수 있도록 한다.

스프링 부트의 주요 특징은 리액티브 스택과 서블릿 스택을 구분하고 있다는 점이다.

  • 서블릿 스택
    기존과 같이 서블릿 API에 기반한 동기 방식의 블로킹 I/O 구조를 사용하며 하나의 요청은 하나의 스레드로 처리된다. 아파치 톰캣과 같은 서블릿 컨테이너를 사용하며 전통적인 Spring MVC 기반의 서버 프로그램 개발과 JPA, JDBC, NoSQL 데이터베이스 지원을 포함한다.

  • 리액티브 스택
    새로운 비동기 논블로킹 I/O 구조를 사용하며 멀티코어 시스템의 장점을 살리고 대규모 사용자 접속을 처리하는데 유용한 구조로 설계되어 있다. 네티, 언더토우 및 서블릿 3.1 이상의 컨테이너를 사용하며 Spring WebFlux라고 하는 새로운 프레임워크를 사용해 개발한다. 리액티브 스택은 다음과 같은 구현에 적합하다 비동기 논블로킹 리액티브 개발 효율적으로 동작하는 고성능 웹 애플리케이션 서비스 간 호출이 많은 마이크로 서비스 아키텍쳐 구현

동기/비동기 블로킹이란?

동기 방식은 요청 후 응답을 받을 때 까지 대기하는 방식을 말한다. 대기하는 동안 다른 일을 처리할 수 없는 상태인 블로킹이 되어 요청에 시간이 많이 걸리는 경우 비효율적인 방법이다.

비동기 방식은 즉각적인 응답 결과가 필요 없는 경우 요청 후 응답을 기다리지 않고 다른 일을 하다가 응답이 오면 그때 해당 응답을 처리하는 방식으로 대기시간 없이 다른 일을 할 수 있다는 장점이 있다.

스프링 프레임워크의 조합

스프링 프레임워크 자체는 방대하기 때문에 프로젝트 규모와 성격에 따라 적절한 요소를 조합해 사용해야 한다. 일반적으로 많이 사용하는 조합은 다음과 같다.

  • Spring Boot : MVC Web, REST API 개발
  • Spring Data JDBC/JPA/MongoDB/REST : 데이터베이스 연동
  • Spring Security : 로그인 관리 및 OAuth2 인증 연동
profile
공부하고 기록하고 복습하고

0개의 댓글