詳細検索

AWS Lambda와 함께 Aurora DSQL 잠금 해제: 서버리스, 확장 가능, 이벤트 기반 아키텍처를 위한 원활한 솔루션

아바타
글쓴이 Jatin Mehrotra

AWS Lambda와 함께 Aurora DSQL 잠금 해제: 서버리스, 확장 가능, 이벤트 기반 아키텍처를 위한 원활한 솔루션
English에서 번역 • 원문 보기

AWS re:Invent가 시작되었고, AWS CEO Matt Garman의 키노트에서 새로운 서비스와 기능 발표가 많이 있습니다(키노트 업데이트의 x/bluesky 스레드를 확인해 보세요).

이 블로그에서는 서버리스, 분산 SQL 데이터베이스, 사실상 무제한 규모, 고가용성, 인프라 관리가 전혀 없는 ASM에 대해 조사해 보겠습니다. 이 제품은 단일 지역별 99.99%, 다중 지역 가용성을 99.999% 달성한다고 주장합니다.

이 블로그의 목적은 아키텍처, 혁신, 핵심 구성 요소를 이해하게 하고, AWS 람다 함수를 사용해 작동하는 코드와 함께 Aurora DSQL을 관리할 수 있는 완전히 서버리스 솔루션을 제공하는 것입니다 🔥

동기

*2024년 12월 4일 오전 4시 (JST) 2일차 re:Invent 2024에서 AWS는 Amazon Aurora DSQL(Preview)을 도입하는 흥미로운 업데이트를 발표했습니다!! *

이 업데이트가 당신에게 어떤 의미인가요?

다음은 Amazon Aurora DSQL이 게임 체인저인 주요 이유입니다:

  • 무제한 확장성: 읽기, 쓰기, 계산, 저장 공간을 샤딩이나 인스턴스 업그레이드 없이도 손쉽게 확장할 수 있습니다.
  • 고가용성: Aurora DSQL의 액티브-액티브 서버리스 설계는 장애 복구를 자동화하여 멀티 AZ 및 다중 리전 가용성을 강력한 일관성과 함께 보장하여 장애 조치나 데이터 손실에 대한 우려를 제거합니다.
  • 가장 빠른 성능: 가장 빠른 분산 SQL 읽기 및 쓰기를 제공하여 고성능 애플리케이션에 이상적입니다.
  • 인프라 관리 제로: 완전한 서버리스 설계는 패치, 업그레이드, 유지보수 중단 시간을 없애 시간과 자원을 절약합니다. *** 강력한 데이터 일관**성: Aurora DSQL은 ACID 트랜잭션과 관계형 데이터 모델의 이점을 제공하는 트랜잭션 워크로드에 최적화되어 있습니다.
  • PostgreSQL 호환성: 익숙하고 널리 사용되는 SQL 인터페이스로 개발을 단순화하여 학습 곡선을 줄입니다.
  • 개발자 친화적: 운영 복잡성 없이 빠른 애플리케이션 개발을 가능하게 하는 직관적인 경험.

오로라 DSQL 비용

  • Aurora DSQL은 현재 무료 미리보기로 제공됩니다.

Aurora DSQL의 핵심 구성 요소


분산 아키텍처

Aurora DSQL은 분산 데이터베이스로 설계되어 여러 위치(가용성 존)에서 함께 작동하여 높은 가용성과 내결함성을 보장합니다. 주요 구성 요소는 네 가지로 구성됩니다:

  1. 릴레이 및 연결성: 시스템 내에서 데이터가 어떻게 이동하는지, 사용자를 데이터베이스에 연결합니다.
  2. 계산 및 데이터베이스: 쿼리 및 데이터베이스 논리의 실제 처리 관리를 담당합니다.
  3. 트랜잭션 로그 및 격리: 여러 작업을 동시에 안전하고 일관되게 처리하도록 보장합니다(예: 데이터 충돌 없음).
  4. 사용자 저장: 실제 데이터를 안전하게 저장합니다.

제어 평면이 이 부품들을 감독하고 조정하며, 무언가 고장 나면 자동으로 스스로 치유하고 확장되도록 설계되어 있습니다.

오로라 DSQL 클러스터


  • 단일 지역 클러스터:
    • 귀하의 데이터는 단일 지역 내 여러 데이터 센터(AZ)에 동기화되어 있습니다.
    • 이 구성은 복제 지연이나 데이터베이스 장애 조치 같은 문제를 방지합니다.
    • 강력한 일관성은 모든 사용자가 어디에 연결하든 동일한 데이터를 볼 수 있도록 보장합니다.
    • 시스템의 일부가 고장 나면, 요청은 자동으로 건강한 인프라로 전환됩니다.
    • ACID 트랜잭션을 지원(신뢰성, 일관성 및 내구성 보장).
  • 다중 지역 연계 클러스터:
    • 이 기능은 위 기능을 여러 지역에 확장하여 각 지역에 하나씩 있는 두 개의 엔드포인트를 하나의 데이터베이스로 제공합니다.
    • 두 영역 모두 읽기와 쓰기를 동시에 처리할 수 있으면서도 강력한 일관성을 보장할 수 있습니다.
    • 성능과 회복력이 중요한 글로벌 애플리케이션에 이상적입니다.

