용 Amazon RDS 블루/그린 배포 개요 - Amazon Relational Database Service

용 Amazon RDS 블루/그린 배포 개요

Amazon RDS 블루/그린 배포를 사용하면 프로덕션 환경에서 구현하기 전에 데이터베이스를 변경하고 테스트할 수 있습니다. 블루/그린 배포는 프로덕션 환경을 복사하는 스테이징 환경을 만듭니다. 블루/그린 배포에서는 블루 환경이 현재 프로덕션 환경입니다. 그린 환경은 스테이징 환경입니다. 스테이징 환경은 논리적 복제를 사용하여 현재 프로덕션 환경과 계속 동기화됩니다.

프로덕션 워크로드에 영향을 주지 않고 그린 환경에서 RDS DB 인스턴스 를 변경할 수 있습니다. 예를 들어 메이저 또는 마이너 DB 엔진 버전을 업그레이드하거나 기본 파일 시스템 구성을 업그레이드하거나 스테이징 환경에서 데이터베이스 파라미터를 변경할 수 있습니다. 그린 환경의 변경 사항을 철저하게 테스트할 수 있습니다. 준비가 되면 환경을 전환하여 그린 환경을 새로운 프로덕션 환경으로 승격할 수 있습니다. 전환은 일반적으로 1분도 걸리지 않으며 데이터 손실이 발생하지 않고 애플리케이션을 변경할 필요도 없습니다.

그린 환경은 프로덕션 환경 토폴로지의 복사본이므로, 그린 환경에는 DB 인스턴스에서 사용하는 기능이 포함됩니다. 대표적인 기능은 읽기 전용 복제본, 스토리지 구성, DB 스냅샷, 자동 백업, 성능 개선 도우미와 확장 모니터링입니다. 블루 DB 인스턴스가 다중 AZ DB 인스턴스 배포인 경우 그린 DB 인스턴스도 다중 AZ DB 인스턴스 배포입니다.

참고

현재 블루/그린 배포는 RDS for MariaDB, RDS for MySQL, RDS for PostgreSQL에서만 지원됩니다. Amazon Aurora 가용성에 대해서는 Amazon Aurora 사용 설명서의 데이터베이스 업데이트에 Amazon RDS 블루/그린 배포 사용을 참조하세요.

리전 및 버전 사용 가능 여부

기능 가용성 및 해당 지원은 각 데이터베이스 엔진의 특정 버전 및 AWS 리전 리전에 따라 다릅니다. 자세한 내용은 Amazon RDS 블루/그린 배포를 지원하는 리전 및 DB 엔진 단원을 참조하십시오.

Amazon RDS 블루/그린 배포 사용의 장점

Amazon RDS 블루/그린 배포를 사용하면 보안 패치를 최신 상태로 유지하고, 데이터베이스 성능을 개선할 수 있으며 짧고 예측 가능한 다운타임으로 최신 데이터베이스 기능을 채택할 수 있습니다. 블루/그린 배포를 통해 메이저 또는 마이너 엔진 버전 업그레이드와 같이 데이터베이스 업데이트로 인해 발생가능한 리스크 및 다운타임을 줄일 수 있습니다.

블루/그린 배포는 다음과 같은 장점을 제공합니다.

  • 프로덕션 준비가 된 스테이징 환경을 쉽게 만들 수 있습니다.

  • 데이터베이스 변경 사항을 프로덕션 환경에서 스테이징 환경으로 자동으로 복제합니다.

  • 프로덕션 환경에 영향을 주지 않고 안전한 스테이징 환경에서 데이터베이스 변경 사항을 테스트합니다.

  • 데이터베이스 패치 및 시스템 업데이트로 최신 상태를 유지하세요.

  • 새로운 데이터베이스 기능을 구현하고 테스트합니다.

  • 애플리케이션을 변경하지 않고도 스테이징 환경을 새 프로덕션 환경으로 전환합니다.

  • 내장된 전환 가드레일을 사용하여 안전하게 전환합니다.

  • 전환 중 데이터 손실이 발생하지 않습니다.

  • 워크로드에 따라 대부분 1분 이내에 빠르게 전환합니다.

