Spring 생태계 맵 — 프로젝트 전체 지형도 한눈에 보기

Spring Framework, Spring Boot부터 Spring Cloud, Spring Security, Spring Data까지 Spring 생태계 전체 프로젝트를 카테고리별로 정리하고 학습 로드맵을 제시합니다.

· 9 min read · PALDYN Team

지난 글에서 IoC, DI, AOP, PSA라는 4대 특성을 살펴봤다. 이제 Spring이 제공하는 프로젝트들이 얼마나 방대한지 전체 지형을 파악할 시간이다. “Spring을 배운다”는 말은 사실 여러 Spring 프로젝트 중 어떤 것을 배우느냐에 따라 의미가 달라진다. 이 지도를 먼저 손에 들고 출발하면, 나중에 낯선 용어를 만나도 어디에 속하는 개념인지 금방 파악할 수 있다.

Spring 프로젝트 분류

Spring.io에 공개된 프로젝트는 2026년 기준 30개가 넘는다. 실무에서 자주 쓰이는 핵심 프로젝트를 여섯 카테고리로 묶어보면 다음과 같다.

Spring 생태계 주요 프로젝트

1. 핵심 (Core / Boot)

모든 Spring 애플리케이션의 출발점이다.

  • Spring Framework: IoC 컨테이너, DI, AOP, 이벤트 시스템, 테스트 지원을 포함한 최상위 프레임워크. 다른 모든 프로젝트가 이 위에서 동작한다.
  • Spring Boot: spring-boot-starter-* 형태의 스타터와 자동 설정(Auto-configuration)으로 설정 시간을 대폭 줄여준다. 내장 Tomcat/Undertow 덕분에 JAR 하나만 실행하면 된다.
  • Spring Initializr: start.spring.io를 통해 프로젝트 뼈대(build.gradle, pom.xml, 기본 클래스)를 웹에서 바로 생성한다.

2. 웹 (Web)

HTTP 요청을 처리하는 서버 계층이다.

  • Spring MVC: 전통적인 서블릿 기반 MVC 프레임워크. @Controller, @RestController, @RequestMapping으로 요청을 매핑한다.
  • Spring WebFlux: 리액티브 프로그래밍 모델. Mono/Flux를 사용해 논블로킹 I/O를 처리한다. 고동시성 환경에서 유리하다.
  • Spring REST Docs: MockMvc/WebTestClient 테스트 코드로부터 API 문서를 자동 생성한다. Swagger보다 정확성이 높다.
  • Spring GraphQL: GraphQL 스키마와 Spring의 데이터 접근 계층을 연결한다.

3. 데이터 (Data)

데이터베이스와의 상호작용을 추상화한다.

  • Spring Data JPA: JPA(Jakarta Persistence API) 위에서 JpaRepository 인터페이스만 선언하면 CRUD, 페이징, 정렬 구현체를 자동으로 제공한다.
  • Spring Data Redis: Lettuce/Jedis 기반 Redis 클라이언트 추상화. 캐시, 세션, Pub/Sub에 활용한다.
  • Spring Data MongoDB: MongoDB 문서 저장소에 대해 JPA와 유사한 리포지토리 패턴을 제공한다.
  • Spring Data REST: JpaRepository를 자동으로 HTTP REST 엔드포인트로 노출한다(HAL 형식).

4. 보안 (Security)

인증·인가의 전담 프레임워크다.

  • Spring Security: 폼 로그인, HTTP Basic, 필터 체인 기반 아키텍처로 인증(Authentication)과 인가(Authorization)를 처리한다.
  • Spring OAuth2 Client: OAuth2·OIDC 프로토콜로 소셜 로그인(Google, GitHub 등)을 구현한다.
  • Spring Authorization Server: OAuth2 인가 서버를 직접 구축할 때 사용한다.
  • Spring Session: HTTP 세션을 Redis나 JDBC 등 외부 저장소로 분리해 수평 확장을 지원한다.

5. 클라우드 (Cloud)

마이크로서비스 아키텍처(MSA) 구축을 위한 도구다.

  • Spring Cloud Gateway: API 게이트웨이. 요청 라우팅, 로드 밸런싱, 필터링을 한 곳에서 담당한다.
  • Spring Cloud Config: Git/파일 시스템 기반 중앙 설정 서버. 모든 서비스의 설정을 한 저장소에서 관리한다.
  • Spring Cloud Netflix Eureka: 서비스 디스커버리. 각 마이크로서비스가 서로를 이름으로 찾을 수 있게 한다.
  • Spring Cloud Resilience4j: 서킷 브레이커, Rate Limiter, Retry 패턴으로 서비스 간 장애 전파를 차단한다.
  • Spring Cloud OpenFeign: HTTP 클라이언트를 인터페이스 선언만으로 구현한다.

