발전하는 나를 기록하기 위해

⭐️ aws 자격증 준비 [ssa], [developer] #4 본문

개발/Infra

⭐️ aws 자격증 준비 [ssa], [developer] #4

발폼도래 2024. 4. 7. 11:26
728x90
RDS (Relational Database Service)
    Read replicas vs Multi AZ 비교해서 설명
        read replicas : 비동기 복사. eventually consistent(복제된 DB에 즉각 반영되지 않고 지연이 발생 할 수 있다.) 
            ex) 통계 어플리케이션에서 사용하기 위해서 read replica 만들어서 사용
                복제본에 select만 하기 때문에 기존 어플리케이션에 영향을 끼치지 않음
            network cost
                same region / diff AZ => Free
                diff region => paied $$$
            Q. 최대 read replicas 개수
            A. 15개
        multi AZ(Disaster Recovery) : 동기 복사. 하나의 DNS를 가지고 failover to standby
            순서 : 스냅샷 -> new AZ(스냅샷 기반) -> standby DB생성 완료
            ex) Q. read replica -> multi AZ?
                A. Yes

        (GPT 물어봐서 답변)
        Read Replica:
            용도: 주로 읽기 부하를 분산시키고 성능을 향상시키기 위해 사용됩니다. 읽기 전용 애플리케이션에 의해 사용됩니다.
            대상: 주 복제본에서 복제된 데이터를 가집니다. 주 복제본의 변경 사항은 Read Replica로 복제됩니다.
            일관성: Read Replica는 주 복제본에서 일정 지연 시간 동안 업데이트 사항을 반영하므로 데이터 일관성이 지연될 수 있습니다.

        Multi-AZ 배포: 
            용도: 주로 데이터베이스의 고가용성을 확보하고 장애 복구를 위해 사용됩니다. 주 복제본과 백업 복제본(Standby Replica)을 사용하여 장애 시에 자동 장애 복구가 가능합니다.
            대상: 주 복제본과 백업 복제본 간의 데이터 동기화를 제공합니다. 백업 복제본은 주 복제본과 동일한 데이터를 가지며 데이터 동기화가 실시간으로 이루어집니다.
            일관성: 동기화가 실시간으로 이루어지므로 데이터 일관성이 더 높습니다. 장애 발생 시 자동으로 백업 복제본으로 전환됩니다.
    
    Aurora
        RDS중 하나로, MySQL PostgreSQL과 호환되는 엔진
        writer endpoint : pointing to the master
        reader endpoint : connection load balancing
        클러스터에 read replicas 최대값 :  15
        
    RDS Proxy : RDS 데이터베이스와 애플리케이션 간의 중간 계층으로 작동
        연결 관리: 애플리케이션과 RDS 데이터베이스 간의 연결 풀을 관리. 오버헤드를 줄일 수 있으며, 연결 유지와 관리 수월
                public으로 접근 불가. 무조건 VPC를 통해서 접근가능.
        성능 향상: 읽기 작업을 분산하여 다수의 RDS 데이터베이스 리드 레플리카(Read Replica)로 작업을 분산. 읽기 작업의 처리량이 증가하고 응답 시간 개선
        보안: 데이터베이스에 연결하는 모든 애플리케이션 요청을 가로채고 데이터베이스 인증 및 권한 검사를 수행. 더 강력한 보안을 제공.
             IAM을 사용해야만 연결가(자격증명 -> aws secrets manager 서비스 이용)
        확장성: 읽기 작업을 처리하기 위해 여러 리드 레플리카로 연결을 분산하므로 애플리케이션의 확장성을 향상. 높은 부하 아래에서도 안정적으로 실행
        페일오버 관리: 데이터베이스 장애 시에 대비하여 자동으로 페일오버를 관리. 데이터베이스 인스턴스가 장애가 발생하면 RDS Proxy는 자동으로 대체 데이터베이스 인스턴스로 전환하여 가용성을 유지
        ++Lambda function에서도 등장함

    Q. IAM 데이터베이스 인증을 지원하지 않는 RDS?
    A. Oracle
    해설 : IAM 데이터베이스 인증을 사용하여 DB 인스턴스에 인증할 수 있다. 
          MariaDB, MySQL, PostgreSQL과 함께 작동

    Q. 암호화되지 않은 RDS DB 인스턴스가 있고 읽기 전용 복제본을 생성하려고 합니다. RDS 읽기 전용 복제본을 암호화하도록 구성할 수 있습니까?
    A. 아니오 
    해설 : RDS 읽기 전용 복제본은 원본 데이터베이스의 암호화 상태를 상속받음.

ElastiCache (Redis or Memcache)
    in-memory db
    캐시 사용설계 
        DB cache
        User session
    전략
        Lazy Loading = Cache-Aside = Lazy Population
        Write Through : 바로 캐시에 쓰기, 읽을 때 바로 캐시에서 가져온다.

    redis : 백업, 고가용성, read replica
        캐시제거 : 캐시에서 공간 확보를 위해 오래된 데이터를 삭제하는 것
            LRU(Least Recently Used)
            LFU(Least Frequently Used)
        캐시무효화 : 데이터의 업데이트 또는 변경을 반영하여 더 이상 유효하지 않은 데이터를 삭제하고 업데이트된 데이터로 교체
    memcache : 샤딩을 통한 순수 캐시. 데이터 손실 감당해야됨

    Q. 클러스터 모드가 비활성화된 ElastiCache Redis 클러스터에 추가할 수 있는 읽기 전용 복제본의 최대 수는 몇 개일까요?
    A. 최대 수는 5개.

