10.1 Failover와 Fault Tolerant
서비스 중인 프로세스에 문제가 발생하는 원인은 매우 다양합니다. 감당하기 힘든 부하가 발생하거나 코드 문제일 수 있고, 운영체제에 문제가 발생하거나 다른 프로세스의 간섭으로 실행이 중단될 수 있습니다. 외부적으로는 하드웨어적인 결함이나 네트워크 문제, 심지어 사람의 실수 등 셀 수 없이 다양한 이유로 프로세스가 종료되기도 합니다. 이때 장애에 대응하는 방법으로 Failover와 Fault Tolerant란 개념이 있습니다.
Failover는 시스템에 문제가 발생했을 때 준비해 둔 예비 시스템으로 자동 전환해서 서비스가 중단되지 않도록 하는 기능입니다. Fault Tolerant는 시스템에 문제가 발생하면 전체 시스템을 다운하는 것이 아니라 문제가 발생하지 않은 부분은 정상적으로 수행하는 기능입니다.
마이크로서비스 아키텍처는 기본적으로 분산 아키텍처이기 때문에 마이크로서비스를 충분하게 분산 배치했다면 Failover 기능을 수행한다고 할 수 있습니다. 또 특정 마이크로서비스에 문제가 발생해도 다른 API를 서비스하는 마이크로서비스는 정상적으로 동작하기 때문에 Fault Tolerant 기능도 수행한다고 할 수 있습니다.
마이크로서비스 아키텍처는 장애에 강한 아키텍처입니다. 하지만 스스로 프로세스를 복구할 수 있는 기능이 없다면 고가용성 시스템이라고 하기 어렵습니다. 문제가 발생한 마이크로서비스가 자동으로 재실행되는 기능을 알아보겠습니다.