장애 상황을 해결하고 서비스를 지속할 수 있는 능력(유저가 서비스를 이용할 수 없는 시간이 잠시 생긴다)
장애 상황에도 불구하고 서비스를 지속할 수 있는 능력(어느 한 서버가 떨어지더라도 다른 서버가 이어 받는 등 유저들이 지속적으로 서비스를 이용 가능하다)
고가용성과 장애 내구성 둘 다 구현하지 않으면 저비용 / 간단한 구조
고가용성만 구현한다면 중간단게 비용 / 중간단계 구조
고가용성과 장애 내구성을 모두 구현한다면 고비용 / 복잡한 구조
설계에서 이 두 개념을 혼동한다면 결과가 다르게 나올 수 있으니 조심해야 한다.
예를 들어 의료 시스템의 경우 장애 내구성을 확보하는 경우가 중요하다. 중간에 시스템이 멈춘다면 큰 혼란을 초래 할 것이다. 이처럼 정확하게 알고 설계해야 효율적인 아키텍쳐 구성이 가능하다.
스페어 타이어가 없는 경우 타이어가 펑크날 때
고가용성(x) 장애내구성(x)
스페어 타이어가 있는 경우 타이어가 펑크날 때
고가용성(o) 장애내구성(x)
비행기 엔진의 경우 하나가 고장나더라도 계속 비행 가능
고가용성(o) 장애내구성(o)
유저가 서버에 접속, 고가용성과 장애내구성을 확보하지 못하고 서비스가 단절되면 그대로 종료된다.
고가용성을 확보한 경우 서버 단절시 수동으로 다른쪽으로 라우팅이 가능하다.
로드 밸런서가 있을 시 서버가 단절되더라도 자동으로 다른쪽 서버로 트래픽을 라우팅 할 수 있다.
이것이 장애 내구성을 확보한 케이스이다.
말 그대로 장애 상황을 복구하는 것(위의 두가지와 조금 다름)
서버 클러스터가 터졌다면 서버를 교체하는 과정
Backup 서버를 운영하거나, 준비하는 것을 의미한다
확장성(Scalable): 쉽고 빠르게 규모를 늘릴 수 있는 능력
유저가 1이면 서버도 1이고 유저가 많아지면 서버도 많아진다.
탄력성(Elastic): 수요에 따라 컴퓨팅 파워/용량을 확장 하거나 축소할 수 있는 능력
유저가 1이면 서버도 1, 유저가 많아지면 서버도 많아짐, 유저가 다시 작아지면 서버도 같이 작아진다.
https://www.youtube.com/watch?v=c7WjVkaUSj4&ab_channel=AWS%EA%B0%95%EC%9D%98%EC%8B%A4