AWS는 Amazon Web Service의 약자로 Google Cloud, Azure, Firebase 처럼 클라우드 서비스입니다.
오늘날 우리가 주로 사용하는 스마트폰, PC등의 웹, 어플리케이션들은 모두 클라이언트 프로그램입니다. 이러한 프로그램들을 동시에 여러 사용자들의 정보 혹은 서비스를 제공한다면, 흔히 서버라고 불리우는 백엔드가 필수적입니다.
서버는 어떻게 제작이 될까요? 안드로이드는 안드로이드 스튜디오, iOS는 Xcode, 웹은 React.js, Next.js 처럼 백엔드도 프레임워크를 이용해서 많이 제작합니다. 오늘날 우리나라에서는 Spring Boot가 가장 많이 사용되는 것 같고, 그 이후에는 Django, Fast Api, Node.js 등등이 있습니다. 이렇게 제작된 서버는 클라이언트들의 요청에 응답하기 위해서 지속적으로 실행이되어야 하고 외부에서 클라이언트가 IP로 접근해야만 합니다.
그래서, 기업에서는 데이터 센터를 구축하여 다량의 서버 시스템을 구축하고 관리합니다. 관리하기 위해서는 통신을 위한 네트워크와 보안을 위한 보안 시스템도 구축해야 겠고, 다량의 열이 발생할 수 있기 때문에 관리 인력이 지속적으로 서버실의 온도를 조절해야 할것입니다. 이러한 환경을 온디맨드 환경이라고 합니다.
많은 사람들이 사용하고 있고, 기업이 운영할 수 있는 능력이 된다면 위의 방법이 가장 괜찮겠죠. 하지만, 새로운 서비스를 구축할 때 위의 온디맨드 환경을 구축하는 일은 결코 간단하지 않습니다. 예상 사용자들의 동시 접속수를 고려하여 서버를 구축해야 할것이고, 서비스를 운영하고 있지 않다면 다량의 서버가 낭비되는 일이 발생하겠죠.
이러한 상황에서는 클라우드 서비스가 최고의 솔루션이 될 수 있습니다. 그 중에서도 스토리지, 데이터 베이스, 보안 및 로깅, 람다, 서비스 스케줄링 등 다양한 서비스를 AWS가 제공하고 있습니다. 또한, AWS는 사용자의 자유도가 높습니다.
하지만, 이러한 서비스를 이용하기 위해서는 조금의 네트워크 지식과 AWS 리소스에 대한 사용법에 대한 숙지가 필요합니다. 대부분 AWS 환경에서는 아키텍쳐를 정의하고 구현하는 방식으로 환경을 구축하기 때문입니다. 아래는 AWS로 제작한 아케텍처 예시입니다.
이처럼 생각보다 AWS 리소스를 이용하기 위해 여러가지 개념들이 도입이 되어야 합니다. 다음 글부터 VPC, AZ, Subnet, Region과 같은 기초적인 개념에 대해서 알아보겠습니다.