Managed Service for Apache Flink 애플리케이션의 시스템 롤백 활성화 - Managed Service for Apache Flink

Amazon Managed Service for Apache Flink(Amazon MSF)는 이전에 Amazon Kinesis Data Analytics for Apache Flink로 알려져 있었습니다.

Managed Service for Apache Flink 애플리케이션의 시스템 롤백 활성화

시스템 롤백 기능으로 Amazon Managed Service for Apache Flink에서 실행 중인 Apache Flink 애플리케이션의 가용성을 더욱 높일 수 있습니다. 이 구성을 선택하면 UpdateApplication 또는 autoscaling과 같은 작업에서 코드나 구성 버그가 발생할 경우 서비스가 애플리케이션을 이전에 실행되던 버전으로 자동으로 되돌릴 수 있습니다.

참고

시스템 롤백 기능을 사용하려면 애플리케이션을 업데이트하여 옵트인해야 합니다. 기존 애플리케이션은 기본적으로 시스템 롤백을 자동으로 사용하지 않습니다.

작동 방법

업데이트나 스케일링 작업과 같은 애플리케이션 작업을 시작하면 Amazon Managed Service for Apache Flink는 먼저 해당 작업을 실행하려고 시도합니다. 코드 버그나 권한 부족 등으로 작업의 성공을 방해하는 문제가 감지되면 서비스는 자동으로 RollbackApplication 작업을 시작합니다.

롤백은 애플리케이션을 이전에 정상적으로 실행되던 버전과 그에 연관된 애플리케이션 상태로 복원하려고 시도합니다. 롤백이 성공하면 애플리케이션이 이전 버전을 사용하여 가동 중지 시간을 최소화하면서 데이터를 계속 처리합니다. 자동 롤백도 실패할 경우 Amazon Managed Service for Apache Flink는 애플리케이션을 READY 상태로 전환하여 오류를 수정하고 작업을 다시 시도하는 등 필요한 추가 조치를 수행할 수 있도록 합니다.

자동 시스템 롤백을 사용하려면 옵트인해야 합니다. 이 시점 이후에는 콘솔 또는 API를 사용해 애플리케이션의 모든 작업에 대해 이 기능을 활성화할 수 있습니다.

UpdateApplication 작업을 위한 다음 예제 요청은 애플리케이션에 대한 시스템 롤백을 활성화합니다.

{ "ApplicationName": "MyApplication", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "ApplicationSystemRollbackConfigurationUpdate": { "RollbackEnabledUpdate": "true" } } }

자동 시스템 롤백에 대한 일반적인 시나리오 검토

다음 시나리오는 자동 시스템 롤백이 유용한 경우를 보여줍니다.

  • 애플리케이션 업데이트: 기본 메서드를 통해 Flink 작업을 초기화할 때 버그가 있는 새 코드로 애플리케이션을 업데이트한 경우 자동 롤백 기능을 통해 이전에 정상적으로 실행되던 버전으로 복원할 수 있습니다. 시스템 롤백이 도움이 되는 업데이트 시나리오는 다음과 같습니다.

    • 애플리케이션이 maxParallelism보다 높은 병렬 처리로 실행되도록 업데이트되는 경우.

    • VPC 애플리케이션에서 잘못된 서브넷으로 업데이트되어 Flink 작업 스타트업 시 실패가 발생하는 경우.

  • Flink 버전 업그레이드: 새로운 Apache Flink 버전으로 업그레이드했으나 업그레이드된 애플리케이션에서 스냅샷 호환성 문제가 발생하면 시스템 롤백을 통해 이전 Flink 버전으로 자동으로 되돌릴 수 있습니다.

  • AutoScaling: 애플리케이션 스케일 업 시 스냅샷과 Flink 작업 그래프 간 연산자 불일치로 인해 세이브포인트 복원이 실패하는 경우.

시스템 롤백을 위한 운영 API 사용

Amazon Managed Service for Apache Flink은 더 나은 가시성을 위해 장애 및 관련 시스템 롤백을 추적할 수 있는 두 가지 애플리케이션 운영 관련 API를 제공합니다.

ListApplicationOperations

이 API는 UpdateApplication, Maintenance, RollbackApplication 등을 포함한 애플리케이션에서 수행된 모든 작업을 최신 순으로 나열합니다. ListApplicationOperations 작업을 위한 다음 예제 요청은 애플리케이션의 처음 10개 작업을 나열합니다.

{ "ApplicationName": "MyApplication", "Limit": 10 }

ListApplicationOperations를 위한 다음 예제 요청은 목록을 애플리케이션의 이전 업데이트로 필터링하는 데 도움이 됩니다.

{ "ApplicationName": "MyApplication", "operation": "UpdateApplication" }

DescribeApplicationOperation

이 API는 ListApplicationOperations에서 나열된 특정 작업에 대한 상세 정보를 제공하며 해당하는 경우 실패 이유도 포함합니다. DescribeApplicationOperation 작업을 위한 다음 예제 요청은 애플리케이션 작업에 관한 세부 정보를 나열합니다.

{ "ApplicationName": "MyApplication", "OperationId": "xyzoperation" }

문제 해결 정보는 시스템 롤백 모범 사례를 참조하세요.