6. 운영·통합 (Ops / Integration)

운영 환경과 비동기 메시지 처리를 담당한다.

  • Spring Boot Actuator: /actuator/health, /actuator/metrics 등 운영 엔드포인트를 노출한다. Prometheus 연동으로 모니터링 체계를 완성한다.
  • Spring Batch: CSV·DB를 처리하는 대용량 배치 잡을 Job→Step→ItemReader/Processor/Writer 구조로 구현한다.
  • Spring Integration: 파일, DB, 메시지 브로커 간 데이터 흐름을 파이프라인 방식으로 연결한다.
  • Spring for Apache Kafka / Spring AMQP: Kafka 및 RabbitMQ와의 메시지 생산·소비를 추상화한다.

학습 로드맵

Spring 학습 로드맵

이 시리즈는 위 로드맵의 1번(Spring Core)부터 시작해 순서대로 진행한다. 각 단계를 건너뛰면 다음 단계의 “왜 이렇게 동작하는가”를 이해하기 어렵다. 특히 Spring Boot를 먼저 배우고 Spring Core를 나중에 공부하는 역순은 “왜 자동 설정이 이렇게 동작하는지”를 이해하지 못하는 블랙박스 개발로 이어질 수 있다.

Spring Framework와 Spring Boot의 관계 다시 보기

생태계를 이해하는 데 가장 많이 혼란스러운 부분이 이 둘의 관계다.

[Spring Framework]

[Spring Boot]  ← 자동 설정 + 스타터 + 내장 서버 추가

[Spring MVC / Spring Data / Spring Security / ...]  ← Spring Boot 스타터로 통합

Spring Boot는 Spring Framework를 포함한다. spring-boot-starter-web을 추가하면 Spring MVC, Jackson, Tomcat이 함께 설치된다. 즉 Spring Boot 앱을 만들 때 내부에서는 Spring Framework의 ApplicationContext가 돌아가고, Spring MVC의 DispatcherServlet이 요청을 처리하며, Spring Data의 JpaRepository가 DB를 다룬다.

// Spring Boot 진입점 — 모든 Spring 프로젝트가 여기서 시작
@SpringBootApplication
public class BlogApplication {
    public static void main(String[] args) {
        SpringApplication.run(BlogApplication.class, args);
        // 위 한 줄이 ApplicationContext 생성, Bean 스캔,
        // DispatcherServlet 등록, 내장 Tomcat 시작을 모두 처리
    }
}

이 한 줄 뒤에서 일어나는 일들이 이 시리즈에서 하나씩 해부할 내용이다.

버전 관리: Spring BOM 활용

Spring 프로젝트들은 서로 의존성이 얽혀 있어 버전을 개별 관리하면 충돌이 발생한다. Spring Boot는 **BOM(Bill of Materials)**을 통해 호환성이 검증된 버전 조합을 제공한다.

// build.gradle — Spring Boot BOM이 모든 Spring 프로젝트 버전을 관리
plugins {
    id 'org.springframework.boot' version '3.4.1'
    id 'io.spring.dependency-management' version '1.1.7'
}

dependencies {
    // 버전 번호 없이 선언 — BOM이 올바른 버전을 자동 선택
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-security'
}

spring-boot-starter-parent(Maven) 또는 io.spring.dependency-management(Gradle)를 사용하면 Spring 팀이 검증한 의존성 조합을 그대로 사용할 수 있다.

어떤 프로젝트부터 배워야 할까

실무 목적별 권장 시작점을 정리하면 다음과 같다.

목표최소 필요 프로젝트
REST API 서버Spring Boot + Spring MVC + Spring Data JPA
인증 포함 API위 + Spring Security
마이크로서비스위 + Spring Cloud Gateway + Spring Cloud Config
배치 처리Spring Boot + Spring Batch + Spring Data
이벤트 기반Spring Boot + Spring Kafka/AMQP

다음 글에서는 실제 개발 환경을 구성하는 시간이다. JDK 선택부터 IDE 설정, Maven과 Gradle 기초까지 첫 Spring 프로젝트를 띄우기 위한 모든 준비를 다룬다.


지난 글: Spring의 4대 특성 — IoC·DI·AOP·PSA

다음 글: Spring 역사 — 탄생부터 Spring 6까지


읽어주셔서 감사합니다. 😊