Work/개발 노트

AWS 자격증 시험 - 클라우드 종사자(Cloud Practitioner) 후기

★용호★ 2019. 6. 17. 00:08

후기

  • AWS 자격증 시험 중에서 가장 저렴하고 기본이라고 생각해서 쉽게 봤는데 고민하게 되는 문제들이 많았다.

  • AWS 자격증 강의가 도움이 많이 되었다.

  • 민첩성, 탄력성, 고가용성에 기반한 문제들이 많았다.

  • 공동 책임 원칙, 보안에 대한 문제들도 많았다.

  • 비용 관련 문제도 꽤 있었는데 Support 플랜 비교표를 본 것이 도움이 많이 되었다.

  • 하이브리드 클라우드에 대한 문제도 있었다.

    • 예를 들면 하이브리드 클라우드 환경에서 사용할 수 있는 AWS 서비스는?

  • 문제들이 대부분 짧았고, 서비스 선택에 대한 문제가 많아서 90분의 시험 시간은 넉넉했다.

 

 

 

아래 내용은 자격증 강의를 들으며 정리한 것들이다.

AWS 클라우드 소개

  • 클라우드 컴퓨팅이란?

    • 인터넷을 통해 IT 리소스와 애플리케이션을 온디맨드로 제공하는 서비스

    • 요금은 사용한 만큼만 청구

  • 기업들이 클라우드로 마이그레이션하는 주된 이유는 향상된 민첩성

민첩성 (Agility)

  • 민첩성에는 다음 세가지 요소가 영향을 미침

    • 속도 (Speed)

    • 실험 (Experimentation)

    • 혁신의 문화 (Culture of innovation)

  • AWS 시설이 전세계에 존재

    • IT 리소스를 수분만에 사용할 수 있으므로 조직의 민첩성 향상

    • 리소스의 빠른 사용은 빠른 테스트를 할 수 있는 환경을 제공함으로써 견고한 서비스를 제공할 수 있게됨

  • CloudFormation을 사용하면 일관적이고 템플릿화된 개발 환경을 구축할 수 있고 지속적으로 향상 시킬 수 있음

AWS 인프라

  • 리전 및 가용영역을 중심으로 구축

    • 리전 : 전세계에 산재한 복수의 가용영역을 포함하는 물리적 장소

    • 가용영역 : 하나 이상의 개별 데이터 센터로 구성

      • 각 데이터센터는 별도의 시설에 자리하며 예비 전력, 네트워킹 및 연결 수단을 갖춤

      • 애플리케이션 및 데이터베이스를 운영할 수 있는 기능을 제공

      • 높은 수준의 가용성(High availability), 내결함성(Fault tolerance), 확장성(Scalability) 제공

탄력성 (Elasticity)

  • 탄력성은 간편하게 컴퓨팅 리소스의 규모를 확장 또는 축소할 수 있다는 것을 의미

  • 사용한 실제 리소스에 대해서만 지불

  • 활용

    • 새로운 애플리케이션을 신속하게 배포

    • 워크로드가 커지면 즉시 확장

    • 필요하지 않는 리소스는 축소하여 인프라 비용 감축

보안

  • 클라우드 컴퓨팅 이전에는 인프라 보안 감사가 정기적으로 실시되는 수동 방식

  • AWS 클라우드는 고객의 IT 리소스에 대한 구성 변경 사항을 지속적으로 모니터링 할 수 있는 거버넌스 기능 제공

  • AWS 데이터 센터는 최첨단 전자식 감시 시스템과 멀티 팩터 액세스 제어 시스템을 사용

  • 데이터 센터 내에는 숙련된 보안 경비가 연중무휴 대기하며 액세스에 대한 권한은 최소한의 특권을 기준으로 엄격하게 부여

  • 환경 시스템은 환경파괴가 운영에 미치는 영향을 최소화하도록 설계되어 있음

  • 여러 리전 및 가용영역을 사용하면 자연재해나 시스템 장애등 대부분의 장애에서도 시스템을 유지할 수 있음

  • AWS 자산은 프로그래밍 가능한 리소스이기 때문에 인프라 설계 시 고객의 보안 정책을 수립하여 포함시킬 수 있음

안정성

  • AWS에서의 안정성은 시스템이 인프라 또는 서비스 장애를 복구하는 능력으로 정의

  • 수요에 따라 컴퓨팅 리소스를 탄력적으로 확보하고 중단 사태를 완화할 수 있는 능력에 초점을 맞춤

  • AWS를 사용하면 서버나 소프트웨어 라이선스 구매 또는 시설 임대를 비롯한 고가의 인프라 구축에 소중한 리소스를 쏟아부을 필요가 없음

    • 필요한 만큼만 서비스 요금을 지불함으로써 혁신 및 발명에 집중할 수 있으므로 조달 복잡성을 줄이고, 비즈니스에 완전한 탄력성을 부여할 수 있음

