1. AWS란?
On Premise : 비용(초기에 모두 필요함), 서버 조달 기간(몇주-몇달), 서버 추가/변경(시간과 비용 발생) AWS : 비용(과금정책에 따른 비용 발생), 서버 조달 기간(몇 분), 서버 추가/변경(시간이 거의 들지 않음) Amazon Elastic Compute Cloud (EC2) : EC2는 AWS의 가장 핵심적인 서비스로 가상 서버를 나타냅니다. 참고로 가상 서버를 실행하는 머신 이미지를 Amazon Machine Image(AMI)라고 부르며, 실행된 가상 서버를 인스턴스라고 부릅니다 AWS Elastic Load Balancing (ELB) : ELB는 부하 분산 장치입니다. EC2 인스턴스 앞(Front)에 두고, 여러 개의 EC2 인스턴스에 통신을 분산해줍니다. ELB를 이용하면 가용성과 확장성이 높은 시스템을 쉽게 구축할 수 있습니다 Auto Scaling : Auto Scaling은 CPU 또는 메모리 사용량 등에 따라 EC2 인스턴스를 자동으로 늘리고 줄이는 서비스입니다. 이 기능을 사용하면 부하에 따라 자원을 자동으로 최적화할 수 있습니다. Auto Scaling 기능은 ELB와 함께 사용하는 경우가 많습니다 Amazon Simple Storage Service (S3) : S3는 온라인 스토리지 서비스입니다. 온라인이라는 글자가 붙은 이유는 데이터 조작에 HTTP/HTTPS를 통한 API가 사용되기 때문입니다 Amazon Glacier : Glacier는 빙하라는 의미로 데이터를 장기 보관하기 위해 설계된 서비스입니다. S3의 1/3의 비용으로 사용할 수 있습니다 Amazon Elastic Block Store (EBS) : EBS는 EC2 인스턴스에서 사용하는 스토리지입니다. 일종의 외장 하드디스크라고 생각하면 됩니다. EC2와는 네트워크를 기반으로 연결되며, 내부적으로 RAID1과 같은 구성으로 디스크가 확장됩니다. EBS는 스토리지 이미지를 스냅샷 형식으로 S3에 백업해서 보관 또는 복제를 쉽게 할 수 있습니다 Amazon Relational Database Service (RDS) : RDS는 데이터베이스 PaaS입니다. OS 계층 또는 미들웨어 패치 등은 모두 AWS가 자동으로 해줍니다. 레플리케이션(Replication, 데이터를 다른 컴퓨터로 복제하는 것)으로 마스터/슬레이브 구성, 특정 시간에 자동 백업 등 AWS가 제공하는 기능들이 있습니다. 데이터베이스 엔진은 Amazon Aurora, PostreSQL, MySQL, MariaDB, Oracle, SQL Server 등이 있습니다 Amazon ElasticCache : ElasticCache는 인 메모리 캐시 시스템 PaaS입니다. 지원하는 엔진은 Memcached와 Redis입니다. ElasticCache를 사용하면 데이터베이스 캐시를 통한 고속화, 애플리케이션 세션 스토어를 통한 장애 해결 능력 향상 등이 가능해집니다 Amazon Virtual Private Cloud (VPC) : VPC는 AWS 네트워크 내부에서 논리적으로 분리된 네트워크를 생성하는 서비스입니다. 원하는 프라이빗 주소로 네트워크 생성 또는 서브넷 분할할 수 있으므로, On Premise처럼 DMS 세그먼트 또는 Trusted 세그먼트 구성 등을 할 수 있습니다. 인터넷 게이트웨이 설정을 하면 인터넷과의 통신도 가능합니다. 또한, VPN 게이트웨이도 생성할 수 있으므로, 기존의 데이터 센터 또는 회사 내부의 네트워크와 연결할 수도 있습니다 AWS Direct Connect : Direct Connect는 AWS의 VPC에 접속하기 위한 전용선 접속 서비스입니다. 자신의 회사 또는 데이터 센터에서 전용선을 AWS에 직접 연결할 수 있습니다. On Premise와 클라우드를 모두 사용하는 하이브리드 클라우드 형태를 구성할 때 Direct Connect를 사용합니다 Amazon CloudFront : CloudFront는 AWS가 제공하는 콘텐츠 전송 네트워크(CDN) 서비스입니다. 콘텐츠를 엣지 로케이션(Edge Location)이라고 부르는 전 세계에 퍼져 있는 거점을 기반으로 전달합니다. 사용자로부터 가장 가까운 엣지 로케이션에서 데이터를 제공하므로 빠르게 데이터를 전송할 수 있습니다 Amazon Route 53 : Route 53은 도메인 이름 시스템(DNS) 서비스입니다. 취약성 또는 DDoS 공격에 대한 대응, 시간이 오래 걸리는 DNS 운용을 쉽게 할 수 있게 해줍니다. DNS는 인터넷의 근간을 담당하는 서비스이므로 100%의 SLA(Service Level Agreement, 서비스 품질)를 보증하고 있습니다 Amazon Simple Queue Service (SQS) : SQS는 메시지 큐 서비스입니다. SQS는 메시지의 가용성, 확장성, 큐 시스템의 신뢰성 등을 AWS가 높은 수준으로 구현하고 있습니다 Amazon Simple Notification Service (SNS) : SNS는 푸시 형태의 메시지 전달 서비스입니다. SNS를 사용하면 이메일, 모바일 푸시, SQS, HTTP/HTTPS 등의 다양한 프로토콜로 알림할 수 있습니다. 호출하는 쪽의 애플리케이션/프로그램은 SNS API를 사용해 처리를 작성하기만 하면 됩니다 Amazon Simple Email Service (SES) : SES는 메일 전송 서비스입니다. 단순한 전송 기능뿐만 아니라 메일 전송 품질을 위한 다양한 기능을 제공합니다 AWS Identity and Access Management (IAM) : IAM은 AWS의 계정 관리 서비스입니다. 사용자 또는 그룹에 대한 AWS 리소스 접근 권한 제어를 해줍니다. AWS를 안전하게 운용하려면 사용해야 하는 필수 서비스입니다 AWS CloudTrail : CloudTrail은 AWS API 호출을 기록하는 로깅 서비스입니다. CloudTrail를 사용해서 로그 데이터를 축적/분석할 수 있습니다 Amazon CloudWatch : CloudWatch는 AWS의 리소스 또는 애플리케이션 모니터링 서비스입니다. 각각의 리소스를 특정 조건을 사용해 감시할 수 있습니다. 예를 들어, CPU 사용률이 80%를 넘었을 때 알림을 보내는 것 등이 가능합니다 AWS Elastic Beanstalk : Elastic Beanstalk은 웹 애플리케이션 서버 PaaS입니다. 서버를 구축하지 않고도 Java, .NET, PHP, Node.js, Python, Ruby, Docker 플랫폼 등을 사용할 수 있습니다. Auto Scaling 설정을 하면 애플리케이션 확장 등을 자동으로 수행해줍니다. EC2에서 자체적으로 미들웨어를 구축하기 전에 Elastic Beanstalk만으로 구축할 수는 없는지 검토해보면 좋을 것입니다 AWS CloudFormation : CloudFormation은 AWS 환경 구축을 자동화하는 도구입니다. 서식에 따라 템플릿을 작성하면, 해당 템플릿을 기반으로 환경을 쉽게 재현할 수 있습니다. CloudFormation을 사용하면 AWS를 사용할 때 인프라 구축을 효율적으로 할 수 있습니다. 템플릿은 JSON 형식의 파일이며, Git 등의 저장소로 관리할 수 있습니다. 따라서 AWS 환경 자체를 코드로 관리할 수 있게 됩니다 |
2. AWS의 네트워크 서비스
VPC를 사용하면 AWS 환경의 인프라 자원을 기존의 네트워크에서 사용하는 것처럼 활용할 수 있습니다. 따라서 인터넷으로 접근할 필요가 없는 사내 시스템 등도 보안을 유지한 상태로 AWS로 가동시킬 수 있습니다
Direct Connect는 데이터 센터 또는 오피스의 네트워크와 AWS를 전용선으로 접속할 수 있게 해주는 서비스입니다. VPN보다도 안정된 빠른 통신 환경이 필요한 경우에 사용합니다. 예를 들어, DB 서버를 On Premise에 배치하는 하이브리드 구성에서 서버들끼리 고속 통신이 필요할 때 사용합니다
AWS의 서비스들끼리 연계할 때는 DNS 호스트 이름(FQDN)을 사용하는 것이 좋습니다. 예들 들어, 디폴트로 EC2 인스턴스는 기동될 때마다 IP 주소가 자동적으로 할당됩니다. 따라서 접근할 때 필요한 IP 주소가 계속해서 변합니다. 따라서 기동 때 자동으로 자신의 IP 주소를 FQDN으로 Route 53에 등록하면, IP 주소가 변경되어도 같은 FQDN 이름으로 해당 인스턴스에 접근할 수 있습니다
Route 53은 도메인 레지스트라(Domain Registrar) 서비스도 제공합니다. 이 서비스를 사용하면 도메인 구매부터 정보 설정까지 Route 53으로 한번에 관리할 수 있습니다. 새로운 도메인을 사용할 때는 물론이고 기존 시스템의 도메인을 마이그레이션하는 것도 가능합니다
Route 53의 장애 허용 아키텍처(Fault Tolerant Architecture)는 DNS Failover입니다. 예를 들어, 가동하고 있는 시스템에 장애가 발생해서 웹 사이트로 들어갈 수 없을 때 일시적으로 접속위치를 다른 서버로 전환하는 등에 사용합니다
AWS가 제공하는 네트워크는 크게 AWS 네트워크와 VPC 네트워크로 구분할 수 있습니다. AWS 네트워크는 인터넷에서 접근할 수 있는 네트워크를 나타내며, VPC 네트워크는 VPC 환경 내부에서만 사용할 수 있는 네트워크를 나타냅니다. 참고로 VPC 네크워크로 사용할 수 있는 서비스는 당연히 AWS 네트워크에서도 사용할 수 있습니다
하지만 서비스 조합에 따라서 VPC 네트워크로 사용하는 서비스도 AWS 네트워크 접속(인터넷 접속) 설정이 필요하기도 합니다. 예를 들어, VPC 네트워크 위의 EC2 인스턴스에서 S3에 접근하는 경우를 생각해 봅시다. S3는 AWS 네트워크로만 사용 가능한 서비스이므로, AWS 네트워크(인터넷) 통신 설정이 필요합니다
3. 하드웨어 리소스
인스턴스 스토리지는 EC2 인스턴스가 가동되는 물리 서버에 있는 로컬 디스크를 나타냅니다. 인스턴스 스토리지를 사용할 때 주의해야 하는 것은 인스턴스 스토리지에 있는 데이터는 EC2 인스턴스를 중지하면 사라진다는 것입니다. 따라서 처리에 필요한 임시 파일 또는 캐시 데이터 등을 저장할 때 사용합니다
EBS-Backed 인스턴스는 OS를 포함한 루트 디바이스 정보를 EBS에 저장한 인스턴스를 나타냅니다. AWS도 EBS-Backed 인스턴스를 권장하고 있습니다. EBS에 기록되므로, 인스턴스를 정지해도 변경 사항이 유지됩니다. 따라서 이후에 변경 내용이 반영된 상태로 인스턴스를 기동할 수 있습니다
반면 Instance Store-Backed 인스턴스는 OS를 포함한 루트 디바이스 정보를 S3에 저장한 인스턴스입니다. 인스턴스 기동 때는 S3에서 인스턴스 스토리지에 데이터를 복사하고 기동합니다. 이후에 다시 기동하면 S3에서 루트 디바이스를 처음부터 읽어 들이므로, 이전의 변경 사항은 모두 파기됩니다
EBS를 생성할 때 암호화 옵션을 활성화할 수 있습니다. 암호화 옵션을 활성화한 EBS는 읽고 쓰는 데이터들을 암호화하게 됩니다
EC2 인스턴스 또는 EBS를 운용할 때 빼놓을 수 없는 것이 AMI와 EBS 스냅샷이라는 백업입니다. 인스턴스 또는 EBS로부터 AMI, EBS 스냅샷을 생성하면, 언제든지 해당 시점으로 복구할 수 있습니다
Amazon Machine Image(AMI)는 가상 서버에 있는 인스턴스 기동에 필요한 정보를 저장하고 있습니다
EBS 스냅샷은 EBS를 백업해서 S3에 저장하는 기능입니다
S3는 버킷(Bucket)이라는 컨테이너를 놓을 리전을 선택하고, 해당 컨테이너 내부에 객체(Object)라는 형태로 데이터를 저장합니다
S3에 데이터를 저장할 때는 데이터를 자동으로 암호화하는 서버 사이드 암호화(SSE)를 활용할 수 있습니다
S3 버킷, 객체에서 이벤트가 발생했을 때 다음과 같은 이벤트 알림을 보낼 수 있습니다
- SNS 토픽으로 메시지 발행
- SQS 큐에 메시지 생성
- Lambda Function으로 알림
S3는 정적 콘텐츠를 제공하는 웹 호스팅 기능도 제공합니다. 추가로 정적 웹 사이트에는 S3의 자체적인 도메인이 할당되는데요. Route 53 등의 도메인 이름 서비스(DNS)를 사용해서 다른 도메인을 부여할 수 있습니다
EBS 스냅샷과 S3 객체의 차이
: EBS 스냅샷은 S3에 저장됩니다. 하지만 S3의 객체처럼 REST, SOAP 통신에서 로컬 환경으로 가져오는 등의 작업을 할 수 없습니다. EBS 스냅샷은 어디까지나 EC2 내부에서만 사용할 수 있게 한정되어 있습니다
S3의 버전 관리
: S3는 간단한 버전 관리 기능도 가지고 있습니다. 버전 관리 기능을 사용하면 객체를 덮어쓰거나 삭제할 때 이전 버전의 객체를 자동으로 저장해줍니다
S3 수명 주기 설정
: S3에는 객체 생성부터 전환/제거까지의 수명을 관리하고 설정하는 수명 주기(Life Cycle) 설정 기능이 있습니다
Amazon Glacier
: Amazon Glacier는 S3같은 내구성을 가지면서 더 저렴한 가격으로 사용할 수 있는 아카이브 스토리지 서비스입니다. 저렴하지만 데이터의 저장과 추출에 시간이 조금 걸립니다. 추가로 S3와 다르게 저장하는 데이터에 명칭을 붙일 수 없으며, 자동 채번(Auto Numbering)으로 부여되는 아카이브 ID로 관리됩니다. 따라서 Glaicer는 장기간 보존하며, 접속 빈도가 낮은 데이터를 저장하는 데 적합하다고 할 수 있습니다
4. 애플리케이션 기반
RDS는 자동 백업과 DB 스냅샷이라는 두 가지 백업 방법을 제공합니다. 자동 백업을 하면 1일에 한번 스냅샷을 생성할 수 있습니다. 생성한 스냅샷은 S3에 저장됩니다. 보존 기간은 최소 1일, 최대 35일입니다. 수동 백업(DB 스냅샷)은 보존 기간에 제한이 없습니다
RDS에 접근할 때는 반드시 DNS를 사용합니다
멀티 AZ 기능은 RDS의 가용성을 높이는 기능입니다
Elastic Beanstalk는 미들웨어, EC2 인스턴스, RDS, ELB, Auto Scaling, CloudWatch를 사용한 감시와 알림 설정, SNS를 사용한 알림 등을 포함한 서비스를 운용하기 위해 필요한 환경을 모두 자동으로 구축해줍니다
5, AWS의 애플리케이션 서비스
Amazon Simple Queue Service(SQS)에서 작업(Job) 등록자는 메시지를 사용해 큐에 작업을 등록합니다. 수신자는 SQS에 지속적으로 폴링하며, 메시지가 있을 경우 메시지를 받아서 어떠한 처리를 하게 됩니다. 처리를 할 때에는 락(lock)이 걸리므로 다른 수신자는 해당 메시지를 확인할 수 없습니다. 처리가 완료되면 큐에서 메시지가 삭제됩니다
SQS는 다음과 같은 2가지 원칙을 가지고 동작합니다
- 전송한 메시지는 무조건 도달한다. 다만 2번 이상 같은 메시지를 수신할 가능성은 있다
- 메시지의 순서는 보장하지 않는다
SQS를 사용할 때는 이러한 2가지 원칙을 이해하고 애플리케이션을 구현해야 합니다
Amazon Simple Notification Service (SNS)는 푸시 형태의 알림 서비스입니다. 사용할 수 있는 프로토콜은 SMS, email, http/https, SQS, iOS, Android 등의 모바일 장치입니다
SNS는 토픽이라는 단위로 관리합니다
CloudWatch 알림 기능
CloudWatch Logs는 로그 수집과 감시라는 2가지 기능이 있습니다
ref : https://horajjan.blog.me/221216271467
'서버(Server) > Aws' 카테고리의 다른 글
DynamoDB를 선택하는 잘못된 이유 (0) | 2018.05.18 |
---|---|
DynamoDB 핵심 구성 요소 (0) | 2018.05.17 |
AWS Databases (RDS) (0) | 2018.05.16 |
Network ACL(Access Control List) (0) | 2018.05.15 |
AWS : linux 에서 초기 세팅 및 npm , nodejs , 설치하기 (Setup nodejs development environment in Amazon EC2, perfectly) (0) | 2018.05.14 |