본문 바로가기
infra

AWS 서비스들에 대한 정리

by 루에 2022. 4. 7.
반응형

Route53

대분류 소분류 내용
개요   AWS에서 제공하는 DNS(Domain Name Service)
일반 DNS의 이해   도메인을 IP로 변환하여 IP 네트워크 통신하여 목적지 IP를 찾아가는 과정
(http://naver.com > 202.222.xxx.xxx)
일반 DNS와 Route53의 차이점 Route53에서 네임서버 등록 시, 순서가 다름 일반적으로 도메인 등록 시 네임서버를 지정하는데 Route53에서는 할당 후 네임서버 정보를 도메인 등록 대행기관(가비아, 아이네임즈 등) 사이트에 접속해 네임서버를 지정
Route53은 Public host zone과 Private host zone이 있음 public은 일반 네임서버로 글로벌하게 동작, private은 aws내에서만 동작
Route53은 특이 레코더, ALIAS가 있음 도메인 자체에 별칭 부여 가능
기능 개요 DNS + 모니터링 + L4 + GSLB 기능 제공
모니터링 특정 포트에 대해 모니터링 가능
L4 네트워크 장비 넷스케일러, 파운드리, 파이오링크와 같은 Failover 기능
(failover => 장비나 시스템, 네트워크에 이상이 생겼을 때 예비 시스템으로 자동전환되는 기능. 수동으로 할 경우 스위치 오버라 부름)
GSLB(Global Server Load Balancing) region에 상관없이 부하를 분산해주는 기능. 특정 IDC에 의존적이지 않도록 함
기능 상세
  1. failover
  2. Act-Act(트래픽 조절, WRR)
  3. region별 유입 트래픽 조절로 응답속도 빠르게(Geolocation)
주의점   S3 버켓 이름과 CloudFront 도메인 네임은 DNS 이름과 반드시 같아야 한다.
사용자 이점   GUI 제공
  네임서버 자체 안정성 증대(Anycast network + 4개의 네임서버 + ddos로부터 안전 => 가용성 증대)
  글로벌 서비스 가능(GSLB를 이용한 속도 개선)
     

 

S3 (Simple Storage Service)

대분류 소분류 내용
개요   파일 서버의 역할을 하는 서비스. 일반적인 파일서버는 트래픽이 증가함에 따라 장비 증설이 필요한데 S3는 이와 같은 것을 대행하여 트래픽에 따른 시스템적인 문제를 걱정할 필요가 없어진다. 또 파일에 대한 접근 권한을 지정할 수 있어 서비스를 호스팅 용도로 사용하는 것을 방지할 수 있다.
특징   많은 사용자가 접속을 해도 이를 감당하기 위해서 시스템적인 작업을 하지 않아도 된다.
  저장할 수 있는 파일 수의 제한이 없다.
  최소 1바이트에서 최대 5TB의 데이터를 저장하고 서비스 할 수 있다.
  파일에 인증을 붙여서 무단으로 엑세스 하지 못하도록 할 수 있다.
  HTTP와 BitTorrent 프로토콜을 지원한다.
  REST, SOAP 인터페이스를 제공한다.
  데이터를 여러 시설에서 중복으로 저장해 데이터의 손실이 발생할 경우 자동으로 복원한다.
  버전관리 기능을 통해서 사용자에 의한 실수도 복원이 가능하다.
  정보의 중요도에 따라서 보호 수준을 차등 할 수 있고, 이에 따라서 비용을 절감 할 수 있다. (RSS)
관련 개념 및 용어 객체(Object) S3에 데이터가 저장되는 기본 단위로써 파일과 메타데이터로 이루어져있다. 객체 하나의 크기는 1Byte부터 5TB까지 허용되며 메타데이터는 MIME 형식으로 파일 확장자를 통해 자동으로 설정되며 사용자 임의로도 지정 가능하다.
  버킷(bucket) 객체가 파일이라면 버킷은 연관된 객체들을 그룹핑한 최상위 디렉토리라고 할 수 있다. 버킷 단위로 region을 지정할 수 있고, 버킷에 포함된 모든 객체에 대해 일괄적으로 인증과 접속 제한을 걸 수 있다. S3에서 생성할 수 있는 최상위 디렉토리의 개념으로 S3 region 중에서 유일해야 한다. 계정별로 100개까지 생성 가능하며 버킷에 저장할 수 있는 객체수와 용량은 무제한
  표준스토리지 S3 서비스 수준 계약으로 객체에 대해 99.999999999%의 내구성을 보장하며 99.99%의 가용성을 제공한다. 하지만 높은 내구성을 보장해야 하는 만큼 비용이 높으므로 유실되면 안되는 원본 데이터, 민감정보, 개인정보 등의 중요한 데이터를 저장하는 것이 알맞다.
  버전관리 S3에 저장된 객체들의 변화를 저장. 각각의 변화를 모두 기록하기 때문에 실수가 발생했을 때 되돌릴 수 있다.
  RSS(Reduced Redundancy Storage) 표준 스토리지보다 저렴한 비용으로 일반 S3 객체에 비해서 데이터가 손실될 확률이 높은 형태의 저장 방식. 대신에 가격이 저렴하기 때문에 복원이 가능한 데이터, 이를테면 섬네일 이미지와 같은 것을 저장하는데 적합하다. 그럼에도 불구하고 물리적인 하드 디스크 대비 400배 가량 안전하다는 것이 아마존의 주장
  Glacier 영어로는 빙하라는 뜻으로 매우 저렴한 가격으로 데이터를 저장 할 수 있는 아마존의 스토리지 서비스
     

 

CloudFront

대분류 소분류 내용
개요   AWS에서 제공하는 CDN 서비스(Content Delivery Network)
지리적 제약 없이 전 세계 사용자에게 빠르고 안전하게 컨텐츠를 전송할 수 있는 기술
특징   엣지 로케이션이라고 하는 데이터 센터의 전 세계 네트워크를 통해 콘텐츠를 제공
  사용자가 콘텐츠를 요청하면 지연 시간이 가장 낮은 엣지 로케이션으로 요청이 라우팅되므로 가능한 최고의 성능으로 콘텐츠가 제공
장점

캐싱 캐싱을 통해 CDN을 통해 전 세계 각 지역에 효율적인 속도로 컨텐츠 제공
부하 분산 CloudFront에 배치되지 않은 원본 서버를 오리진 서버라고 하는데, 오리진 서버에서만 컨텐츠를 받아올 경우 트래픽이 한 곳에 몰리는 문제 발생할 수 있음

 

API Gateway

대분류 소분류 내용
개요   REST 및 WebSocket API를 생성, 게시, 유지, 모니터링 및 보호하기 위한 AWS 서비스.
  API 개발자는 AWS 또는 다른 웹 서비스를 비롯해 AWS 클라우드에 저장된 데이터에 액세스하는 API를 생성할 수 있습니다.
  API Gateway API 개발자는 자체 클라이언트 애플리케이션에서 사용할 API를 생성할 수 있습니다. 또는 타사 앱 개발자가 API를 사용하도록 제공할 수도 있습니다.
특징   뛰어난 확장성 제공 및 API를 만들고 운영하고 모니터링 가능
  모니터링은 CloudWatch 로그를 통해 확인
  BackEnd 서비스(웹 애플리케이션, EC2)에 들어있는 데이터 접근 허용
Pay As You Go 계속 비용을 지불하는 것이 아니라 API를 사용할 때 오래걸리는지, 얼마나 많은 데이터를 처리하는지에 대해 비용 지불
아키텍쳐   API Gateway는 최대 수십만 개의 동시 API 호출 허용 및 처리에 관련된 모든 작업을 다룹니다. 여기에는 트래픽 관리, 권한 부여 및 액세스 제어, 모니터링, API 버전 관리가 포함
  API Gateway는 애플리케이션이 EC2에서 실행 중인 워크로드, AWS Lambda에서 실행 중인 코드, 웹 애플리케이션, 실시간 통신 애플리케이션과 같은 백엔드 서비스에서 데이터, 비즈니스 로직 또는 기능에 액세스할 수 있게 해주는 “정문” 역할
API 생성 RESTful API 생성 HTTP 기반
상태 비저장 클라이언트-서버 통신 활성화
표준 HTTP 메서드(get, post, put, patch, delete)를 구현
Websocket API 생성 클라이언트-서버 간의 상태를 저장하는 전이중 통신을 지원하는 WebSocket 프로토콜 준수
수신 메시지를 메시지 콘텐츠에 따라 라우팅
RESTful API 개요
  • API 종류들 중 하나로
  • REpresentational State Transfer
    • 상태에 변화를 주기 위해 그 정보를 서버와 클라이언트 간에 공유하고 주고받기 위해 사용
  • CREATE(post), READ(get), UPDATE(put), DELETE(delete), PATCH 5개의 http통신 지원
  • json 형태로 요청을 받고 해결함
  관리의 힘든 점
  • Authentication & Authorization
    • 애플리케이션에서 모든 사용자들이 API 요청을 하는 것을 허용해서는 안된다.(회원/비회원, 로그인/비로그인)
    • API 요청을 모니터링 해야함
    • 더 나은 성능을 위해 API요청 캐시 시스템 필요(사용한 API를 캐시에 넣어 빠르게 요청할 수 있도록 함)
기능 일반 기능
  • 상태 저장(WebSocket) 및 상태 비저장(HTTP 및 REST) API에 대한 지원.
  • 강력하고 유연한 인증 메커니즘(예: AWS Identity and Access Management 정책, Lambda 권한 부여자 함수, Amazon Cognito 사용자 풀 등).
  • API를 게시하기 위한 개발자 포털.
  • 변경 사항을 안전하게 롤아웃하기 위한 Canary 릴리스 배포.
  • API 사용 및 API 변경에 대한 CloudTrail 로깅 및 모니터링.
  • 경보 설정 기능을 포함한 CloudWatch 액세스 로깅 및 실행 로깅.
  • AWS CloudFormation 템플릿을 사용하여 API 생성을 활성화할 수 있는 기능.
  • 사용자 지정 도메인 이름 지원.
  • 일반적인 웹 익스플로잇으로부터 API를 보호하기 위해 AWS WAF와 통합.
  • 성능 지연 시간 파악 및 학습을 위해 AWS X-Ray와 통합
호스팅 기능
  • 새 브랜치를 연결하여 프런트엔드 및 백엔드에 대한 프로덕션 및 스테이징 환경을 관리합니다.
  • 애플리케이션을 사용자 지정 도메인에 연결합니다.
  • framework인 Next.js를 사용하여 생성된 SSR 웹 앱을 배포하고 호스팅합니다.
  • 풀 요청 미리 보기를 설정하여 코드 검토 중에 변경 사항을 미리 봅니다.
  • 엔드 투 엔드 테스트를 통해 앱 품질을 개선하세요. 
  • 웹 앱을 암호로 보호하여 공개적으로 액세스하지 않고도 새로운 기능에 대해 작업할 수 있습니다. 
  • 재작성 및 리디렉션을 설정하여 SEO 순위를 유지하고 클라이언트 앱 요구 사항에 따라 트래픽을 라우팅합니다.
  • 즉각적인 캐시 무효화는 모든 코드 커밋에서 앱이 즉시 업데이트되도록 합니다.
  • Atomic 배포는 전체 배포가 완료된 후에만 웹 앱이 업데이트되도록 하여 유지 관리 기간을 제거합니다. 이렇게 하면 파일이 제대로 업로드되지 않는 시나리오가 제거됩니다.
  • 레이아웃 문제를 식별하기 위해 다른 모바일 장치에서 렌더링된 앱의 스크린샷을 가져옵니다.
Admin 기능
  • 시각적 데이터 모델링을 사용하면 클라우드 인프라 대신 도메인별 개체에 집중할 수 있습니다.
  • 앱에 대한 인증을 설정합니다.
  • 강력하고 이해하기 쉬운 승인.
  • 코드로서의 인프라는 AWS CloudFormation으로 모든 백엔드 기능을 구성합니다.
  • Amplify 명령줄 인터페이스(CLI)와 함께 작동합니다. 관리 UI에서 수행하는 모든 업데이트는 CLI로 가져올 수 있습니다.
  • 이메일을 통해 사용자를 초대하여 백엔드를 구성하고 관리합니다. 이러한 사용자는 이메일로 Amplify CLI에 로그인할 수도 있습니다.
  • 마크다운을 지원하는 콘텐츠 관리.
  • 앱의 사용자 및 그룹 관리
API 종류 REST API 백엔드 HTTP 엔드포인트, Lambda 함수 또는 기타 AWS 서비스와 통합되어 있는 HTTP 리소스와 메서드의 모음입니다. 이 모음을 하나 이상의 스테이지로 배포할 수 있습니다. 일반적으로 API 리소스는 애플리케이션 로직에 따른 리소스 트리로 정리되어 있습니다. 각 API 리소스는 API Gateway에서 지원하는 전용 HTTP 동사가 있는 API 메서드를 하나 이상 표시할 수 있습니다.
  HTTP API 백엔드 HTTP 엔드포인트 또는 Lambda 함수와 통합된 라우팅 및 메서드의 모음입니다. 이 모음을 하나 이상의 스테이지로 배포할 수 있습니다. 각 라우팅은 API Gateway에서 지원되는 고유의 HTTP 동사를 가진 API 메서드를 하나 이상 노출할 수 있습니다.
  WebSocket API 백엔드 HTTP 엔드포인트, Lambda 함수 또는 기타 AWS 서비스와 통합되어 있는 WebSocket 경로와 경로 키의 모음입니다. 이 모음을 하나 이상의 스테이지로 배포할 수 있습니다. API 메서드는 프런트 엔드 WebSocket 연결을 통해 호출되며, 이 엔드포인트를 등록된 사용자 지정 도메인 이름과 연결할 수 있습니다.

 

Lambda

대분류 소분류 내용
개요   AWS에서 제공하는 서버리스 컴퓨팅 플랫폼. 서버리스란, 서버가 없다는 의미가 아니고 개발자가 서버의 존재를 신경쓸 필요 없이 AWS에서 처리해준다는 의미(서버가 정상적으로 구동중인지, 개수와 사양이 적당한지 등등) 사용한 컴퓨팅 시간이나 용량에 대해서만 비용 지불
특징   서버를 프로비저닝하거나 관리할 필요 없이 코드를 실행
  모든 유형의 애플리케이션이나 백엔드 서비스에 대한 코드를 별도의 관리 없이 실행 가능
  코드를 업로드하면 Lambda에서 높은 가용성으로 코드를 실행 및 확장하는 데 필요한 부분을 처리함
  다른 AWS 서비스에서 코드를 자동으로 트리거하도록 설정하거나 웹 또는 모바일 앱에서 직접 코드를 호출할 수 있음
  프로비저닝이란 사용자의 요구에 맞게 시스템 자원을 할당, 배치, 배포해 두었다가 필요 시 시스템을 즉시 사용할 수 있는 상태로 미리 준비해 두는 것을 말합니다. 서버 자원 프로비저닝, OS 프로비저닝, 소프트웨어 프로비저닝, 스토리지 프로비저닝, 계정 프로비저닝 등이 있고 수동으로 처리하는 '수동 프로비저닝'과 자동화 툴을 이용해 처리하는 '자동 프로비저닝'이 있습니다.
장점   인프라에 대한 걱정 없이 코드 실행 가능 -> NoOps 실현

  트리거를 이용해 애플리케이션을 자동으로 확장/축소 가능.
  코드가 병렬로 실행되고 각 트리거는 개별적으로 처리되어 정확히 워크로드 규모에 맞게 조정됨.
  100ms 단위로 코드가 실행되는 시간 및 코드가 트리거되는 회수를 측정하여 요금을 부과하고, 코드가 실행되지 않을 때는 요금이 부과되지 않음.
  언제 쓰면 좋은가 코드를 계속 실행시키기 보다 특정한 시기에만 실행시키는 경우 사용하면 유용
단점   코드 용량이 최대 250MB
  함수 실행 시간은 최대 15분
  처음 함수 호출 시, Cold Start를 하게 되고 초기 지연시간 발생
  비쌈
사용 예제 실시간 파일 처리 Amazon S3를 사용하여 업로드하는 즉시 데이터를 처리하도록 AWS Lambda를 트리거할 수 있음.
Lambda를 사용하여 실시간으로 이미지를 썸네일하고, 동영상을 트랜스코딩하고, 파일을 인덱싱하고, 로그를 처리하고, 콘텐츠를 검증하고, 데이터를 수집 및 필터링할 수 있음
실시간 스트림 처리 AWS Lambda 및 Amazon Kinesis를 사용하여 애플리케이션 활동 추적, 트랜잭션 주문 처리, 클릭 스트림 분석, 데이터 정리, 지표 생성, 로그 필터링, 인덱싱, 소셜 미디어 분석, IoT 디바이스 데이터 텔레메트리 및 측정을 위한 실시간 스트리밍 데이터를 처리할 수 있음.
추출, 변환, 로드 AWS Lambda를 사용하여 DynamoDB 테이블의 모든 데이터 변경에 대한 데이터 검증, 필터링, 정렬 또는 기타 변환 작업을 수행하고 변환된 데이터를 다른 데이터 스토어로 로드할 수 있음.
IoT 백엔드 AWS Lambda 및 Amazon Kinesis를 사용하여 사물 인터넷(IoT) 디바이스 데이터 텔레메트리 및 분석을 위한 백엔드를 구축할 수 있음.
모바일 백엔드 AWS Lambda 및 Amazon API Gateway를 사용하여 API 요청을 인증 및 처리하도록 백엔드를 구축할 수 있음.
웹 애플리케이션 AWS Lambda를 다른 AWS 서비스와 결합하면, 확장성, 백업 또는 여러 데이터 센터 중복에 필요한 별도의 관리 작업 없이 개발자가 자동으로 확장 및 축소되고 여러 데이터 센터에 걸쳐 가용성이 높은 구성에서 실행되는 강력한 웹 애플리케이션을 구축할 수 있음.

 

SQS (Simple Queue Service)

대분류 소분류 내용
개요   말그대로 간단한 큐 서비스로, 다른 MessageQueue에 존재하는 message routing, fan-out, distribution lists등을 지원하지 않는다. 메시지 생산자가 만들어낸 메시지를 메시지 소비자가 가져갈 수 있게 해주는 것이 전부
특징   분산 시스템 및 서버리스 어플리케이션 분리, 확장을 위한 완젼 관리형 메시지 대기열 서비스
  MOM(Message Oriented Middleware) 에 대한 완전관리
  AWS 콘솔, CLI, SDK 등을 활용하여 서비스 가능
  리젼 단위 이용, (다른 리전간 SQS 공유 불가)
  메시지 보관 기간 (1분 ~ 14일까지)
  메시지 크기 (1kb ~ 256kb), 더 큰 크기의 메시지는 SQS 확장 클라이언트 이용 (최대 2Gb)
  inflight 메시지 수(메시지가 삭제되지 않은 개수)
  • 표준: 120,000개
  • FIFO: 20,000개
  2가지 타입 (Standard, FIFO) 로 구성 가능
  • Standard
    • 최대 처리량
    • Best effort 순서
    • 최소 1회 전달 제공
  • FIFO
    • 정확한 순서의 보장
    • 정확히 1번 실행
    • .fifo 이름을 사용해야한다.
장점 관리 오버헤드 제거 가용성, 확장성, 완젼관리형
메시지 전달 안정성 메시지 손실 없이 전달 가능
시스템간 커플링 해소
메시지 복제본 저장
데이터 안전성 유지 KMS 이용한 안전한 메시지 관리
CloudTrail 키사용 내역 기록
탄력적, 비용효율적 동적확장 지원
용량계획, 사전 프로비저닝 고민 필요 없음
동작 과정   메시지 SQS에 전송 → 소비하는 쪽에서 메세지를 SQS에서 가져오고 다른 서버가 중복으로 읽지 못하도록 visibility timeout 사용(처리 후 삭제 요청이 있기 전까진 메세지 삭제 안됨) → 처리 후 메세지 삭제 요청 → SQS에서 메세지 삭제
용어 Delivery Delay 프로듀싱서버에서 SQS로 메시지를 전달했을 때 Queue에 바로 넣을지 아니면 조금 시간을 두고 넣을지를 정하는 설정입니다. sync 등의 이유로 Queue의 메시지를 바로 컨슘하면 안될 때 사용할 수 있습니다.
Retention이라는 것은 SQS에 메시지가 머무를 수 있는 최대시간을 말합니다. 해당 시간이 지나면 메시지는 삭제됩니다.
Visibility Timeout 중복 처리를 막기위해 컨슈밍서버 한대가 컨슘했을 때 다른 서버들은 컨슘할 수 없게하는 대기시간을 말합니다. 다른 서버에서 컨슘하기 위해서는 Visibility Timeout을 기다릴 수 밖에 없습니다.
Polling Message Count란 컨슈밍서버에서 한번의 요청으로 SQS에 있는 데이터를 가져올 수 있는 숫자입니다.
Long Time Polling과 Short Time Polling 컨슈밍서버에서 컨슘했을 때 만약 queue가 비어있다면 얼마나 대기할 건지에 대한 부분입니다. Short Time Polling은 Receive message wait time이 0초이며 나머지는 Long Time Polling으로 정의하고 있습니다.

 

IAM (Identity Access Management)

대분류 소분류 내용
개요   최초에 주어지는 ROOT 계정이 있고, IAM 계정을 생성하여 계정의 보안을 관리하는 서비스
  AWS의 리소스에 대해 개별적으로 접근할 수 있도록 제어와 권한을 가질 수 있고, 한 루트 계정에 여러 개의 IAM 계정을 만들어(기본적으로 1인 1계정 원칙) 각 계정마다 접근 가능한 서비스에 제한을 둘 수 있다.
기능 계정에 대한 공유 엑세스 암호나 엑세스 키를 공유하지 않고도 AWS 계정의 리소스를 관리하고 사용할 수 있는 권한을 다른 사람에게 부여 가능
세분화된 권한 리소스에 따라 여러 사람 또는 EC2 인스턴스에서 실행되는 애플리케이션에 안전하게 제공
멀티 팩터 인증(MFA) 계정 작업을 위해 암호나 엑세스 키 뿐안 아니라 OTP같은 특별히 구성된 디바이스 코드 제공(루트계정은 필히 설정해놔야함)
자격 증명 연동 기업 네트워크나 인터넷 자격 증명 공급자와 같은 다른 곳에 이미 암호가 있는 사용자에게 AWS계정에 대한 임시 엑세스 권한 부여 가능
IAM 엑세스 방식 AWS Management Console, AWS 명령줄 도구(CLI, Window용 PowerShell), AWS SDK, IAM HTTPS API
특징 접근키(Access Key), 비밀키(Secret Access Key) 터미널 혹은 api를 통하여 접근키와 비밀키를 가지고 AWS 서비스를 원격에서 사용 가능
디테일한 접근 권한 부여 기능 개별 IAM 유저별로 다르게 권한 부여 가능
비밀번호를 수시로 변경 가능 각 유저마다 보안을 위해 한달 혹은 분기별로 AWS 사용자들의 비밀번호를 일괄적으로 업데이트하도록 설정 가능
다중 인증 기능(Multi-Factor Authentication) AWS 외부 계정을 통해 사용자 인증을 요구하는 강화된 보안 가능
유니버설(Universal) IAM은 지역 연결이 필요하지 않고 유니버셜함(전세계 여러 서버에 데이터 복제되어 보관됨. 설정 등이 바뀌면 이 작업이 수행되므로 어느정도 시간 소요)

 

Cognito

대분류 소분류 내용
개요   웹 및 모바일 앱에 대한 인증, 권한 부여 및 사용자 관리를 제공합니다. 사용자는 사용자 이름과 암호를 사용하여 직접 로그인하거나 Facebook, Amazon, Google 또는 Apple 같은 타사를 통해 로그인 가능
기능 사용자 풀 사용자 풀에서 사용자는 cognito 혹은 서드 파티 자격 증명 공급자를 통해 로그인 할 수 있다. 사용자 풀의 모든 멤버는 디렉토리 프로필을 보유하며 SDK를 통해 엑세스 가능
제공사항
  • 가입 및 로그인 서비스
  • 사용자 로그인을 위한 내장 사용자 지정 웹 UI
  • 소셜 로그인
  • AWS Lambda 트리거를 통한 사용자 지정 워크플로우 및 사용자 마이그레이션
자격 증명 풀 사용자는 임시 AWS 자격증명을 얻어 S3, DynamoDB 등의 다른 AWS 서비스에 액세스 가능.
지원되는 공급자
  • Amazon Cognito user pools
  • Facebook, Google, Login with Amazon 및 Sign in with Apple을 통한 소셜 로그인
  • OpenID Connect(OIDC) 공급자
  • SAML 자격 증명 공급자
  • 개발자 인증 자격 증명

SES (Simple Email Service)

대분류 소분류 내용
개요   사용자의 이메일 주소와 도메인을 사용해 SMTP방식과 API방식으로 이메일을 보내고 받기 위한 경제적이고 손쉬운 방법을 제공하는 아마존의 이메일 플랫폼
작동방식  
  • 이메일 발신자 쪽에서 Amazon SES에게 하나 이상의 수신자에게 이메일을 전송하는 요청을 보냄
  • 요청이 유효하면 Amazon SES가 이메일을 수락
  • Amazon SES는 인터넷을 통해 수신자의 수신 장치에 메시지를 보냅니다
  • 이 시점에서 다양한 가능성이 존재합니다. 예:
    • ISP가 성공적으로 메시지를 수신자의 수신함으로 전송합니다.
    • 수신자의 이메일 주소가 존재하지 않습니다. 따라서 ISP가 Amazon SES로 반송 메일 알림을 전송합니다.
    • 수신자가 메시지를 수신하지만 이를 스팸으로 여겨 ISP에게 수신 거부를 제기합니다.
이메일 형식  
  • 헤더 - 라우팅 지침과 메시지에 대한 다양한 정보를 포함합니다. (발신자 주소, 수신자 주소, 제목, 날짜 등)
  • 본문 - 메시지 텍스트 자체를 포함합니다.
  • 엔벨로프 - SMTP 세션에서 이메일 클라이언트와 메일 서버 사이에 통신되는 실제 라우팅 정보를 포함합니다.

 

VPC (Virtual Private Cloud)

대분류 소분류 내용
개요  
  • AWS 계정 전용 가상 네트워크. AWS 클라우드에서 다른 가상 네트워크와 논리적으로 분리되어 있고, EC2 인스턴스 같은 AWS 리소스를 VPC에서 실행할 수 있다.
  • VPC를 만들 때 VPC의 IPv4 주소의 범위를 CIDR(Classless Inter-Domain Routing) 블록형태로 지정해야 한다.(eg. 10.0.0.0/16) 이것은 VPC의 기본 CIDR 블록이다.
  • VPC를 생성한 후 각 가용 영역에 하나 이상의 서브넷 추가 가능
개념 서브넷 VPC의 IP 주소 범위
CIDR블록 클래스 없는 도메인 간 라우팅. 인터넷 프로토콜 주소 할당 및 라우팅 집계 방법
라우팅 테이블 네트워크 트래픽을 전달할 위치를 결정하는데 사용하는 라우팅이라는 이름의 규칙 집합
DHCP 옵션 세트 VPC 서브넷으로 시작될 때 EC2 인스턴스로 전달되는 구성 정보(eg. 도메인 이름, 도메인 이름 서버)
인터넷 게이트웨이 VPC의 리소스와 인터넷 간의 통신을 활성화하기 위해 VPC에 연결하는 게이트웨이
     

 

서브넷

대분류 소분류 내용
개요   VPC의 IP 주소 범위. EC2 인스턴스와 같은 AWS 리소스를 특정 서브넷으로 시작할 수 있다. 서브넷을 만들 때 해당 서브넷에 대한 IPv4 CIDR 블록을 지정하고 이는 VPC CIDR 블록의 서브넷이다. 각 서브넷은 단일 가용 영역 내에서만 존재해야 하며, 여러 영역으로 확장은 불가. 별도의 가용 영역에서 인스턴스를 시작함으로써, 단일 영역에서 장애가 발생할 경우 앱을 보호할 수 있다.
IP 유형 Pv4 전용 서브넷 내에서 시작된 모든 EC2 인스턴스는 IPv4전용으로 통신
듀얼스택(IPv4 및 IPv6) 서브넷 내에서 시작된 모든 인스턴스는 서브넷의 IP를 통해 통신
IPv6 전용 서브넷 내에서 시작된 모든 인스턴스는 IPv6 전용으로 통신
구성 방법 퍼블릭 서브넷 퍼블릭 인터넷에 연결 가능
프라이빗 서브넷 퍼블릭 인터넷이 연결 불가능
VPN 전용 서브넷 Site-to-Site VPN 연결을 위한 가상 프라이빗 게이트웨이로 라우팅
     

 

ECS (Elastic Container Service)

대분류 소분류 내용
개요   컨테이너화된 애플리케이션의 손쉬운 배포, 관리 및 조정에 도움이 되는 완전관리형 컨테이너 오케스트레이션 서비스
  ESC를 이용하여 EC2 인스턴스의 관리형 클러스터 혹은 AWS Fargate를 통한 서버리스 환경에서 애플리케이션을 손쉽게 실행 가능
컨테이너 관련 컨테이너화 컨테이너는 애플리케이션의 코드, 구성 및 종속성을 하나의 객체로 패키징하는 표준화된 방식을 제공. 컨테이너는 서버에 설치된 운영 체제를 공유하며 리소스가 격리된 프로세스 형태로 실행되므로 환경에 상관없이 빠르고 안정적이며 일관된 배포를 보장
컨테이너 특징
  • 하드웨어의 가상화를 하지 않고 커널만을 공유한다
  • 하드웨어 에뮬레이션이 없기 때문에 빠른 속도로 빠르게 실행된다
  • 이미지의 용량이 가상 머신에 비해 훨씬 작다
  • 컨테이너 간에 영향을 주지 않으며 도커와 같이 이미지 기반으로 컨테이너를 실행하는 경우 특정 실행 환경을 쉽게 재사용 할 수 있다
  • 실행/패치/업데이트 등 유지 관리와 관련하여 오버헤드가 감소한다
  • 서비스가 세분화 되어 있는 마이크로 서비스 아키텍쳐(MSA)의 특성에 컨테이너의 서비스 별 격리나 확장성 등을 잘 활용할 수 있다
  • 단, 처음 이미지를 정의한 OS에서만 사용 할 수 있다(리눅스라면 리눅스에서만 윈도우라면 윈도우에서만 가능)
도커의 작동 방식
  • 애플리케이션을 실행하기 위한 파일들의 모음을 이미지 라는 개념으로 관리
  • 이미지에는 애플리케이션의 종속성 미 실행에 필요한 정보가 포함되어 있음
  • 이러한 이미지는 로컬 혹은 도커 허브 등과 같은 원격 저장소에 태그를 붙여 커밋
  • 이 태그로 이미지의 버전 구분
  • 커밋한 이미지를 사용하여 컨테이너 생성. 생성한 컨테이너에는 포트 포워딩으로 접근 가능
  • 이미지를 구성하기 위해 다양한 패키지 다운로드나 환경 설정을 dockerfile에 작성 가능
컨테이너의 생성과 배포
  • 서비스를 구성하기 위해서는 여러 개의 애플리케이션이나 DB등의 결합 필요.
  • 위의 작동 방식만으로는 긴 명령어가 필요하고 컨테이너 생성 순서도 신경쓰는 등의 불편함이 있고, 이를 위해 도커 컴포즈(docker compose)라는 도구 제공
  • 도커 컴포즈를 이용하면 긴 명령어를 하나의 yaml 파일로 정의 가능하며 하나의 서버(호스트)에서 여러 개의 컨테이너를 배포 가능
여러 개의 서버 혹은 서버 클러스터링이 필요할 경우 서버 간의 컨테이너 관리를 어떻게 해야할까?
  • 이를 위해 다양한 서버들의 컨테이너를 관리하는 컨테이너 오케스트레이션이라는 개념이 필요하게 되었고 이런 기능을 하는 것을 컨테이너 오케스트레이션 툴이라고 한다.
  • 현재 많이 사용되고 있는 것은 kubernates, docker swarm, apache mesos, aws ecs
오케스트레이션 툴이 제공하는 일반적인 기능
  • 서버의 특성이나 자원, 배포 상태를 파악하여 컨테이너를 할당하는 스케쥴링
  • 서버에서 도커를 통해 지정된 컨테이너를 안전하게 실행
  • 업그레이드, 롤백 등 서비스의 배포에 관한 대응
  • 오류 등의 대응
  • 새로운 서버나 컨테이너가 추가되었을 때 발견하는 서비스 디스커버리(service discovery), 서버 간 네트워킹 등의 클러스터 리소스 생성
사용 이점 다양한 AWS의 서비스 연계 AWS에서 제공하고 있는 다양한 서비스들과 옵션들을 연계하여 더욱 효율적으로 컨테이너를 관리할 수 있습니다.
제어 플레인 또는 노드 관리 불필요 AWS Fargate를 통해 서버리스 환경을 이용할 수 있으며 제어 플레인 또는 노드를 관리, 인스턴스 패치 및 조정이 불필요하므로 운영에 소요되는 시간이 줄어듭니다.
컴퓨팅 비용 절감 클라우드 서비스라서 물리적 서버에 대한 요금을 절약할 수 있습니다. 또한 ECS는 프로비저닝 및 자동 조정을 자율적으로 처리하므로 컴퓨팅 비용을 최대 50%까지 절감할 수 있습니다.
보안 및 규제 요구 사항 충족 ECS는 AWS 관리 및 거버넌스 솔루션과 기본적으로 통합됩니다. 따라서 전 세계 거의 모든 규제 기관의 보안 및 규정 준수 표준을 충족할 수 있습니다.
관련서비스 AWS ECR(Elastic Container Registry) 컨테이너 이미지 저장소
AWS Fargate 종량제 서버리스 컴퓨팅 엔진입니다. ECS와 EKS 둘 다 호환 가능
AWS ELB(Elastic Load Balancer) 로드밸런서 입니다. ALB와 함께 사용하여 동적 포트를 지정할 수 있습니다.
AWS VPC ECS의 사용에 필요한 네트워크 리소스를 제공하는 서비스
AWS IAM 클러스터나 서비스 등 다양한 작업의 권한을 설정하는 서비스
AWS CloudWatch 컨테이너의 각 지표와 로그 등을 확인할 수 있습니다. 컨테이너형 애플리케이션 및 마이크로 서비스에 대한 모니터링, 트러블 슈팅 및 알람을 위한 서비스인 Container Insight도 제공하고 있습니다.
구성요소 Task(작업) Task ECS 의 최소 단위는 task. 그리고 1개 이상의 컨테이너가 task에 구성
Task Definition(작업 정의) Task의 구성요소는 task definition에 json 형식으로 작성되어 있음. 작성된 내용을 참고로 task가 구성
task definition에서 작업 및 컨테이너가 참고할 이미지, 사용할 리소스 양, 시작 유형, 로깅 구성 등 다양한 매개변수 정의 가능
Service(서비스) task definition을 참고하여 task가 실행되는데 원하는 수의 task를 유지, 관리하는 스케쥴러 역할
선택적으로 로드 밸런서 뒤에서 실행하여 로드 밸런싱과 오토 스케일링 가능
Continer Instacne(컨테이너 인스턴스) ECS 컨테이너 에이전트를 실행하고 cluster에 등록된 EC2 인스턴스를 의미
리눅스, 윈도우 OS를 지원하며 온프레미스 VM 등의 다른 OS도 지원
Fargate 시작 유형을 사용하는 task는 서버리스로 배포되므로 container instance는 적용되지 않음
Cluster(클러스터) 컨테이너 인스턴스의 논리적 그룹
작업 순서  
  • 컨테이너의 이미지를 저장소(ECR)에 커밋
  • task definition에서 사용할 이미지 및 시작 유형, 리소스 정의
  • cluster 생성
  • service가 task definition을 참고하여 task 생성
  • elb에 들어온 요청에 따라 오토 스케일링 및 로드 밸런싱
비고   ECR/ECS와 AWS code 시리즈와 함께 활용하여 코드의 커밋부터 배포까지 자동화를 하거나
ECS task를 위한 다양한 옵션(AWS Wavelength, AWS Outposts)등과 함께 사용하면 더욱 효율적이고 능동적인 컨테이너 생태계를 구축할 수 있습니다.

 

EC2 (Elastic Compute Cloud)

대분류 소분류 내용
개요   AWS EC2는 안전하고 크기 조정이 가능한 컴퓨팅 용량을 클라우드에서 제공하는 웹서비스
단시간에 여러가지 프로세서, 스토리지, 네트워킹, 운영체제, 구매모델을 선택하여 생성할 수 있고 사양변경이나 삭제도 쉽게 실행할 수 있는 서비스
AMI (Amazon Machine Images)   EC2 인스턴스를 시작하는데 필요한 정보가 들어있는 이미지. 가상 OS 환경 설정이라고 보면 될 듯..?
사용할 수 있는 OS  
  • Amazon Linux2
  • CentOS
  • RedHat Enterprise Linux
  • Windows Server
  • Ubuntu
성능 옵션 범용 인스턴스 균형 있는 컴퓨팅, 메모리 및 네트워킹 리소스를 제공하며, 다양한 여러 워크로드에 사용할 수 있습니다.
웹 서버 및 코드 리포지토리와 같이 이러한 리소스를 동등한 비율로 사용하는 애플리케이션에 적합합니다.
컴퓨팅 최적화 인스턴스 고성능 프로세서를 활용하는 컴퓨팅 집약적인 애플리케이션에 적합합니다.
배치 처리 워크로드, 미디어 트랜스코딩, 고성능 웹 서버, HPC(고성능 컴퓨팅), 과학적 모델링, 전용 게임 서버 및 광고 서버 엔진, 기계 학습 추론 및 기타 컴퓨팅 집약적인 애플리케이션에 매우 적합합니다.
메모리 최적화 인스턴스 메모리에서 대규모 데이터 세트를 처리하는 워크로드를 위한 빠른 성능을 제공하기 위해 설계되었습니다.
과속화된 컴퓨팅 인스턴스 하드웨어 액셀러레이터 또는 코프로세서를 사용하여 부동 소수점 수 계산이나 그래픽 처리, 데이터 패턴 일치 등의 기능을 CPU에서 실행되는 소프트웨어보다 훨씬 효율적으로 수행합니다.
스토리지 최적화 인스턴스 로컬 스토리지에서 매우 큰 데이터 세트에 대해 많은 순차적 읽기 및 쓰기 액세스를 요구하는 워크로드를 위해 설계되었습니다.
애플리케이션에 대해 지연 시간이 짧은, 수만 단위의 무작위 IOPS(초당 I/O 작업 수)를 지원하도록 최적화되었습니다.
보안그룹   가상의 방화벽을 만들 수 있는 설정. EC2 인스턴스의 인바운드, 아웃바운드의 허용 트래픽과 포트, IP주소를 설정하여 제한 가능
탄력적 IP   인스턴스에서 제공되는 IP는 중지하면 사라지게 되어 IP를 다시 확인해야하는 불편함을 줄이기 위해 주소를 취득하여 인스턴스에 연결하여 사용 가능. 이 경우 중지하고 다시 시작해도 IP 주소는 유지되므로 DNS에 설정하여 웹서버 등에 이용 가능
추가기능   EC2는 로드밸런싱을 통해 트래픽을 분산시키거나 오토스케일링을 통해 서버를 확장하여 안전한 환경을 유지하는 등이 가능
요금옵션 온디맨드 선결제 금액이나 장기 약정 없이 저렴하고 유연하게 Amazon EC2를 사용하기 원하는 사용자
단기의 갑작스럽거나 예측할 수 없는 워크로드가 있으며, 중단되어서는 안 되는 애플리케이션
Amazon EC2에서 처음으로 개발 또는 시험 중인 애플리케이션
스팟 인스턴스 시작 및 종료 시간이 자유로운 애플리케이션
컴퓨팅 가격이 매우 저렴해야만 수익이 나는 애플리케이션
대량의 서버 용량 추가로 긴급히 컴퓨팅 파워가 필요한 사용자
Savings Plans 1년 또는 3년 기간의 일정 사용량 약정을 조건으로 EC2 및 Fargate 사용량에 대해 저렴한 요금을 제공하는 유연한 요금
예약 인스턴스 수요가 꾸준한 애플리케이션
예약 용량이 필요할 수 있는 애플리케이션
총 컴퓨팅 비용을 절감하기 위해 1년 또는 3년 동안 EC2를 사용하기로 약정할 수 있는 고객
전용 호스팅 EC2에서 Microsoft 및 Oracle 같은 공급업체의 적격 소프트웨어 라이선스를 사용할 경우
기존의 물리적 서버에서 EC2를 사용할 경우
온디맨드로 구매 가능(시간당).
온디맨드 요금과 비교하여 최대 70% 할인된 예약 인스턴스로 구매 가능.
초당 결제 온디맨드, 예약 및 스팟 형태
모든 리전 및 가용 영역
Amazon Linux 및 Ubuntu

 

EKS (Elastic Kubernetes Service)

대분류 소분류 내용
개요   AWS 에서 만든 관리형 Kubernetes Service. EKS 를 사용하면 Kuberenetes 설치부터 운영까지 EKS가 해주기 때문에 직접 Kubernetes Cluster 를 구성하고 관리하는 것보다 쉽게 Kubernetes 를 사용할 수 있음. Amazon EKS는 오픈소스 kubernetes 의 최신버전을 실행하므로 kubernetes 의 모든 plugin과 tool을 사용할 수 있음
Kubernetes Master Node   AWS EKS가 직접 관리.
EKS에서 Master Node를 Control Plane 이라 부름
Kubernetes Worker Node   AWS EKS Node Groups가 관리.
EKS에서 Worker Node를 Data Plane 이라 부름
이점   무중단 서비스를 제공한다. 점진적 업데이트를 제공하여 서비스를 중단하지 않고도 애플리케이션을 업데이트 할 수 있다. 또한 자가회복 기능이 있어 특정 컨테이너에 갑작스러운 장애가 발생하더라도 곧바로 복제 컨테이너를 생성해서 서비스를 유지할 수가 있다.

 

Bastion Host

대분류 소분류 내용
개요   내부 네트워크와 외부 네트워크 사이의 게이트웨이
  VPC 내의 모든 인스턴스에 public ip를 부여할 수는 없기 때문에, 하나의 instance에만 public ip를 부여하고 bastion host를 해당 인스턴스로 연결.
  외부에서는 bastion host로 접속하고, host를 통해 내부 네트워크의 사설 ip로 되어있는 instance에 접근 가능

 

ECR (EC2 Container Registry)

대분류 소분류 내용
개요   Docker Container의 이미지를 저장하는 Repository 서비스. EC2에서 동작하는 Docker 이미지를 저장하고 공유할 수 있도록 제공하는 공간. IAM과 결합하여 Private Repository를 구성할 수 있다.
반응형

댓글