AWS 글로벌 인프라

  • 구분

    • 리전

    • 가용영역

    • 엣지 로케이션

리전

  • 리전은 2개 이상의 가용영역을 호스팅하는 지리 영역을 의미

  • 선택 시 어떤 영역이 비용을 절감하고 규제 요구사항들을 준수하면서 지연 시간을 최적으로 조정하는데 도움이 되는지 고려

    • 애플리케이션을 여러 리전에 쉽게 배포 가능

  • 리전은 서로 완전히 독립된 엔터티(entity)이며, 한 리전의 리소스는 다른 리전으로 자동 복제되지 않음

가용영역

  • 가용영역은 특정 리전 내에 존재하는 데이터 센터들의 모음을 의미

  • 가용영역들은 서로 격리되어 있으며 빠르고 지연시간이 짧은 링크에 의해 연결됨

  • 각 가용 영역은 물리적으로 구분된 독립적 인프라에 속함

  • 물리적, 논리적으로 분리됨

  • 각 가용영역은 별도의 무정전 전원공급장치(UPS), 현장 예비 발전기, 냉각장비, 네트워킹 및 연결수단을 자체적으로 갖추고 있음

  • 가용영역들은 모두 독립적인 전력 회사의 서로 다른 전력망을 통해 전력이 공급되며 여러 티어1 전송 서비스 공급자를 통해 연결됨

  • 서로 격리되어 있기 때문에 한 AZ의 장애로부터 다른 AZ를 보호할 수 있음

  • 다중 AZ에 걸쳐 인프라를 프로비저닝하는 것이 좋음

엣지 로케이션

  • 엣지 로케이션은 Amazon CloudFront라는 CDN(콘텐츠 전송 네트워크)을 호스팅

  • ClondFront는 콘텐츠를 고객에게 전송하는데 사용

  • 콘텐츠에 대한 요청이 가장 가까운 엣지 로케이션으로 자동 라우팅되므로 콘텐츠가 더욱 빨리 최종 사용자에게 전송됨

  • 여러 엣지 로케이션과 리전으로 구성된 글로벌 네트워크를 활용하면 보다 빠른 콘텐츠 전송에 액세스 할 수 있음

  • 엣지 로케이션은 대체로 인구 밀도가 높은 지역에 위치함

    • 리전과 가용영역도 마찬가지임

Amazon Virtual Private Cloud(VPC)

  • 사용자의 네트워킹 요구사항들을 충족할 네트워킹 AWS 서비스

  • 온프레미스 네트워크와 동일한 여러 가지 개념 및 구성을 사용하는 AWS 클라우드 내 프라이빗 네트워크를 생성할 수 있음

  • 제어, 보안 및 유용성을 저해하지 않고도 네트워크 설정의 복잡성이 상당 부분 추상화되어있음

  • 고객은 IP 주소 공간, 서브넷, 라우팅 테이블과 같은 일반 네트워킹 구성 항목들을 정의할 수 있음

  • 인터넷에 노출시킬 리소스들과 격리시켜야할 리소스들을 제어할 수 있음

  • 네트워크의 보안 제어를 계층화하기 위한 방편으로 배포할 수 있음

    • 서브넷 격리, 엑세스 제어 목록 정의, 라우팅 규칙 사용자 지정을 포함

  • 수신 트래픽과 송신 트래픽을 모두 허용 및 거부하도록 완벽하게 제어 가능

  • VPC에 배포되는 수많은 서비스들은 모두 클라우드 네트워크에 구축된 보안을 상속하고 활용하게됨

AWS 서비스들과의 통합

  • EC2 인스턴스는 VPC에 배포됨

  • RDS 데이터베이스 인스턴스도 VPC에 배포됨

    • 데이터베이스는 온프레미스 네트워크와 똑같은 네트워크 구조를 통해 보호됨

