과정 개요
- 이번 과정에서는 AWS 클라우드 개념, AWS 서비스,보안,아키텍처에 대해 학습하여 AWS 클라우드 지식을 구축한다.
1. AWS WEB Services
Client-Server 모델
- 클라이언트 : 컴퓨터 서버에 요청을 보내기 위해 상호작용하는 우베 브라우저 또는 데스크톱 에플리케이션
- 서버 : 일종의 가상 서버인 Amazone Elastic Compute Cloud(Amazon EC2)
클라우드 컴퓨팅
클라우드 컴퓨팅을 위한 배포 모델
- 클라우드 컴퓨팅 배포 모델에는 클라우드 기반, 온프레미스, 하이브리드 가 존재
클라우드 기반 배포
- 애플리케이션의 모든 부분을 클라우드에서 실행
- 기존 애플리케이션을 클라우드로 마이그레이션 수행
- 클라우드에서 새 애플리케이션을 설계 및 빌드
온프레미스 배포(프라이빗 클라우드)
- 가상화 및 리소스 관리 도구를 사용하여 리소스를 배포
- 애플리케이션 관리 및 가상화 기술을 사용하여 리소스 활용도를 높인다.
하이브리드 배포
- 클라우드 기반 리소스를 온프레미스 인프라에 연결
- 클라우드 기반 리소스를 레거시 IT 애플리케이션과 통합
클라우드 컴퓨팅의 이점
- 선행 비용을 가변 비용으로 대체
- 데이터 센터, 물리적 서버 등 미리 서버 구축에 필요한 비용인 선행 비용을 생각하지 않고, 오로지 사용하는 컴퓨팅 리소스 자원인 가변 비용만 생각해도 된다는 장점이 존재한다.
- 데이터 센터 운영 및 유지 관리에 비용 투자 불필요
- 또한, 클라우드 컴퓨팅을 이용하게 된다면 데이터 센터를 유지 및 관리하는데 드는 인적자원 등을 고려하지 않아도 된다.
- 용량 추정 불필요
- 클라우드 컴퓨팅을 이용하게 된다면 사용한 컴퓨팅 시간에 대해서만 비용을 지불할 수 있다.
- 규모의 경제로 얻게 되는 이점
- 매우 많은 고객의 클라우드 사용량이 집계되므로 각자의 종량제 요금이 낮아진다.
- 속도 및 민첩성 향상
- 클라우드 컴퓨팅의 유연성 덕분에 애플리케이션을 더욱 쉽게 개발하고 배포할 수 있다.
- 몇 분 안에 전 세계에 배포 가능
- 다른 지역에 위치한 고객도 지연 시간을 최소화하면서 액세스 할 수 있다.
2. 클라우드 컴퓨팅
Amazon Elastic Compute Cloud(Amazon EC2)
- 물리적 서버가 아닌 인터넷을 통해 가상화된 서버에 엑서스 하는데 사용하는 서비스
Amazon EC2의 장점
- 몇 분이내로 Amazon EC2 인스턴스를 프로비저닝하고 시작 할 수 있다.
- 작업 완료 후 인스턴스 종료가 가능하기 때문에, 비용 측면에서 효율적이다.
- 물리적 호스트 시스템을 소유하지 않아도 실제 가동할 때 무관하다.
- 여러 가상머신이 기본적인 하드웨어를 공유(멀티 테넌시)하고 서로 격리되어 있어 서로의 존재를 인식하지 못한다.
- 다양한 운영체제(Windows, Linux, Mac OS)를 선택 할 수 있다.
- 리소스의 크기 조정이 가능하다.
Amazon EC2 작동방식
- 시작 : 기본 구성 인스턴스가 포함된 템플릿을 통해 인스턴스를 시작한다.
- 연결 : 인스턴스 생성 후 사용자가 인스턴스를 사용하기 위해 인스턴스에 연결을 수행한다.
- 사용 : 인스턴스에 연결되었다면 수행하고자 하는 명령을 통해 소프트웨어 설치, 스토리지 추가 등 작업을 수행할 수 있다.
Amazon EC2 인스턴스 유형
범용 인스턴스
- 컴퓨팅, 메모리, 네트워킹 리소스를 균형 있게 제공한다. 아래와 같은 다양한 워크로드에 사용 가능하다.
- 애플리케이션 서버
- 게임 서버
- 엔터프라이즈 애플리케이션용 백엔드 서버
- 중소 규모 데이터베이스
컴퓨팅 최적화 인스턴스
- 고성능 프로세스를 활용하는 컴퓨팅 집약적인 애플리케이션에 적합, 아래 워크로드에 주로 사용된다.
- 고성능 웹서버
- 컴퓨팅 집약적 애플리케이션 서버
- 게임 전용 서버
- 단일 그룹에서 많은 트랙잭션을 처리해야하는 일괄 처리
메모리 최적화 인스턴스
- 메모리에서 대규모 데이터 집합을 처리하는 워크로드에 빠른 성능을 제공하기 위해서 설계되었다.
- 메모리 최적화 인스턴스를 사용하면 많은 메모리가 필요한 워크로드를 실행하고 뛰어난 성능을 얻을 수 있다.
- 고성능 데이터베이스
- 방대한 양의 비정형 데이터의 실시간 처리
가속 컴퓨팅 인스턴스
- 하드웨어 가속 또는 보조프로세스를 사용하여 일부 기능을 CPU에서 실행되는 소프트웨어에서보다 더 효율적으로 수행한다. 기능의 예시로 부동 소수점 수 계산, 그래픽 처리, 데이터 패턴 일치 등이 있다.
- 그래픽 애플리케이션
- 게임 스트리밍
- 애플리케이션 스트리밍
스토리지 최적화 인스턴스
- 로컬 스토리지의 대규모 데이터 집함에 대한 순차적 읽기 및 쓰기 액세스가 많이 필요한 워크로드를 위해 설계 되었다.
- 분산 파일 시스템
- 데이터 웨어하우징 애프릴케이션
- 고빈도 온라인 트랜잭션 처리(OLTP) 시스템
Amazon EC2 요금
- Amazon EC2에서는 사용한 컴퓨팅 시간에 대해서만 비용을 지불한다.
온드맨드 인스턴스
- 중단할 수 없는 불규칙한 단기 워크로드가 있는 애플리케이션에 적합하다.
- 인스턴스는 중지될 때까지 계속 실행되며, 사용한 컴퓨팅 시간에 대해서만 비용을 지불한다.
예약 인스턴스
- 1년 이상 지속되는 온디맨드 인스턴스를 사용하고자 할때 적용되는 결제 할인 옵션이다. 예약 인스턴스는 1년 또는 3년 약정으로 구입할 수 있다.
- 예약 인스턴스는 약정 기간 종료 시에도 인스턴스를 중단 없이 계속 사용할 수 있다.
EC2 인스턴스 Saving Plans
- Amazon EC2를 비롯한 몇몇 컴퓨팅 서비스에 대한 Savings Plans를 제공한다. 약정 기간 동안 EC2 사용량에 유연성이 필요한 경우 유용한 옵션이다.
스팟 인스턴스
- 시작 및 종료시간이 자유롭거나 중단을 견딜 수 있는 워크로드에 적합하다.
- 스팟 인스턴스는 미사용 Amazon EC2 컴퓨팅 용량을 사용하며 온디맨드 요금의 최대 90%까지 비용을 절감 할 수 있다.
전용 호스트
- 사용자 전용의 Amazon EC2 인스턴스 용량을 갖춘 물리적 서버이다.
- 지금까지 다룬 Amazon EC2 옵션 중에서 가장 많은 비용이 든다.
Amazon EC2 크기 조정
- 확장성을 위해서는 필요한 리소스만으로 시작하고 확장 및 축소를 통해 수요 변화에 자동으로 대응하도록 아키텍쳐를 설계해야 한다. AWS는 Amazon EC2 Auto Scaling을 통해 자동으로 조정한다.
Amazon EC2 Auto Scaling
Elastic Load Balancing(ELB)
- 들어오는 애플리케이션 트래픽을 Amazon EC2 인스턴스와 같은 여러 리스소에 자동으로 분산하는 AWS 서비스이다.
- 로드 밸런서는 Auto Scaling 그룹으로 들어오는 모든 웹 트래픽의 단일 접점 역할을 한다.
- 즉, 들어오는 트래픽의 양에 맞춰 Amazon EC2 인스턴스를 추가하거나 제거하므로 이러한 요청이 로드 밸런서로 먼저 라우팅 된다. 그런 다음 요청을 처리할 여러 리소스로 분산된다.
메시징 및 대기열
모놀리식 애플리케이션 및 마이크로서비스

