본문 바로가기
기술 단어장/Backend

[Spring] Spring 생태계 정리

by MFDO 2024. 11. 5.

 

 

오늘따라 코드가 잘 안 적혀서

전체적인 Spring 생태계를 파악해보는 시간을 가졌다.

어떤 역할의 친구들을 제공하는 지 안다면 환경 구성시, 더 원활할 것이다.

 

공식 문서의 목차에 있는 모든 친구들을 뽑아와 항목화했다.

 

Spring Boot

 

spring.io

 

 


 

전체 역할 분류 및 목적

 

 

 

프로젝트 역할 목적 활용 사례
Spring Boot 애플리케이션 개발 Spring 애플리케이션의 설정과 구성을 간소화
개발자가 빠르게 애플리케이션을 시작할 수 있도록 지원
독립 실행형 Spring 애플리케이션을 쉽게 구축 가능
설정 파일을 최소화하여 신속한 개발이 가능
Spring
Framework
애플리케이션 구축을 위한 코어 자바 애플리케이션 개발에 필요한 기본적인 구성 요소를 제공
의존성 주입, 트랜잭션 관리, MVC 패턴 등 다양한 기능을 포함
웹 애플리케이션, 엔터프라이즈 애플리케이션 및 RESTful 서비스 등
Spring Data 데이터 접근 다양한 데이터베이스와 NoSQL 저장소에 대한 일관된 접근 방식 제공
데이터 저장소에 대한 CRUD 작업의 간편함 제공
JPA, MongoDB, Redis 등을 통해 데이터 기반 애플리케이션 개발에 용이
Spring Cloud 마이크로서비스 분산 시스템에서의 서비스 등록, 발견, 로드 밸런싱 등의 기능 제공 마이크로서비스 아키텍처를 관리/배포 지원
Spring Security 보안 인증 및 인가를 위한 기능을 제공
다양한 보안 프로토콜을 지원
REST API 및 웹 애플리케이션의 사용자 인증 및 권한 관리를 안전하게 수행
Spring
Authorization
Server
OAuth2 및 OIDC
지원을 위한 서버
OAuth2 및 OpenID Connect(OIDC) 프로토콜을 지원하여 애플리케이션의 인증 및 인가를 중앙 집중식으로 관리 다양한 클라이언트 애플리케이션에 대한 통합 인증 시스템 구축
Spring for
GraphQL
GraphQL API 통합 Spring 애플리케이션에서 GraphQL API를 쉽게 통합하고 사용할 수 있도록 지원 유연한 데이터 쿼리와 API 요청 처리를 통해 클라이언트에 맞춤형 데이터를 제공할 수 있습니다.
Spring Batch 배치 처리 대량의 데이터 세트를 일괄 처리하는 애플리케이션을 위한 기능 제공
작업 스케줄링 및 트랜잭션 관리 등의 기능 지원
데이터 마이그레이션, 대량 데이터 처리 및 보고서 생성
Spring
Cloud Data Flow
데이터 오케스트레이션 마이크로서비스 및 배치 처리 작업을 위한 데이터 파이프라인을 생성하고 관리할 수 있는 도구를 제공 ETL(추출, 변환, 적재) 프로세스를 설계하고 실행하는 데 사용
Spring
Integration
서비스 통합 다양한 시스템과 애플리케이션 간의 메시징 및 데이터 흐름을 쉽게 관리할 수 있도록 지원 메시징 기반 아키텍처를 구현하고 이벤트 기반 시스템을 구축하는 데 유용
Spring
Session
세션 관리 웹 애플리케이션의 사용자 세션을 효과적으로 관리하고 클러스터 환경에서도 세션 상태를 유지할 수 있도록 지원 스케일링된 환경에서 사용자 세션을 안전하게 관리
Spring
HATEOAS
하이퍼미디어 지원 RESTful API에서 HATEOAS(Hypermedia as the Engine of Application State) 원칙을 구현할 수 있도록 지원 클라이언트가 API의 상태 전이 가능성을 쉽게 탐색하도록 지원
Spring
REST Docs
API 문서 생성 RESTful 서비스에 대한 자동화된 문서 생성 지원 클라이언트를 위한 정확하고 최신의 API 문서를 생성
Spring
AMQP
메시징 지원 RabbitMQ와 같은 메시징 시스템을 통한 비동기 메시지를 전송 및 처리지원 이벤트 기반 아키텍처에서 애플리케이션 간의 비동기 통신 구현
Spring Vault 비밀 관리 민감한 정보(비밀번호, API 키, 인증서 )를 안전하게 저장하고 관리할 수 있도록 지원 애플리케이션의 비밀 정보를 중앙에서 관리하고 접근 제어를 적용
Spring Shell 명령줄 도구 Spring 애플리케이션을 위한 인터랙티브 명령줄 인터페이스를 제공
사용자가 명령어를 통해 애플리케이션과 상호작용 가능
개발 중 명령줄에서 애플리케이션을 쉽게 실행하고 관리
Spring
Data JPA
JPA를 통한
데이터 접근 지원
JPA(Java Persistence API)를 사용하해 관계형 데이터베이스와의 상호작용을 쉽게 할 수 있도록 지원 데이터베이스 작업의 단순화
JPA를 통한 객체 관계 매핑 이용

 

 


 

 

