저번에 방학 동안 프로젝트를 했을 때 github action과 CodeDeploy를 사용하여 CI/CD를 구축했었습니다. 그때는 AWS를 사용해서 AWS에 제일 최적화한 것이 CodeDeploy이기 때문에 codeDeploy를 선택했었습니다. 이번에 혼자 해보는 프로젝트에서는 docker를 사용해 보려고 합니다. Docker란? Docker는 컨테이너화된 애플리케이션을 만들고 실행하기 위한 오픈 소스 플랫폼입니다. 컨테이너는 애플리케이션과 해당 애플리케이션을 실행하는 데 필요한 모든 종속성(라이브러리, 환경 설정 등)을 포함하는 완전한 실행 환경입니다. Docker를 사용하면 애플리케이션을 컨테이너로 패키징 할 수 있으며, 이 컨테이너는 호스트 시스템에서 독립적으로 실행될 수 있습니다. 컨테이너는 가볍..
자동 배포
전 글로 Github Action으로 자동배포를 성공했다. 하지만 문제점이 하나 존재할 때, 이 deploy.yml을 사용하면 지금 현재 모든 파일을 EC2에 올려버린다. 그러면 submodule로 만든 보안을 유지해야 하는 정보들 조차 EC2에 올라가 버린다. 이러면 안 되기 때문에 다른 방법을 찾아봤다. 목표 목표는 EC2에는 appspec.yml과 .jar파일, start.sh, stop.sh 4개만 올릴 것 이다. CodeDeploy의 행동 CodeDeploy는 Zip파일을 받는다. jar 파일은 받지 않는다. EC2에 올리기전 자동으로 zip파일을 압축 해제하고 appspec.yml을 실행한다. 이제 appspec.yml의 코드대로 코드가 수행된다. 흐름 이해 github reposiotry에 ..
CI & CD 소개 코드 버전 관리를 하는 VCS 시스템(Git, SVN 등)에 PUSH가 되면 자동으로 테스트와 빌드가 수행되어 안정적인 배포 파일을 만드는 과정을 CI(Continuous Integration - 지속적 통합)이라고 하며, 이 빌드 결과를 자동으로 운영 서버에 무중단 배포까지 진행되는 과정을 CD(Continuous Deployment - 지속적인 배포) 라고 한다. CI 도구들 1. Jenkins Jenkins는 정말 많이 사용한다. EC2에 Jenkins를 설치해야 한다. 그리고 과금이 있다. 그러므로 Pass 2. Travis CI 지금 내가 읽고 있는 책도 Travis CI로 CI/CD를 구현하셨다. Travis를 사용해도 되지만 구글링을 해본 결과 속도가 굉장히 느리다고 한다..