Immutable Servers에 대한 Martin Fowler의 블리 키 기사에서 가장 좋은 설명을 찾을 수 있습니다 .
하드웨어 나 클라우드의 가상 서버 인 서버는 대개 운영 체제와 응용 프로그램이 실행되고 있습니다.
종종 응용 프로그램 및 운영 체제 구성 요소는 구성이 필요하며 변경 사항을 적용해야합니다. 예를 들어 보안 패치, 새 버전의 응용 프로그램 배포 및 구성 변경.
변경 사항이 서버 상태에 대한 돌연변이 라고 생각 하면 용어 immutable
가 더 의미가 있습니다. 이는 그러한 서버에서 돌연변이 가 허용 되지 않음을 의미 합니다.
사람들이 서버의 상태를 변경하는 데 관여하는 경우가 종종 있습니다 (버전의 배포, 구성 변경 또는 보안 경로 등). 결과적으로 서버가 더 이상 예상대로 작동하지 않습니다. 예를 들어, 잘못된 구성 등으로 인해 응용 프로그램이 지금 실행되지 않을 수 있습니다.
이것이 불변의 서버 를 만드는 관행 이 확립 된 이유 입니다. 으로 불변 서버, 이미지 서버의가에 번들 모든 구성, 패치, 응용 프로그램 버전 생성됩니다. 서버 그 이미지가 다양한 환경에서 서버를 만드는 데 사용할 수 있습니다.
이러한 이미지 가 사용되는 첫 번째 환경은 이미지 가 작동하도록 테스트 할 수있는 환경입니다. 이상이 감지되면 해당 이미지 만 프로덕션 환경 으로 승격 하여 서버를 새 버전 (잘 작동하는 것으로 알려진)으로 교체 할 수 있습니다 .
이미지를 만들고 이미지를 홍보하는 프로세스가 자동화되면 사용자의 노력이 거의 들지 않고 서비스에 실패 할 가능성이 매우 낮은 오류 방지 프로세스를 얻게됩니다.
불변 서버는 종종 ssh 서버가없는 경우와 같이 "입력"하는 방법을 포함하지 않습니다. 이 경우 서버의 모든 계측 (메트릭, 로그)이 메트릭 데이터베이스 또는 로그 집계 서비스와 같은 외부 시스템으로 배송되는 경우가 종종 있습니다.
컨테이너 ( Docker 참조 )를 사용하여 이미지를 만든 다음 실행중인 컨테이너에 이미지를 생성하는 프로세스도 있습니다. 이들은 종종 업데이트 된 이미지를 기반으로하는 새로운 컨테이너로 대체되며 결코 변경되지 않습니다. 변경 사항을 도입하여 "무언가를 고치기"위해 컨테이너에 들어가는 사람이 없음을 의미합니다.