관련 추천 문서

 

 

 

# Spring Rest Docs

 : 이전에 Swagger를 이용해서 자동화를 해본 적은 있지만 Spring Rest Docs는 처음 접하게 되어 재미있게 읽었다. 

 

Spring Rest Docs 적용 | 우아한형제들 기술블로그

안녕하세요? 우아한형제들에서 정산시스템을 개발하고 있는 이호진입니다. 지금부터 정산시스템 API 문서를 wiki 에서 Spring Rest Docs 로 전환한 이야기를 해보려고 합니다. 1. 전환하는 이유 현재

techblog.woowahan.com

 

 

# Spring Authorization Server

 : 아뿔싸 인증만을 위한 서버 개발이라면 이 선택도 좋았겠구나 라는 생각이 들었다. 하지만 여러 역할이 짬뽕되어 있는 내 서버에게는 어떤 이점을 줄 수 있을 지 더 탐구하면 재미있을 것 같다.

 

Spring 기반 OAuth 2.1 Authorization Server 개발 찍먹해보기 | 카카오페이 기술 블로그

사실상의 인가 표준(de facto)인 OAuth 2.1의 Authorization Server의 구현체를 제공하는 Spring Authorization Server 연동 방법을 공유드립니다.

tech.kakaopay.com

 

 

# Spring Authorization Server

 : 매번 gitignore에 넣어놓던 properties 파일과 env 파일들... 사내 메신저로 주고받으며 뭔가 걸리는 마음이 컸는데 이런 방식이면 더 훌륭한 방식으로 해결할 수 있지 않았을까 생각이 든다.

 

Spring Cloud Config Server - Vault 적용

🚀 Spring Cloud Config 란? 분산 시스템에서 애플리케이션 구성 데이터를 하나의 중앙화 된 저장소에서 관리 가능 각 서비스를 다시 build(빌드)하지 않고 최신 구성 정보 적용 가능 스프링 및 스프링

ssdragon.tistory.com

 

 

# Spring Shell

 : 내가 생각한 그 형태가 맞나? 싶어서 보았더니 역시 다들 호기심에 이용해 보는 듯 하다. 그냥 Java로 짜는 것과의 차별점이라고 하면 다른 Spring 생태계와의 높은 결합도가 가장 크다고 생각한다.

 

Spring Shell을 이용해 나만의 CLI를 만들어보자

스프링 프레임워크 기반 프로젝트를 계속하다 보니 문득 내가 모르는 스프링 프로젝트가 또 있나 싶어서 확인하다 보니 Spring Shell 프로젝트를 발견하게 되었습니다. 최근 프로젝트 테스트를 위

monny.tistory.com

 

댓글