:JAR과 WAR과 웹을 배포하는 순서
java jvm환경에서 애플리케이션을 개발할 때 애플리케이션을 쉽게 배포하고 동작시킬 수 있도록 관련파일(리소스, 속성파일 등)들을 패키징 해주는 jar, war에 대하여 알아보자
JAR(Java Archive)
여러 개의 Java 클래스 파일, 메타데이터, 리소스 파일 등을 하나의 파일로 묶은 아카이브 파일로
Java 클래스와 관련 리소스를 패키징하여 재사용 가능한 라이브러리나 실행 가능한 애플리케이션을 생성한다.
사용처는 Java 라이브러리, standalone(독립실행) Java 애플리케이션, 의존성 패키지
JAR파일은 플랫폼에 귀속되는 점만 제외하면 WIN ZIP파일과 동일한 구조이다.
** standalone 방식은 스프링 부트만 실행하면 자동으로 서블릿 컨테이너까지 설정하고, 실행해 준다는 의미
Java 애플리케이션 실행방식에 대한 장단점
1. Standalone 애플리케이션
장점
- 독립적으로 실행가능하고 사용자에게 쉽게 배포할 수 있다.
- GUI(Graphical User Interface)또는 CLI(Command-Line Interface) 기반으로 직관적으로 사용가능하다.
단점
- 시스템에 따라 환경설정이 필요할 수 있다.
- 여러 사요 자가 동시에 접근하기 어렵다.
2. 웹 애플리케이션
장점
- 여러 사용자가 동시에 접근이 가능하다.
- 클라이언트 - 서버 아키텍처로 중앙 집중식 관리 가 용이하다.
단점
- 서버 및 클라이언트 간 네트워크 의존성
- 서버 유지보수 및 보안 문제가 있을 수 있음.
3. 모듈형 애플리케이션
장점
- 모듈화로 인해 유지보수와 확장이 용이함.
- 필요한 모듈만 로드하여 성능 최적화 가능.
단점
- 복잡한 아키텍처로 인해 학습 곡선이 가파를 수 있음.
- 종속성 관리가 어려울 수 있음
4. 컨테이너화된 방식
장점
- 일관된 실행환경 제공, 배포가 간편함.
- 종속성 문제를 줄이고, 확장성이 뛰어남.
단점
- 컨테이너 관리 및 오케스트레이션의 복잡성,
- 초기설정이 복잡할 수 있음.
WAR(Web Application Arcshive)
웹 애플리케이션을 패키징 하기 위한 파일포맷으로 Java 클래스, JSP, 서블릿, XML, 라이브러리, 정적웹리소스(HTML, CSS, JavaScript)등 웹 애플리케이션 구성요소 포함하며 하나의 단위로 패키징하고 배포하기 위한 목적으로 사용
사용처는 Java 기반의 웹 애플리케이션 서버나 서블릿 컨테이너(Tomcat, JBoss, WebLogic 등)에서 실행되는 웹애플리케이션에 사용
**서블릿(Servlet)
Servlet은 자바 기반의 웹 애플리케이션을 개발하기 위한 서버 측 프로그램 또는 기술이다.
서블릿은 HTTP 요청(Request)을 받아 이를 처리한 뒤 HTTP 응답(Response)을 생성하여 클라이언트에게 전달하는, 다시 말하면 클라이언트의 요청을 처리하여 동적인 웹 페이지를 생성하는 역할
**서블릿 컨테이너(Servlet Container)
서블릿은 혼자서 동작할 수 없기 때문에 서블릿을 실행하고 관리해 주는 서블릿 컨테이너 내에서 동작한다.
서블릿 컨테이너는 서블릿 객체를 생성, 초기화, 호출, 종료하는 생명주기를 관리할 뿐만 아니라, 클라이언트의 요청을 받고 응답할 수 있도록 웹 서버와의 소켓 통신을 지원한다.
웹사이트 배포순서
1. 웹사이트의 파일과 리소스를 준비한다.
HTML, CSS, JavaScript 등으로 이루어짐
2. 웹 호스팅 서비스 또는 웹서버를 준비한다.
GitHub Pages AWS 등이 웹호스팅 Apache, Microsoft IIS 등 웹서버
3. 웹사이트 업로드 웹 호스팅 사이트나 웹서버에 파일을 업로드한다.
4. 도메인 등록
도메인을 구매하고 DNS 설정을 통하여 웹호스팅 또는 웹서버의 IP를 등록한다.
5. 배포 전 검증
웹사이트가 실제 배포환경에서 제대로 동작할지 사전에 확인하는 과정으로 다양한 테스트와 점검이 이루 진다.
- 코드리뷰: 개발된 코드가 모범사례에 따라 작성되었는지, 효율적인지, 유지보수가 용이한지, 보안문제, 성능저하요소 불필요한 코드 등이 있는지 검토
- CI/CD 파이프라인에서 자동화된 테스트
단위테스트: 각 함수나 메서드가 의도한 대로 동작하는지 개별적으로 테스트
통합테스트: 여러 모듈이 통합되어 정상적으로 상호작용하는지 확인
UI 테스트: 사용자의 실제 워크플로우에 따라 전체 시스템이 제대로 동작하는지 시나리오 기반으로 확인
End-to-End(E2E) 테스트: 사용자의 실제 워크플로우에 따라 전체 시스템이 제대로 동작하는지 시나리오 기반 확인
- 스테이징 환경에서 검증
스테이징 환경은 실제 배포 환경과 유사한 환경에서 웹사이트를 실행하여, 배포 후 발생할 수 있는 문제를 사전에 파악
배포할 코드가 실제 서버에서 제대로 동작하는지 확인할 수 있는 환경 데이터베이스, 외부 API, 서버 성능 등도 검증
- 성능테스트
부하 테스트: 사용자가 급증할 때 웹사이트가 얼마나 잘 대응할 수 있는지 확인
응답시간테스트: 페이지 로드 시간, API 응답시간 등을 테스트하여 성능이 기준을 충족하는지 확인
- 보안 검증
취약점스캐닝: OWASP Top 10 같은 일반적인 보안 취약점(SQL 인젝션, xss 등)에 대한 자동화된 도구를 활용한 스캔
인증 및 권한 테스트: 사용자 권한 및 접근 제어가 올바르게 설정되어 있는지 확인
HTTPS 검증: 사이트가 HTTPS를 통해 안전하게 제공되고 있는지 확인
- 환경설정 검증
배포할 환경(서버, 데이터베이스, 클라우드 서비스 등)이 올바르게 설정되어 있는지 확인
서버 자원(메모리, CPU) 및 설정 파일들이 제대로 구성되었는지 검증
[결과]
JAR은 JAVA애플리케이션이 동작할 수 있도록 자바프로젝트를 압축한 파일
WAR은 웹어플이 케이션 압축파일 포맷으로 웹 관련 자원만 포함하고 있으며 이를 사용하면 웹 애플리케이션을 쉽게 배포가능 WAR파일을 실행하려면 Tomca, Weblog, Websphere 등의 웹서버나 웹컨테이너가 필요하다
[느낀 점]
war, jar 업무 하면서 어디선가 보았던 파일들이었는데 이번 공부를 하면서 무슨 파일인지 알아보았다
JAR이나 WAR파일로 압축한다는 개념이라면 압축을 풀 수도 있을지 찾아봐야겠다.
https://sharonprogress.tistory.com/225
Jar 파일과 War 파일이란? 차이점도!
웹 프로그래밍을 공부하면서 질리게 듣게 되는 파일 형식이다. JAR 파일과 WAR 파일은 둘 다 Java 기반의 애플리케이션을 패키징하기 위한 파일 포맷이다. 1. Jar(Java ARchive)파일 정의: JAR 파일은 여러
sharonprogress.tistory.com
https://ifuwanna.tistory.com/224
[Java] JAR WAR 차이점 및 특징 ( + EAR )
JAR (Java Archive) WAR (Web Application Archive) 모두 JAVA의 jar 툴을 이용하여 생성된 압축(아카이브) 파일이며 어플리케이션을 쉽게 배포하고 동작시킬 수 있도록 있도록 관련 파일(리소스, 속성파일 등)들
ifuwanna.tistory.com
https://wildeveloperetrain.tistory.com/372
서블릿과 서블릿 컨테이너 이해하기(Servlet, ServletContainer)
서블릿과 서블릿 컨테이너 이해하기(Servlet, ServletContainer)서블릿(Servlet)과 서블릿 컨테이너(ServletContainer)는 자바 기반 웹 애플리케이션을 개발하는데 기본이 되고 또 자주 만나게 되는 개념입니
wildeveloperetrain.tistory.com