PostgreSQL 호환성

Aurora DSQL은 인기 있는 오픈소스인 PostgreSQL 16을 기반으로 구축되었습니다

데이터 복원력 및 백업 지원 방법

백업 및 복원

  • 현재 미리보기 단계에서 백업 및 복원지원되지 않습니다.
  • Aurora DSQL은 AWS 백업 콘솔과 통합하여 단일 지역 및 다중 지역 클러스터 모두에 완전한 백업 및 복원 기능을 제공할 계획입니다.

복제

  • 거래 기록:
    • Aurora DSQL은 모든 쓰기를 분산 트랜잭션 로그에 커밋하고 세 개의 AZ에 걸쳐 동기적으로 데이터를 복제합니다.
  • 다중 지역 복제:
    • 읽기 및 쓰기 영역 모두에 대한 지역 간 복제를 제공합니다.
    • 암호화된 거래 로그 저장을 위해 증인 영역을 사용하여 수동 설정이나 저장 오버헤드가 필요 없습니다.
  • 데이터 관리:
    • 접근 패턴과 주요 키 범위에 따라 데이터를 자동으로 분할, 병합, 복제합니다.
    • 읽기 수요에 따라 읽기 복제본을 동적으로 확장합니다.
  • 자가 치유:
    • AZ 장애 시 접근 권한 리디렉션과 누락된 데이터를 비동기적으로 복구합니다.
    • 수리된 복제본은 자동으로 저장소 정족수에 추가됩니다.

고가용성

  • 능동-능동 설계:
    • 단일 지역 및 다중 지역 클러스터 모두 액티브-액티브 형태로 완전 자동 복구가 가능합니다.
    • 전통적인 1차-2차 장애 조치 프로세스의 필요성을 제거합니다.
  • 다중 AZ 복제:
    • 세 개의 AZ 간 동기식 복제를 보장하여 데이터 손실이나 지연 위험을 방지합니다.
  • 지역 종점:
    • 단일 영역 클러스터는 세 개의 AZ 간에 일관된 읽기와 쓰기를 위한 중복 엔드포인트를 제공합니다.
    • 다중 지역 클러스터는 지역 간 지연 없이 강력한 일관된 접근을 위해 두 개의 지역 엔드포인트를 제공합니다.
    • 필요하다면 관리 가능한 글로벌 엔드포인트로 Amazon Route 53을 사용하세요.

Aurora DSQL과 함께 AWS Lambda 사용

물론 re:Invent와 관련해서, 독자들에게 Aurora DSQL 데이터베이스에 연결하고 AWS 람다 함수를 사용해 테이블을 생성하거나 데이터를 삽입하는 등 데이터베이스 작업을 혁신적으로 수행하는 방법을 설명하고 싶습니다

미리보기 중에는 us-east-1 – US East (버지니아 북부)와 us-east-2 – US East (오하이오) 클러스터와 상호작용할 수 있습니다.

Aurora DSQL 데이터베이스 생성

  • 콘솔에서 Aurora DSQL 검색

  • 이 블로그에서는 단일 지역 데이터베이스를 만들고 다른 컨퍼런트는 기본값으로 유지하고 있습니다. 미리보기에서는 클러스터 이름이 이름 키-값 태그로 설정되어 있습니다.
  • 클러스터 생성 후 DB의 엔드포인트 URL을 복사하세요.

 

  • 게 전부입니다. 관리할 것은 없습니다. 프로비저닝입니다. Aurora DSQL을 한 번의 클릭으로 배포할 수 있습니다!!

람다 함수 생성

이 람다 함수는 Aurora DSQL 데이터베이스에 연결해 테이블을 생성하고, 데이터를 삽입한 후 데이터를 다시 읽어 검증합니다. 네, 람다와 Aurora DSQL을 사용하는 진정한 서버 없는 연산입니다

  • Lambda 실행 역할이 클러스터에 연결되도록 인라인 정책 관리자 역할을 모든 리소스에 인라인 정책으로 추가하여 승인합니다.
  • 람다 -> 구성 -> 권한 -> 인라인 정책 추가
{ 
    "버전 "2012-10-17", 
    "성명": [ 
        { 
            "시드": "진술1", 
            "효과": "허용", 
            "Action": ["dsql:DbConnectAdmin"], 
            "자원": ["*"]
        }
    ]
}

참고: 운영 애플리케이션에서는 관리자 데이터베이스 역할을 사용하지 않는 것이 좋습니다. 이 기능은 블로그 위에서 해야 합니다

  • 람다를 사용해본 적이 있다면, 우리는 zip 패키지를 업로드해야 한다는 것을 알고 있을 것입니다. 저는 람다 코드를 제 저장소에 공유했습니다
  • 포크하고 저장소를 로컬 머신으로 가져온 후 다음 명령어를 사용하세요