VPC의 기능

  • VPC는 리전 내에 있으며 여러 가용영역에 걸쳐 확장할 수 있음

  • 각 AWS 계정은 다중 VPC를 생성하여 서비스 환경을 분리할 수 있음

  • VPC는 여러 서브넷에 의해 분할되는 하나의 IP 주소 공간을 정의

    • 서브넷이 가용영역 내에 배포되기 때문에 VPC는 가용영역을 확장함

  • 하나의 VPC에서 많은 서브넷을 생성할 수 있지만 네트워크 토폴로지의 복잡성을 제한하기 위해 서브넷 수는 적게 유지하는 것을 권장하지만 전적으로 사용자에게 달려 있음

  • 서브넷과 인터넷 사이의 트래픽을 제어하기 위해 서브넷에 대한 라우팅 테이블을 구성할 수 있음

  • 기본적으로 VPC 내 모든 서브넷들은 서로 통신할 수 있음

  • 서브넷은 일반적으로 퍼블릭 또는 프라이빗으로 분류됨

    • 퍼블릭으로 설정하려면 인터넷 게이트웨이를 VPC에 연결하고 퍼블릭 서브넷의 라우팅 테이블을 업데이트하여 외부로 가는 트래픽을 인터넷 게이트웨이로 전송해야함

    • EC2 인스턴스 역시 인터넷 게이트웨이로 라우팅하려면 퍼블릭 IP가 필요

  • IP 주소 할당에는 CIDR(Classless Inter-Domain Routing) 형식을 사용하는데 이는 VPC에서 사용할 수 있는 IP 주소의 수가 65,000개가 넘는 다는 것을 의미

AWS Security Groups

  • 보안 그룹은 사용자의 가상 서버를 위한 내장 방화벽과 같이 작동

  • 인스턴스에 대한 접근성을 완벽하게 제어할 수 있음

  • 가장 기초적인 수준에서 인스턴스에 대한 트래픽을 필터링하는 여러 방법 중 하나에 불과함

    • 특정 트래픽을 허용 또는 거부하도록 설정할 수 있음

컴퓨팅 서비스

  • AWS를 사용하면 컴퓨팅 요구를 워크로드에 맞게 조정할 수 있음

  • 확장성은 컴퓨팅 서비스에 내장되어 있기 때문에 수요가 증가하면 쉽게 확장 가능

  • 수요가 감소할 경우에도 규모를 축소하여 비용과 리소스를 절감할 수 있음

  • EC2 서비스는 단순한 웹 서버부터 대규모 머신러닝 클러스터에 이르기까지 모든 유형에 적합한 다양한 가상 서버 인스턴스 유형을 제공함

    • 사용자는 특정 하드웨어 구성에 얽매이지 않고 인스턴스 유형을 쉽게 변경할 수 있음

  • 온프레미스 환경과 달리 온디멘드 가격을 적용하여 필요에 따라 리소스를 비용 효율적으로 확장 및 축소할 수 있음

  • AWS Lambda를 사용하면 서버를 프로비저닝하거나 관리할 필요 없이 코드를 실행할 수 있음

    • 사용한 컴퓨팅 시간에 대한 비용만 지불

  • 간단한 웹사이트 또는 전자 상거래 애플리케이션을 실행해야 하는 경우 Amazon Lightsail 권장

    • 하나의 가상 프라이빗 서버를 단 몇분만에 시작할 수 있음

    • 간단한 웹 서버 및 애플리케이션 서버를 쉽게 관리할 수 있음

    • 저렴하면서 예측 가능한 가격으로 프로젝트에 필요한 모든 것을 포함함

      • 가상머신, SSD 기반 스토리지, 데이터 전송, DNS 관리, 정적 IP 주소 등

  • 컨테이너를 사용하는 경우 Amazon ECS 권장

    • Docker 컨테이너를 지원하는 확장성과 성능이 뛰어난 컨테이너 관리 서비스

    • 자체적으로 클러스터 관리 인프라를 설치하기 때문에 운영 및 확장을 신경쓸 필요가 없음

Amazon Elastic Compute Cloud(EC2)

  • EC2의 Elastic이라는 단어는 하나의 애플리케이션에 대한 현재의 수요에 따라 필요한 서버의 수량으로 자동 증감할 수 있다는 사실을 의미

  • AWS에서는 애플리케이션이 구동되는 서버를 EC2 인스턴스라고 부름

  • 인스턴스는 종량 과금제 방식으로 요금이 부과됨

    • 실행 중인 시간에 한해서만 요금 지불

  • 다양한 하드웨어 및 소프트웨어, 인스턴스를 호스팅할 위치 등을 선택할 수 있음

