01. 웹 서버와 WAS
1. 현대 아키텍처
현대적인 아키텍처는 보통 [Web Server → WAS → DB]의 구조를 가지며, 웹 서버와 WAS를 구분짓는 이유는 다음과 같다.
| 웹 서버와 WAS를 구분짓는 이유 | |
| 효율적인 부하 분산 (Efficiency) |
정적 파일은 웹 서버가 복잡한 동작은 WAS가 처리하도록 하여, 시스템 전체의 속도 형상 |
| 보안 (Security) |
웹 서버가 프록시(Proxy) 역할을 수행함으로써, WAS 내 데이터베이스 보호 |
| 장애 극복 (Failover) |
하나의 WAS에 여러 개의 웹 서버를 연결하여 부하 분산(Load Balancing) 수행 |
2. 웹 서버 vs WAS
| 웹 서버 (Web Server) |
WAS (Web Application Server) |
|
| 역할 | 클라이언트의 HTTP 요청에 맞는 응답을 제공 >> 안정적 소통 및 정적 자원 관리 |
데이터를 가공하여 DB 조회나 복잡한 비지니스 로직을 수행 >> 애플리케이션 실행 및 데이터 처리 |
| 응답 | 이미 만들어둔 정적 컨텐츠 제공 >> HTML, CSS, 이미지 등 |
동적 컨텐츠 생성 및 제공 >> DB 조회 결과, 사용자 맞춤 정보, 로그인 처리 등 |
| 작동 방식 | 파일 경로에서 파일 읽기 | 프로그램 실행 후 결과 생성 |
| 특징 | 연산 / 로직 없이 파일을 단순히 전달하므로 빠름 | Web Server + Web Container의 결합 형태 |
| 예시 | Apache, Nginx | Tomcat, JBoss, Jeus |
3. Spring Boot 내장 톰캣(Embedded Tomcat)
또한 Spring Boot에 내장된 톰캣은 WAS에 해당한다. 과거에는 별도의 WAS를 설치하고 프로젝트를 WAR 파일로 빌드하여 배포해야 했지만, 스프링 부트가 WAS를 내장함으로써 애플리케이션만 실행하면 즉시 서버를 가동하는 것이 가능해졌다.
02. Spring Boot의 Bean 등록
| 컴포넌트 스캔 (Component Scan) |
자바 설정 클래스 직접 등록 (Java Config) |
|
| 등록 방식 | 클래스 선언부에 어노테이션 추가 >> @Service / @Repository / @Controller 등 |
@Configuration 클래스 내 메서드 @Bean 정의 |
| 자동화 여부 | 자동 (스프링 스캔 방식) | 수동 (직접 명시) |
| 주요 용도 | 일반적인 비지니스 로직 클래스 | 외부 라이브러리 / 전역 설정 / 복잡한 생성 조건 |
| 가독성 | 클래스마다 흩어져 있어 파악하기 어려움 | 한 곳에 모여 있어 설정 파악 용이 |
| 장점 | 높은 생산성 | 설정 정보와 비지니스 로직 분리 용이 |
| 단점 | 외부 라이브러리 클래스 사용 불가능 | 매번 설정 코드를 작성하는 과정 필요 |
'[Codeit] > Spring 백엔드 10기 위클리페이퍼' 카테고리의 다른 글
| [07] 웹 API의 발전 과정과 HTTP 요청의 흐름 (0) | 2026.02.26 |
|---|---|
| [06] AOP와 MVC (0) | 2026.02.26 |
| [04] Spring Framework의 탄생 배경과 Java 라이브러리 (0) | 2026.02.05 |
| [03] HashSet, 그리고 O(n)과 O(logn) (0) | 2026.01.27 |
| [02] SRP와 OCP, 그리고 map과 flatMap (0) | 2026.01.18 |