출처 AWS 시스템 설계와 마이그레이션을 보고 정리한 내용입니다.
- 목차
- 가상 서버 EC2
- 서버리스 컴퓨터 처리 기반 Lambda
- 스토리지 서비스
- 데이터 베이스 서비스, 데이터 처리 서비스
- 네트워크 서비스
- AWS 관리 도구
- 계정 관리
- 보안도구
- 알림 및 모니터링 서비스
Amazon EC2는 클라우드 상에서 가상 서버(인스턴스)와 서버 백업 이미지(AMI), 디스크(EBS), 방화벽(보안 그룹), 고정 글로벌(Elastic IP)등을 이용할 수있는 서비스입니다.
EBS는 기존 온프레미스 환경의 하드디스크, SSD에 상응합니다. EBS는 여러 볼륨 타입 중에서 선택할 수 있고, 종류에 따라 IOPS와 가격이 달라집니다.
EC2와 자주 같이 이용하는 것이 ELB입니다. ELB는 흔히 말하는 로드 밸런서로 여러 EC2 인스턴스 사이에서 트래픽을 자동으로 분산 시킵니다. ELB를 이용함으로써 AWS 상에서도 가용성과 안전성이 높은 시스템을 구축할 수 있습니다.
ELB는 자동 스케일링이라고 불리는 인스턴스를 늘렸다 줄였다 하는 기능과 같이 쓰이는 경우가 많습니다. 자동 스케일링을 이요하면 평상시에는 처리에 필요한 최소한의 대수로 운영하면서 부하가 늘어나면 그때 인스턴르를 늘리는 것이 가능 합니다.
AWS Lambda는 프로그램을 실행하는 컴퓨팅 엔진입니다. 프로그램의 실행 기반으로 AWS가 관리하기 때문에 서버의 유지보수가 필요 없습니다. 필요한 프로그램을 업로드하기만 하면 이용할 수 있습니다.
Lambda는 API를 통해서 실행하는 것 외에도 데이터 저장과 같은 이벤트 알림에서 호출하거나 API 게이트웨이라는 HTTP의 API 생성 서비스와 조합해서 이용합니다.
EBS외에도 S3 서비스가 있습니다.
Amazon S3는 99.99999999999%의 내구성을 구현하도록 설계된 용량 무제한 스토리지 서비스입니다. 신뢰성이 높을 뿐더러 요금도 저렴하기 때문에 AWS에서 데이터 저장의 중심적인 존재입니다. AWS의 각종 서비스에서도 내부적으로 S3를 이용하고 있습니다.
단순한 스토리지 기능만이 아닌 웹 호스팅 기능과 암호화 기능, 세세하고 유연한 액세스 관리, 이벤트 알림, 라이프 사이클에서의 데이터 삭제 등의 풍부한 기능을 갖추고 있습니다. 아키텍처를 고려하는 데 있어서 매우 사용하기 편리하고 정적 콘텐츠 전송, 시스템 간의 데이터 송수신, 애플리케이션 배포 등 데이터 저장 외에도 많은 곳에서 활약하고 있습니다.
S3에는 오브젝트마다 스토리지 클래스가 설정돼 있습니다. 스토리지 클래스 마다 데이터 저장, 요금 API 액세스 과금이 다르므로 오브젝트의 용도에 따라 스토리지 클래스를 구분해서 사용하면 비용을 절감할 수 있습니다.
클래스 | 설명 |
---|---|
표준 스토리지 | 기본 스토리지 클래스 |
저빈도 엑세스 스토리지(STANDARD_IA) | 표준 스토리지와 같은 내구성을 갖췄지만 가용성이 떨어진다. 데이터 저장 요금은 싸다. |
Amazoe Glacier | S3와는 별도의 서비스지만 연계 서비스, 표준 스토리지와 같은 내구성, 데이터 꺼내는데 느림, 데이터 자장 요금은 제일 저렴 |
저 이중화 스토리지(RSS) | 데이터 복제가 두 곳에 있음으로 내구성은 연간 99.99% 썸네일 이미지의 저장 등 생성 가능 한 데이터 이용 |
Amazon EFS는 NFS v4.1을 지원하는 파일 스토리지 서비스. 여러 EC2에서 마운트할 수 있고, NAS 처럼 사용할 수 있다. EBS와 비교하면 멀티 AZ, 자동 스케일링 드의 특징이 있다.
RDS는 클라우드상에서 관계형 데이터베이스를 이용할 수 있는 서비스입니다. AWS RDMS를 이용할 경우 EC2 인스턴스에 RDMS를 설치하는 방법과 AWS가 제공하는 RDS를 사용하는 두 가지 방법이 있습니다.
AWS RDS를 사용하면 데이터베이스 설치 및 설정이 이미 돼있고 패치 적용 및 백업도 자동으로 처리됩니다. RDS를 사용하면 구축과 운용 비용을 절감할수 있습니다.
Mysql PostgresSQL의 경우에는 Amazone Aurora 라고 하는 AWS RDBMS를 독자적으로 재설계한 서비스를 사용할 수 있습니다. Aurora는 RDS 장애 발생시 감지, 지동 장애 조치. 디스크의 자동 확장, 읽기 전용 레플리카 같은 가용성을 높이는 기능과 같은 스펙의 하드웨어에서 구축한것에 비해 몇배의 선능을 발휘 하는 등 뛰어난 특징이 있습니다.
NoSQL 데이터베이스 서비스도 제공합니다. 온프레미스를 마이그레이션 할 대 자주 사용하는 서비스 중하나로 ElsaticCache가 있습니다.
AWS에서는 가용성을 향상을 위해 ELB를 사용할 때가 많지만 그때 AP 서버 인스턴스가 상태(스테이트) 정보를 갖고 있으면 장애가 발생하서 장애 조치가 이뤄졌을 때 상태 정보가 소실되는 문제가 있습니다.
AWS 베스트 프래틱스는 AP 서버에는 세션 등의 상태 정보를 맡기지 말고 ElasticCache에 상태 정보를 맡기는 방식으로 설계하는 것입니다.
AWS 네트워크 서비스의 중심은 VPC입니다. VPC와 온프레미스의 각 거점을 연결하는 서비스은 VPN과 Direct Connect 등이 있습니다. 그리고 인터넷 서비스를 위해 관리형 DNS 서비스인 Route 53과 CDN을 위한 CloudFront가 있습니다.
글로벌 IP로 구성된 AWS의 광대한 네트워크 공간에 프라이빗 IP 체계의 네트워크를 구축하는 서비스입니다. VPC를 기업, 데이터센터의 네트워크의 일부로 통합할수 있습니다. VPC에는 이터넷 게이트웨이와 가상 프라빗 게이트웨이라는 2개의 출입구가 있어 임의로 부여하는 것이 가능합니다.
인터넷 게이트웨이는 VPC 내의 인스턴스와 인터넷 사이이에서 통신 할 때 시용합니다. 그리고 인터넷 게이트웨이에 라우팅되는 서브넷을 퍼블릭 서느벳이라고 합니다. 인터넷 게이트웨이는 VPC당 1개만 부여할 수 있습니다. 인터넷 게이트웨이의 네트워크 대역은 AWS 측에서 자동으로 확장되므로 이용 상의 제한은 없습니다.
Route 53은 DNS 서비스로서 DNS 기능의 하나인 신뢰할 수 있는 DNS 서비스를 제공합니다. Route 53은 AWS가 서버를 관리하므로 이용자는 취약점에 대응할 피룡가 없습니다. 매우 저렴한 서비스이므로 Route 53 도입하는 것이 좋습니다.
Route 53은 신뢰할 수 있는 DNS 서비스 외에도 도메인 레지스터로 도메인을 등록 및 관리하는 기능도 있습니다. 상태 확인, 장애 조치, 지역 분산, 가중 라우팅 등도 제공합니다.
CDN이란 콘텐츠 배포에 최적화된 네트워크를 말합니다. 분산 배치된 서버를 콘텐츠 배포 포인트로 이용하고 효율적으로 콘텐츠를 배포하는 구조입니다.
됴코에 있는 서버 콘텐츠가 미국에서 엑세스 하려면 긴 거리를 통신해야만 하는데 이럴 때 미국에 서버를 배치하고 그 서버에 콘텐츠를 배포하면 빠르고 효율적으로 서비스를 제공할 수 있습니다. 이런 시스템이 CDN입니다.
CloudFront는 AWS가 세계 각 지역에 배치된 엣지 서버를 이용해서 효율적으로 콘텐츠를 배포합니다. 엣시 서버는 CloudFront의 콘텐츠 배포 포인트 입니다. 사용자의 엑세스를 가장 가까운 위치에 있는 엣지로 유도합니다.
AWS에서는 가상 서버, 스토리지, 네트워크 등의 기반 기능이나 각종 애플리케이션 서비스 외에 AWS 자체를 편리하고 안전하게 사용하기 위해 각종 관리도구가 있습니다.
AWS에는 AWS 계정과 IAM 사용자라고 불리는 두 종류의 계정이 있습니다. AWS 계정이란 AWS에 로그인할 때 생성되는 계정입니다.
AWS 계정은 모든 서바스를 네트워크 상의 어디서든 이용 가능 하기 때문에 마스터 계정이라고 합니다.
반면 IAM 사용자는 AWS를 이용하는 각 이용자를 대상으로 만들어지는 계정입니다. 최초로 AWS 계정을 만들고 로그인한 후에 필요에 따라 IAM 사용자를 만듭니다.
AWS 계정은 모든 서바스를 네트워크 상의 어디서든 이용 가능 하기 때문에 마스터 계정이라고 합니다. 그래서 충분한 주의가 필요합니다. AWS로 시스템을 구축 및 운용하는 경우 AWS 계정은 가급적 이용하지 않고 IAM 사용자를 이용하는 것이 바람직합니다.
IAM 사용자는 AWS 각 이용자가 콘솔에 로그인하거나 API를 이용해 작업할 때 사용하는 계정입니다. 각 IAM 사용자의 권한을 정확하게 제한하는 것이 AWS를 더욱 안전하게 사용할 수 있습니다.
이름 | 설명 |
---|---|
IAM 사용자 | IAM 사용자는 그 이름그대로 AWS의 사용자 |
IAM 그룹 | IAM 그룹은 IAM 사용자를 모아놓은것, 일반적으로 역할별로 그룹을 만들어 사용자는 복수의 그룹에 속할수 있음 |
IAM 정책 | IAM 정책은 권한을 기술하는 규칙 |
Amazon Inspector는 에이전트 형의 보안 평가 서비스입니다. 보안 대상인 EC2 인스턴스에서 에이전트를 설치해 EC2 내의 애필리케이션 취약점이 이 없는지 평가합니다.
서버 인증서의 발행을 관리하는 도구입니다. 최근 SSL 적용은 당연합니다. ACM을 사용하면 AWS 내에서 이용하는 인증서는 무료입니다. ACM이 대상으로 하는 서비스는 ELB, CloundFront, Elastic Breanstalk 입니다.
AWS에는 AWS Shield 라는 DDos 대책 서비스가 기본으로 내장돼 있습니다. Shield는 레이어 3/4에서 자주 발생하는 공격을 방어하고 자동 감지 및 자동 원화를 수행합니다.
AWS에서는 메일 알림이나 SMS, 모바일 푸시 등 다양한 알림 서비스가 있습니다. 그리고 머니터링을 하는 도구 CloudWatch가 있습니다.
Amazon SNS는 푸시형 알림 서비스로 멀티 프로토콜로 다수의 프로토콜에 간단하게 송신 가능합니다. 메시지를 프로토콜 마다 변환하는 부분은 SNS가 담당하므로 알림을 보내는 사람은 프로토콜의 차이를 의식하지 않고 배포할 수있습니다. SNS는 AWS 시스템 연계의 중요한 요소 중 하나로 느슨한 결합 시스템이 되고 유연성이 높아집니다.
Amazoe CloudWatch는 AWS의 각종 리소스를 모니터링하는 서비스입니다. 기능으로 크게 세가지가 있습니다.
- 정의한 모니터링 조건에 달했을 때 경고를 통지하는 기능
- CloudWatch Logs라는 인스턴스의 로그를 저장하는 기능
- 정기적은 cron 같이 타이머 기능으로 잡을 실행하는 CloudWatch Events라는 기능입니다.
CloudWatch의 경고 기능은 AWS 상의 각종 리스스에 대한 지표를 만듭니다. 지표는 EC2나 RDS, ELB 같은 리소스마다 기본적인 모니터링 항목이 설정돼 있습니다. 그리고 기본 설정 이외의 것은 사용자 정의 지표로 모니터링할 수 있습니다.
CloudWatch Logs에는 로그 수집과 모니터링이라는 두 가지 기능이 있습니다. 먼저 로그 수집은 EC2 인스턴스나 Elastic Beanstalk 등의 로그를 S3에 저장합니다. 인스턴스의 경우 전용 에이전트를 설치합니다.
CloudWatch Events는 이벤트를 감지하고 지정된 규칙에 따라 처리하는 서비스입니다. 규칙에는 5분 간격이나 특정 일시 등의 스케쥴, DnamoDB 테이블의 생성 삭제 등 AWS 리소스에 발생한 변경을 지정하는 것이 가능합니다.