AWS Lambda

  • 이벤트 중심의 서버리스 컴퓨팅 서비스

  • 서버를 프로비저닝하거나 관리할 필요 없이 코드를 실행할 수 있는 컴퓨팅 서비스

  • 필요할 때에만 코드를 실행하며 초당 수천 건의 요청으로 자동 확장됨

  • 사용한 컴퓨팅 시간에 대해서만 요금 지불

  • 가변적이고 단속적인 워크로드에 적합

  • 거의 모든 애플리케이션 또는 백엔드 서비스에서 별도의 관리 없이 코드를 실행할 수 있음

  • Lambda는 고가용성 컴퓨팅 인프라에서 코드를 실행하고, 서버 및 운영체제 유지 관리, 용량 프로비저닝, 오토스케일링, 코드 모니터링, 로깅 등은 AWS가 관리함

  • Node.js, Java, C#, Python 등 다양한 언어를 지원

  • Lambda는 서버리스 및 마이크로서비스 애플리케이션을 지원하기 위한 서비스

  • 모놀리식 솔루션의 생성을 방지하기 위해 AWS Lambda는 다음 제한을 두고 있음

    • 디스크 공간은 512MB로 제한

    • 메모리는 128 ~ 1536MB까지 할당 가능

    • 최대 5분까지만 실행

    • 배포 패키지 크기와 최대 File Descriptor 수에 의해 제한됨

    • Request, Reponse의 Body Payload는 6MB를 초과할 수 없음

    • 이벤트 Request Body는 128KB로 제한됨

    • 동시 실행 횟수는 Soft LImit에 속하고, 요청 시 증가할 수 있음

사용 예

  • 백업 자동화

  • S3에 업로드된 객체의 처리

  • 이벤트 중심의 로그 분석

  • 이벤트 중심의 변환

  • 사물 인터넷(IoT)

  • 서버리스 웹 사이트 운영

  • S3 버킷 또는 DynamoDB 테이블의 변경 이벤트에 대한 응답으로 Lambda 코드를 실행할 수 있음

  • Amazon API Gateway를 사용하여 HTTP 요청에 응답하여 Lambda 코드를 실행할 수 있음

  • AWS CodePipeline, CodeDeploy를 사용하면 함수를 자동으로 배포할 수 있음

  • Kinesis에서 스트리밍 되는 데이터를 Lambda를 사용하여 추출, 변환, 로드(ETL) 파이프라인을 구축할 수 있음

  • 많은 고객이 Lambda, Amazon SNS, API Gateway를 이용한 마이크로 서비스 백엔드를 사용하여 웹사이트와 모바일 애플리케이션을 실행

AWS Elastic Beanstalk

  • PaaS 서비스

    • 사용 중인 코드를 필요에 따라 시스템에 간단히 배치할 수 있도록 전체 인프라와 전체 플랫폼을 생성하여 제공

  • PaaS 서비스를 사용하면 사용자의 애플리케이션을 신속하게 배포할 수 있음

  • 관리상의 복잡성을 줄여줌

  • 사용자가 전체 시스템을 제어할 수 있음

    • 인스턴스 유형 선택

    • 데이터베이스 선택

    • 오토스케일링 설정

    • 애플리케이션 업데이트

    • 로그 파일 액세스

    • 로드밸런싱 설정

  • 다양한 언어로 제작된 애플리케이션 수용

  • 애플리케이션을 위한 환경을 생성

    • 웹 서버 환경

    • 사용자의 필요한 설정을 입력할 수 있음

  • 어플리케이션 실행에 필요한 파일을 S3에 업로드하고 Beanstalk에서 가져다 사용할 수 있음

Application Load Balancer

  • Classic Load Balancer가 제공하는 기능을 대부분 제공

  • HTTP/2 및 WebSockets 지원이 추가됨

  • 지표 및 액세스 로그가 개선되었으며 상태 확인 대상이 확대됨

    • Request 추적을 사용하여 클라이언트에서 대상까지 요청을 추적할 수 있음

  • 경로 또는 호스트 기반 라우팅을 사용하는 요청에 대한 추가 라우팅 매커니즘 제공

    • 경로 라우팅으로 Request 내 URL을 기반으로 대상 그룹으로 라우팅하는 규칙 생성 가능

    • 호스트 기반 라우팅으로 동일한 로드밸런서가 여러 도메인을 지원할 수 있음

      • 요청된 도메인을 기반으로 Request를 해당 대상 그룹으로 라우팅

  • ALB에서는 리스너라는 개념을 사용하는데 인스턴스 대신 대상 그룹이 등록됨

  • ECS 예약 컨테이너 사용 시 동적 호스트 포트를 설정할 수 있음