블루/그린 배포 워크플로우

데이터베이스 업데이트에 블루/그린 배포를 사용한다면 다음 주요 단계를 완료해주세요.

  1. 업데이트가 필요한 프로덕션 환경을 식별합니다.

    예를 들어 이 이미지의 프로덕션 환경에는 다중 AZ DB 인스턴스 배포(mydb1) 읽기 전용 복제본(mydb2)이 있습니다.

    블루/그린 배포의 프로덕션(블루) 환경
  2. 블루/그린 배포 생성 지침은 블루/그린 배포 생성 섹션을 참조하세요.

    다음 이미지는 1단계에서 설명하는 프로덕션 환경의 블루/그린 배포 예시입니다. 블루/그린 배포를 생성하는 동안, RDS는 기본 DB 인스턴스의 전체 토폴로지 및 구성을 복사하여 그린 환경을 만듭니다. 복사된 DB 인스턴스 이름 뒤에는 -green-random-characters가 추가됩니다. 이미지의 스테이징 환경에는 다중 AZ DB 인스턴스 배포(mydb1-green-abc123)와 읽기 전용 복제본(mydb2-green-abc123)이 포함됩니다.

    블루/그린 배포

    블루/그린 배포를 생성하는 도중 DB 엔진 버전을 업그레이드하고, 그린 환경에 있는 DB 인스턴스에 다른 DB 파라미터 그룹을 지정할 수 있습니다. 또한 RDS는 블루 환경의 기본 DB 인스턴스에서 그린 환경의 기본 DB 인스턴스로의 논리적 복제를 구성합니다.

    블루/그린 배포가 생성되면 그린 환경의 DB 인스턴스는 기본적으로 읽기 전용 상태가 됩니다.

  3. 필요한 경우 스테이징 환경에 추가 변경 사항을 적용합니다.

    예를 들어 데이터베이스의 스키마를 변경하거나 그린 환경에 있는 하나 이상의 DB 인스턴스에서 사용하는 DB 인스턴스 클래스를 변경할 수 있습니다.

    DB 인스턴스 수정에 대한 자세한 내용은 Amazon RDS DB 인스턴스 수정 단원을 참조하세요.

  4. 스테이징 환경을 테스트합니다.

    테스트하는 동안에는 그린 환경의 데이터베이스를 읽기 전용으로 유지하는 것이 좋습니다. 복제 충돌이 발생할 수 있으므로 그린 환경에서 쓰기 작업을 사용 설정하세요. 전환 후 프로덕션 데이터베이스에 의도하지 않은 데이터가 저장될 수도 있습니다. RDS for MySQL에서 쓰기 작업을 활성화하려면 read_only 파라미터를 0으로 설정한 다음, DB 인스턴스를 재부팅합니다. RDS for PostgreSQL의 경우 default_transaction_read_only 파라미터를 세션 수준에서 off로 설정합니다.

  5. 준비가 되면 전환하여 그린 환경을 새로운 프로덕션 환경으로 승격합니다. 지침은 블루/그린 배포 전환 섹션을 참조하세요.

    전환하면 다운타임이 발생하게 됩니다. 다운타임은 보통 1분 미만이지만 워크로드에 따라 더 길어질 수 있습니다.

    다음 이미지는 전환 이후의 DB 인스턴스를 보여줍니다.

    블루/그린 배포로 전환한 후의 DB 인스턴스

    전환이 끝나면 그린 환경에 있던 DB 인스턴스가 새로운 프로덕션 DB 인스턴스가 됩니다. 현재 프로덕션 환경의 이름과 엔드포인트가 새로 승격된 프로덕션 환경에 할당되므로, 애플리케이션을 변경할 필요가 없습니다. 따라서 이제 프로덕션 트래픽이 새 프로덕션 환경으로 이동합니다. 이전 블루 환경의 DB 인스턴스는 현재 이름에 -oldn이 추가됩니다(여기서 n은 숫자입니다). 예를 들어 블루 환경의 DB 인스턴스 이름이 mydb1이라고 가정하겠습니다. 전환이 끝나면 DB 인스턴스 이름은 mydb1-old1이 됩니다.

    이미지의 예시에서는 전환 중에 다음과 같은 변경 사항이 발생합니다.

    • 이름이 mydb1-green-abc123인 그린 환경 다중 AZ DB 인스턴스 배포가 이름이 mydb1인 프로덕션 다중 AZ DB 인스턴스 배포가 됩니다.

    • 이름이 mydb2-green-abc123인 그린 환경의 읽기 전용 복제본이 이름이 mydb2인 프로덕션 읽기 전용 복제본이 됩니다.

    • 이름이mydb1인 블루 환경 다중 AZ DB 인스턴스 배포가 mydb1-old1이 됩니다.

    • 이름이 mydb2인 블루 환경 읽기 전용 복제본이 mydb2-old1이 됩니다.

  6. 블루/그린 배포가 더 이상 필요하지 않다면 삭제해도 됩니다. 지침은 블루/그린 배포 삭제 섹션을 참조하세요.

    전환 후에도 이전 프로덕션 환경이 삭제되지 않으므로, 필요하다면 회귀 테스트에 사용할 수 있습니다.

