서비스 동기화 구성 - AWS Proton

서비스 동기화 구성

서비스 동기화를 사용하면 Git을 사용하여 AWS Proton 서비스를 구성하고 배포할 수 있습니다. 서비스 동기화를 사용하여 Git 리포지토리에 정의된 구성으로 AWS Proton 서비스의 초기 배포 및 업데이트를 관리할 수 있습니다. Git을 통해 버전 추적 및 풀 요청과 같은 기능을 사용하여 서비스를 구성, 관리 및 배포할 수 있습니다. Service Sync는 AWS Proton Git과 결합하여 AWS Proton 템플릿을 통해 정의되고 관리되는 표준화된 인프라를 프로비저닝할 수 있도록 지원합니다. Git 리포지토리의 서비스 정의를 관리하고 도구 전환을 줄입니다. Git만 사용할 때와 비교하여 AWS Proton에서 템플릿과 배포를 표준화하면 인프라 관리에 소요되는 시간을 줄일 수 있습니다. 또한 AWS Proton는 개발자와 플랫폼 팀 모두에게 더 높은 투명성과 감사 가능성을 제공합니다.

AWS Proton OPS 파일

proton-ops 파일은 AWS Proton가 서비스 인스턴스를 업데이트하는 데 사용되는 사양 파일을 찾을 위치를 정의합니다. 또한 서비스 인스턴스를 업데이트할 순서와 한 인스턴스에서 다른 인스턴스로 변경 사항을 프로모션할 시기를 정의합니다.

proton-ops 파일은 연결된 저장소에 있는 사양 파일 또는 여러 사양 파일을 사용하여 서비스 인스턴스를 동기화하는 것을 지원합니다. 다음 예와 같이 proton-ops 파일에 동기화 블록을 정의하여 이 작업을 수행할 수 있습니다.

예시 ./configuration/proton-ops.yaml:

sync: services: frontend-svc: alpha: branch: dev spec: ./frontend-svc/test/frontend-spec.yaml beta: branch: dev spec: ./frontend-svc/test/frontend-spec.yaml gamma: branch: pre-prod spec: ./frontend-svc/pre-prod/frontend-spec.yaml prod-one: branch: prod spec: ./frontend-svc/prod/frontend-spec-second.yaml prod-two: branch: prod spec: ./frontend-svc/prod/frontend-spec-second.yaml prod-three: branch: prod spec: ./frontend-svc/prod/frontend-spec-second.yaml

위 예시에서 frontend-svc는 서비스 이름이고, alpha, beta , gamma, prod-one, prod-twoprod-three은 는 인스턴스입니다.

spec 파일은 proton-ops파일 내에 정의된 모든 인스턴스 또는 인스턴스의 하위 집합일 수 있습니다. 하지만 최소한 브랜치 내에 정의된 인스턴스와 동기화 대상 사양이 있어야 합니다. 인스턴스가 특정 브랜치 및 spec 파일 위치와 함께 proton-ops 파일에 정의되어 있지 않으면 서비스 동기화에서 해당 인스턴스를 만들거나 업데이트하지 않습니다.

다음 예는 spec 파일의 모양을 보여줍니다. proton-ops 파일은 이러한 spec 파일에서 동기화된다는 점을 기억합니다.

예제./frontend-svc/test/frontend-spec.yaml:

proton: "ServiceSpec" instances: - name: "alpha" environment: "frontend-env" spec: port: 80 desired_count: 1 task_size: "x-small" image: "public.ecr.aws/z9d2n7e1/nginx:1.21.0" - name: "beta" environment: "frontend-env" spec: port: 80 desired_count: 1 task_size: "x-small" image: "public.ecr.aws/z9d2n7e1/nginx:1.21.0"

예제./frontend-svc/pre-prod/frontend-spec.yaml:

