* 본 포스팅을 무단 복제하시거나 배포하지 마시기 바랍니다.
( 게시글 최상단에 본 블로그 출처를 밝히시면 포스팅은 가능합니다. )
* 필요한 부분만 학습 후 정리했습니다.
주제) Containerless 웹 애플리케이션 아키텍처
키워드) 컨테이너, 컨테이너리스
1. 전통적인 웹 아키텍처 개념
웹 프로그램 개발 의미
- 서버에서 동작하는 웹 컴포넌트(회원가입, 조회, 주문 등)를 만드는 일
- 이 컴포넌트들은 웹 컨테이너 안에 있어야 동작함
웹 컨테이너의 주요 역할
- 생명주기 관리: 웹 컴포넌트를 메모리에 올리고, 인스턴스를 생성 및 유지 관리
- 요청 매핑: 클라이언트 요청을 어떤 컴포넌트가 처리할지 결정
→ 스프링에서는 이것을 핸들러 매핑이라 부름
자바 용어로 해석하면
웹 컴포넌트 = 서블릿
웹 컨테이너 = 서블릿 컨테이너 (예: Tomcat)
2. 전통 구조의 한계
- web.xml 설정 필요
- 서블릿 컨테이너 구성/배포/실행 절차가 복잡
- 컨테이너 종류에 따라 환경 설정이 다름 → 학습 부담 증가
- 애플리케이션을 실행하려면 항상 별도의 서버에 배포 필요
3. 스프링 프레임워크 등장
- 스프링은 서블릿 컨테이너를 대체하지 않고 그 뒤에서 동작
- 서블릿이 들어온 요청을 → 스프링 컨테이너로 넘겨주고→ 스프링 컨테이너 내의 빈(Bean) 중 하나가 처리
즉,
실제 애플리케이션 로직은 스프링 컨테이너 내에서 수행
하지만 자바 표준상 서블릿은 반드시 존재해야하므로 서블릿 컨테이너는 여전히 필요
4. Containerless 개념 (Spring Boot 방식)
변화 포인트
- 더 이상 web.xml 작성 필요 없음
- 스프링 부트 메인 클래스 실행만으로 애플리케이션이 실행됨
- 내부적으로 내장 톰캣(Embedded Tomcat)을 실행시켜 자동으로 컨테이너 구성
핵심 이점
- 서버를 직접 띄우지 않아도 됨 (개발환경에서 바로 실행 가능)
- 톰캣 설정, 서블릿 등록 등을 자동화
- 개발자 생산성 향상, 설정 부담 감소 → "컨테이너리스(Containerless)" 아키텍처
요약
| 구분 | 전통 방식 | 스프링 부트 ( 컨테이너리스 ) |
| 서블릿 설정 | 직접 작성 (web.xml) | 자동 등록 (@SpringBootApplication) |
| 서버 실행 | 외부 WAS 필요 | 내장 톰캣 자동 실행 |
| 컴포넌트 매핑 | 수동 설정 | 스프링 핸들러 자동 처리 |
| 개발 흐름 | 설정 > 배포 > 실행 | 코드 작성 > 바로 실행 |
| 학습 곡선 | 비교적 가파름 | 설정 부담 낮음 |
'Backend > Spring Boot' 카테고리의 다른 글
| 인프런) 토비의 스프링 부트 - 이해와 원리 학습 Day2 (1) | 2025.05.14 |
|---|---|
| 인프런) 토비의 스프링부트 이해와 원리 학습 커리큘럼 (1) | 2025.05.12 |
댓글