AWS는 전자 상거래 사이트를 운영하는 아마존닷컴의 자회사인 아마존 웹 서비스 사가 제공하는 클라우드 플랫폼으로, 전 세계에서 이용하고 있습니다. AWS를 이용하면 IT와 관련한 각종 시스템을 구축하고 운영할 수 있습니다. 개인부터 대규모 서비스까지 다양한 분야에서 AWS를 활용합니다. AWS를 이용하는 유명 기업으로 넷플릭스(Netflix)가 있죠.
애플리케이션/서비스를 구축하고 운영하는 환경을 인프라스트럭쳐라고 부릅니다.
AWS는 이러한 인트라 스트럭처를 구축하는 컴퓨팅, 스토리지, 네트워킹, 관리도구와 같은 다양한 서비스를 제공합니다.
이러한 AWS에서 제공하는 다양한 서비스에 대해 하나하나 간단히 알아보도록 하겠습니다.
EC2는 Elastic Compute Cloud의 약자로 AWS에서 가장 기본적이면서 널리 쓰이는 클라우드 컴퓨팅 서비스입니다. 물리 환경의 컴퓨터처럼 컴퓨팅 리소스를 제공합니다.
Elastic은 사용한 만큼 비용을 지불하는 탄력적인 이라는 의미입니다.
인스턴스라고 불리는 가상 머신으로 제공하며, 클라우드에서 비용, 성능, 용량 등을 확장 가능한 컴퓨팅 용량을 제공합니다. 원하는 수의 가상 서버를 구축하고 보안 및 네트워킹을 구성하며 스토리지를 관리할 수 있습니다.
AWS EC2 인스턴스를 생성한다는 것은 AMI를 토대로 운영체제, CPU, RAM 혹은 런타임 등이 구성된 컴퓨터를 빌리는 것이다
AWS Lamda는 모든 유형의 어플리케이션이나 백엔드 서비스에 대한 코드를 별도의 관리 없이 실행할 수 있는 서비스입니다.
Serverless 아키텍쳐 구현이 필요할 때, 서버에 대한 걱정 없이 코드만으로 서비스를 실행할 수 있습니다. 고가용성 컴퓨팅 인프라에서 서버와 운영 체제 유지 관리, 용량 프로비저닝 및 자동 조정, 코드 및 보안 패치 배포, 로깅 등 모든 컴퓨팅 리소스 관리를 자체적으로 수행하므로, Lamda가 사용하는 언어중 하나로 코드를 제공하기만 하면 됩니다. (파이썬Python, 노드jsNode.js, 자바Java, 닷넷.NET, 고Go, 루비Ruby 공식 제공중)
VPC는 Virtual Private Cloud의 약자로 여기서 virtual 은 '가상'이라는 의미입니다. 클라우드 가상 네트워크 구축 서비스로, AWS의 데이터센터에 있는 전용 기기에서 서버나 네트워크 장비가 가진 기능을 에뮬레이션하는 소프트웨어를 작동시켜 기기를 이용하지 않고도 사용할 수 있습니다.
따라서 기기 추가나 삭제를 간단하게 수행할 수 있고, VPC끼리는 독립적이어서 서로 영향을 미치지 않습니다.
IP 주소 범위 선택, 서브넷 생성, 라우팅 테이블 및 네트워크 게이트웨이를 구성할 수 있습니다.
가상 네트워킹 환경을 완벽하게 제어할 수 있고, VPC에서 IPv4와 IPv6 모두를 사용하여 리소스와 애플리케이션에 안전하고 쉽게 액세스할 수 있습니다.
AWS에서 제공하는 DNS(Domain Name System)을 제공하는 도메인 관리/설정 서비스입니다.
도메인 이름을 구매 및 관리하고 DNS 설정을 자동으로 구성합니다.
Route53은 다음 두가지 기능을 제공합니다.
도메인 이름 등록은 상위 도메인을 관리하는 조직에 자신의 도메인을 요청해서 등록하는 것을 말합니다.
Route53은 DNS 서버의 기능을 제공하는 매니지드 서비스입니다.
물론 Route53을 이용하지않고 EC2 인스턴스만으로 오픈 소스 DNS 서버를 구축할 수도 있지만, 안정성이나 비용 성능, 로드밸런서와의 연계 등의 장점이 있으므로 Route53을 적극적으로 이용하는 편이 좋습니다.
Route53에서 생성한 DNS 서버는 용도에 따라 퍼블릭 DNS와 프라이빗 DNS 2가지 유형으로 나뉩니다.
ELB(Elastic Load Balancer)란 애플리케이션 트래픽을 여러 대상에 자동으로 분산시켜 안정적인 AWS서버 환경을 운용하는데에 도움을 주는 서비스입니다. EC2뿐만 아니라 컨테이너(ECS), IP주소, AWS Lambda 등으로 다양한 서비스와 연계하여 부하를 분배할수 있습니다.
서비스 초기 단계에는 적은 수의 클라이언트로 인해 서버 한대로 요청에 응답할 수 있을지도 모르지만, 규모가 확장되어 클라이언트의 수가 늘어난다면 기존 서비스로만은 정상적인 서비스가 불가능 할 것입니다.
이럴 때 웹 서버를 여러 대 준비하여 성능을 높이는 방법을 이용할 수 있고, 이를 스케일 아웃 이라고 부릅니다. 하지만 단순히 웹 서버만 늘리면 송신 대상자의 PC 브라우저나 모바일에서는 새로운 웹 서버를 자동으로 이용하지 못합니다. 따라서 스비스를 제공하는 측에서 시스템을 추가로 제공해야 합니다.
로드밸런서는 이러한 스케일 아웃을 수행하는 하나의 방법으로, 주요 역할은 다음과 같습니다.
Cloudfront는 AWS에서 제공하는 CDN(컨텐츠 전송 네트워크)입니다.
💊 CDN이란?
CDN(Content Delivery Network or Content Distribution Network, 콘텐츠 전송 네트워크) 은 콘텐츠를 효율적으로 전달하기 위해 여러 노드를 가진 네트워크에 데이터를 저장하여 제공하는 시스템입니다. 인터넷 서비스 제공자에 직접 연결되어 데이터를 전송하므로, 콘텐츠 병목을 피할 수 있는 장점이 있습니다.
CDN 서비스를 이용하면 서비스 대기 시간과 성능이 개선되어
이미지, 오디오, 비디오 및 일반 웹 페이지 등을 최종 사용자에게 빠르게 제공할 수 있습니다.
S3, EC2, ElasticLoadBalancing, Rounte53등과 같은 AWS 서비스와 통합하여 운영할 수 있고,
리전에 상관 없이 엣지 로케이션 기준으로 가장 가까운 곳에서 파일 캐시를 가져오기 때문에 속도도 빠르고 비용도 EC2 혹은 S3 서비스로 제공하는 것보다 저렴합니다.
AWS S3는 Simple Storage Service의 약자로, 업계 최고의 확장성과 데이터 가용성 및 보안과 성능을 제공하는 온라인 오브젝트(객체) 스토리지 서비스(객체로 된 파일을 다루는 저장소)입니다. (S앞글자 3개)
즉 파일 저장 서비스로, 데이터를 온라인으로 오브젝트 형태로 저장하는 정적 파일 스토리지 서비스입니다.
데이터 조작에 HTTP/HTTPS를 통한 API가 사용되며, 비용도 저렴하고 데이터 양이 무한에 가깝다. 또한 탄력적(elastic)이어서 별도의 확장, 축소를 관리할 필요가 없습니다.
Cloud Front를 구성하면 S3에 저장된 정적 파일이 CDN을 통해 더 효율적으로 빠르게 보급되는 장점이 있습니다.
RDS는 Relational Database Service의 약자로 Aamazon RDS는 관계형 데이터베이스를 간편하게 클라우드에서 설정, 운영, 확장이 가능하도록 지원하는 웹 서비스입니다.
RDS 데이터베이스 종류로는 Amazon Aurora, PostgreSQL, MySQL, MariaDB, Oracle, MS SQLServer 총 6개가 있으며, 자동 백업 및 수동 백업 모두 제공합니다.
RDS의 특징은 다음과 같습니다.
어떠한 규모에서도 10ms 미만의 성능을 제공하는 key-value 형태이 NoSQL 데이터베이스 서비스입니다.
데이터 규모와 상관 없이 데이터를 저장 및 검색하고, 어떤 수준의 요청 트래픽이라도 처리할 수 있는 데이터베이스 테이블을 생성할 수 있습니다.