📝 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는, 오랜 시간에 걸쳐 기술적 불편을 해결하며 발전한 결과물입니다.
'TIL > 내일배움캠프' 카테고리의 다른 글
| [Spring] IoC 컨테이너와 Bean — 객체를 관리하는 Spring의 방식 (0) | 2025.09.23 |
|---|---|
| [Spring] IoC와 DI — 좋은 코드의 핵심 원칙 (0) | 2025.09.22 |
| [Java] 문자열 다루기 — String, StringBuffer, StringBuilder 차이 (0) | 2025.09.19 |
| [Spring] Spring MVC란? — MVC 패턴과 DispatcherServlet 동작 원리 (0) | 2025.09.17 |
| [Spring/Lombok] 생성자 애너테이션 알아보기 — @AllArgsConstructor, @NoArgsConstructor, @RequiredArgsConstructor (0) | 2025.09.16 |