https://martinfowler.com/bliki/PhoenixServer.html
bliki: PhoenixServer
Why you should regularly smash your servers with a baseball bat (figuratively)
martinfowler.com
불변 서버의 개념 덕분에 서버 구성이 서버의 머신 이미지가 가진 것과 정확히 일치한다는 것을 보장할 수 있다. 서버는 서비스나 마이크로서비스 동작을 변경하지 않고도 강제 종료하고 머신 이미지로 재시작할 수 있는 옵션이 있어야 한다. 마틴 파울러는 오래된 서버가 죽고 잿더미에서 새로운 서버가 살아나는 것처럼 생각해, 이러한 죽음과 새로운 서버의 부활을 피닉스서버라고 명명했다.
피닉스 서버 패턴은 두가지 장점이 있다.
1. 구성 편차를 노출시키고 몰아낸다. 새로운 서버를 지속적으로 없애고 설정한다면 구성 편차가 일찍 드러나기 쉽고 일관성을 보장하는 데 큰 효과가 있다.
2. 피닉스 서버 패턴은 서비스를 종료하고 재시작한 후에도 완전히 복구할 수 없는 상황을 찾는 데 도움을 주며 회복력을 향상시킨다.
마이크로서비스 아키텍처에서 서비스는 무상태가 되고 서버가 죽는 것은 일시적인 현상임을 기억해야 한다.
서버를 무작위로 강제 종료하고 재시작하면 서비스나 인프라스트럭처에서 상태가 유지되는 상황이 일찍 드러날 수 있다. 배포 파이프라인 초기에 이러한 상태 유지 상황과 의존성을 찾는 것이 좋다.
넷플릭스의 카오스멍키 - 서버를 무작위로 선택해 죽여서 마이크로서비스 환경의 불변성과 회복성을 테스팅한다.
카오스 멍키의 사상은 서버 손실에 의해 복구되지 않는 서비스를 찾아내고 새로운 서버를 시작해도 죽인 서버와 동일한 방식으로 동작해야 한다.