Nginx 소개 Nginx는 널리 쓰이는 웹 서버 중 하나입니다. 동적 처리를 주로 담당하는 WAS(Web Application Server)와는 다르게 웹 서버(Web Server)는 정적 자원에 대한 응답을 내려주는 역할을 가지고 있는데요. Nginx는 정적 자원의 처리 외에도 proxy 서버의 역할이나, reverse proxy 서버의 역할 등 여러방면에서 높은 활용도를 보여줍니다. 여기서는 Nginx가 CodeDeploy Agent에 의해 두 WAS간의 스위칭 역할을 담당하도록 구성해 보겠습니다. Nginx 설치와 설정 먼저 Nginx를 설치하겠습니다. EC2에 ssh로 접속하여 다음 커맨드를 수행합니다. sudo yum install nginx 그럼 설치가 되는 듯 하였으나, 다음과 같이 Ama..
CodeDeploy 소개 전 시간에 이어 다음으로는 Github Actions 에서 CodeDeploy 에게 S3에 있는 jar 파일을 가져가서 담당한 배포 그룹의 EC2에 배포해 줘! 라는 명령을 내릴 수 있도록 구성해 보겠습니다. 먼저 CodeDeploy에 대해 간단하게 소개하자면, 애플리케이션 배포를 자동화하는 AWS 의 배포 서비스입니다. EC2, AWS Lambda 와 같은 서비스에 배포를 할 수 있고, 현재위치 배포나 블루/그린 배포와 같은 무중단 배포를 지원합니다. 한 번 구축해 놓으면 이후로는 배포가 매우 간편하고 AWS 콘솔을 통해 제어하면서 배포 과정을 확인할 수 있기 때문에 많은 분들이 이 서비스를 이용하여 배포 플로우를 구축합니다. 조금 더 자세한 설명은 CodeDeploy 레퍼런스..
개요 안녕하세요! 이번 시리즈에서는 제목에서와 같이 Github Actions 와 CodeDeploy, 그리고 Nginx 를 사용하여 하나의 서버에서 최소 규모의 무중단 배포를 진행하는 방법에 대해 정리해보려고 합니다. 관련 코드는 Github 저장소 에서 확인하실 수 있습니다. 전체 흐름도 CI/CD 와 같이 인프라, 배포 환경을 구축하기 위해서는 내가 만들고자 하는 전체 그림을 숙지하는 것이 가장 중요하다고 생각합니다. 그래야 진행삽질 중에 막혔을 때 어느 부분이 문제일지 빠르게 유추해 볼 수 있기 때문입니다. 이 그림이 지금부터 하나씩 만들어 볼 배포 플로우입니다. Github Actions에서 프로젝트 빌드 후, jar 파일을 압축해서 S3에 업로드합니다. 이어서 CodeDeploy에게 S3에 있..
CodeDeploy 배포 실패 error log 가 없는 경우 CodeDeploy 로 배포 플로우를 구축하다보면 배포가 실패하는 경우가 있습니다. 보통은 에러 로그를 확인하기 위해서 아래와 같이 View events 로 접근하여 확인합니다. 하지만 다음과 같이 아무런 에러 로그가 남지 않는 경우가 있습니다. instance 에서 확인하기 이럴 때는 보통 deploy 를 시작하기도 전에 실패한 경우라서, Agent log 를 확인해보면 됩니다. 해당 EC2 인스턴스의 다음 경로에서 에러 로그를 확인할 수 있습니다. /var/log/aws/codedeploy-agent/codedeploy-agent.log 제 경우는 다음과 같은 에러 로그가 있었는데요. InstanceAgent::Plugins::CodeDe..