본문 바로가기

클라우드 컴퓨팅

[AWS Certified Solutions Architect] 클라우드 컴퓨팅과 AWS

[AWS Certified Solutions Architect 는 AWS의 공인 자격증인 Solutions Architect 자격증을 취득하기 위해서 공부한 내용을 정리할 것이다. 

본 정리는 "AWS Certified Solutions Architect Study Guide Associate Exam"(저자: David Clinton, Ben Piper) 책의 내용을 기반으로 한 것이다.

이 책은 2부로 구성되어 있고  AWS Core Service(1부),  2부 AWS의 Well-Archited Framework(2부)로 구성되어 있다.

 

1.  클라우드 컴퓨팅과 AWS 소개

1.1 클라우드 컴퓨팅과 가상화

클라우드 컴퓨팅과 다른 애플리케이션 및 클라이언트-서버 모델의 차이점, AWS 플랫폼의 가상-네트워크 환경, AWS 서비스 안전성, AWS 기반 리소스 액세스와 관리, AWS 배포에 관한 문서와 지원 내용에 대해서 정리한다.

 

  • 가상화: 클라우드 운영 기술의 기반으로 가상화 기술을 사용하면 단일 물리 서버의 하드웨어 자원 더 작은 단위로 나눌 수 있어 단일 물리 서버에 가상 머신(가상 서버) 여러 개를 호스팅할 수 있다.
    • 가상화의 장점:  가상머신을 단 몇 초 만에 프로비저닝해서 프로젝트에 필요한 시간만 정확하게 실행하고 언제든지 종료해서 사용하던 자원을 다른 워크로드(다른 가상머신의 작업)에 즉시 활용 가능하다.
  • 가상머신(가상 서버): 독자적으로 메모리, 스토리지, 네트워크를 지니고 있으면서 별도의 운영체제를 독자적으로 실행할 수 있는 가상 컴퓨팅 머신

1.2 클라우드 컴퓨팅 아키텍처

클라우드 제공 업체는 수십만 대의 서버 및 데이터 스토리지, 이를 연결할 수 있는 네트워크를 소유하고 거대한 데이터 센터에 설치하고 가상화 환경을 잘 구현하여 컴퓨팅 성능, 메모리, 스토리지, 네트워크 대역폭 등의 자원을 가장 효율적으로 조합한 가상서버를 제공한다.

 

클라우드 컴퓨팅 플랫폼은 컴퓨팅 자원 풀(pool)을 구축하여 온디멘드, 셀프서비스 방식으로 서비스를 제공한다.

 

  • 온디맨드: 사용량을 측정하고 사용량에 따라 비용을 청구하는 방식

1.3 클라우드 컴퓨팅 최적화

클라우드는 확장성, 탄력성을 가지며 온프레미스(Onpremise)보다 저렴하기 때문에 기업의 중요 워크로드에 널리 사용된다. 클라우드 플랫폼은 확장성, 탄력성, 비용관리의 특징을 가진다.

 

  • 확장성: 예기치 않은 수요가 발생하여도 자동으로 애플리케이션에 자원을 추가하여 효과적으로 대응하는 개념으로 이를 위해 실행하는 가상머신의 수를 동적으로 늘릴 수 있는 체계를 마련하는 것이다.
    • AWS에서는 가상머신을 인스턴스라 하고 수요 변화에 능동적으로 대처할 수 있도록 Auto Scaling 서비스를 제공하고 있다.
  • 탄력성: 확장성과 같이 수요 변화에 대응하는 것으로 수요가 떨어질 때 용량을 자동으로 줄이는 개념, 탄력성을 통해 필요한 자원을 할당하여 비용을 효과적으로 절감할 수 있다.
  • 비용관리: 사용 자원을 엄격하게 관리해서 비용을 통제할 수 있으며 IT 지출 내용을 자본 지출(CAPEX) 에서   운영 비용(OPEX)롤 전환한다.
    • CAPEX:  온프레미스 환경을 구축하기 위해 관련 H/W를 구입하기 위한 지출
    • OPEX: 애플리케이션의 실행 기간에 해당하는 금액 만 지출

1.4 AWS 클라우드 

AWS 서비스의 범주는 컴퓨팅(computing), 네트워킹(networking), 스토리지(storage), 데이터베이스(database), 애플리케이션 관리(application management), 보안과 자격증명(security and credentials), 애플리케이션 통합(application integration) 으로 구분하여 서비스를 제공하고 있다.

 

  • 컴퓨팅: 데이터 센터에서 물리 서버가 하는 역할을 하는 클라우드 서버스, Auto Scaling, Load Balancing, Serverless Architrecture
서비스 기능
Elastic Compute Cloud(EC2) - 로컬 데이터 센터에서 실행되는 서버의 가상버전 , EC2 인스턴스는 CPU, 메모리, 스토리지, 네트워크 인터페이스 프로파일로 프로비저닝
- EC2 인스턴스는 가상화 기반으로 훨씬 효율적이고 빠르게 배포
Lambda - 서버리스 애플리케이션 아키텍처, 이를 이용하어 서버를 구축하고 연중무효르 운영하지 않아도 요청을 처리할 수 있는 퍼블릭 서비스를 제공 가능 
- 최대 15분의 작업이 완려되면 Lambda 이벤트는 종료되고 모든 자원은 자동으로 해지
Elastic Load Balancing - 여러 개의 서버가 운영될 때 클라이언트의 요청들이 특정 서버에 몰리지 않도록 여러 서버로 분산시키는 기능 
Auto Scaling - 인스턴스 사본을 이마지 템플릿으로 정의하고 기존 인스턴스가 클라이언트의 수요에 대응할 수 없을 때 자동으로 인스턴스를 시작해주는 기능
- 수요가 감소하면 사용하지 않는 인스턴스를 종료 뜨는 축소 가능 
Elastic Beanstalk - AWS 컴퓨팅과 네트워킹 인프라를 프로비저닝하는 작업을 추상화한 관리형 서비스
- 애플리케이션 코드를 입력하는 것 외에 아무것도 할 필요가 없도록 Beanstalk 가 필요한 모든 서비스를 자동으로 시작하고 관리

     

  • 네트워킹: 애플리케이션 연결, 액세스 제어, 향상된 원격 연결
서비스 기능
Virtual Private Cloud (VPC) - 높은 수준까지 구성할 수 있는 네트워크 환경으로 EC2나 RDS 인스턴스를 호스팅
- VPC 도구를 사용하여 인스턴스의 인바운드 및 아웃바운드 네트워크 액세스나 인스턴스 간 네트워크 액세스를 세밀하게 제어
Direct Connect - 타사 공급자가 제공하는 네트워크를 통해 AWS에 빠르고 안전하게 연결할 떄 사용 
- 로컬 데이터 센터 또는 사무실, AWS VPC 간에 향상된 직통 터널을 구축
Route 53 - 도메인 등록, 레코드 관리, 라우팅 프로토콜, 상테 검사를 관리할 수 있는 AWS DNS 서비스
- AWS 자워노가 완벽하게 통합
CloudFront - AWS이 제공하는 분산 글로벌 콘텐츠 전송 네트워크
- 콘텐츠의 캐싱 버전을 전 세계 엣지 영역에 저장하고 사용자가 요청할 때 최고 효율성과 짧은 지연 시간으로 콘텐츠를 제공 
  • 스토리지: 빠른 액세스와 장기적인 백업 요구에 모두 적합하게 설계된 여러 종류의 스토리지 플랫폼
서비스 기능
Simple Storage Service (S3) - 저렴하고 안정적인 다목적 객체 스트로지, 데이터 스토리지와 백업 용도에 적합
- 스크립트, 템플릿, 로그 파일을 저장할 수 있어 AWS 프로덱션 프로세스에 사용
Glacier - 저렴하게 장기 저장할 수 있는 데이터 데이터 아카이브를 제공
- 데이터를 추출할 때 몇 시간이 걸려도 무방할 때 적합 
- Gracier의 수명 주기 관리는 S3와 밀접하게 통합
Elastic Block Store (EBS) - EBS는 EC2 인스턴스 OS와 작업 데이터를 호스팅하는 가장의 데이터 드라이브 
- 물리 서버의 스토리지 드라이브와 파티션아라는 개념을 사용
- EC2 인스턴스의 파일 시스템을 위한 영구 스토로지로 사용 가능
Storage Gateway - AWS 클라우드 스토리지를 로컬 온프레미스 애플리케이션처럼 사용하는 하이브리드 스토리지 시스템
- 마이그레이션 및 데이터 백업에 훌륭한 도구이며 재해 복구 작업에 사용 가능 
  • 데이터베이스: 데이터 형식이 필요한 사용 사례에 사용할 수 있는 관리형 데이터 솔루션: 관계형 데이터베이스, NoSQL, 캐싱 등
서비스 기능
Relational Database Service (RDS) - 안정적이고, 안전하며, 신뢰서 있는 데이터베이스 인스턴스를 구축할 수 있게 하는 관리형 서비스 
-
MySQL, Microsoft SQL Server, Oracle, Amazon이 자체 개발한 Aurora 등 다양한 SQL 데이터 베이스 엔진을 RDS에서 실행
DynamoDB - 빠르고 유연하고 확장성이 뚸어난 관리형 서비스 
- 비관계형 데이터베이스 워크로드에 적합
  • 애플리케이션 관리: AWS 계정 서비스와 운영 자원 모니터링, 감사, 구성 , 애플리케이션 배포는 지속적인 모니터링 없이 완성되지 않는다. 끝없이 로그 파일을 생성하고 모니터링을 하여야 함
서비스 기능
CloudWatch - 이벤트를 통해 프로세스 성능 및 활용률을 모니터링하고 사전 설정된 임계 값에 도닥하면 메시지 발송이나자동화된 작업을 트리거하도록 설정 
CloudFormation - AWS 자원 사용을 스크립트화 할 수 있도록 하여 애플리케이션 시작 프로세스를 더 쉽고 매력적으로 자동화, 표준화, 가속화 가능
CloudTrail - 계정 내 모든 API 이벤트 기록을 수집하여 게정을 감사하고 문제를 해결하는데 유용
Config - AWS 계정에서 변경 관리와 규정 준수를 지원하도록 설계
- 처음에 목표 구성 상태를 정의한 후 변경된 모든 상태와 목표 상태의 차이를 평가하고 변경된 구성 상태가 목표 범위를 벗어나면 알림이 발송
  • 보안과 자격 증명
서비스 기능
Identity and Access Management (IAM) - AWS 게정의 사용자, 프로그래밍 방식 액세스, 인증을 관리
- 사용자, 그룹, 역할, 정책을 사용해서 AWS 자원에 액세스하고 작업할 수 있는 사람과 대상을 정확하게 제어 
Key Management Service
(KMS)
- AWS 자원의 데이터를 보호하는 암호화 키를 생성하고 키 사용을 관리하는 관리형 서비스 
Directory Service - AWS 환경에서 자격 즘명이나 관계를 관리
- AWS 자원을 Amazon Cognito나 Microsoft AD 도메인과 같은 자격 증명 공급자와 통합
  • 애플리케이션 통합: 결합 해제, 통합, API를 사용한 애플리케이션 개발 프로케스를 설계하기 위한 도구 
서비스 기능
Simple Notification Service
(SNS)
- 주제에 관한 알림을 자동으로 다른 서비스, 모바일 디바이스, 전자메일, SMS를 사용하는 수신자에게 보내도록 하는 알림 도구
Simple WorkFlow
(SWF)
- 수행해야하는 일련의 작업을 즈정 
- 복잡한 프로세스의 속도를 높이고 각 구성 부분을 연결
Simple Queue Service
(SQS)
- 분산 시스템 내에서 이벤트 중심 메시징으로 결합을 해제해서 대형 프로세스의 개별 단계를 조정
- SQS 메시지에 포함된 데이터는 안정적으로 전달되기 때문에 애플리케이션의 내결함성을 향상
API Gateway - AWS에 구현한 애플리케이션을 위해 안전하고 안정적으로 API를 생성, 관리 

 

1.5 AWS 플랫폼 아키텍처

 AWS는 전세계에 걸쳐 물리적 서버를 위한 데이터 센터를 유지, 관리하고 있어 사용자는 지리적으로 가까운 데이터 센터에 서비스를 호스팅해서 네트워크 전송 지연 시간을 줄일 수 있다. 

데이터 센터는 전 세계에 위치한 AWS 리전(region)내에 존재한다.  리전마다 요금이 다르고 선택한 리전에 필요한 서비스가 없을 수 있기 때문에 AWS 자원을 시작할 때 리전 선택에 주의하여야 한다. 가용 영역(Avaliable Zone)은 AWS 계정 내의 물리적 AWS 데이터 센터를 가진다. 

2023년 4월 기준 33개의 리전과 105개의 가용 영역, 600개 이상의 CloudFront POP을 제공한다.  (https://aws.amazon.com/ko/about-aws/global-infrastructure/)

 

글로벌 인프라 - AWS

 

aws.amazon.com

리전 내에는 일종의 네트워크 주소 공간인 VPC가 있고 AWS 자원은 이 VPC에 배포된다. VPC는 그 안에 네트워크 서브 네트워크를 만들 때 가용 영역과 연결된다.

 

1.6. AWS 공동 책임 모델

AWS AWS 클라우드 인프라를 안정적으로 관리하는 일을 담당하고 AWS 사용자는 AWS 플랫폼과 자원의 보안에 대한 책임을 가진다. 

 

  • AWS: 클라우드 자체의 안전하고 중단없는 운영을 보장, 물리적인 서버, 스트로지 장치, 네트워크 인프라, AWS 글로벌 인프라, 관리형 서비스가 중단없이 운영하는 것을 보장한다.
  • AWS 사용자: 운영체제, 네트워크, 액세스 구성, 사용자 데이터, 사용자 애플리케이션, 엑세스 관리, 데이터 암호화 등 사용자가 구성한 클라우드 내부 보안에 대한 책임을 가진다.