Amazon Elastic Load Balancer

  • 유일하게 노출되는 액세스 포인트를 통해 웹 서버 액세스를 보호하거나 애플리케이션 환경을 결합, 해제하거나 퍼블릭 및 내부 로드밸런서를 함께 사용하거나, 트래픽을 여러 가용영역으로 분산하여 고가용성 및 내결함성을 제공하거나 최소한의 오버헤드로 탄력성 및 확장성을 제공할 수 있음

  • TCP 요청을 분산하는 경우 단순 라운드 로빈 사용

  • HTTP, HTTPS 요청을 처리하는 경우 백엔드 인스턴스에 대해 최소 대기 요청 사용

  • 여러 가용 영역으로 트래픽을 분산하는 것을 도움

  • 애플리케이션에 쿠키를 사용하려는 경우 ELB는 고정 세션 기능을 제공함

    • 해당 세션이 유지되는 동안 사용자 세션을 바인딩할 수 있고, 이는 기간 기반 쿠키 또는 애플리케이션 제어 고정 세션을 사용할지 여부에 따라 결정 됨

  • 백엔드 EC2 인스턴스의 Health Check를 위해 간단한 연결 시도 또는 Ping 사용

  • Classic Load Balancer에서는 여러 유형의 로드밸런서를 생성 가능

    • 인터넷 경계 또는 퍼블릭 로드 밸런서 : 교차 영역에 밸런싱이 가능하고 로드밸런서에 유일하게 노출되는 엔드포인트를 통해 백엔드 인스턴스로 요청을 라우팅할 수 있도록 DNS 이름 제공

      • 노드는 퍼블릭 IP 주소를 가지고, DNS 이름은 노드의 퍼블릭 IP 주소로 공개적으로 확인이 가능

      • 인터넷 경계 로드 밸런서는 인터넷을 통해 클라이언트의 요청을 라우팅할 수 있음

    • 내부 로드 밸런서 : 노드는 오직 프라이빗 IP 주소만 가짐

      • 내부 로드 밸런서의 DNS 이름은 노드의 프라이빗 IP 주소로 공개적으로 확인이 가능

      • 내부 로드 밸런서는 로드 밸런서를 위한 VPC에 액세스하여 클라이언트의 요청만 라우팅할 수 있음

Auto Scaling

  • 애플리케이션 로드를 처리할 수 있는 적절한 수의 EC2 인스턴스를 유지하도록 함

  • EC2 인스턴스에서 애플리케이션을 실행할 때 Amazon CloudWatch를 사용하여 워크로드의 성능을 모니터링

  • CloudWatch 자체로는 EC2 인스턴스를 추가하거나 제거할 수 없고, Auto Scaling을 사용

  • Auto Scaling을 위해 다음 요소들이 필요

    • 시작 구성 : Auto Scaling이 시작할 인스턴스를 정의

      • 인스턴스 유형, 보안그룹, 역할 등

    • Auto Scaling 그룹 : 배포가 이루어지는 위치와 배포에 대한 제한을 정의

      • VPC, 로드밸런서 등

    • Auto Scaling 정책 : EC2 인스턴스를 시작 또는 종료할지를 지정

      • 시간을 예약하거나 임계값을 설정

Amazon Elastic Block Store(EBS)

  • EC2 인스턴스의 저장 단위로 사용

  • 인스턴스에 디스크 공간이 필요한 경우 언제나 EBS 볼륨 사용을 고려

  • 하드 디스크나 SSD 일 수 있음

  • 사용한 만큼만 지불

  • EBS 볼륨은 내구성과 가용성을 위주로 설계됨

  • 볼륨에 있는 데이터가 가용영역에서 실행되는 복수의 서버에 걸쳐 자동 복제됨

  • 볼륨 생성 시 스토리지 유형을 선택 할 수 있음

    • 하드 디스크 또는 SSD

  • 볼륨의 시점 별 스냅샷을 생성하여 한층 더 높은 수준의 데이터 내구성을 구현할 수 있음

  • 스냅샷을 공유하거나 다른 AWS 리전에 복사할 수 있음

    • 이로 인해 재해복구(DR) 성능이 높아짐

  • 추가 비용 없이 EBS 볼륨을 암호화 할 수 있음

    • EC2 인스턴스와 AWS 데이터 센터 내부의 EBS 볼륨 간에 이동하는 데이터가 암호화 되어 전송됨

  • EBS 볼륨은 용량 증가와 여러 유형간의 변환이 가능

    • 인스턴스 중단 없이 바로 운영 규모를 조정할 수 있음