블루/그린 배포 작업에 대한 액세스 권한 부여

사용자는 블루/그린 배포와 관련된 작업을 수행하는 데 필요한 권한이 있어야 합니다. 지정된 리소스에서 특정 API 태스크를 수행할 수 있는 권한을 사용자와 역할에게 부여하는 IAM 정책을 생성할 수 있습니다. 그런 다음 해당 권한이 필요한 IAM 권한 세트 또는 역할에 이러한 정책을 연결할 수 있습니다. 자세한 내용은 Amazon RDS의 자격 증명 및 액세스 관리 단원을 참조하십시오.

블루/그린 배포를 만드는 사용자는 다음 RDS 작업을 수행할 권한이 있어야 합니다.

  • rds:AddTagsToResource

  • rds:CreateDBInstanceReadReplica

블루/그린 배포로 전환하는 사용자는 다음 RDS 작업을 수행할 권한이 있어야 합니다.

  • rds:ModifyDBInstance

  • rds:PromoteReadReplica

블루/그린 배포를 삭제하는 사용자는 다음 RDS 작업을 수행할 권한이 있어야 합니다.

  • rds:DeleteDBInstance

Amazon RDS는 사용자를 대신하여 스테이징 환경에서 리소스를 프로비저닝하고 수정합니다. 이러한 리소스에는 내부적으로 정의된 명명 규칙을 사용하는 DB 인스턴스가 포함됩니다. 따라서 연결된 IAM 정책에는 my-db-prefix-*와 같은 부분적인 리소스 이름 패턴이 포함될 수 없습니다. 와일드카드(*)만 지원됩니다. 일반적으로 와일드카드 대신 리소스 태그와 기타 지원되는 속성을 사용하여 이러한 리소스에 대한 액세스를 제어하는 것이 좋습니다. 자세한 내용은 Amazon RDS에 사용되는 작업, 리소스 및 조건 키를 참조하세요.

블루/그린 배포 관련 고려 사항

Amazon RDS는 각 리소스의 DbiResourceId를 사용하여 블루/그린 배포의 리소스를 추적합니다. 이 리소스 ID는 AWS 리전별로 고유한, 리소스의 변경 불가능한 식별자입니다.

다음과 같이 리소스 ID는 DB 인스턴스 ID와 다릅니다.

블루/그린 배포 생성

