배포(Deployment)란 내 개발 환경에서 만든 애플리케이션을 운영 환경에서 실행할 수 있도록 배포하는 과정을 의미한다.
배포는 단순히 "파일을 서버로 이동시키는 것"이 아니라, 소프트웨어를 운영 환경에서 실행할 수 있도록 준비하는 과정 전체를 포함한다.
코드 작성 & 빌드(Build)
.java 파일을 .class로 컴파일 Maven 또는 Gradle을 사용해 실행 가능한 .jar 또는 .war 파일 생성 테스트 & 코드 검증
패키징(Packaging)
.jar, .war, Docker 이미지)로 묶음 서버 업로드 & 환경 설정
scp, rsync를 이용한 파일 전송 .env, application.yml) 설정 실행 & 모니터링
java -jar 혹은 Docker를 이용한 실행 Prometheus, Grafana를 이용한 모니터링 배포 과정을 공장과 매장에 비유하면 다음과 같다.
Gradle 또는 Maven으로 .jar 혹은 .war 패키지를 생성배포는 마치 개발자가 만든 선물을 사용자에게 보내는 것과 같다.
.jar 파일을 직접 서버에 복사 후 실행 (SCP, FTP 등 사용. *P는 프로토콜을 의미한다.)필자의 경우 Filezilla라는 프로그램을 사용하여 수동 배포한 경험이 있다. Filezilla의 기본 프로토콜은 SFTP(SSH File Transfer Protocal)을 사용한다.
java -jar myapp.jar 실행deploy.sh 같은 스크립트를 작성해 자동화 #!/bin/bash
scp myapp.jar user@server:/home/app/
ssh user@server "java -jar /home/app/myapp.jar &"
docker build -t myapp:latest .
docker run -d -p 8080:8080 myapp:latest