개발놀이터

온라인 쇼핑몰 ver.3 (3) Graceful Shutdown 본문

사이드 프로젝트/온라인 쇼핑몰 ver.3

온라인 쇼핑몰 ver.3 (3) Graceful Shutdown

마늘냄새폴폴 2023. 7. 8. 00:00

0. Introduce

블루 그린 배포까지 성공적으로 완료했고 Jenkins라는 CI 자동화 툴로 자동화까지 성공했습니다만 실전에서는 어떻게 배포를 하는지에 대해서 궁금해졌습니다. 

 

때문에 Graceful Shutdown을 도입하게 되었습니다. 

 

1. 기존 배포

  • 블루 그린 배포에서 이전 버전이 내려가고 새로운 버전이 올라간다. 

 

2. 기존 배포의 문제점

  • 블루 => 그린으로 배포하는 과정에서 이전 버전을 갑자기 닫아버리면 이전 버전을 이용하고 있던 사용자의 시스템이 멈춰버립니다. 
  • 이 때 결제를 진행하고 있다거나 데이터베이스를 이용하는 로직 도중 서버가 내려가버리면 트랜잭션이 에러에의해 롤백되는 것이 아니기 때문에 도중에 로직이 멈춰버릴 가능성이 있습니다. 
  • 이는 부정적인 사용자 경험으로 이어질 뿐더러 롤백을 제대로 진행하지 못했기 때문에 개발자가 해결해야 하는 상황입니다. 

 

3. ver.3 에서 개선한 점

  • Graceful Shutdown 을 도입함으로써 기존 버전에서의 로직을 모두 완료한 뒤 새로운 버전으로 갈아탑니다. 

 

4. 이번 프로젝트에서 느낀점

배포만 하고 실전에서 일어날 수 있는 상황에 대한 인지가 좀 늦었습니다. 때문에 놓치고 있었던 부분이었는데 이번 기회에 실전에서 일어날 수 있는 다양한 상황들에 대해 복기해보고 이에 맞춰 알맞은 설정을 통해 부정적인 사용자 경험을 줄이는 방법이 인상깊었습니다. 

 

5. 세부 사항

우선 비즈니스 로직을 가정하고 앞뒤로 로그를 찍어서 정상적으로 완료됨을 확인합니다. 

 

정상 작동되는 로직 확인

 

 

Graceful Shutdown을 설정하기 전 

 

Graceful Shutdown을 설정한 후