블루/그린 배포로 전환하면 리소스 이름(인스턴스스 ID)이 변경되지만, 각 리소스는 동일한 리소스 ID를 유지합니다. 예를 들어 DB 인스턴스 식별자는 블루 환경에서는 mydb입니다. 전환이 끝나면 동일한 DB 인스턴스의 이름이 mydb-old1으로 변경됩니다. 하지만 DB 인스턴스의 리소스 ID는 전환 중에 변경되지 않습니다. 따라서 그린 리소스가 새 프로덕션 리소스로 승격되면, 관련 리소스 ID는 이전에 프로덕션에 있었던 블루 리소스 ID와 일치하지 않게 됩니다.

블루/그린 배포로 전환한 후에는, 리소스 ID를 프로덕션 리소스와 함께 사용한 통합형 기능 및 서비스를 위해 새로 승격된 프로덕션 리소스의 ID로 업데이트하는 것을 고려해 보십시오. 구체적으로는 다음 업데이트를 고려해 보십시오.

  • RDS API 및 리소스 ID를 사용하여 필터링을 수행할 경우, 전환 후 필터링에 사용한 리소스 ID를 조정하세요.

  • 리소스 감사에 CloudTrail을 사용한다면, 전환 후 새 리소스 ID를 추적하도록 CloudTrail의 소비자를 조정하십시오. 자세한 내용은 AWS CloudTrail에서 Amazon RDS API 호출 모니터링 단원을 참조하십시오.

  • Performance Insights API를 사용한다면, 전환 후 API 호출의 리소스 ID를 조정하십시오. 자세한 내용은 성능 개선 도우미를 통한 Amazon RDS 모니터링 단원을 참조하십시오.

    전환 후 동일한 이름의 데이터베이스를 모니터링할 수 있지만, 전환 전의 데이터는 포함되지 않습니다.

  • IAM 정책에서 리소스 ID를 사용한다면, 필요한 경우 새로 승격된 리소스의 리소스 ID를 추가해야 합니다. 자세한 내용은 Amazon RDS의 자격 증명 및 액세스 관리 단원을 참조하십시오.

  • DB 인스턴스와 연결된 IAM 역할이 있는 경우 전환 후 해당 역할을 다시 연결해야 합니다. 연결된 역할은 그린 환경으로 자동 복사되지 않습니다.

  • IAM 데이터베이스 인증을 사용하여 DB 인스턴스를 인증하는 경우, 데이터베이스 액세스에 사용되는 IAM 정책의 Resource 요소 아래에 블루 데이터베이스와 그린 데이터베이스가 모두 나열되어 있는지 확인하세요. 이는 전환 후 그린 데이터베이스에 연결하기 위해 필요합니다. 자세한 내용은 IAM 데이터베이스 액세스를 위한 IAM 정책 생성 및 사용 단원을 참조하십시오.

  • 블루/그린 배포에서 리소스의 자동 백업을 관리하는 데 AWS Backup를 사용한다면, 전환 후에 AWS Backup에서 사용하는 리소스 ID를 조정하십시오. 자세한 내용은 AWS Backup를 사용하여 자동 백업 관리 단원을 참조하십시오.

  • 블루/그린 배포의 일부였던 DB 인스턴스의 수동 또는 자동 DB 스냅샷을 복원하려면, 스냅샷을 촬영한 시간을 확인하여 올바른 DB 스냅샷을 복원해야 합니다. 자세한 내용은 DB 스냅샷에서 복원 단원을 참조하십시오.

  • 이전 블루 환경 DB 인스턴스 자동 백업을 설명하거나 특정 시점으로 복원하려면, 작업의 리소스 ID를 사용해야 합니다.

    전환 중에 DB 인스턴스의 이름이 변경되므로 DescribeDBInstanceAutomatedBackups 또는RestoreDBInstanceToPointInTime 작업에 이전 이름을 사용해선 안 됩니다.

    자세한 내용은 DB 인스턴스를 지정된 시간으로 복원 단원을 참조하십시오.

  • 블루/그린 배포의 그린 환경에 있는 DB 인스턴스에 읽기 전용 복제본을 추가하면, 새 읽기 전용 복제본은 전환할 때 블루 환경의 읽기 전용 복제본을 대체하지 않습니다. 하지만 새 읽기 전용 복제본은 전환 후에도 새 프로덕션 환경에 보존됩니다.

  • 블루/그린 배포의 그린 환경에 있는 DB 인스턴스를 삭제하면, 블루/그린 배포에서 이를 대체할 새 DB 인스턴스를 만들 수 없습니다.

    삭제된 DB 인스턴스와 동일한 이름 및 Amazon 리소스 이름(ARN)으로 새 DB 인스턴스를 생성하면, DbiResourceId가 다르기 때문에 그린 환경에 속하지 않게 됩니다.

    그린 환경에서 DB 인스턴스를 삭제하면 다음과 같은 동작이 발생합니다.

    • 블루 환경에 이름이 같은 DB 인스턴스가 있는 경우, 이 인스턴스는 그린 환경의 DB 인스턴스로 전환되지 않습니다. 이 DB 인스턴스는 DB 인스턴스 이름에 -oldn을 추가하여 이름이 바뀌지 않습니다.

    • 블루 환경의 DB 인스턴스를 가리키는 모든 애플리케이션은 전환 후에도 동일한 DB 인스턴스를 계속 사용합니다.

    DB 인스턴스와 읽기 전용 복제본에도 동일한 동작이 적용됩니다.