Amazon Simple Storage Service(S3)

  • 데이터 저장 및 검색을 위한 간단한 API를 제공해주는 완전 관리형 스토리지 서비스

  • S3에 저장하는 데이터는 임의의 특정 서버와 연계되어 있지 않기 때문에 고객이 직접 인프라를 관리할 필요가 없음

  • 원하는 만큼 많은 객체를 S3에 저장할 수 있음

  • S3는 수조개의 객체를 저장하며 정기적으로 최대 초당 수백만건의 요청을 처리

  • 객체는 이미지, 동영상, 서버 로그 등 거의 모든 유형의 데이터 파일을 수용

    • 수 테라바이트 크기의 객체까지 지원하기 때문에 데이터베이스 스냅샷도 객체처럼 저장 가능

  • 인터넷(HTTP, HTTPS)를 통한 데이터 액세스 지연 시간이 짧기 때문에 언제 어디서든 데이터를 검색할 수 있음

  • 가상 사설 클라우드 엔드포인트를 통해 S3에 비공개적으로 액세스할 수 있음

  • ID, 액세스 관리 정책, 버킷 정책, 객체별 엑세스 제어 목록을 사용하여 데이터 엑세스를 허용하는 사용자를 정밀하게 관리할 수 있음

  • 기본적으로 데이터는 Public 공개되지 않음

  • 데이터를 전송 중에 암호화하고 객체에 대한 서버측 암호화를 활성화 할 수도 있음

  • 버킷을 S3에 생성하면 특정 AWS 리전과 연계됨

  • 버킷에 데이터를 저장할 때마다 선택한 리전 내에 있는 복수의 AWS 시설에 중복 저장됨

  • S3 서비스는 두 AWS 시설에 있는 데이터가 동시에 훼손되는 경우에도 데이터가 안전하게 저장되도록 설계되어 있음

  • S3 서비스는 확장/축소가 가능하기 때문에 대용량의 볼륨 요청도 처리할 수 있음

  • 스토리지나 처리량을 직접 프로비저닝할 필요 없이 사용한 만큼만 지불

  • 관리 콘솔, AWS CLI, SDK를 통해 S3에 액세스 가능

  • REST 엔드포인트를 통해 버킷에서 직접 데이터에 엑세스 가능

    • HTTP, HTTPS 지원

  • URL 기반 액세스를 지원하기 위해서는 S3 버킷 이름이 전 세계적으로 고유해야 하고, DNS를 준수해야 함

  • 객체 키가 URL에 대해 안전한 문자를 사용해야함

  • 사실상 데이터를 무제한 저장하고 어디서든 데이터에 액세스할 수 있는 유연성 덕분에 다양한 시나리오에 적합

  • S3는 스토리지와 성능이 조정 가능하기 때문에 다양한 빅데이터 도구를 사용하여 분석하고자하는 데이터의 스테이징 또는 장기 저장에 적합

    • S3에 있는 데이터 스테이지를 Redshift에 로드하거나 EMR로 처리

    • Amazon Athena로 곧바로 쿼리

    • Snowball로 Import/Export 디바이스를 사용하여 대용량 데이터를 S3로 가져오거나 내보내기

Amazon Glaicer

  • AWS의 저비용 데이터 보관 솔루션

  • 자주 액세스되지는 않지만 업무상 혹은 법적 이유로 반드시 보존해야하는 콜드 데이터 보관용으로 설계

  • 최대한 비용 효율적이고 효과적으로 설계할 수 있도록 돕는 것이 목표

  • 데이터를 복수의 시설에, 각 시설 안에서도 여러 디바이스에 다중 저장하기 때문에 내구성이 뛰어남

  • Glaicer 용어 정리

    • 아카이브(Archive) : 사진, 동영상, 파일, 문서 등과 같은 임의의 객체

      • Glacier의 기본 스토리지 단위

      • 각 아카이브는 고유 ID를 가짐

    • 저장소(Vault) : 아카이브를 저장하는 컨테이너

      • 생성 시 저장소 이름과 리전을 지정

      • 각 저장소에 대해 개별 저장소 액세스 정책을 수립

      • 잠금 정책을 사용하여 저장소 변경 방지도 가능

  • S3에 보관된 파일을 더이상 사용하지 않게 되었을 때 Glaicer로 이전

    • S3 Standard Infrequent Access(SIA)로 자동 이전 되도록 설정 가능

    • 자동 이전 후 지정된 기간동안 Glaicer에서 보관하다가 삭제하도록 설정할 수 있음

  • 검색 방법

    • 대량 검색(Bulk Retrieval) : 비용이 가장 저렴하고 대개 5 ~ 12시간 정도 소요됨

    • 표준 검색 (Standard Retrieval) : 3 ~ 5시간 정도 소요

    • 신속 검색 (Expedited Retrieval) : 가장 비싸고, 1 ~5분내에 검색이 완료됨

  • S3와 마찬가지로 데이터를 무제한 저장 가능

  • S3는 짧은 지연 시간으로 빈번하게 데이터에 액세스하는 용도로 설계되었고, Glacier는 자주 액세스하지 않는 데이터를 저 비용으로 장기간 보관하는 용도로 설계됨

  • S3의 최대 항목 크기는 5TB이고, Glacier는 최대 40TB

  • S3와 Glacier간 중요한 차이는 데이터 암호화 방식

    • 두 솔루션 모두 HTTPS를 통해 데이터를 안전하게 저장하지만 Glacier의 경우 모든 데이터 아카이브가 기본적으로 암호화됨

    • S3는 애플리케이션이 서버 측 암호화를 활성화해야함

