728x90
반응형

자바 개발을 하다 보면 JAR, WAR, EAR 같은 단어를 많이 듣게 됩니다.
“이게 대체 뭐고 언제 뭘 써야 하지?”
아래 이미지와 함께 구조적 차이Spring Boot에서의 선택 기준을 쉽게 설명드릴게요.


📦 JAR / WAR / EAR 구조 한눈에 보기

위 그림을 보면 구조를 직관적으로 알 수 있어요:

  • JAR: 클래스 파일과 설정이 들어간 기본 단위
  • WAR: 웹 애플리케이션 배포용, WEB-INF, web.xml 포함
  • EAR: 여러 WAR + JAR 묶은 엔터프라이즈 통합 패키지

🔍 각 파일의 의미

✅ JAR (Java ARchive)

  • 자바 클래스와 메타정보를 하나로 압축한 파일
  • 애플리케이션이나 라이브러리를 배포할 때 사용
  • .class, META-INF/manifest.mf 포함

✅ WAR (Web Application Archive)

  • 웹 애플리케이션을 위한 구조
  • JSP, Servlet 기반 웹 프로젝트를 배포하는 데 사용
  • WEB-INF/web.xml, classes, lib 등 구조 고정

✅ EAR (Enterprise ARchive)

  • 기업용 대규모 시스템 통합 배포에 사용
  • 여러 WAR, JAR 모듈을 하나로 묶은 컨테이너
  • WebLogic, JBoss 같은 Java EE 서버 환경에 최적화

🚀 Spring Boot에서의 JAR vs WAR

항목                                          JAR (기본값)                                                             WAR
WAS 포함 ✅ 내장 Tomcat 내장 ❌ 외부 WAS 필요
실행 방식 java -jar로 바로 실행 Tomcat, WebLogic 등에서 배포
설정 편의성 간단한 구조, 빠른 실행 web.xml, 복잡한 디렉토리 구조
JSP 지원 ❌ JSP 미지원 (공식 비권장) ✅ JSP 사용 가능
활용 예시 REST API, 간단한 마이크로서비스 JSP/Servlet 중심 웹 프로젝트, 전통 웹앱

 

🧩 JSP + Spring Boot = WAR 필요?

Spring Boot에서 JSP를 사용하려면 아래 조건이 필요합니다:

  1. 프로젝트를 WAR로 패키징
  2. application.properties에 아래 설정 추가:
properties
복사편집
spring.mvc.view.prefix=/WEB-INF/views/ spring.mvc.view.suffix=.jsp
  1. JSP 파일은 src/main/webapp/WEB-INF/views/에 위치

📌 JAR로 배포할 경우 JSP는 작동하지 않음!
→ Thymeleaf, Mustache 등 템플릿 엔진 사용을 권장합니다.


✅ 정리 요약

구분                                                           JAR                                     WAR                                    EAR
내장 Tomcat ✅ 있음 ❌ 없음 ❌ 없음
실행 단독 실행 가능 WAS 필요 Java EE 서버 필요
JSP ❌ (제한적)
구조 단순 정형화 필요 매우 복잡
Spring Boot 기본
 

🏁 마무리

  • 개인 프로젝트, 마이크로서비스, REST API → JAR 추천
  • JSP, 레거시 웹앱 → WAR 필요
  • 대규모 엔터프라이즈 시스템 → EAR (하지만 요즘은 잘 안 씀)

Spring Boot는 기본적으로 JAR 중심 구조이며,
WAR는 외부 WAS와 JSP 기반 웹앱에 한정해서 사용하는 경우가 많습니다.

728x90
반응형
728x90
반응형

✍️ 서론 개요 (도입부)

웹 시스템을 처음 배우는 사람부터 실무자까지 혼동하기 쉬운 개념이 바로 웹 서버(Web Server) 와 **WAS(Web Application Server)**입니다.
두 용어는 유사하게 들리지만, 역할과 목적은 분명히 다릅니다.

이 글에서는:

  • 웹 서버의 정의와 역할
  • WAS의 구조 및 동작 과정
  • 웹 서비스 아키텍처 흐름
  • 왜 Web Server와 WAS를 분리해서 써야 하는지

를 실제 흐름도와 함께 명확하게 정리합니다.


📌 핵심 내용 정리

✅ 웹 서버(Web Server)

  • HTTP 요청을 받아 HTML, CSS, JS, 이미지 등의 정적 콘텐츠를 즉시 제공
  • 동적 요청은 WAS로 전달하고 결과를 중계
  • 대표 소프트웨어: Apache, Nginx

✅ WAS (Web Application Server)

  • Servlet, JSP 등의 동적 콘텐츠를 처리하는 미들웨어
  • DB 연동, 비즈니스 로직 처리 등 핵심 로직 담당
  • 대표 소프트웨어: Tomcat, WebLogic, JBoss

✅ 웹 서비스 아키텍처 구조

구조설명
클라이언트 → Web Server → DB 정적 요청에 적합
클라이언트 → WAS → DB 단독 구조지만 부하 위험
클라이언트 → Web Server → WAS → DB 실무에서 가장 효율적인 분리 방식
 

✅ 클라이언트 요청의 실제 처리 흐름

  1. 클라이언트가 HTTP 요청을 보냄
  2. Web Server가 정적 콘텐츠는 즉시 응답,
    동적 요청은 WAS로 전달
  3. WAS는 Servlet 생성 → Thread 실행
  4. 요청에 따라 doGet() 또는 doPost() 실행
  5. 결과 페이지를 Web Server → 클라이언트로 반환

✅ 왜 Web Server와 WAS를 분리해야 할까?

  • WAS가 정적 요청까지 처리하면 자원 낭비
  • 비즈니스 로직이 느려지고 전체 서비스 지연 발생
  • 정적 콘텐츠는 Web Server가 처리 → 부하 분산 & 속도 개선
728x90
반응형

+ Recent posts