NPM 설치. 생성 package-lock.json
CD ~/path-to-code
지퍼 -r pkg.zip. 
  • 패키지 업로드하기

  • 람다 함수의 테스트 탭에서 클러스터의 엔드포인트를 지정하기 위해 수정된 다음 이벤트 JSON 코드를 사용하세요.
{"엔드포인트": "replace_with_your_cluster_endpoint"}

환경 변수를 사용할 수도 있고, 코드를 변경하고 엔드포인트를 'process.env.ENDPOINT'라고 불러야 합니다.

진정한 서버리스 연산을 테스트하세요 (LAMBDA + Aurora DSQL)

  • 구현은 성공했지만 실패했다
  • 아마존 Q를 이용해 진단하고 고치자.

  • 람다 타임아웃 기본값 3초에서 10초로 증가
  • 짜잔, 성공했어.

**주:데이터를 검증하기 위해 람다 함수 내 다음 코드를 사용하고 있습니다

        assert.strictEqual(result.rows[0].city, "Anytown"); 
        assert.notStrictEqual(result.rows[0].id, null); 
  • 이제 잘못된 엔드포인트를 제시해 람다에서 실패해 봅시다

Aurora DSQL의 인증 및 권한 부여 이해하기

  • Aurora DSQL은 클러스터 권한 부여와 인증에 IAM 역할과 정책을 사용합니다. 데이터베이스 권한 부여를 위해 IAM 역할과 PostgreSQL 데이터베이스 역할s를 연관시킵니다.
  • 접속 시 자격 증명 대신 임시 인증 토큰(유효 1시간)을 사용합니다.
  • 인증용:
    • **관리자 역할을 사용 중이라면 *:* IAM 아이덴티티는 'dsql:DbConnectAdmin'이라는 정책 동작을 가져야 합니다.
    • *커스텀 데이터베이스 역할을 사용 중이라면:* IAM 아이덴티는 'dsql:DbConnect'라는 정책 동작을 가져야 합니다.

PostgreSQL 데이터베이스 역할과 IAM 역할을 사용하여 데이터베이스와 상호작용하세요

  • 데이터베이스 승인용:
    • 데이터베이스 수준 권한 부여를 위해 PostgreSQL 데이터베이스 역할을 사용하세요.
    • Aurora DSQL은 두 가지 유형의 역할을 제공합니다: *** 관리자 역할**: Aurora DSQL으로 미리 생성되어 수정 불가이며, 사용자 지정 역할 생성과 같은 관리 작업에 사용됩니다.
    • 사용자 지정 역할: 사용자가 생성하고 필요에 따라 PostgreSQL 권한을 할당합니다.
  • 역할 연관성:
    • 사용자 지정 데이터베이스 역할을 IAM 역할과 연결하여 IAM 아이덴티티가 데이터베이스에 연결할 수 있도록 합니다.
  • 인증 및 승인:
    • 관리자 역할을 사용해 클러스터에 연결하고 커스텀 역할을 관리하세요.
    • AWS IAM GRANT 명령어를 사용하여 IAM 아이덴티티를 데이터베이스 접근을 위한 맞춤형 역할과 연관하세요.

자세한 절차는 다음을 참고하세요:

Aurora DSQL 탐색: 접근, 개발, 그리고 모범 사례

Aurora DSQL 문서에 매우 만족스럽고 만족스럽습니다. 핵심을 꼼꼼히 전달하고 정말 잘 작성되어 있습니다.

오로라를 다룰 때 관심 있는 주제들이 있습니다:

* 보안그 모범 사례 : 탐정 모범 사례와 예방 보안 모범 사례 모두를 이해하는 것이 중요합니다

솔루션 아키텍트 관점에서

  • 이 블로그에서 단 한 번의 클릭으로 Aurora DSQL 클러스터를 만들 수 있는 방법을 보았습니다. 진정한 서버리스입니다.
  • 또한 AWS Lambda 함수를 활용해 Aurora DSQL 데이터베이스를 관리하는 진정한 서버리스 솔루션의 예시를 보았습니다* Aurora DSQL은 마이크로서비스, 서버리스, 이벤트 기반 아키텍처의 애플리케이션 패턴에 이상적이라는 점도 알았습니다
  • Amazon Aurora는 자동 확장, 높은 가용성, 복원력을 갖춘 서버리스 아키텍처를 제공하는 개발자에게 게임 체인저입니다. 수동 데이터베이스 관리 필요를 없애 개발자들이 애플리케이션 개발에 집중할 수 있게 합니다. Aurora를 통해 개발자들은 신뢰성과 효율성을 보장하면서 더 빠르게 혁신할 수 있습니다.
  • Aurora DSQL은 PostgreSQL 호환 기능으로, 익숙한 드라이버, 객체-관계형 매핑(ORM), 프레임워크, SQL 기능을 사용할 수 있습니다.

*블로그에서 소개한 Lambda 솔루션을 시도해 보셨나요? 서버리스 이벤트 기반 및 마이크로서비스 아키텍처에 혁신을 가져올 것이라고 생각하시나요? *

Related Articles