Amazon Relational Database Service(RDS)

  • 데이터베이스 관리 비용 없이 관계형 데이터베이스를 구축하고 운영할 수 있도록 함

    • 운영체제 설치 및 패치, 자동 백업, 고가용성 유지, 리소스 규모 조정, 전력 및 서버 관리, 유지 관리 수행 등을 AWS에서 담당

    • 기본 빌딩 블록은 데이터베이스 인스턴스

      • 사용자가 만든 여러 데이터베이스가 포함될 수 있음

    • 데이터베이스 인스턴스에 있는 리소스는 데이터베이스 인스턴스의 등급에 의해 결정되고, 스토리지 유형은 디스크 유형에 의해 정해짐

    • 데이터베이스 인스턴스를 생성하려면 먼저 데이터베이스 엔진을 지정해야함

      • MySQL, Aurora, PostgreSQL MSSQL, MariaDB, Oracle

  • 데이터베이스 인스턴스는 프라이빗 서브넷에 격리되어 지정된 애플리케이션 인스턴스에서만 접근 가능

  • 다중 가용영역 배포로 높은 가용성을 제공

    • RDS를 구성하면 예비 복사본을 동일한 VPC내 다른 가용영역에 자동 생성

    • RDS의 DNS 엔드포인트를 사용하기 때문에 장애가 발생하여 복제본을 사용하게 되더라도 애플리케이션의 수정은 필요 없음

  • MySQL, MariaDB, PostgreSQL, Aurora는 읽기 전용 복제본 생성을 지원

    • 읽기 전용 복제본은 마스터 데이터베이스와 다른 리전에 생성 가능

  • 처리량이 많고, 가용성이 높은 데이터베이스를 필요로하는 웹, 모바일 애플리케이션에 적합

  • 두가지 SSD 기반 스토리지 옵션 선택 가능

    • 고성능 OLTP 애플리케이션에 최적화된 스토리지

    • 비용 효율적인 범용 애플리케이션에 최적화된 스토리지

Amazon DynamoDB

  • 완전 관리형 NoSQL 데이터베이스 서비스

  • AWS는 모든 기반 데이터 인프라를 관리하고 내결함성 아키텍처의 일부로 미국 리전 내에 있는 여러 시설에 걸쳐 데이터를 다중 저장

  • 테이블에 저장할 수 있는 항목의 수는 사실상 제한이 없음

  • DynamoDB에 있는 모든 데이터는 SSD에 저장됨

  • 스토리지 규모를 조정할 수 있을 뿐만아니라 테이블에 필요한 읽기, 쓰기 처리량을 프로비저닝 할 수 있음

  • AutoScaling을 활성화하여 테이블에 대한 로드를 모니터링하다가 프로비저닝되는 처리량을 자동으로 늘리거나 줄일 수 있음

  • 스토리지 및 처리량 프로비저닝 측면에서 테이블의 규모를 조정할 수 있는 기능 덕분에 웹, 모바일, IoT 애플리케이션의 구조화 데이터에 적합

    • 지속적으로 데이터를 생성하고 초당 다수의 요청을 하는 클라이언트가 많을 경우에 규모 조정으로 일관된 성능을 유지할 수 있음

  • 지연시간에 민감한 애플리케이션에도 적합

    • 광고나 게이밍과 같이 가변적인 지연시간이 사업 목표에 영향을 줄 수 있는 경우 유용

  • 테이블 데이터는 기본키에 의해 분할 및 색인됨

  • 데이터 검색 방법

    • 기본키 사용

    • 스캔 (키가 아닌 속성에 대한 조건으로 검색)

      • 테이블 내 모든 항목을 검색하여 찾기 때문에 비효율적

      • 되도록이면 키를 사용하는 검색 방법 사용을 권장

  • DynamoDB 항목의 최대 크기는 400 킬로바이트

  • 정리하면 DynamoDB는 확장을 통해 대량의 데이터를 저장하고 많은 요청 볼륨을 지원하고 짧은 지연 시간의 쿼리 성능을 요구하는 애플리케이션용 데이터 스토어로 활용 가능한 관리형 NoSQL데이터베이스 서비스