- 데이터베이스, 서버 ,사용자 인터페이스, 비즈니스 로직 등이 밀결합된 애플리케이션을 모놀로식 애플리케이션으로 볼 수 있다.
- 모놀로식 애플리케이션의 경우 한 구성 요소에서 장애가 발생하면 다른 구성 요소에도 장애가 발생하고, 이는 전체 애플리케이션에 문제가 퍼질 수도 있다.
- 이 문제점을 해결하는 방식으로 마이크로서비스 접근 방식을 통해 애플리케이션을 설계하면 된다.
- 마이크로서비스 접근 방식은 애플리케이션 구성요소가 소결합 된다. 이 경우에는 단일 구성요소에 장애가 발생해도 다른 구성 요소들은 서로 통신하기 때문에 계속 작동하여 애플리케이션의 가용성을 확보할 수있다.
- 애플리케이션 통합을 촉진하는 AWS 서비스로는
- Amazon Simple Notification Service(Amazon SNS)
- Amazon Simple Queue Service(Amazon SQS)
Amazon Simple Notification Service(Amazon SNS)
- Amazon SNS는 게시 및 구독 서비스이다.
- Amazon SNS는 알림을 받아 자동으로 작동하는 웹서버나 AWS Lambda 또는 여러 옵션이 될 수 있다.
- 예시로, 커피숍에 모든 '쿠폰,최신메뉴' 등 모든 소식을 하나의 뉴스레터로 모든 손님에게 보냈다.
- 하지만, 손님마다 원하는 정보가 다르다는 걸 알게 되어 여러 주제로 뉴스레터를 분할해서 맞춤형 알림을 전송한다. 이를 통해 사용자는 불필요한 정보 없이 원하는 소식만 정확히 받아 볼수 있게 되었다.
Amazon Simple Queue Service(Amazon SQS)
- Amazon SQS는 메시지 대기열 서비스이다.
- Amazon SQS를 사용하면 메시지 손실이나 다른 서비스 사용 없이 소프트웨어 구성 요소 간에 메시지를 전송, 저장, 수신할 수 있다.
- Amazon SQS에서는 애플리케이션이 메시지를 대기열로 전송하고, 사용자 또는 서비스는 대기열에서 메시지를 검색하여 처리한 후 대기열에서 삭제한다.
추가 컴퓨팅 서비스
서버리스 컴퓨팅

