AWS는 세계에서 가장 큰 클라우드 서비스 중 하나로, 서버를 하드웨어 장비를 별도로 구축하여 설정하는 것보다 일반적으로 훨씬 쉽고 저렴한 비용, 접근성으로 많은 기업에서 사용하고 있습니다.
우리가 가고자 하는 많은 회사에서 사용하고 있으며, 그에 따라 기본적인 AWS 운영 및 지식이 필요한 상황입니다.
기본적으로 회사에서 사용하고 있었지만, 인프라 관리자가 주로 관리하거나 사용은 이미 하고있되 기본적인 개념을 모를 수도 있다고 생각해서 어떤것인지 가닥만 잡자는 의미에서 주로 사용되는 용어 및 서비스들을 정리했습니다.
AWS에서는 용어가 굉장히 많습니다. 게다가 이미 다른 프로그래밍 관련 공부를 하면서 용어 자체는 같으나 뜻이 다른 경우도 여럿 있습니다. 예를 들어 람다라는 단어는 기존에 자바나 다른 언어들에서 함수를 일시적으로 사용하는 개념이 있는데, AWS에서도 일회용으로 사용하는 함수를 정의한다는 의미는 같으나, 그것을 AWS에서는 서버 없이 별도로 구현한다는 차이가 있습니다. 그 대표적인 용어들을 살펴보겠습니다.
간단히 데이터 센터가 위치하고 있는 국가 또는 지역을 뜻합니다. 서양, 동양, 그중 한국에서도 여러 리전과 가용 영역으로 구성되어 있고, 한국의 경우 ea-northeast-2라는 이름의 리전이 있고, 재난, 테러 등 불가피한 상황에 대비하여 하나의 리전에는 다시 한번 위치별로 가용 영역을 나누어 구성하고 있습니다.
기존에 서버를 구성하는 가상 서버라고 보시면 됩니다. ssh 등으로 접속하여 여기에 프로그램을 올리고 다른 서비스들과 연결해 웹사이트를 만들 수 있습니다.
이름을 쉽게 외우기 위해 약자가 EC2인 이유는 Comput Cloud, C가 2번 반복되어 X2 느낌으로 네이밍되었습니다.
EC2에 올린 프로그램을 웹사이트로 만들 수 있는 기능을 제공합니다.
클라우드에서 가상 네트워크 환경을 구성하는 기능을 제공합니다.
가상 스토리지를 제공합니다.
이 역시 EC2처럼 S가 3번 반복되어 S3로 네이밍되었습니다.
기존 프로그래밍에서 한 번 사용되고 마는 람다의 기능과 비슷하게, Python, Java 등으로 정의된 함수를 일회성으로 사용하기 위한 기능을 제공합니다.
AWS는 Elastic이라는 단어를 참 좋아하는 것 같은데, 자바로 예를 들면 프로그램을 war파일을 만들어 빈스토크에 업로드하는 것만으로 배포가 가능하도록 가볍고 빠르게 서비스를 만들 수 있는 기능을 제공합니다.
계정 관리 기능을 제공합니다. 위 여러 서비스들에 대한 접근 권한 등을 제어할 수 있습니다.
위 IAM은 서버를 제어하는 개발자나 인프라 담당자를 기준으로 권한을 제어하는 것이라면, 코그니토는 사용자 단위의 로그인 서비스를 제어하는 곳입니다. 이를 통해 간편하게 로그인 사이트를 개발하고 SNS 계정을 사용할 수 있습니다.
AWS 서버에서 캐시 기능을 제공합니다.
AWS에서 제공하는 DB 서비스는 위와 같이 RDS, Aurora, Dynamo DB 등이 있습니다.
RDS와 Aurora는 둘 다 RDBMS를 위한 서비스이나, 오로라DB가 더 성능이 좋고 가격이 있다고 보시면 되고, DynamoDB는 NoSQL을 위한 서비스입니다.
서버리스는 서버가 없다는 뜻이 아니며, 모든 서버 관리를 AWS에 일임하도록 구성한 서비스입니다.
사용자가 관리 서버와 AWS 자체에서 관리하는 서버 비중도에 따라 다음과 같이 나누고 있습니다.
Docker와 같이 컨테이너 기반으로 서버를 호스팅하기 위해 사용하는 서버입니다. 간단히 컨테이너를 사용할 거면 ECS, 아니면 EC2를 사용한다고 보시면 됩니다. (EC2에서도 컨테이너를 직접 설치해 사용할 수는 있습니다)