Devops

    [Docker] Spring Boot와 MySQL을 docker-compose로 실행하자

    이전 게시글에선 서버에서 직접 어플리케이션 소스 코드를 다운받아 빌드하는 배포 방식을 사용했다면, 이번엔 도커를 사용하여 어플리케이션을 이미지로 만들어 배포하는 방식을 사용할 것이다. 따라서 본 게시글엔 이미지 배포의 첫번째 단계인 도커를 통한 이미지 빌드 방식을 서술하려고 한다. Docker 일관성 있는 운영환경의 중요성이 강조됨에 따라 컨테이너를 통한 배포 방식이 주를 이루며 사용되고 있다. 또한 어플리케이션의 코드 상의 문제를 테스트 코드에서 검증했다면, 운영상의 서버 설정 문제를 컨테이너에서 검증할 수도 있다. Dockerfile? docker-compose? docker를 처음 사용하려고 보면 어떤 곳에선 Dockerfile을, 어떤 곳에선 docker-compose를 사용하고 있다. 어떤 차이..

    [Github Action] CodeDeploy와 S3를 이용하여 배포하기

    배포 전 CI 구성은 여기에 정리해두었다. 전체 과정은 wbluke님 블로그를 많이 참고했다. 전체 코드는 깃허브에 정리해두었다. 전체 배포 과정 어플리케이션에 배포에 필요한 절차를 AppSpec.yml에 작성한다. CodeDeploy에 프로젝트의 특정 버전을 배포해달라고 요청하면, CodeDeploy는 배포를 진행할 EC2 인스턴스에 설치되어 있는 CodeDeploy Agent들에게 요청받은 버전을 배포해달라고 요청 요청받은 Agent들은 코드 저장소에서 프로젝트 전체를 다운로드 받고, AppSpec.yml 파일을 읽어 해당 파일의 절차대로 배포를 진행한다. Agent는 배포를 진행한 후 CodeDeploy에게 성공/실패 등의 결과를 알려준다. AWS 리소스 생성 EC2 jar 파일을 실행시킬 OS에 ..

    [Github Action] gradle을 이용한 java CI 구성하기

    Github Action Github 저장소를 기반으로 소프트웨어 개발 workflow를 자동화 할 수 있는 도구 장점 별도의 서버 설치가 필요 없다. 비동기 ci/cd가 가능하다. github 이벤트에 대한 작업을 제공해준다. yaml로 사용하기 때문에 개발자들에게 친숙하다. github 마켓 플레이스를 통해 공유 가능 단점 캐싱이 필요할 경우 자체 캐싱 메커니즘을 작성해야 함 (엔터프라이즈에선 actions/cache를 지원하지 않는다고 한다. 참고) 젠킨스에 비해 문서가 적다. (아무래도 출시 일자가 차이가 나기 때문인듯) 구성요소 workflow 프로젝트를 빌드, 테스트, 패키지, 릴리스 또는 배포하기 위한 전체적인 프로세스 여러개의 job으로 구성되며 디폴트로 병렬 실행한다. event 기반으로..