큰 틀에서 보는 스프링(Spring)

바그다드·2023년 7월 20일

Spring - Framework, Modules, Projects

여태까지 스프링에서 지원하는 기술들에 대해서 알아보거나 그 개념에 대해서 알아보았다. 하지만 좀 더 큰 틀에서 보면 스프링 프레임워크만 보더라도 코어, 테스트, MVC 등 여러 기술로 나뉘고 스프링 프레임워크, 스프링 부트, 스프링 클라우드 등 여러 프로젝트들이 존재한다. 이번에는 비교적 큰 틀에서 스프링 프로젝트와 프로젝트에서 제공하는 대략적인 기능에 대해서 짚어보고자 한다.

1. 스프링 프레임워크 모듈

1. Spring Core

  • 스프링 모듈중 핵심적인 기능
  • IOC Container, Dependency Injection, Auto Wiring, ...
    • 다음과 같은 어플리케이션의 핵심(또는 기본)요소가 된다.
      • 웹 어플리케이션
      • Rest API
      • 인증과 인가의 구현
      • DB 연동
      • 다른 시스템과의 통합
      • 단위 테스트 작성

2. Spring MVC

  • 웹 어플리케이션 제작에 사용(Web Application, Rest API등)

3. Spring WebFlux

  • 리액티브 웹 제작에 사용
  • 리액티브 웹은 생소한 개념이라 찾아봤는데 여전히 어렵운 개념이긴 하지만 잘 정리되어 있는 글이 있어 링크를 남긴다. 아래의 링크를 참고하자.
    리액티브 프로그래밍

4. JDBC, JPA 등

  • 데이터 베이 접근에 사용

5. JMS

  • 다른 어플리케이션과의 통합에 활용

6. Mock Objects, Spring MVC Test

  • 단위 테스트에 활용

스프링 프레임 워크가 여러 모듈로 나뉜 이유는?

  • 만들고자 하는 서비스의 요구사항이 다르고, 그에 필요한 모듈이 다르기 때문이다
    따라서 스프링 프레임워크에서 필요한 기술만을 선택하여 사용하면 된다.

2. 스프링의 다양한 프로젝트

어플리케이션 아키텍쳐는 지속적으로 발전하고 있다.
웹 - Rest API - MicroServices - Cloud에 이르기 까지
이러한 상황에 가장 많이 사용되고 있는 프레임워크 중 하나는 스프링이다. 그 이유는 스프링 또한 계속 발전하고 있기 때문이다.

1. Spring Framework

  • 첫번째 프로젝트로 앞서 알아보았다.

2. Spring Security

  • Rest API, Web Application, microservice등 웹 어플리케이션에 보안을 추가할 때 사용한다.
    (인증, 인가, 권한 등)

3. Spring Data

  • 동일한 방식으로 다른 타입의 DB를 통합하여 연동할 때 사용한다.
    NoSQL이나 관계형 DB를 통합된 방식으로 연동할 수 있도록 지원한다.
  • 최근 NoSQL의 사용비중이 높아지면서 등장했다.

4. Spring Integration

  • 다른 어플리케이션을 통합하는데 사용하는 프로젝트
  • 다른 어플리케이션과 통신하는데 있어 발생할 수 있는 통합 관련 문제에 유용한 기능을 제공한다.

5. Spring Boot

  • 마이크로 서비스를 빠르게 빌드할 수 있도록 도입된 프로젝트

6. Spring Cloud

  • 클라우드 네이티브 어플리케이션을 구축하는데 사용되는 프로젝트
  • 클라우드 네이티브 어플리케이션에 대한 자세한 설명은 아래의 링크를 참고하자
    클라우드 네이티브란?

스프링 생태계가 인기 있는 이유는?

  1. 느슨한 결합
    • 스프링은 빈의 생성과 의존성 주입을 관리해준다
      • 이는 느슨한 결합의 어플리케이션을 보다 쉽게 구현하도록 지원한다
      • 따라서 단위 테스트를 작성하는 것도 보다 쉬워진다.
  2. 반복되는 코드의 감소
    • 비즈니스 로직에 집중할 수 있도록 해준다.
      • 각 메서드에 예외처리를 별도로 해줄 필요가 없다.
        • 확인된 모든 예외는 런타임 또는 각종 예외로 전환된다.
  3. 구조적 유연성
    • 여러 개로 나뉜 모듈과 프로젝트를 통해 요구사항에 필요한 것만 선택적으로 사용할 수 있다.
  4. 시간에 따른 발전
    • 마이크로 서비스나 클라우드 같은 프로젝트의 등장처럼 기술의 발전에 따라 스프링도 함께 발전해 간다.

이번 포스팅에서는 스프링에 대해 큰 틀에서 살펴보았다. 각 기능에 대해서 세부적으로 알아가는 것도 매우 중요하지만 이렇게 큰 틀에서 스프링에 대해 알아보는 것도 큰 도움이 되는 시간이었다!!!

출처

profile
꾸준히 하자!

1개의 댓글

comment-user-thumbnail
2023년 7월 20일

훌륭한 글이네요. 감사합니다.

답글 달기