블루/그린 배포 모범 사례

다음은 블루/그린 배포 모범 사례입니다.

일반 모범 사례

  • 전환하기 전에 DB 인스턴스를 철저하게 테스트합니다.

  • 그린 환경에서 데이터베이스를 읽기 전용으로 유지합니다. 복제 충돌이 발생할 수 있으므로 그린 환경에서 쓰기 작업을 사용 설정할 때는 신중해야 합니다. 전환 후 프로덕션 데이터베이스에 의도하지 않은 데이터가 저장될 수도 있습니다.

  • 블루/그린 배포를 사용하여 스키마 변경을 구현할 때는 복제와 호환되는 변경만 적용합니다.

    예를 들어 블루 배포에서 그린 배포로의 복제를 중단하지 않고 테이블 끝에 새 열을 추가할 수 있습니다. 그러나 열 이름 변경이나 테이블 이름 변경 같은 스키마 변경은 그린 배포로의 복제 중단을 유발합니다.

    복제 호환 변경 사항에 대한 자세한 내용은 MySQL 설명서의 소스 및 복제본에서 서로 다른 테이블 정의를 사용하는 복제 및 PostgreSQL 논리적 복제 설명서의 제한 사항을 참조하세요.

  • 블루/그린 배포를 생성한 후 필요하다면 지연 로딩을 처리합니다. 전환하기 전에 데이터 로드가 완료되었는지 확인합니다. 자세한 내용은 블루/그린 배포를 생성할 때 지연 로드 처리 단원을 참조하십시오.

  • 블루/그린 배포로 전환할 때는 전환 모범 사례를 따르세요. 자세한 내용은 전환 모범 사례 단원을 참조하십시오.

RDS for MySQL 모범 사례

  • 복제에 최적화되지 않은 MyISAM 같은 비트랜잭션 스토리지 엔진 사용은 자제하시기 바랍니다.

  • 이진 로그 복제용 읽기 전용 복제본을 최적화합니다.

    예를 들어 DB 엔진 버전에서 지원하는 경우, 블루/그린 배포를 배포하기 전에 프로덕션 환경에서 GTID 복제, 병렬 복제 및 충돌 방지 복제를 사용하는 것이 좋습니다. 이러한 옵션을 사용하면 블루/그린 배포로 전환하기 전에 데이터의 일관성과 내구성을 높일 수 있습니다. 읽기 전용 복제본의 GTID 복제에 대한 자세한 내용은 GTID 기반 복제 사용 단원을 참조하세요.

