Back-end/Server

제로다운타임 이란?

개발자 케빈 2021. 11. 13. 14:10

1. 제로다운타임 이란 ?

: 프로젝트를 배포하는 과정 중 다운타임(시스템을 이용할 수 없는 시간)이 존재할 수 있다.

  또한 다운타임이 존재한다면, 서비스 장애와 배포의 부담이 올 수 있다. 이러한 부담을 최소화 하기 위해 중단없이 영중인 서비스를 배포할 수 있는 기술이 제로다운타임 기술

 

* 요즘은 배포 시스템이 잘 갖추어 져 다운타임이 그렇게 길게 존재하지는 않는다.

   하지만 찰나의 다운타임 순간이 존재하고, 그 과정 중 오류가 발생할 수 있는 여지는 존재한다.

   현재 ploi에서 배포하는 과정 중 composer update를 하는 과정과 데이터베이스 migrate하는 과정이 포함되어 있음.

   composer update를 하는 과정 중에서는, 네트워크의 송 수신이 잠시 차단될 수 있으며

   데이터베이스 migrate를 하는 과정 중에서는 찰나의 시점에 코드와 데이터베이스의 호환이 유지되지 않을 수 있다.

   

: 제로다운타임 기술을 적용하면 이러한 문제점을 해결할 수 있다.

 

2. 제로다운 타임과 큐

: 하지만 현재 문제점은 큐를 사용하는 프로세스에선 문제가 발생할 수 있는 여지가 있다. 배포하는 과정 중 큐를 재시작하는 queue:restart 과정이 포함되어 있기 때문.

 

* queue:restart를 사용하는 이유

 : queue worker는 장시간 살아있는 프로세스 이기 때문에 재시작하지 않으면 코드 변경사항이 적용되지 않음.

이러한 문제점을 해결하기 위한 방안으로는 배포시에 queue:restart를 진행하지 않고, 큐 관련 코드 변경시에만 별도로 queue:restart를 진행하는 방법 등이 있음.