proton: "ServiceSpec" instances: - name: "gamma" environment: "frontend-env" spec: port: 80 desired_count: 1 task_size: "x-small" image: "public.ecr.aws/z9d2n7e1/nginx:1.21.0"

예제./frontend-svc/prod/frontend-spec-second.yaml:

proton: "ServiceSpec" instances: - name: "prod-one" environment: "frontend-env" spec: port: 80 desired_count: 1 task_size: "x-small" image: "public.ecr.aws/z9d2n7e1/nginx:1.21.0" - name: "prod-two" environment: "frontend-env" spec: port: 80 desired_count: 1 task_size: "x-small" image: "public.ecr.aws/z9d2n7e1/nginx:1.21.0" - name: "prod-three" environment: "frontend-env" spec: port: 80 desired_count: 1 task_size: "x-small" image: "public.ecr.aws/z9d2n7e1/nginx:1.21.0"

인스턴스가 동기화되지 않고 동기화를 시도할 때 계속 문제가 발생하는 경우 GetServiceInstanceSyncStatusAPI를 호출하면 문제를 해결하는 데 도움이 될 수 있습니다.

참고

서비스 동기화를 사용하는 고객은 여전히 AWS Proton 한도에 따라 제한됩니다.

Blockers

AWS Proton 서비스 동기화를 사용하여 서비스를 동기화하면 서비스 사양을 업데이트하고 Git 리포지토리에서 서비스 인스턴스를 생성 및 업데이트할 수 있습니다. 하지만 AWS Management Console 또는 AWS CLI를 통해 서비스 또는 인스턴스를 수동으로 업데이트해야 하는 경우가 있을 수 있습니다.

AWS Proton를 사용하면 서비스 인스턴스 업데이트나 서비스 인스턴스 삭제와 같이 AWS Management Console 또는 AWS CLI을 통해 수동으로 변경한 내용을 덮어쓰지 않도록 할 수 있습니다. 이를 위해 AWS Proton은 수동 변경이 감지되면 서비스 동기화를 비활성화하여 서비스 동기화 차단기를 자동으로 생성합니다.

서비스와 관련된 모든 차단기를 가져오려면 서비스와 관련된 각 serviceInstance에 대해 다음을 순서대로 수행해야 합니다.

  • serviceName만 사용하여 getServiceSyncBlockerSummary API를 호출합니다.

  • serviceNameserviceInstanceName를 사용하여 getServiceSyncBlockerSummary API를 호출합니다.

그러면 가장 최근의 차단기 목록과 이와 관련된 상태가 반환됩니다. ACTIVE로 표시된 차단기가 있는 경우 각각의 경우에 대해 blockerIdresolvedReason가 있는 UpdateServiceSyncBlocker API를 호출하여 해결해야 합니다.

서비스 인스턴스를 수동으로 업데이트하거나 만드는 경우 AWS Proton은 서비스 인스턴스에 서비스 동기화 차단기를 만듭니다. AWS Proton는 다른 모든 서비스 인스턴스는 계속 동기화하지만 차단기가 해결될 때까지 이 서비스 인스턴스의 동기화를 비활성화합니다. 서비스에서 서비스 인스턴스를 삭제하면 AWS Proton은 서비스에서 서비스 동기화 차단기를 만듭니다. 이렇게 하면 차단이 해결될 때까지 AWS Proton에서 서비스 인스턴스를 동기화할 수 없습니다.

모든 활성 차단기를 설정한 후에는 활성 차단기 각각에 blockerIdresolvedReason이 있는 UpdateServiceSyncBlocker API를 호출하여 차단기를 해결해야 합니다.

AWS Management Console를 사용하여 AWS Proton로 이동하여 서비스 동기화 탭을 선택하면 서비스 동기화가 비활성화되어 있는지 여부를 확인할 수 있습니다. 서비스 또는 서비스 인스턴스가 차단된 경우 활성화 버튼이 나타납니다. 서비스 동기화를 활성화하려면 활성화를 선택합니다.