RDS for PostgreSQL 모범 사례

  • 데이터베이스에 사용 가능한 메모리가 충분할 경우 블루 환경에서 logical_decoding_work_mem DB 파라미터 값을 늘립니다. 이렇게 하면 디스크 디코딩이 줄어들고 대신 메모리가 사용됩니다. FreeableMemory CloudWatch 지표로 여유 메모리를 모니터링할 수 있습니다. 자세한 내용은 Amazon RDS에 대한 Amazon CloudWatch 지표 단원을 참조하십시오.

  • 블루/그린 배포를 생성하기 전에 모든 PostgreSQL 확장을 최신 버전으로 업데이트합니다. 자세한 내용은 PostgreSQL 확장 버전 업그레이드 단원을 참조하십시오.

  • aws_s3 확장을 사용하는 경우 그린 환경이 생성된 후 IAM 역할을 통해 그린 DB 인스턴스에 Amazon S3에 대한 액세스 권한을 부여해야 합니다. 이렇게 하면 전환 후에도 가져오기 및 내보내기 명령이 계속 작동합니다. 지침은 Amazon S3 버킷에 대한 액세스 권한 설정 섹션을 참조하세요.

  • 그린 환경에 더 높은 엔진 버전을 지정하는 경우 모든 데이터베이스에서 ANALYZE 작업을 실행하여 pg_statistic 테이블을 새로 고칩니다. 옵티마이저 통계는 메이저 버전 업그레이드 중에 전송되지 않으므로 성능 문제를 방지하려면 모든 통계를 다시 생성해야 합니다. 메이저 버전 업그레이드 중 추가 모범 사례에 대해 알아보려면 메이저 버전 업그레이드를 수행하는 방법 섹션을 참조하세요.

  • 데이터를 조작하기 위해 트리거를 소스에 사용하는 경우 트리거를 ENABLE REPLICA 또는 ENABLE ALWAYS로 구성하지 마세요. 이렇게 구성하면 복제 시스템이 변경 내용을 전파하고 트리거를 실행하므로 중복이 발생합니다.

  • 트랜잭션이 오래 실행되면 심각한 복제 지연이 발생할 수 있습니다. 복제 지연을 줄이려면 다음과 같이 해 보세요.

    • 그린 환경이 블루 환경을 따라잡을 때까지 지연될 수 있는 장기 실행 트랜잭션을 줄이세요.

    • 블루/그린 배포를 생성하기 전에 사용량이 많은 테이블에서 수동 vacuum freeze 작업을 시작하세요.

    • PostgreSQL 버전 12 이상의 경우, 크거나 사용량이 많은 테이블에서 index_cleanup 파라미터를 비활성화하여 블루 데이터베이스의 일반 유지 관리 속도를 높이세요. 자세한 내용은 테이블에 최대한 신속하게 Vacuum을 실행하는 방법 섹션을 참조하세요.

  • 복제 속도가 느리면 발신자와 수신자가 자주 다시 시작되어 동기화가 지연될 수 있습니다. 이들의 활성 상태를 유지하려면 블루 환경에서는 wal_sender_timeout 파라미터를 0으로 설정하고 그린 환경에서는 wal_receiver_timeout 파라미터를 0으로 설정하여 시간 초과를 비활성화하세요.

  • 미리 쓰기 로그(WAL) 세그먼트가 블루 환경에서 제거되지 않도록 하려면 PostgreSQL 버전 13 이하에서 wal_keep_segments 파라미터를 15625로 설정하세요. 버전 14 이상에서는 사용 가능한 스토리지 공간이 충분하면 wal_keep_size 파라미터를 1TiB로 설정하세요.

블루/그린 배포 관련 제한 사항

블루/그린 배포에는 다음과 같은 제한 사항이 적용됩니다.

블루/그린 배포 관련 일반 제한 사항

