오늘따라 코드가 잘 안 적혀서
전체적인 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
'기술 단어장 > Backend' 카테고리의 다른 글
[SpringBoot] Security 6.x 구성 알아보기 (0) | 2024.08.13 |
---|---|
[사고 변천] 음악 유사도 검사 전략의 사고 과정 (0) | 2024.04.09 |
[MyBatis] MyBatis 적용 이전과 이후 DB 데이터 접근 방식의 차이 (0) | 2023.10.25 |
[Web-Backend] MySQL, JDBC, Servlet, AJAX - 요약지 (0) | 2023.10.24 |
[SpringBoot] JWT - 요약지 (0) | 2023.03.28 |
댓글