베하 -!
BTC_콩순이들의 쭈콩입니다 !
날이 이제 선선하다 못해 좀 쌀쌀해지는 계절입니다!
다들 감기 조심하셔야 할 것 같아요 : )
오늘은 AWS Aurora RDS 가 사용하는 엔드포인트에 대해 알아보려고 합니다!
클러스터로 만드는지, 인스턴스로 만드는지 등 RDS 생성 방법이나 종류에 따라 엔드포인트가 다르기도 하기 때문입니다.
그럼 시작해볼게요 !!
오늘 알아볼 RDS 엔드포인트는 Aurora RDS의 엔드포인트 입니다 !
Amazon Aurora는 일반적으로 단일 인스턴스 대신에 DB 인스턴스 클러스터와 관련됩니다.
일부 DB 인스턴스를 사용할 수 없을 때에 모든 호스트 이름을 하드코딩하거나, 연결을 다시 라우팅 하고 로드밸런싱 하기 위해 따로 자체 로직을 작성해야할 필요가 없습니다.
백엔드 서버가 가리키는 엔드포인트가 어떤 엔드포인트냐에 따라 인스턴스가 정해질 수 있습니다 !
특히나 읽기 작업이 많은 경우에는 읽기 전용 엔드포인트를 사용하기도 하는데 조금 더 찬찬히 알아보도록 하겠습니다.
엔드포인트 , 말만 들어서는 어떻게 생긴건지 어디서 볼 수 있는지 확인해보겠습니다 !
보통 엔드포인트는 호스트주소와 포트를 포함하는 Aurora 별 URL의 형태로 표시 됩니다.
Aurora 엔드포인트 유형
클러스터 엔드포인트
Aurora DB 클러스터의 클러스터 엔드포인트는 해당 DB 클러스터의 현재 기본 DB 인스턴스에 연결됩니다.
중요한건 이 엔드포인트가 유일하게 DDL 문 등의 쓰기 작업을 수행할 수 있는 유일한 엔드포인트라는 것인데요. 따라서 클러스터 엔드포인트는 처음 설정하는 경우, 클러스터 단일 DB 인스턴스만 있는경우 에 연결하는 엔드포인트 입니다.
그렇다고해서 쓰기 작업만 하는 엔드포인트는 아니며, 쿼리와 같은 읽기 작업에도 사용되기 때문에 DB 클러스터에 대한 읽기/쓰기 연결시 장애 조치를 지원하고 있습니다.
DB 클러스터의 현재 기본 DB 인스턴스에 장애가 발생하면 Aurora가 자동으로 새로운 기본 DB 인스턴스로 장애조치합니다. 하지만 피할 수 없는 서비스 중단시간이 있기 때문에 이점은 유의하셔야 합니다 ㅠㅠ,,
리더 엔드포인트
리더 엔드포인트는 DB 클러스터에 대한 읽기 전용 연결시에 로드밸런싱을 지원하고 있습니다. 쿼리와 같은 읽기 작업에 리더 엔드포인트가 사용되는데요. 이때 읽기에 대해서만 처리를 하기 때문에 오버헤드를 줄일 수 있으며, 동시에 SELECT를 처리 할 수 있도록 용량을 확장할 수 있습니다.
각 클러스터에는 리더 엔드포인트가 1개씩 있으며, 만약 클러스터에 기본 인스턴스만 있다면 리더 엔드포인트는 기본 인스턴스에 연결합니다.
로드밸런싱을 지원하지만 결국 RDS 리더 엔드포인트에만 의지하기에는 한계가 있어 보입니다.
리더 엔드포인트를 사용하지만 개선이 되지 않는 사례도 많이 보았고, 보통은 애플리케이션 또는 엔드포인트가 캐싱하고 있는 DNS 가 문제가 되곤 합니다. 해당 내용에 대해서는 아래 링크를 통해 확인할 수 있습니다.
[1] 균등하게 분배되지 않는 시나리오: https://repost.aws/ko/knowledge-center/aurora-mysql-postgresql-reader-nodes
[2] DNS 캐싱 관련: https://docs.aws.amazon.com/ko_kr/whitepapers/latest/amazon-aurora-mysql-db-admin-handbook/dns-caching.html
인스턴스 엔드포인트
인스턴스 엔드포인트는 Aurora 클러스터에 있는 특정 인스턴스에 연결됩니다. 인스턴스 마다 고유의 인스턴스 엔드포인트가 있습니다. 클러스터 또는 리더 엔드포인트로 사용하는 경우가 많지만 이러한 엔드포인트의 사용이 부적합한 워크로드에서는 인스턴스 엔드포인트가 연결을 직접 제어하여 더 세분화된 로드밸런싱을 구현할 수 있습니다.
사용자 지정 엔드포인트
사용자 지정 엔드포인트는 선택한 DB 인스턴스 집합을 나타내며, 로드밸런싱을 지원하고 그룹에서 연결을 처리할 인스턴스 중 하나를 선택하게 됩니다. 특히나 사용자 지정 엔드포인트의 경우 미리 이 엔드포인트가 참조하는 인스턴스를 정의하고, 이 엔드포인트가 어떤 목적으로 사용되는지 결정하는게 중요합니다.
예를 들어 클러스터 내부에 용량 및 구성설정이 다른 DB 인스턴스가 포함된 경우 사용자 지정 엔드포인트를 사용하여 연결 관리를 간소화합니다. 각각의 특수 목적에 DB 인스턴스를 하나씩 사용하고 인스턴스 엔드포인트에 연결하는 대신, 특수 DB 인스턴스 그룹을 여러개 사용할 수 있습니다. 이 경우에 각 그룹에 자체 사용자 지정 엔드포인트를 만들어 로드밸런싱을 구현할 수 있습니다. 특히나 엔드포인트의 이름을 지정할 수 있어 관리면에서도 효율적으로 사용할 수 있는 이점이 있습니다.
오늘은 AWS RDS 가 사용하는 엔드포인트에 대해서 알아봤습니다.
경우에 따라 적절하게 엔드포인트를 바꾸어 사용하면 효율적인 운영에 도움이 될것이라 생각이 듭니다 !!
그럼 오늘은 여기까지 하고 , 다음시간에 기회가 된다면 사용자 지정 엔드포인트를 통한 실습을 들고 올게요 !
그럼 베빠 - !
'CSP (Cloud Service Provider) > AWS' 카테고리의 다른 글
[AWS] ASG 축소 보호 정책(2) (Protected from Scale-in) (0) | 2023.11.06 |
---|---|
[AWS] ASG 축소 보호 정책(1) (Protected from Scale-in) (0) | 2023.11.04 |
[AWS] 실시간 데이터 파이프라인 구축(4) (0) | 2023.11.01 |
EC2 인스턴스 키 페어 분실 시 해결방법 (0) | 2023.10.31 |
[AWS] CloudFormation (0) | 2023.10.30 |
댓글