블루/그린 배포에는 다음과 같은 일반 제한 사항이 적용됩니다.

  • MySQL 버전 8.0.11부터 8.0.13까지는 블루/그린 배포를 지원하지 못하게 하는 커뮤니티 버그가 있습니다.

  • 11.21 이상, 12.16 이상, 13.12 이상, 14.9 이상, 15.4 이상 버전의 RDS for PostgreSQL은 업그레이드 소스 및 대상 버전으로 지원됩니다. 하위 버전의 경우 지원되는 버전으로 마이너 버전 업그레이드를 수행할 수 있습니다.

  • 블루/그린 배포의 경우 AWS Secrets Manager에서 마스터 사용자 암호 관리를 지원하지 않습니다.

  • RDS for PostgreSQL의 경우,.

  • RDS for PostgreSQL의 경우 블루 환경 DB 인스턴스는 자체 관리형 논리적 소스(게시자) 또는 복제본(구독자)이 될 수 없습니다. RDS for PostgreSQL의 경우 블루 환경 DB 인스턴스는 외부 binlog 복제본이 될 수 없습니다.

  • 전환 중에는 블루 및 그린 환경을 Amazon Redshift와 제로 ETL로 통합할 수 없습니다. 먼저 통합을 삭제하고 전환한 다음 통합을 다시 생성해야 합니다.

  • 블루/그린 배포를 생성할 때는 그린 환경에서 Event Scheduler(event_scheduler 파라미터)를 비활성화해야 합니다. 이렇게 하면 그린 환경에서 이벤트가 생성되어 불일치가 발생하는 것을 방지할 수 있습니다.

  • 블루/그린 배포는 MySQL용 AWS JDBC 드라이버를 지원하지 않습니다. 자세한 내용은 GitHub의 Known Limitations를 참조하세요.

  • 블루/그린 배포는 다음 기능에는 지원되지 않습니다.

    • Amazon RDS 프록시

    • 계단식 읽기 전용 복제본

    • 리전 간 읽기 전용 복제본

    • AWS CloudFormation

    • 다중 AZ DB 클러스터 배포

      블루/그린 배포는 다중 AZ DB 인스턴스 배포에서 지원됩니다. 다중 AZ 배포에 대한 자세한 정보는 다중 AZ 배포 구성 및 관리 단원을 참조하세요.

블루/그린 배포를 위한 PostgreSQL 확장 제한

PostgreSQL 확장에는 다음과 같은 제한 사항이 적용됩니다.

  • 블루/그린 배포를 만들 때는 블루 환경에서 pg_partman 확장을 비활성화해야 합니다. 확장은 블루 환경에서 그린 환경으로의 논리적 복제를 중단하는 CREATE TABLE과 같은 DDL 작업을 수행합니다.

  • 블루/그린 배포를 생성한 후에는 모든 그린 데이터베이스에서 pg_cron 확장을 비활성화한 상태로 유지해야 합니다. 확장에는 슈퍼유저로 실행되고 그린 환경의 읽기 전용 설정을 우회하는 백그라운드 작업자가 있어 복제 충돌이 발생할 수 있습니다.

  • 블루 DB 인스턴스가 외부 데이터 래퍼(FDW) 확장의 외부 서버로 구성된 경우 IP 주소 대신 인스턴스 엔드포인트 이름을 사용해야 합니다. 이렇게 하면 전환 후에도 구성이 계속 작동합니다.

  • 블루/그린 배포를 만들 때는 블루 환경에서 pglogicalpg_active 확장을 비활성화해야 합니다. 그린 환경을 새로운 프로덕션 환경으로 승격한 후 확장 기능을 다시 활성화할 수 있습니다. 또한 블루 데이터베이스는 외부 인스턴스의 논리적 구독자가 될 수 없습니다.

  • pgAudit 확장을 사용하는 경우, 해당 확장은 블루 및 그린 DB 인스턴스 모두에 대한 사용자 지정 DB 파라미터 그룹의 공유 라이브러리(shared_preload_libraries)에 남아 있어야 합니다. 자세한 내용은 pgAudit 확장 설정 단원을 참조하십시오.

블루/그린 배포 변경 관련 제한 사항