- 서버리스라는 용어는 코드가 서버에서 실행되지만 이러한 서버를 프로비저닝하거나 관리할 필요가 없다는 뜻이다.
- 서버리스 컴퓨팅을 사용하면 서버를 유지 및 관리하는데 사용되는 비용을 제품 및 코드 업그레이드에 사용할 수 있다. 또한, 애플리케이션을 자동으로 확장할 수 있는 유연성도 가지고 있다.
AWS Lambda
- AWS Lambda는 서버를 프로비저닝하거나 관리할 필요 없이코드를 실행 할 수 있는 서비스이다.
- 코드를 실행하는 동안에만 요금이 부과되고, 서버를 관리할 필요는 전혀 없다.
AWS Lambda 작동방식
1. Lamdba 코드 업로드
2. AWS 서비스, 모바일 어플리케이션 또는 HTTP 엔드포인트와 같은 이벤트 소스에서 트리거되도록 코드를 설정
3. Lambda는 트리거된 경우에만 코드를 실행
4. 사용한 컴퓨팅 시간에 대한 요금만 지불한
컨테이너
- 마이크로서비스 외에도 컨테이너식 애플리케이션을 빌드하고 실행할 수 있다.
- 컨테이너는 애플리케이션의 코드와 종속성을 하나의 객체로 패키징하는 표준 방식을 제공한다.
- 보안성, 신뢰성, 확장성 요구 사항이 매우 중요한 프로세스 및 워크플로에도 컨테이너를 사용한다.

- 컴퓨팅 환경이 달라도 애플리케이션 환경이 배포와 상관없이 일관적으로 유지하기 위해서 컨테이너식 접근 방식을 사용한다.
- 만약 이런 컨테이너식 애플리케이션이 수백 개의 컨테이나가 있는 수십개의 호스트를 관리해야한다고 가정해볼 때, 이를 관리하기 위해서는 많은 시간이 걸릴 것이다.
- AWS에서는 컨테이너 오케스트레이션 서비스를 이용해 컨테이너식 애플리케이션을 배포, 관리, 확장하는 데 도움을 줄 수 있다.
- Amazon Elastic Container Service
- Amazon Elastic Kubernetes Service
Amazon Elastic Container Service(ECS)
- Amazon ECS는 AWS에서 컨테이너식 애플리케이션을 실행하고 확장할 수 있는 확장성이 뛰어난 고성능 컨테이너 관리 시스템이다.
- Amazon ECS는 Docker 컨테이너를 지원한다. Amazon ECS에서는 API 호출을 사용하여 Docker 지원 애플리케이션을 시작 및 중지할 수 있다.
Amazon Elastic Kubernetes Service(EKS)
- Amazon EKS는 AWS에서 Kubernetes를 실행하는데 사용할 수 있는 완전 관리형 서비스이다.
- Kubernetes는 컨테이너식 애플리케이션을 대규모로 배포하고 관리하는 데 사용할 수 있는 오픈 소스 소프트웨어이다.
AWS Fargate
- AWS Fargate는 컨테이너용 서버러스 컴퓨팅 엔진이다. Amazon ECS와 Amazon EKS에서 작동한다.
- AWS Fargate를 사용하는 경우 서버를 프로비저닝하거나 관리할 필요가 없다.
3. 글로벌 인프라 및 신뢰성
AWS 글로벌 인프라
리전 선택
가용영역
- 가용영역 은 리전 내의 단일 데이터 센터 또는 데이터 센터 그룹이다. 가용 영역 간에는 대략 100km 이내에 존재한다. 이는 가용영역 간의 지연시간이 짧은 만큼의 거리지만, 재해 및 데이터센터의 이상이 발생할 경우 영향을 받지 않을 정도의 거리만큼 떨어져 있다.
- 가용영역이 중요한 이유는 사용자에게 복원력 있는 고가용성 아키텍처를 구축하는 데 핵심적인 역할을 수행하기 때문이다.
엣지 로케이션(Edge Location)
- 엣지 로케이션은 Amazon CloundFront가 더 빠른 콘텐츠 전송을 위해 고객과 가까운 위치에 콘텐츠 사본을 캐시하는 데 사용하는 사이트이다.
- 예시로, 회사의 데이터가 브라질 리전에 저장되어있고, 중국에 거주하는 사용자들이 존재한다고 가정한다.
- 오리진 : 중국에 거주중인 고객들에게 콘텐츠를 제공하기 위해 리전을 중국으로 이전할 필요는 없다.
- 캐시 : 고객이 브라질에서 데이터를 가져울 필요가 없도록 중국 내 고객과 가까운 엣지 로케이션에 사본을 로컬로 캐시할 수 있다.
- 고객 : 중국 내 고객이 파일을 요청하면 Amazon CloudFront는 엣지 로케이션의 캐시에서 해당 파일을 검색하여 고객에게 전송한다.
이 파일은 브라질에 존재하는 원본파일이 아닌 중국 근처의 엣지 로케이션에서 가져온 것이라 더 빠르게 전달된다.
AWS 리소스를 프로비저닝하는 방법
AWS 서비스와 상호 작용하는 방법
AWS Management Console
- AWS Management Console은 Amazon 서비스 엑세스 및 관리를 위한 웹 기반 인터페이스이다.
- Beginnner 들이 일반적으로 AWS 서비스를 이용하기 위해서 사용하는 방법이다.

