TIL/내일배움캠프

[Spring] 자바 웹 개발 흐름 정리 — Servlet부터 Spring Boot까지

bu119 2025. 9. 18. 23:30
728x90
반응형

📝 TIL (Today I Learned) — 2025.09.18. 목요일

✍️ 이 글은 내일배움캠프에서 Spring 입문 강의를 들으며 학습한 내용을 정리한 TIL입니다.

자바 웹 개발의 발전 과정

오늘날 자바 웹 개발에서 Spring Boot는 사실상 표준입니다.
하지만 Spring Boot가 갑자기 등장한 것이 아니라, 기존 기술의 한계를 보완하고 발전한 끝에 나온 결과물이라는 점을 알면 훨씬 더 깊이 이해할 수 있습니다.

 

자바 웹 개발은 다음과 같은 단계를 거쳐 발전했습니다.

👉 스파게티 코드 → JSP/Servlet → Spring MVC → Spring Boot


1. 스파게티 코드 (초기 웹 개발)

  • 화면, 비즈니스 로직, 데이터베이스 코드가 한 파일에 뒤섞여 있던 시기
  • 유지보수 어려움, 작은 수정도 큰 리스크
  • 기능 확장이 사실상 불가능

👉 코드가 얽히고설켜 “스파게티 코드”라는 이름이 붙었습니다.


2. JSP + Servlet 조합 → 사실상의 MVC

  • JSP: 화면을 렌더링하는 데 주로 사용 (View 역할)
  • Servlet: 요청을 받아 처리하는 데 사용 (Controller 역할)

👉 MVC 패턴을 강제로 적용한 것은 아니었지만, 개발자들이 역할을 나누어 사용하면서 사실상의 MVC 구조가 자리잡기 시작했습니다.


3. Servlet 중심 개발 → 복잡성 증가

Servlet만으로 대규모 웹 애플리케이션을 만들다 보니 한계가 드러났습니다.

  • 요청 파라미터를 일일이 처리해야 함
  • 인증, 로깅 같은 공통 기능을 매번 직접 구현해야 함
  • Servlet 클래스가 기하급수적으로 늘어나 유지보수 악화

👉 규모가 커질수록 불편함이 명확해졌습니다.


4. Spring MVC → 구조화된 MVC 프레임워크

이 문제를 해결하기 위해 등장한 것이 Spring MVC입니다.

  • 핵심: DispatcherServlet (Servlet 기반)
  • 요청을 표준화된 방식으로 처리
  • HandlerMapping, HandlerAdapter, ViewResolver 등과 협력
  • Controller / Service / DAO 계층 구조 지원
  • 공통 기능(AOP, 트랜잭션, 의존성 주입) 제공

👉 덕분에 개발자는 반복 작업에서 벗어나 비즈니스 로직에 집중할 수 있게 되었습니다.


5. Spring Boot → 설정 자동화 & 생산성 향상

Spring MVC도 강력했지만, 설정이 복잡했습니다. (특히 XML 😵)
이 불편함을 해결하기 위해 Spring Boot가 등장했습니다.

  • 자동 설정(Auto Configuration) → XML 대신 application.yml 중심
  • Starter 의존성 → 필요한 기능을 한 줄로 추가 가능
  • 내장 서버(Tomcat, Jetty 등) → 실행만 하면 바로 서버 구동
  • 운영 편의 기능(Actuator, 외부 설정 관리) 기본 제공

👉 Spring Boot 덕분에 개발자는 환경 세팅보다 핵심 기능 개발에 집중할 수 있게 되었습니다.


오늘의 핵심 ✨

Servlet → Spring MVC → Spring Boot 는 “대체 관계”가 아닙니다.

  • Spring MVC = Servlet 기반 프레임워크
  • Spring Boot = Spring MVC 기반 자동화 도구

지금 사용하는 Spring Boot는 자바 웹 기술 발전의 집약체입니다.

 

정리하면,

  • 스파게티 코드: 모든 코드가 뒤섞여 유지보수 불가
  • Servlet: 웹 요청 처리의 기반 기술
  • Spring MVC: 구조화된 MVC 프레임워크
  • Spring Boot: 설정 자동화 + 운영 편의 기능으로 생산성 극대화

👉 오늘날 우리가 손쉽게 쓰는 Spring Boot는, 오랜 시간에 걸쳐 기술적 불편을 해결하며 발전한 결과물입니다.

728x90
반응형