블루/그린 배포에서의 변경에는 다음과 같은 제한 사항이 적용됩니다.

  • 암호화되지 않은 DB 인스턴스 는 암호화된 DB 인스턴스로 변경할 수 없습니다.

  • 암호화된 DB 인스턴스 는 암호화되지 않은 DB 인스턴스로 변경할 수 없습니다.

  • 블루 환경 DB 인스턴스 를 대응하는 그린 환경 DB 인스턴스로 변경할 수 없습니다.

  • 블루 환경과 그린 환경의 리소스는 동일한 AWS 계정에 있어야 합니다.

  • RDS for MySQL에서 소스 데이터베이스가 사용자 지정 옵션 그룹과 연결된 경우, 블루/그린 배포를 생성할 때 메이저 버전 업그레이드를 지정할 수 없습니다.

    이 경우 메이저 버전 업그레이드를 지정하지 않고 블루/그린 배포를 생성할 수 있습니다. 그런 다음 그린 환경에서 데이터베이스를 업그레이드하면 됩니다. 자세한 내용은 DB 인스턴스 엔진 버전 업그레이드 단원을 참조하십시오.

블루/그린 배포를 위한 PostgreSQL 논리적 복제 제한

블루/그린 배포에서는 논리적 복제를 사용하여 스테이징 환경을 프로덕션 환경과 동기화된 상태로 유지합니다. PostgreSQL에는 논리적 복제와 관련된 몇 가지 제한 사항이 있으며, 이로 인해 RDS for PostgreSQL DB 인스턴스에 대한 블루/그린 배포를 생성할 때 제한이 적용됩니다.

다음 표에는 RDS for PostgreSQL의 블루/그린 배포에 적용되는 논리적 복제 제한 사항이 설명되어 있습니다.

제한 사항 설명
CREATE TABLECREATE SCHEMA와 같은 데이터 정의 언어(DDL) 문은 블루 환경에서 그린 환경으로 복제되지 않습니다.

Amazon RDS가 블루 환경에서 DDL 변경을 감지하면 그린 데이터베이스는 복제 성능 저하 상태로 전환됩니다.

블루 환경의 DDL 변경 사항을 그린 환경으로 복제할 수 없음을 알리는 이벤트가 수신됩니다. 블루/그린 배포와 모든 그린 데이터베이스를 삭제한 다음 다시 생성해야 합니다. 이렇게 하지 않으면 블루/그린 배포를 전환할 수 없습니다.

시퀀스 객체에 대한 NEXTVAL 작업은 블루 환경과 그린 환경 간에 동기화되지 않습니다.

전환 중에 Amazon RDS는 그린 환경의 시퀀스 값을 증가시켜 블루 환경의 시퀀스 값과 일치하도록 합니다. 수천 개의 시퀀스가 있는 경우 전환이 지연될 수 있습니다.

블루 환경에서 큰 객체를 만들거나 수정해도 그린 환경에는 복제되지 않습니다.

Amazon RDS가 블루 환경에서 pg_largeobject 시스템 테이블에 저장된 대형 객체의 생성 또는 수정을 감지하면 그린 데이터베이스는 복제 성능 저하 상태로 전환됩니다.

RDS는 블루 환경의 대규모 객체 변경 사항을 그린 환경에 복제할 수 없음을 알리는 이벤트를 생성합니다. 블루/그린 배포와 모든 그린 데이터베이스를 삭제한 다음 다시 생성해야 합니다. 이렇게 하지 않으면 블루/그린 배포를 전환할 수 없습니다.

그린 환경에서는 구체화된 뷰가 자동으로 새로 고쳐지지 않습니다.

블루 환경에서 구체화된 뷰를 새로 고쳐도 그린 환경에서는 새로 고쳐지지 않습니다. 전환 후에는 구체화된 뷰의 새로 고침을 예약할 수 있습니다.

프라이머리프라이머리 키가 없는 테이블에서는 UPDATE 및 DELETE 작업이 허용되지 않습니다.

블루/그린 배포를 생성하기 전에 DB 인스턴스의 모든 테이블에 프라이머리프라이머리 키가 있는지 확인하세요.

자세한 내용은 PostgreSQL 논리적 복제 설명서의 제한 사항을 참조하세요.