MemoryDB for Redis
    redis와 MemoryDB 차이점
        MemoryDb는 redis와 호환되는 데이터베이스. 그래서 엄청 빠름
        인메모리 데이터 및 내구성 좋음, Multi-AZ ⭐️트랜잭션 로그
        사용사례 : 웹,모바일 앱 / 온라인게임 / 미디어 스트리밍

    ⭐️ 트랜잭션 로그(Transaction Log):
        데이터베이스에 대한 모든 변경 사항을 기록하는 로그. 이 로그는 데이터의 변화를 추적하고 데이터를 복구하는 데 사용됨. 
        트랜잭션 로그는 주로 데이터베이스 복구, 롤백, 미디어 복구 등의 작업에 필수적이다.

Route53 (53은 전통적인 DNS 포트였다.)
    DNS : 사람 친근한 호스트 주소로 바꾼것. (172.1.17.36 -> www.google.com)
        계층형 구조를 가짐.
    용어설명
        Domain registrar : Route53, GoDaddy, 가비아 ...
        DNS records : A, AAAA, CNAME, NS, ...
        Zone File : contains DNS records
        Name Server : resolves DNS queries
        Top Level Domain : .com, .org, .gov, ...
        Second Level Domain : amazon.com, google.com, ...
        FQDN : Full Qualified Domain Name 완전한 도메인네임
    
    고가용성, 확장성, 관리되고, 권한있는(Authoritative) DNS
    
    Records
        도메인이 라우팅되는 방법
        Domain/subdomain Name : example.com
        record type : A or AAAA
        value : 123.456.789.123
        routing policy : route53이 쿼리에 응답하는 방식
        TTL : DNS resolver에서 cache가 생성되는 시간
            DNS server한테서 받은 ip 주소를 캐싱해서 TTL 기간동안 바로 캐시된 ip주소 사용
        시험에 나오는 record type
            must know : A / AAAA / CNAME / NS
            advanced : CAA / DS / MX / NAPTR / PTR / SOA / TXT / SPF / SRV

    RecordTypes : DNS에서 사용되는 다른 도메인 이름과 IP 주소를 연결하는 방법을 정의
        A : 호스트이름을 IPv4에 매핑
        AAAA : 호스트이름을 IPv6에 매핑
        CNAME : 호스트이름을 다른 호스트이름과 매핑
            타겟은 도메인네임인데 반드시 A나 AAAA record를 가진다.
            상위 노드에 대한 CNAMES를 생성할 수 없다. -> 주로 서브도메인을 부모도메인으로 연결할 때 사용한다.
            ex) example.com (X) / www.example.com (O)
        NS : 도메인을 관리하는 DNS 서버의 이름을 정의, Name Server for the Hosted Zone
            Host Zone
                public
                private

        CNAME vs Alias
            CNAME 레코드는 도메인 이름을 다른 도메인 이름에 매핑하는 데 사용됩니다. 즉, CNAME은 도메인 이름의 별칭(alias)을 만드는 데 사용
            Alias 레코드는 Amazon Route 53에서 제공하는 고유한 개념으로, 도메인 이름을 AWS 리소스 (예: ELB, CloudFront, S3 버킷, API Gateway 등)에 직접 연결하는 데 사용
            Q. root 도메인을 alb에 연결하려고 할때 CNAME으로 한다?
            A. apex에러남, A type Alias으로 alb 연결해야 된다.
    
    Routing policies
        simple
            일반적으로 사용하는 것(도메인요청하면 a타입 value return)
            같은 주소에 여러 value가능 -> 선택은 클라이언트가 함
            별칭이 가능하면 하나의 리소스만 지정가능
            헬스체크와 무관
        weight
            가중치별로 트래픽 조절
            사용케이스 : 지역별 로드밸런싱, 새로운 버전 테스트
        failover
            primary, secondary 레코드 정함
            health check 결과 가지고 정상인쪽으로 트래픽 전달
        latency-based
            가장 가까운 자원(resource)으로 redirect
            A type record의 value를 ip로 설정하고 ip에 할당할 region을 설정해준다. (ip와 지역을 묶어서 관리하겠다.)
            사용자ip와 가까운 거리기준(regions)을 기본으로 한다.
            ⭐️ 여기서 중요한건 region와 연결한다는 것.(e.g. ap-northeast-2, ...)
            헬스체크, failover가능
        geolocation
            latency-based랑 다르다
            user location과 관계있음
            ⭐️ 여기서 중요한건 location과 연결한다는 것.(e.g. 아시아, 유럽, 대한민국, 독일, ...)
            위치 맞는게 없으면 default값 있어야한다.
            언어별 website localization
            e.g. 한국에서 한글로, 프랑스는 불어, 지정한 곳아니면 default 영어
        multi-value answer
            DNS 결과 IP값이 여러개.
            클라이언트 입장에서 선택
        geoproximity
            bias값 줘서 위치 달라도 bias값 높은 곳으로 트래픽 전달
            -> 한 리전에서 다른 리전으로 트래픽 보낼 때 유용
        IP-based Routing
            client's IP 주소가지고 라우팅
            CIDR 블럭 가지고 location 판별, 라우팅

    **시험 Third party에서 도메인 구매하고 route53 공급자로 사용할 때, route53에 퍼블릭 호스팅영역을 생성 및 타사 레지스트라에 route53의 ns(name server)값을 업데이트해야된다.

VPC (virtual private cloud)
    vpc : 개인적인 네트워크 (regional resource 지역종속적)
    subnet : vpc안에 네트워크 영역 (AZ resource 가용영역에서 정의)
        private : 인터넷 접근 X
        public : 인터넷 접근 O
    route table : 인터넷과 서브넷 사이를 접근할 수 있는 방법 정의