Amazon Redshift

  • 속도가 빠른 완전관리형 데이터 웨어하우스

  • 표준 SQL 및 기존 비즈니스 인텔리전스 도구를 사용하여 모든 데이터를 간편하고 비용 효율적으로 분석할 수 있게 해줌

  • 정교한 쿼리 최적화, 고성능 로컬 디스크에 대한 열 형식 저장, 방대한 병렬 쿼리 실행을 통해 페타 바이트 규모의 구조화 데이터를 대상으로 복잡한 분석 쿼리를 실행할 수 있음

  • 대부분의 결과가 수 초 이내에 반환됨

  • 방대한 병렬 처리 아키텍처와 더불어 열 형식 스토리지 및 자동 압축 기능을 채택하여 페타바이트 규모의 데이터 세트에 대해서도 아주 빠른 쿼리 성능을 제공

  • 전통적인 데이터 웨어하우스 서비스에 비해 비용이 1/10에 불과함

  • Redshift Spectrum을 사용하면 엑사바이트 규모의 데이터에 대해 S3에서 직접 쿼리를 실행할 수도 있음

  • 확장성이 기본적으로 제공되기 때문에 콘솔에서 간편하게 클러스터를 확장하거나 축소 가능

  • 저장 및 전송 중에 데이터를 암호화하는 기능이 내장되어 있음

  • 표준 SQL을 지원하고, 고성능 JDBC 및 ODBC 커넥터를 제공

Amazon Aurora

  • 고성능 상용 데이터베이스의 속도와 가용성에 오픈 소스 데이터베이스의 간편성과 비용 효율성을 결합한 MySQL 관계형 데이터베이스 엔진

  • 가용성이 뛰어남

    • 데이터의 복사본 6개를 세곳의 가용영역에 저장

    • S3에 지속적으로 백업

    • 최대 15개의 읽기 전용 복제본 사용 가능

    • 데이터베이스 장애 발생 후에 최근 데이터베이스 체크 포인트로부터 Redo 로그를 재현할 필요가 없음. 대신 이를 읽기 작업시에 수행하기 때문에 장애 발생 후 재시작 시간이 60초 이하로 줄어듬

    • 데이터베이스 프로세스에서 버퍼 캐시를 분리하여 재시작 즉시 사용할 수 있도록 하여 캐시가 다시 채워질 때까지 액세스를 제한할 필요가 없어 중단이 방지됨

    • MySQL보다 다섯 배 뛰어난 성능 발휘

    • InnoDB 스토리지 엔진을 사용하기 때문에 MySQL 5.6과도 즉시 호환성을 갖추고 있음

  • 종량제 서비스로 실제 사용하는 서비스와 기능에 대해서만 요금 지불

  • 관리형 서비스

    • 규모 조정, 높은 가용성 확보, 백업 관리, 패치 등이 자동으로 수행됨

    • AWS Database Migration Service, AWS Schema Conversion Tool과 같은 서비스와 통합되어 데이터 세트를 Aurora로 편리하게 이전

AWS Trusted Advisor

  • AWS의 리소스 추적에 사용

    • AWS를 사용하다보면 점점 추적할 수 없을 정도로 많은 리소스를 보유하게 됨

    • 낭비되고 있는 리소스나 내결함성, 성능 또는 보안을 위해 최적화 되지 않은 리소스들을 보유하게 될 수 있음

  • Trusted Advisor는 모든 리소스를 검사하여 각 리소스가 모범 사례에 부합하는지 확인

    • 보안, 내결함성, 성능, 비용 최적화의 범주로 검사

  • CloudWatch Events와 연동하여 Lambda를 실행하게끔 해서 위반되는 리소스에 대한 조치를 자동화 할 수 있음

  • 검사 예

    • 서비스의 Limits 검사

    • 자주 사용되지 않는 Access key

    • 보안 또는 성능 향상을 위한 OS 패치

    • EC2 Config를 포함한 EC2 Windows

  • 등록된 이메일로 검사 내용을 요약해서 전송 가능

  • CSV, Excel 형식의 파일로 보고서 다운로드

  • 대시보드 형태로 검사 결과 확인