
Amazon Web Services(AWS)란 유명 인터넷 쇼핑몰인 아마존에서 운영하는 클라우드 서비스이다.
인터넷 쇼핑몰, 온라인 게임, 업무 시스템과 같이 어떠한 시스템을 구축하기 위해서는 컴퓨터와 데이터베이스 같은 기능이 필요하다. 이런 기능을 인터넷을 통해 이용할 수 있게 해주는 서비스를 클라우드라 한다.
AWS처럼 누구나 사용할 수 있는 클라우드를 개방형 클라우드라 한다.
온프레미스(on-premise)란 사용자가 관리하는 시설 내에 서버 등의 기기를 설치해 운용하는 환경이다.
AWS와 같은 클라우드 서비스가 등장하기 전까지는 시스템을 구축하기 위해 자체적으로 관련 기기를 준비하고 설정해야 했다.
이런 기기를 설치하고 운용하는 시설을 데이터 센터(Data Center)라고 한다.
물리적인 설치, 케이블 배선, 네트워크 설정, 인권비 등 엄청난 비용과 시간이 필요하다. 구축 이후 비용은 낮지만 기기 고장 등 예측불가한 상황이 발생하여 비용이 추가되는 경우도 있다.
이러한 번거로움을 해결하기 위해 나온 것이 클라우드이다.
클라우드는 클라우드 서비스 제공자가 서버 등의 기기를 준비하고 거기에 구축된 가상 서버나 응용 프로그램 등을 사용자에게 제공하여 이용료를 받는 형태이다.
정식 명칭은 클라우드 컴퓨팅(cloud computing)이다.
서비스 제공자는 서버나 응용 프로그램을 제공하고 내부의 모든 하드웨어를 관리하므로 사용자가 하드웨어 장애에 대해 신경쓰지 않아도 되는 장점이 있다.
클라우드 서비스에서 사용자는 서버를 임대해 사용한다. 사용자가 사용하고 싶은 사양으로 서버를 선태가면 가상화 기술을 이용해 해당 사양의 서버를 가상으로 생성해 사용한다.
가상 서버는 하나 또는 클러스터링 된 물리 서버 내에 만들어진다. 클러스터링이란 여러대의 컴퓨터가 연결돼 하나의 시스템처럼 동작하는 컴퓨터들의 집함을 말한다.
가상화는 서버 뿐 아니라 스토리지나 네트워크 장비 등도 1대이 기기를 가상화 기술로 여러 기기처럼 취급할 수 있다.
클라우드 서비스에서 서버리스(serverless)라는 용어는 자주 사용한다.
단순히 '서버가 없다' 라는 뜻으로 유추되지만 이는 실제 뜻은 서비스가 이용될 때만 서버를 가동하는 방식이다.
클라우드 서비스는 보통 서버를 사용하는 시간 만큼만 요금이 발생하므로 요금이 부가되는 시간을 줄여 비용을 낮출 수 있다는 장점이 있다.
클라우드 서비스는 제공하는 서비스에 따라 SaaS, PaaS, IaaS로 나눌 수 있다.
SaaS(Software as a Service)는 응용 프로그램을 서비스로 제공하는 형태이다. 많은 사람이 사용하는 Gmail, Dropbox, Office365, Zoom이 대표적이다.
SaaS가 응용 프로그램 자체를 제공한다면 PaaS(Platform as a Service)와 IaaS(Infrastructure as a Service)는 클라우드 서비스 제공자는 응용 프로그램을 만들기 위한 기능을 서비스로 제공한다.
PaaS와 IaaS의 차이는 클라우드 서비스 제공자가 관리하는 범위❗️이다.
PaaS는 클라우드 서비스 제공자가 OS 및 미들웨어까지 관리하고 필수 기능만 사용자에게 제공한다.
AWS에서는 관리형 서비스로 제공하는 RDS, DynamoDB, Lambda 등이 해당한다.
IaaS는 서버 및 네트워크 기능만 제공하며 설정과 관리는 사용자가 해야한다. AWS의 EC2난 VPC, EBS 등이 해당된다.
AWS는 하드웨어에 문제가 발생하면 AWS가 책임을 지고 복구한다. 책임 범위는 이용하는 서비스에 따라 다르며 사용자는 자신의 책임 범위만 운용, 관리하면 되어 업무 부하가 줄어든다.
지역별로 리전 이라는 단위로 분리되어 있다.
각 리전에는 가용 영역(Available Zone, AZ)이 여러개 존재하는데, 하나 이상의 데이터 센터로 구성된다.
리전의 각 가용영역(AZ)은 서로 다른 위치에 있으므로 데이터 센터 장애와 같은 대규모 장애가 발생하더라도 다른 가용영역(AZ)에서 서비스를 제공한다.
AWS는 종량 과급제다. 즉 사용한 만큼 비용이 발생하므로 소규모의 서비스를 시작할 때 유리하다는 장점이 있다.
AWS에서 생성한 서버는 자원(CPU, 메모리양)이나 수를 쉽게 변경할 수 있으며 구축된 서비스의 사용자가 증가했을 때 서버 수를 늘리거나 사양을 높이는 등 유연하게 대응이 가능하다.
AWS는 장애는 언제라도 발생할 수 있다는 전제로 설계한다. 이 말은 장애가 발생하더라도 서비스를 지속해서 제공할 수 있어야 한다는 의미이다.
AWS에서도 장애는 발생한다. 하지만 AWS는 서버를 여러 AZ에 배포해 한 개 이상의 AZ에 장애가 발생하더라도 중단 없는 서비스를 제공할 수 있게 하고 있다. 이렇게 중단없이 실행할 수 있는 능력을 가용성이라 한다.
AWS는 다양한 서비스를 지원한다.
컴퓨팅 서비스로는 앞서 말한 가상 서버인 EC, 컨테이너 서비스는 ECS, 스토리지로는 EBS, 및 S3, 데이터베이스로는 RDS 및 Dynamo DB가 주로 사용된다.
네트워크쪽에서는 가상의 폐쇄형 클라우드 환경을 구현하는 VPC, 고기능 DNS인 Route 53, 서비스 처리를 분산하기 위한 ELB 등이 있다.
서비스의 종류는 이 밖에도 더 있지만 위에 언급된 서비스는 자주 사용되는 서비스이다.