프로젝트를 배포하는 과정은 생각보다 시간이 오래걸릴 수 있습니다. 특히 프로젝트 처음에는 Docker 이미지 파일을 빌드하고, Docker Hub에 업로드한 뒤, 서버에서 해당 이미지를 배포하기까지 약 5분정도가 소요됬습니다.
작은 수정이라도 배포할 때마다 동일한 작업을 반복해야 한다는 점에서 비효율적이라는 것을 느꼇고 이를 개선하기 위한 자동화 방안을 고민하기 시작했습니다.
이 글에서는 제가 겪었던 문제와 이를 해결하며 점진적으로 자동화 시스템을 구축한 과정을 공유 하고,
자동화의 필요성을 느끼는 분들에게 이글이 조금이나마 도움이 되었으면 합니다.
프로젝트 배포 과정에서 가장 먼저 느낀 점은 작업의 반복성과 효율성 부족이었습니다. 수동으로 이미지를 빌드하고 업로드하며 서버에서 배포하는 일련의 과정은 시간과 노력을 많이 요구했습니다.
이를 해결하기 위해 단계적으로 자동화를 도입하며 프로세스를 개선했습니다. 초기에는 Local 환경에서 직접 이미지를 빌드하고 배포하는 방식으로 시작했지만, GitHub Actions와 Webhook을 활용하면서 배포 과정을 점점 더 자동화했습니다.
이 과정에서 어떤 문제를 직면했고, 어떻게 이를 해결했는지 단계별로 설명해보겠습니다.
STEP 1
Local 에서 Main Branch 코드를 수동으로 빌드해서 서버에 배포하기
STEP 1에 대한 자세한 내용은 제가 이전에 작성한 글에서 다뤘습니다. 이 글에서는 Local 환경에서 Docker 이미지를 빌드하고, 이를 Docker Hub에 업로드한 뒤, 서버에서 이미지를 가져와 배포하는 수동 배포 하는 과정을 적은 글 입니다.
Render에 무료로 JAVA + SPRING BOOT 서버 올리기
Render에 무료로 JAVA + SPRING BOOT 서버 올리기
랜더 사이트 주소https://render.com Cloud Application Hosting for Developers | RenderRender is a unified cloud to build and run all your apps and websites with free TLS certificates, global CDN, private networks and auto deploys from Git.render.com
dev-code.tistory.com
수동으로 배포하는 경우에 대한 문제점
수동으로 빌드, 배포하는것은 설정만 잘 해두면 생각보다 간단하지만 모든 과정이 수동으로 이루어지다 보니 휴먼 에러가 발생할 수 있습니다.
1. 시간 소모
하나의 수정 사항을 반영하는데 약 5분이상 시간이 소요되고 수정사항이 잦은 경우, 배포 작업만으로도 상당한 시간이 낭비
2. 반복 작업
동일한 명령어를 여러번 입력해야 하고 특이 여러 브랜치나 환경 예를들면 개발(DEV), 운영(PROD) 등등을 관리할 때, 작업량이 배가 될 수 있으며,수동 입력 과정에서 잘못된 명령어나 태그 이름을 사용하는 실수가 발생할 수 있습니다.
3. 오류 가능성
수동 입력 과정에서 잘못된 명령어나 태그 이름을 사용하는 실수가 발생할 수 있음
예를 들어, Docker 이미지를 업로드하거나 pull할 때 태그를 누락하거나 잘못된 태그를 입력하면 배포에 문제가 생길 수 있습니다.
4. 협업의 어려움
팀원 간에 동일한 작업을 반복적으로 공유해야 하므로, 명령어와 태그 사용 방법에 대한 문서화를 별도로 유지해야 하고 누군가가 실수하면 다른 팀원이 바로잡아야 하는 추가적인 커뮤니케이션이 필요하고 작업자마다 Local 환경을 셋팅해야하는 번거로움이 있습니다.
5. 환경별 관리의 어려움
개발, 운영 환경별로 이미지를 구분하고 배포하려면 각각의 태그를 수동으로 설정하고 관리해야 하고 환경별로 배포 스크립트를 따로 유지해야 할 수 있어 관리가 복잡해집니다.
6. 비효율성 증가
프로젝트 규모가 커질수록, 수동 배포 방식으로는 효율적으로 관리가 힘들어지고 반복 작업에 소요되는 시간이 개발 및 테스트 시간을 줄이는 원인이 됩니다.
이러한 문제점들로 인해 자동화를 도입해야 한다는 필요성을 절실히 느끼게 되었습니다. 다음 글에서는 이러한 문제를 해결하기 위해 GitHub Actions을 활용해서 배포를 점진적으로 자동화한 과정을 다뤄보도록 하겠습니다
'개발' 카테고리의 다른 글
| AWS 아키텍처 개선 하기 (0) | 2025.02.01 |
|---|---|
| Github Actions으로 서버배포 자동화하기 (2) (0) | 2024.11.17 |
| CORS 운영 서버에서의 문제 해결 경험 (0) | 2024.11.02 |