원래는 EC2로 배포하다가, 배포 롤링을 실습하기 위해 EB를 사용했습니다.
평소처럼 필요한 도메인만 구성하고, 깃허브 액션까지 Success했는데, EB에 접속해 보면 5xx 에러가 잔뜩이었습니다.
EB는 서버 상태를 확인하기 위해 기본적으로 포트 80(HTTP)과 443(HTTPS)으로 헬스체크 요청을 특정 경로에 보냅니다:
/
/health
HTTPS:443/
HTTPS:443/health
서버에 해당 엔드포인트가 없으면 EB는 서버가 응답하지 않는다고 판단해 인스턴스를 종료합니다.
즉, 배포 자체는 성공했지만 헬스체크에 실패해 서비스가 내려간 것입니다.
서버에 / 엔드포인트를 만든다
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HealthCheckController {
@GetMapping("/")
public String healthCheck() {
return "OK";
}
}
EB 설정에서 헬스체크 경로를 바꾼다
이번 경험을 통해, “루트 경로는 안 쓰니까 생략해도 되겠지”라는 생각이 얼마나 위험한지 배웠습니다...