✅ 개요배포할 때마다 블루/그린 서버가 번갈아가며 실행되는 것은 확인했지만 배포 과정 중 새로고침을 눌러보면 일정시간동안 502 Bad Gateway 오류가 발생한다. 물론 시간이 지나면 서비스가 다시 정상작동하긴 하지만 단 한순간 이라도 서비스가 끊기지 않는 것이 무중단 배포의 핵심이다.이번 포스트에서는 이 문제를 해결하는 과정에 대해 이야기하도록 하겠다. ✅ 문제 원인 파악아무래도 서버를 실행시키는 부분에서 문제가 발생했을 거라고 생각했다.그 부분은 바로 CodeDeploy에 의해 EC2에 관련 파일들이 다운로드 됐을 때 실행되는 start-server.sh이다.#!/bin/bashNGINX_CONF="/etc/nginx/sites-available/default"cd /home/ubuntu/ssca..
분류 전체보기
✅ 개요지난 포스트에서 기본적인 인프라 구성은 완료했었다.이번 포스트에선 Github Actions를 통해 본격적으로 CI/CD 파이프라인을 구축해보겠다. ✅ 1. Github Actions 사용자 생성Github Actions는 다양한 AWS 인프라에 접근해야 한다. 따라서 그 권한을 가진 사용자를 설정해준다.해당 사용자는 다음의 세 가지 정책을 가진다.AmazonEC2ContainerRegistryFullAccess: ECR에 Spring Boot 이미지를 업로드하기 위함AmazonS3FullAccess: S3에 CodeDeploy 관련 파일 및 기타 파일을 업로드 하기 위함AWSCodeDeployFullAccess: CodeDeploy에게 배포명령을 내리기 위함 액세스 키 발급 ✅ 2. Docker..
✅ 블루/그린 배포란?💡 기존 서버(블루)와 새로운 서버(그린) 간의 트래픽 전환을 통해 무중단 배포를 구현하는 전략.핵심 아이디어는 현재 운영 중인 애플리케이션(블루)과 새 버전의 애플리케이션(그린)을 두 개의 동일한 환경에서 동시에 운영한 후, 새 버전이 정상적으로 작동하는 것을 확인한 다음 트래픽을 전환하는 방식.블루/그린 배포와 같은 무중단 배포는 배포 시 서버가 내려가는 Downtime을 없앤다고 해서 Zero Downtime이라고도 불린다.이를 통해 유저들은 서비스를 불편함없이 사용할 수 있게 된다. ✅ 아키텍처 무작정 생각해보기우선 자동 통합/배포를 위해 CI/CD 툴인 Github Actions를 떠올렸다.그리고 해당 서버를 배포하기 위한 인프라가 필요한데 후보는 많았다. AWS EC2,..
✅ 개요앞서 S3에 프론트 코드를 배포하는데까진 성공을 했다. 하지만 프론트는 S3, 백엔드는 EC2에서 작동하므로 서로의 도메인이 다르다. 이 경우, 세션 쿠키를 사용하려면 SameSite=None설정과 Secure=true설정을 백엔드 쪽에 걸어줘야 하는데 이는 HTTPS가 설정돼 있어야 한다.해당 포스트에서는 서로 다른 도메인에서 세션 쿠키가 정상적으로 작동할 수 있도록 백엔드 쪽에 HTTPS를 적용시키도록 하겠다.적용시키는 도구로는 NginX와 Certbot을 사용하겠다. ✅ NginX와 Certbot 사용 목적NginX는 웹 서버 소프트웨어로 가벼움과 높은 성능이 특징인데 그 중에서도 리버시 프록시 기능을 가지고 있다.Certbot은 무료로 HTTPS 인증서를 발급해주는 도구이다.프론트에서 요청..