AWS Command Line Interface(CLI)
- API 요청을 수행할 떄 시간을 절약하기 위해 사용하기도 한다. 흔히 사용하는 명령 프롬포트 또는 터미널창을 통해 사용된다.
소프트웨어 개발 키트
- SDK를 사용하면 프로그램이 언어 또는 플랫폼용으로 설계된 API를 통해 AWS 서비스를 보다 간편하게 사용할수 있다.
| Console | CLI | SDK |
|---|
| 그래픽 기반 웹페이지 | 터미널 창 | 프로그래밍 언어로 호출 |
AWS Elastic Beanstalk
- 사용자가 코드 및 구성 설정(용량 조정, 로드 밸런싱, 자동 조정 , etc..)을 제공하면 AWS Elastic Beanstalk이 자동으로 리소스를 구성한다.
- 코드형 인프라(IaC)로 , 콘솔 창을 사용하여 개별젹으로 리소스를 프로비저닝하는 대신 코드 줄을 작성하여 환경을 구축 할 수 있다.
- AWS CloudFormation은 리소스를 안전하고 반복 가능한 방식으로 프로비저닝하므로 인프라 구축 시간 단축 및 인적 오류를 발생시키지 않는다는 장점이 있다.
4.네트워킹
AWS와의 연결
Amazon Virtual Private Cloud(Amazon VPC)
- Amazon VPC를 사용하여 격리된 공간으로 AWS 클라우드의 리소스를 프로비저닝 할수 있다.
- 한 VPC 내에 여러 서브넷으로 리소스를 구성할 수 있다. 또한, VPC 끼리는 Site-to-Site-VPN을 통하거나 인터넷을 통해 연결하지 않는다면 서로 존재를 인식하지 못한다.
인터넷 게이트웨이(Internet Gateway)

- VPC 내의 데이터가 외부 사용자와 트래픽을 송수신하기 위해서는 인터넷 게이트웨이를 VPC와 연결해야 한다.
- 쉽게 생각하자면, 현관문이라고 생각하면 된다. 우리가 집에서 외부로 나가기 위해서는 일반적으로 현관문을 통해 나가는 것을 비유로 볼수 있다.
가상 프라이빗 게이트웨이(Virtual Private Gateway)

- VPC 내의 프라이빗 리소스에 엑세스 하려면 가상 프라이빗 게이트웨이를 사용할 수 있다.
- 가상 프라이빗 게이트웨이는 보호된 인터넷 트래픽이 VPC로 들어오도록 허용하는 구성요소이다. 즉, 가상 프라이빗 게이트웨이를 사용하면 VPC와 프라이빗 네트워크( ex): 온프레미스 데이터센터) 간에 Virtual Private Network(VPN) 연결을 설정 할 수 있다.
AWS Direct Connect

- AWS Direct Connect는 데이터 센터와 VPC 간에 비공개 전용 연결을 설정하는 서비스이다.
- 쉽게 생각하자면, 주상복합아파트에 거주하는 주민을 생각하면 된다. 단지내에 있는 커뮤니티 시설을 이용하기 위해서 외부에 나간 뒤 커뮤니티 시설을 이용하지 않는다.
바로 커뮤니티 시설과 연결되어있는 엘리베이터를 타고 이동하기만 하면 끝이다. 이 엘리베이터 역할이 Direct Connect로 이해하면 된다.
- AWS Direct Connect가 제공하는 프라이빗 연결을 통해 네트워크 비용을 절감하고 네트워크를 통과할 수 있는 대역폭을 늘리는 데 도움을 준다.
서브넷 및 네트워크 엑세스 제어 목록
서브넷

