S3가 오프라인 상태가 될 때 내 사이트를 온라인으로 유지하는 좋은 전략은 무엇입니까?
S3 US East 1이 오프라인 상태가되면 전체 사이트를 오프라인으로 만들지 않도록 앱을 어떻게 구성 / 구조화해야합니까?
이런 상황에서 다양 화하는 가장 좋은 전략은 무엇입니까?
S3가 오프라인 상태가 될 때 내 사이트를 온라인으로 유지하는 좋은 전략은 무엇입니까?
S3 US East 1이 오프라인 상태가되면 전체 사이트를 오프라인으로 만들지 않도록 앱을 어떻게 구성 / 구조화해야합니까?
이런 상황에서 다양 화하는 가장 좋은 전략은 무엇입니까?
답변:
2015 년 3 월 Amazon AWS 는 리전 간 S3 복제를 지원 한다고 발표했습니다 . S3의 특정 지역이 오프라인 상태가되면 다른 지역의 미러에서 파일을 제공 할 수 있습니다.
출처 : https://aws.amazon.com/blogs/aws/new-cross-region-replication-for-amazon-s3/
다른 지역으로 전환하여 인프라를 온라인 상태로 유지하는 방법은 복잡하지만 S3는 비교적 작고 간단한 구성 요소입니다. Netflix는 Chaos Gorilla에서의 경험에 관한 훌륭한 기사 를 가지고 있습니다.
이는 지연 시간 증가와 같은 서비스 저하에도 적용됩니다. 의존하는 서비스가 완전히 오프라인 일 때만이 아닙니다. Netflix에 대한 기사도 있습니다 : Chaos Engineering Upgraded .
당신이 요구하는 것은 기본적으로 고 가용성입니다. 시스템의 가용성을 높이려면 다음 세 가지가 필요합니다.
S3의 경우, 포인트 # 1은 Sv 교차 리전 복제에 의해 Evgeny가 지적한대로 해결됩니다 .
그러나 복제는 즉각적이지 않으므로 응용 프로그램 복제를 인식할지 여부를 확인해야합니다. 정전이 발생하는 경우 소스 버킷에 기록 된 내용이 아직 대상 버킷에 복제되지 않았을 수 있습니다. 애플리케이션이 이러한 시나리오를 어떻게 처리 할 것인지 생각해야합니다. 이는 실제로 데이터 유형, 수행 대상 및 최종 사용자 또는 관리 기대치에 따라 다릅니다.
S3의 경우, 중단이 발생하면 애플리케이션이 버킷 A에서 읽기 / 쓰기를 중지하고 버킷 B를 대신 사용하기를 원합니다.
이것을 달성하는 방법은 내가 아는 한 지금 당장 당신에게 달려 있습니다. 다른 일부 AWS 서비스는 완전히 투명한 페일 오버를 제공하지만 현재 S3에 대해서는 그러한 점을 알지 못합니다.
이를 달성하기위한 다양한 방법이 있습니다. 한 가지 예는 트래픽을 적절한 버킷으로 라우팅하는 프록시를 사용하는 것입니다. 중단 중에는 중단의 영향을받지 않는 버킷으로 트래픽을 라우팅하도록 프록시를 업데이트 / 변경합니다. 또 다른 예는 애플리케이션 구성을 동적으로 만들고 키-값 저장소에 저장하는 것입니다. 응용 프로그램이 업데이트 된 속성에 대해 KV 저장소를 자주 읽는 경우 읽고 쓰는 위치를 전환 할 수 있습니다 (예 : Spring Cloud는 "EnvironmentChange"리스너를 지원함).
글쎄, 그게 쉽다고 생각합니다. 쓰기 + 읽기 루프를 설정하고 무언가가 바르지 않으면 경고하십시오. :)