AWS와 클라우드 컴퓨팅에 대해 이야기하기 앞서 이러한 개념들이 무엇이며 왜 등장했는지에 대해 이해할 필요가 있다. 개발자라면 살면서 온 프레미스(On-Premise)라는 말을 들어 보았을 것이다.
온 프레미스(On Premise)란 줄여서 온 프렘(On Prem)이라고도 하는데, 소프트웨어를 사용하는 사람이 조직 내에 있는 전산실 서버에 직접 서버를 설치해 운영하는 방식을 말한다.
특정 서비스를 제공하기 위해 직접 온 프레미스로 데이터 센터를 구축한다고 생각해 보자. 먼저 우리는 서비스 제공을 위해 어느 정도 규모의 스토리지와 컴퓨팅 리소스가 필요한지 고민해 보아야 한다. 또 이를 기반으로 서버 랙, 컴퓨팅 리소스, 스토리지, 여러 네트워킹 장비 등 다양한 하드웨어를 준비해야 한다. 또 이러한 하드웨어가 준비되면 이를 효과적으로 운영하기 위해 데이터 센터를 구축할 장소를 찾아야 하며 해당 시설에 안정적으로 전력을 공급할 수 있어야 한다.
이렇듯 온 프레미스로 데이터 센터를 구축해 서비스를 제공하려면 많은 노력을 거쳐야 한다. 이처럼 온 프레미스로 데이터 센터를 운영하려면 다음과 같이 여러가지 사항을 고려해야 한다.
이러한 단점을 극복하여 언제든지 빠르게 서비스를 제공하기 위해 등장한 개념이 클라우드 컴퓨팅이다.
클라우드 컴퓨팅은 인터넷을 통해 On Demand로 IT 리소스를 제공하는 것이다.
쉽게 말해 직접 데이터 센터를 구축하고 운영할 필요 없이 데이터 센터를 소유 및 유지, 관리하고 있는 AWS, MS와 같은 기업들로부터 가상 데이터 센터 기술 및 서비스를 빌려 쓰는 것이다. 직접 구축하는 것이 아니고 빌려 쓰는 개념이기 때문에 아래와 같이 여러 이점이 존재한다.

1. 초기 투자 비용이 없다
2. 운영 비용이 절감된다

3. 탄력적인 운영과 확장
4. 속도 및 민첩성

5. 비즈니스에만 집중 가능
6. 글로벌 확장성
이렇듯 클라우드 컴퓨팅을 활용하면 다양한 이점이 존재한다. 현재 전 세계에는 Amazon의 AWS, Google의 GCP, Microsoft의 Azure 등 다양한 서비스들이 존재한다. 이처럼 다양한 CSP 들 사이에서 AWS를 채택해야 하는 이유는 무엇일까?

AWS의 이점은 이와 같이 정리할 수 있다. 이처럼 AWS는 최적의 클라우드 서비스를 제공하기 위해 노력하고 있다. (하지만 아직 Issue 투성이 인 것은 함정...)
AWS에서 관리하는 데이터 센터는 전 세계에 존재한다. 지역별로 리전(Region)이라는 단위로 분리되어 있고 지속적으로 확장하고 있다.

일반적으로 리전의 이름은 리전이 있는 위치의 이름을 따서 명명하며 한국에서 주로 사용하는 리전은 ap-northeast-2 아시아 태평양(서울) 리전이다.
AWS는 사용자에게 높은 가용성을 제공하기 위해 하나의 리전에서 최소 2개 이상의 가용 영역(AZ, Availability Zone)을 제공하고 있다. 이를 통해 하나의 AZ에 대규모 장애가 발생해도 다른 AZ를 통해 서비스를 안정적으로 이용할 수 있다.
정리하면 리전은 AZ의 클러스터이며 AZ(가용 영역)은 데이터 센터의 클러스터이다.
ap-northeast-2 아시아 태평양(서울) 리전은 4개의 AZ를 운영하고 있으며 각각 ap-northeast-2a, ap-northeast-2b, ap-northeast-2c, ap-northeast-2d로 명명하고 있다.
aws 계정에 대한 액세스를 구성할 때 인증(Athentication)과 인가(Authorization)라는 두 용어가 자주 나타난다. 기본 개념으로 보일 수 있지만 aws에서 액세스 관리를 올바르게 구성하기 위해서는 이러한 용어를 이해해야 한다.

인증(Athentication)은 사용자가 본인임을 보장한다. 단순히 사용자가 본인이 맞습니까? 라는 물음에 대한 답이다. 인증을 받으면 사용자가 aws 계정을 통해 어떤 작업을 할 수 있는지 궁금할 수 있다. 인가(Authorization)는 사용자에게 AWS 리소스 및 서비스에 액세스할 수 있는 권한을 부여하는 프로세스이다.
AWS 계정을 처음 생성하게 되면 AWS 서비스 및 리소스에 대한 전체 액세스 권한이 있는 단일 로그인 자격 증명으로 시작한다. 이를 루트 사용자 혹은 루트 계정이라고 한다. 루트 계정에 대한 정보가 탈취되면 해당 계정을 활용해 모든 aws 서비스 및 리소스에 액세스 해 다양한 작업을 할 수 있다.
따라서 루트 계정은 안전하게 보관해야 하며 일상 작업에는 루트 사용자의 사용을 권장하지 않는다. 루트 계정의 안전을 보장하려면 아래와 같은 사례를 따라야 한다.
이렇듯 AWS에서는 루트 사용자 외에도 다양한 사용자를 통해 서비스를 액세스하고 이용할 수 있도록 'IAM' 이라는 서비스를 제공하고 있다.
AWS IAM(Identity and Access Management)은 AWS 계정 및 리소스에 대한 액세스를 관리하
는 데 도움이 되는 AWS 서비스이다. 사용자는 IAM을 통해 세분화 된 액세스 권한을 지닌 사용자를 생성할 수 있으며 이를 통해 AWS 서비스를 이용할 수 있다. IAM은 글로벌이며 특정 리전에 국한되지 않기 때문에 AWS 관리 콘솔에서 모든 리전의 IAM 구성을 보고 사용할 수 있다.
따라서 루트 계정을 사용하지 않고 적절한 IAM 사용자를 생성해 사용하는 것이 중요하다.
추가로 IAM 사용자 그룹을 만들어 사용할 수 있다. 가령 하나의 팀에서 AWS를 사용한다고 했을 때 직무에 맞게 AWS를 사용해야 하는 권한이나 책임이 다를 수 있다. 이 때 관리자는 전체 액세스 권한을 가진 IAM 사용자를 생성한 뒤 IAM 사용자 그룹을 만들어 팀원마다 적절한 권한을 부여한 IAM 사용자를 분배하여 이용할 수 있다.