- 서브넷은 보안 또는 운영 요구사항에 따라 리소스를 그룹화할 수 있는 VPC 내의 섹션이다.
- 한 VPC 내부의 서브넷들 간에는 서로 통신이 가능하다.
- 퍼블릭 서브넷(Public Subnet) : 누구나 외부에서 엑세스할 수 있는 리소스들이 존재
- 프라이빗 서브넷(Private Subnet) : 주요 정보들이 저장되는 리소스들로 외부에 노출되면 피해를 입을 수 있기에 내부에 저장한다.
VPC의 네트워크 트래픽
- 고객이 AWS 클라우드에서 호스팅 되는 애플리케이션에 데이터를 요청하면 이 요청은 패킷으로 전송된다. 패킷은 인터넷이나 네트워크를 통해 전송되는 데이터 단위이다.
- 패킷은 인터넷 게이트웨이를 통해 VPC로 들어간다. VPC 내부로 들어간 패킷이 서브넷으로 들어가거나 나가려면 패킷의 권한을 확인해야 한다. 패킷의 권한을 확인하는 방법으로 엑세스 제어 리스트(ACL)이 존재한다.
네트워크 ACL
- 네트워크 ACL은 서브넷 수준에서 인바운드 및 아웃바운드 트래픽을 제어하는 가상 방화벽이다.
- 기본 네트워크 ACL의 경우에는 모든 인바운드 및 아웃바운드 트래픽을 허용해둔 상태이다. 만약, 특정 소스 IP 주소들을 제한하고 싶은 경우 해당 IP 트래픽을 제한(deny)하는 규칙을 추가하면 된다.
- 반대로 사용자 지정 네트워크 ACL의 경우에는 기본 설정 값이 모든 트래픽이 거부되어있는 상태로 시작된다. 즉, 특정 IP 주소를 허용하는 규칙을 추가하기 전까지 트래픽 전송이 불가한 상태이다.
- 또한 모든 네트워크 ACL에는 명시적 거부 규칙이 존재한다. 명시적 거부 규칙이란 패킷 목록의 다른 모든 규칙과 일치하지 않는다면 해당 패킷은 거부된다는 것을 말한다. 예시로 사용자 지정 네트워크 ACL 에서 인바운드 트래픽 192.168.0.0/24 주소를 허용한다고 설정 한뒤,추가적으로 172.16.0.0/24 주소에 대해서 허용한다는 규칙을 설정했다. 이 때, 10.0.0.0/24 대역대의 사용자의 경우에는 트래픽을 전송할 수 없다는 것을 의미한다.
Stateless 패킷 필터링
- 네트워크 ACL은 stateless(무상태) 패킷 필터링을 수행한다. 즉, 패킷의 송수신 과정중에 허용 여부를 판단한 것을 저장하지 않는다. 들어올때 검사하고, 나갈때도 다시 검사한다는 말이다.
- 패킷에서 Amazon EC2 인스턴스에 대한 권한을 확인하는 VPC 구성 요소는 보안 그룹이다.
보안 그룹(Security Group)
- 보안 그룹은 Amazon EC2 인스턴스 및 서비스 단에 대한 인바운드 및 아웃바운드 트래픽을 제어하는 가상 방화벽이다.
- 보안 그룹과 ACL은 동일한 역할을 수행하지만, ACL은 서브넷 단위에서 보안 그룹은 서비스 단에서 동작한다는 차이점이 있다.
- 보안그룹의 기본 설정값은 모든 인바운드 트래픽은 거부하고 아웃바운드 트래픽은 허용해둔다. 이후 사용자 지정 규칙을 지정하여 허용해야 할 트래픽을 추가할 수 있다.
Stateful 패킷 필터링
- 보안 그룹의 경우에는 Stateful(상태유지) 패킷 필터링을 수행한다. 즉, 들어오는 패킷에 대한 정보들을 기억해둔다.
글로벌 네트워킹
Domain Name System(DNS)
- 우리가 일반 웹페이지에 접속할 때, 해당 웹 서버의 IP 주소를 기억해서 입력하지는 않고 도메인 이름을 입력한다. DNS는 웹 페이지에 접속하는 도메인 이름을 IP 주소로 변환하는 프로세스이다.
- DNS 프로세스는 아래와 같이 수행된다.
- 브라우저에 도메인 이름을 입력하면 이 요청이 DNS Resolver 로 전송된다.
- DNS Resolver는 회사 DNS 서버에서 웹 사이트에 해당하는 IP 주소를 요청한다.
- DNS 서버에서는 웹사이트 주소를 제공하여 응답한다.
Amazon Route 53
- Amazon Route 53은 DNS 웹 서비스이다.
- 사용자 요청을 AWS에서 실행되는 인프라(예: Amazon EC2 인스턴스 및 로드 밸런서)에 연결한다. 또한 사용자를 AWS 외부의 인프라로 라우팅할 수 있다.
- Route 53의 또다른 기능으로 도메인 이름의 DNS 레코드를 관리하는 기능도 존재한다. Route 53에 새 도메인 이름을 등록할 수 있고, 다른 도메인 등록 대행자가 관리하는 기존 도메인 이름 DNS 레코드를 전송할 수도 있다.
Route 53 및 AMazon CloudFront가 콘텐츠를 전송하는 방식은 아래와 같다.
- 고객이 회사의 웹 사이트로 이동하여 애플리케이션에서 데이터를 요청한다.
- 이 때, Amazon Route 53은 DNS 확인을 사용하여 웹 페이지의 IP 주소를 식별하여 고객에게 다시 전송한다.
- 고객의 요청은 Amazon CloudFront를 통해 가장 가까운 엣지 로케이션으로 전송된다.
- CloudFront는 수신 패킷을 Amazon EC2 인스턴스로 전송하는 Application Load Balancer에 연결된다.
5. 스토리지 및 데이터베이스
인스턴스 스토어 및 Amazon Elastic Block Store(Amazon EBS)
인스턴스 스토어
- 블록 수준 스토리지 불륨은 물리적 하드 드라이버처럼 동작한다.
- 인스턴스 스토어는 AMazon EC2 인스턴스에 임시 블록 수준 스토리지를 제공한다. 물리적으로 EC2 인스턴스 호스트 컴퓨터에 연결되어 있고, 따라서 인스턴스와 수명이 동일한 디스크 스토리지이다. 따라서 인스턴스가 종료되면 인스턴스 스토어의 데이터도 손실된다.
Amazon Elastic Block Store(Amazon EBS)
- Amazon Elastic Block Store(Amazon EBS)는 EC2 인스턴스에서 사용할 수 있는 블록 수준 스토리지 볼륨을 제공하는 서비스이다. EC2 인스턴스를 중지 또는 종료하더라도 연결된 EBS 볼륨의 모든 데이터를 사용할 수 있다.
- 일반적으로 EBS 볼륨은 보존해야 하는 데이터를 위한 것이므로 데이터 백업이 중요하다. Amazon EBS 스냅샷을 생성하여 EBS 볼륨을 증분 백업할 수 있다.
Amazon EBS 스냅샷
- Amazon EBS 스냅샷은 증분 백업이다. 즉, 처음 볼륨을 백업하면 모든 데이터가 복사된다. 그 후 백업에서는 스냅샷 이후 변경된 데이터 블록만 저장된다.
Amazon Simple Storage Service(Amazon S3)
객체 스토리지
- 객체 스토리지에서 각 객체는 데이터,메타데이터,키로 구성된다.
- 데이터 : 이미지,동영상,텍스트 문서 저장
- 메타데이터 : 데이터의 내용, 사용방법, 객체 크기 등에 대한 정보 저장
- 키 : 고유한 식별자
Amazon Simple Storage Service(Amazon S3)
- Amazon Simple Storage Service(Amazon S3)는 객체 수준 스토리지를 제공하는 서비스이다. Amazon S3는 데이터를 버킷에 객체로 저장한다.
- Amazon S3는 저장 공간을 무제한으로 제공하고, 각 객체의 최대 파일 크기는 5TB 이다.
Amazon S3 스토리지 클래스
Amazon EBS와 Amazon S3 비교
- S3의 경우 모든 객체에 URL이 있으며 이미지를 보거나 관리할 수 있는 사람에 대한 액세스 권한을 제어할 수 있다. 리전별로 분산되어 있어서 거의 100%의 내구성을 제공한다. 서버리스라는 이점도 존재한다.
- EBS의 경우에는 작은 편집을 다수 수행할 때, 이점을 가진다. 증분 백업이기 때문에 변경된 사항만 추가적으로 저장된다.
- 즉 완성 객체를 사용하거나 변경 횟수가 적다면 S3를 사용해야 하는 것이 유리하고, 복잡한 읽기, 쓰기, 변경 기능을 수행한다면 EBS가 유리하다.
Amazon Elastic File System(Amazon EFS)
파일 스토리지
- 파일 스토리지는 여러 클라이언트(ex : 사용자, 애플리케이션, 서버)가 공유 파일 폴더에 저장된 데이터에 액세스할 수 있다.
- 스토리지 서버가 블록 스토리지를 로컬 파일 시스템과 함께 사용하여 파일을 구성한다.
- 쉽게 말하자면, 스토리지 서버(컴퓨터)는 똑똑한 관리인(파일 시스템)을 시켜서, 텅 빈 창고(블록 스토리지)를 우리가 보기 편한 파일과 폴더 구조로 깔끔하게 정리해서 사용하는 것이다.
- 파일 스토리지는 많은 수의 서브시 및 리소스가 동시에 동일한 데이터에 액세스해야 하는 사례가 이상적이다.
- 여러 개발자가 하나의 소프트웨어를 만들 때, 모두가 동일한 소스 코드 파일을 보고 수정하고 테스트해야 하는 상황이 존재한다. 각자의 컴퓨터와 빌드 서버가 중앙 코드 저장소에 동시에 접근한다. 이 때, 파일 스토리지의 역할은 팀의 공용 코드 라이브러리 역할을 수행한다.
- Amazon Elastic File System(Amazon EFS)은 AWS 클라우드 서비스 및 온프레미스 리소스와 함께 사용되는 확장 가능한 파일 시스템이다. 파일을 추가 또는 제거하는 경우 Amazon EFS가 자동으로 확장하거나 축소된다.
Amazon EBS vs Amazon EFS
- Amazon EBS 볼륨은 단일 가용 영역에 데이터를 저장한다.
- Amazon EFS는 리전별 서비스이다. 이 서비스의 경우 여러 가용 영역에 걸쳐 데이터를 저장한다.
Amazon Relational Database Service(Amazon RDS)
관계형 데이터베이스
- 관계형 데이터베이스에서는 데이터가 다른 데이터 부분관 관련된 방식으로 저장된다.
- 관계형 데이터베이스는 정형 쿼리 언어(SQL)를 사용하여 데이터를 저장하고 쿼리한다.
Amazon Relational Database Service(Amazon RDS)
- Amazon Relational Database Service(Amazon RDS)는 AWS 클라우드에서 관계형 데이터베이스를 실행할 수 있는 서비스이다.
- Amazon RDS는 인프라 구축 작업(하드웨어 프로비저닝, 데이터베이스 설정 ,etc..)을 자동화하는 관리형 서비스이다. 또한 AWS Lamdba를 사용하여 서버리스 애플리케이션에서 데이터베이스를 쿼리하는 애플리케이션을 설계할 수도 있다.
- 데이터베이스는 사용자의 중요 정보들이 저장되기 때문에 안전해야 한다. Amazon RDS는 다양한 보안 옵션을 제공한다. 대부분의 Amazon RDS 데이터베이스 엔진이 저장 시 암호화(데이터가 저장되는 동안 데이터를 보호) 및 전송 중 암호화(데이터를 전송 및 수신하는 동안 데이터를 보호)를 제공한다.
Amazon RDS 데이터베이스 엔진
- Amazon RDS가 지원하는 엔진은 다음과 같다.
- Amazon Aurora
- PostgreSQL
- MySQL
- MariaDB
- Oracle Database
- Microsoft SQL Server
Amazon DynamoDB
비관계형 데이터베이스
- 관계형 데이터베이스와 비관계형 데이터베이스의 차이점은 테이블의 구성이 행과 열인지 아닌지로 구별할 수 있다. 비관계형 데이터베이스는 행과 열이 아닌 구조를 사용하기 때문에 NoSQL 데이터베이스라고도 한다.
관계형 데이터베이스 예시 :
| ID | 이름 | 주소 | 좋아하는 음료 | 생일 |
|---|
| 1 | John Doe | 123 Any Street | 미디엄 라떼 | (NULL) |
| 2 | Mary Major | 100 Main Street | (NULL) | 1994년 7월 5일 |
비관계형 데이터베이스 예시 :
| 키 | 값 |
|---|
| 1 | 이름: John Doe 주소: 123 Any Street 좋아하는 음료: 미디엄 라떼 |
| 2 | 이름: Mary Major 주소: 100 Main Street 생일: 1994년 7월 5일 |
Amazon DynamoDB
- Amazon DynamoDB 는 키-값 데이터베이스 서비스이다.
- DynamoDB는 서버리스이므로 서버를 프로비저닝 및 관리할 필요가 없다.
- 데이터베이스 크기가 축소 확장되면 DynamoDB는 용량 변화에 맞춰서 일관된 성능을 유지한다.
Amazon Redshift
- 실시간 읽기/쓰기 기능의 속도 관리를 위해 대부분의 관리형 데이터베이스는 특정 용량에서 과도하게 기능하는 경향이 있다. 최신 원격 분석과 IoT의 폭발적인 증가 때문에 데이터는 결국 최고 용량의 기존 관계형 데이터베이스로도 감당할 수 없는 양이 될 것이다.
- Amazon Redshift는 빅 데이터 분석에 사용할 수 있는 데이터 웨어하우징 서비스
- 이 서비스는 여러 원본에서 데이터를 수집하여 데이터 간의 관계 및 추세를 파악하는 데 도움이 되는 기능을 제공한다.
AWS Database Migration Service(AWS DMS)
- AWS DMS은 (비)관계형 데이터베이스 및 기타 유형의 데이터 저장소를 마이그레이션 할 수 있는 서비스이다.
- 온프레미스 또는 원본 데이터베이스와 대상 데이터베이스 간에 데이터를 이동 시킬 수 있다. 또한 원본과 대상 데이터베이스의 유형이 동일하지 않아도 동작한다.
- 마이그레이션 하는동안에도 계속 작동하기 때문에 애플리케이션의 가동 중지 시간을 줄일 수 있다.
- 사용사례는 다음과 같다.
- 개발 및 테스트 데이터베이스 마이그레이션 : 프로덕션 사용자에게 영향을 주지 않고 개발자가 프로덕션 데이터에서 애플리케이션을 테스트 할 수 있도록 지원
- 데이터베이스 통합 : 여러 데이터베이스를 단일 데이터베이스로 결합
- 연속 복제 : 일회성 마이그레이션을 수행하는 것이 아니라 데이터의 진행 중 복제본을다른 대상 원본으로 전송
6. 보안
AWS 공동 책임 모델
- 클라우드 리소스를 안전하게 유지할 책임은 누구에게 있을까? → AWS ? 혹은 사용자 ? 답은 둘다 책임이 존재한다. 이를 AWS 공동 책임 모델이라고 한다.
- AWS 환경을 단일 객체로 취급하지 않기 때문이다. 클라우드 자체의 보안은 AWS가 책임을 지고, 클라우드 내부의 보안은 사용자가 책임을 진다.
클라우드 내부의 보안
- AWS 내에서 생성하고 배치하는 모든 것의 보안을 책임진다.
- AWS에 저장하기로 선택하는 콘텐츠, 사용하는 서비스, 콘텐츠에 액세스 할 수 있는 사용자를 포함하여 콘텐츠에 대한 보안 요구사항을 관리하는 책임은 고객에게 있다.
클라우드 자체의 보안
- AWS는 인프라의 모든 계층에서 구성 요소를 운영, 관리 및 제어한다.
- 호스트 운영 체제, 가상화 계층,심지어 데이터 센터의 물리적 보안도 포함된다.
- AWS는 AWS 클라우드의 모든 서비스를 실행하는 글로벌 인프라를 보호할 책임이 존재한다.
| 책임 주체 | AWS 환경 구분 |
|---|
| 고객 | 고객 데이터 |
| 플랫폼, 애플리케이션, Identity and Access Management(IAM) |
| 운영 체제, 네트워크/방화벽 구성 |
| 클라이언트 측 데이터 암호화, 서버 측 데이터 암호화, 네트워크 트래픽 보호 |
| Amazon Web Services(AWS) | 소프트웨어: 컴퓨팅, 스토리지, 데이터베이스, 네트워킹 |
| 하드웨어: 리전, 가용 영역, 엣지 로케이션 |
사용자 권한 및 액세스
AWS Identity and Access Management(IAM)
AWS 계정 루트 사용자
- AWS 계정을 처음 만들면 루트 사용자를 통해 시작한다.
- 루트 사용자는 계정의 모든 AWS 서비스 및 리소스에 대한 전체 액세스 권한을 소유한다. 따라서 일상 작업에는 루트 사용자를 사용하는 것을 지양한다.
- 대신 IAM 사용자를 생성 및 작업을 수행하여 최소 권한의 원칙을 목표로 해야 한다.
IAM 사용자
- IAM 사용자는 AWS에서 생성되는 계정이다.
- IAM 사용자를 처음 생성하면 해당 사용자와 연결된 권한이 없기 때문에 특정 작업을 수행할 수 있도록 필요한 권한을 부여해야한다.
IAM 정책
- IAM 정책은 AWS 서비스 및 리소스에 대한 권한을 허용하거나 거부하는 문서이다.
- IAM 정책을 사용하면 사용자가 리소스에 액세스할 수 있는 수준을 지정할 수 있다.
- 권한을 부여할 때 최소 권한을 부여하는 보안 원칙을 따르자.
해당 정책은 ID가 AWSDOC-EXAMPLE-BUCKET인 Amazon S3 버킷의 객체에 액세스할 수 있는 권한을 허용한다.
IAM 그룹
- IAM 그룹은 IAM 사용자의 모임이다.
- 여러 IAM 사용자를 개별로 IAM 정책을 할당하려면 똑같은 작업을 반복적으로 수행해야되는 번거로움이 존재한다. 그룹에 IAM 정책을 할당하면 해당 그룹의 모든 사용자에게 정책에 지정된 권한이 부여된다.
IAM 역할
- IAM 역할은 임시로 권한에 액세스하기 위해 수임할 수 있는 자격 증명이다.
- IAM 사용자, 애플리케이션 또는 서비스가 IAM 역할을 수임하려면 먼저 해당 역할로 전환할 수 있는 권한을 부여받아야 한다. IAM 역할을 수임한다는 것은 이전 역할에 지정된 모든 이전 권한을 포기하고 새 역할에 지정된 권한을 수임하는 것이다.
다중 인증(MFA)
- 신원을 확인하기 위해서 여러 가지 정보를 제공하도록 로그인을 수행한 뒤 본인이 로그인을 했다는 것을 증명하기 위해서 두 번째 인증 형식을 제공하는 것을 다중 인중이라고 말한다.
AWS Organizations
- AWS Organizations을 사용하여 중앙 집중식 여러 AWS 계정을 통합하고 관리 할 수 있다.
- 조직을 생성하면 AWS Organizations가 조직의 모든 계정에 대한 상위 컨테이너 루트를 자동으로 생성한다.
- 또한, 서비스 제어 정책(SCP)를 사용하여 조직의 계정에 대한 권한을 중앙에서 제어 할 수 있다.
조직 단위(OU)
- AWS Organizations에서는 계정을 조직 단위(OU)로 그룹화하여 비슷한 비즈니스 또안 보안 요구 사항이 있는 계정을 쉽게 관리할 수 있다.
- OU에 정책을 적용하면 OU 내 모든 계정에 자동으로 정책이 상속된다.
규정 준수
AWS Artifact
- AWS 보안 및 규정 준수 보고서 및 일부 온라인 계약에 대한 온디맨스 엑세스를 제공하는 소비스
- AWS Artifact 계약
- 개별 계정 및 AWS Organization 내 모든 계정에 대한 계약을 검토, 수락 및 관리를 할 수 있다.
- AWS Artifact 보고서
- 외부 감사 기관이 작성한 규정 보고서를 제공한다.
서비스 거부 공격
서비스 거부 공격(DoS)
- 서비스 거부 공격은 사용자들이 웹 사이트 또는 애플리케이션을 이용할 수 없게 만드려는 의도적인 시도이다.
- 과도한 네트워크 트래픽으로 플러드하게 된다면 애플리케이션을 사용할 수 없게 되면 합법적인 요청을 시도하는 사용자에게 서비스를 거부한다.
분산 서비스 거부 공격
- 분산 서비스 거부(DDoS) 공격에서는 여러 소스를 사용하여 웹 사이트 또는 애프릴케이션을 사용할 수 없게 만드는 공격을 수행한다.
- 여러 소스를 사용하여 애플리케이션을 사용할 수 없는 공격을 만든다. 공격자는 한 명일 수도 그룹일 수도 있다.
AWS Shield
- AWS Shield는 DDoS 공격으로부터 애플리케이션을 보호하는 서비스이다. 2가지 옵션 Standard, Advanced 를 제공한다.
- Standard
- DDoS 공격으로부터 보호한다. 모든 AWS 고객을 자동으로 보호하는 무료 서비스이다.
- Advaned
- 상세한 공격 진단 및 정교한 DDoS 공격을 탐지하고 완화할 수 있는 기능을 제공하는 유료 서비스이다.
- 또한 복잡한 DDoS 공격을 완화하기 위한 사용자 지정 규칙을 작성하여 AWS Shield를 AWS WAF와 통합할 수 있다.
추가 보안 서비스
AWS Key Management Service(AWS KMS)
- AWS Key Management Service(AWS KMS)를 사용하면 암호화 키를 사용하여 암호화 작업을 수행할 수 있다. 또한 KMS를 이용해 암호화 키를 생성, 관리 및 사용할 수 있다.
AWS WAF
- AWS WAF 는 웹 애플리케이션으로 들어오는 네트워크 요청을 모니터링하는 웹 애플리케이션 방화벽이다.
- AWS WAF를 이용해 여러 IP 리소스들이 ACL 규칙에서 허용되어있는지 거부되는지 파악하여 특정 IP들만 접근할 수 있도록 한다.
Amazon GuardDuty
Amazon GuardDuty 는 AWS 인프라 및 리소스에 대한 지능형 위협 탐지 기능을 제공하는 서비스이다. GuardDuty는 AWS 환경 내의 네트워크 활동 및 계정 동작을 지속적으로 모니터링하여 위협을 식별한다.
7. 모니터링 및 분석
Amazon CloudWatch
- 다양한 지표를 모니터링 및 관리하고 해당 지표의 데이터를 기반으로 경보 작업을 구성할 수 있는 웹 서비스
- CloudWatch는 지표를 사용하여 리소스의 데이터 포인트를 나타낸다.
- AWS 서비스는 지표를 CloudWatch로 보내고, CloudWatch가 이러한 지표를 사용하여 시간 경과에 따른 성능이 어떻게 변화했는지 그래프를 자동으로 생성한다.
CloudWatch 경보
- 지표 값이 미리 정의된 임계값을 상회 또는 하회할 경우 자동으로 작업을 수행하는 경보를 생성한다.
AWS CloudTrail
- AWS CloudTrail은 계정에 대한 API 호출을 기록한다.
- 기록된 정보에는 API 호출자 ID, API 호출 시간, API 호출자의 소스 IP 주소 등이 포함된다. 쉽게 말하자면 CloudTrail은 데이터 트래픽의 이동 경로를 추적한다고 생각해도 된다.
- API 호출을 사용하여 AWS 리소스를 프로비저닝, 관리 및 구성할 수 있다.
CloudTrail Insights
- 해당 옵션을 사용하면 CloudTrail이 AWS 계정에서 비정상적인 API 호출을 자동으로 감지할 수 있다.