헤매어도 한 걸음씩

Amazon Web Services (AWS) 본문

IT

Amazon Web Services (AWS)

ritz 2022. 2. 23. 23:02

 

AWS란?

AWS(amazone web service)란 아마존에서 운영하는 Cloud Computing Platform이다. 흔히 아마존이라고 하면 쇼핑몰을 떠올리기 쉽지만, 사실 아마존의 가장 큰 매출을 담당하는 서비스는 AWS이다. AWS를 이용하면 손쉽게 클라우드로 서버를 구축할 수 있고, 개발자가 신경 써야 할 많은 부분을 aws가 해결해주기 때문에 필수적으로 경험해보아야 할 서비스라고 할 수 있다.

 

클라우드 컴퓨팅이란?

클라우드 컴퓨팅은 IT 리소스를 인터넷을 통해 온디맨드로 제공하고 사용한 만큼만 비용을 지불하는 것이다.

물리적 데이터 센터와 서버를 구입, 소유 및 유지 관리하는 대신, Amazon Web Services(AWS)와 같은 클라우드 공급자로부터 필요에 따라 컴퓨팅 파워, 스토리지, 데이터베이스와 같은 기술 서비스에 액세스할 수 있다.

 

기존 하드웨어에 의존해 서버를 구축하던 방식에 비해 막대한 사전투자를 할 필요가 없고, 하드웨어의 유지 보수에 신경을 쓰지 않게 됨으로써 오로지 서비스를 제공하는 것에만 신경을 집중할 수 있는 엄청난 장점이 있다.

특히 스타트업처럼 아직 서비스가 안정화되지 않은 경우, AWS로 백엔드 인프라를 구축한다면 보다 유연하고 저렴하게 여러 가지 문제들을 해결할 수 있다.

 

 

클라우드 컴퓨팅의 세가지 유형

크게 IaaS, PaaS, SaaS의 3가지 유형이 있다.

 

(1) IaaS (Infrastructure as a Service)

서비스로서의 인프라를 의미하며, 하드웨어 및 각종 리소스에 대한 제어와 관리를 사용자가 직접 하는 형태.

기존에 물리적인 형태로 사용해왔던 스토리지, 서버 등의 인프라를 가상화된 환경에서 쉽고 신속하게 할당받아 사용할 수 있는 서비스이다. (서버, 네트워크 OS, 스토리지 등을 가상화하여 제공하고 관리)

PaaS와 SaaS의 기반이 되는 가장 기본적인 클라우드 컴퓨팅 서비스라고 볼 수 있으며, 이를 사용한 경우 스토리지, 네트워크, 운영체제와 같은 IT인프라를 대여하는 것이라고 볼 수 있다.

대표적으로 AWS, Microsoft Azure 등이 있다.

 

(2) PaaS (Platform as a Service)

서비스로서의 플랫폼을 의미하며, 하드웨어, OS 등의 관리를 서비스 제공자가 대신함으로써 사용자는 제공된 미들웨어를 통해 애플리케이션 개발과 관리만 하는 형태.

개발자에게 여러 플랫폼을 제공해 개발에 필요한 서버, 스토리지 등 기본 인프라를 설정하거나 관리할  필요 없이 빠르게 개발할 수 있도록 만들어졌다. 개발사에 제공되는 플랫폼을 가상화한다.

대표적으로 Heroku가 있다.

 

(3) SaaS (Software as a Serviece)

서비스로 제공되는 소프트웨어를 의미하며, 서비스 제공자가 직접 운영하고 관리하는 완제품의 형태.

이 경우 사용자는 어떻게 서비스를 활용할 것인지만 생각하면 된다.(인터넷을 통해 access만 하면 된다.)

대표적으로 Dropbox, Google Drive, Naver Cloud, Web Mail 등이 있다.

 

 

AWS는 Gartner가 IaaS 분야 Magic Quadrant에서 9년 연속 리더로 선정했으며, 약 190여 국가에서 서비스를 제공하고 있다. (AWS는 IaaS뿐만이 아닌 각종 PaaS와 SaaS도 제공)

 

 

AWS(Amazon Web Services)의 주요 서비스

주요 서비스만 간단히 정리.

 

(1) EC2 (Amazon Elastic ComputeCloud)

EC2란 Elastic Compute Cloud의 약자로 AWS의 대표적인 서비스이다.

실제 클라우드 컴퓨터를 인스턴스화하여 대여하는 서비스이고, 기본적으로 켜놓은 시간을 기준으로 요금이 발생한다.

거의 모든 작업이 API화가 되어있어 특히, 트래픽에 부하가 걸리면 인스턴스를 자동으로 늘리고 감소하면 줄이는 Auto Scaling 서비스를 이용할 수 있다.

micro, small, large, xlarge 등으로 인스턴스의 성능이 세분화되어 있으며 당연히 성능이 좋을수록 요금이 비싸지는 구조이다.

인스턴스의 방식 또한 사용한 시간만큼 과금되는 온디맨드 인스턴스 방식과, 사용되고 있지 않은 EC2 자원을 경매로 싸게 사용할 수 있는 스팟 인스턴스 방식, 사용할 기간과 사용량을 미리 예약해 요금을 선납하여 사용료를 할인받을 수 있는 예약 인스턴스 방식이 있으므로 EC2 서비스를 사용하는 환경에 맞추어 적절히 선택해야 보다 효율적으로 이용할 수 있다.

이를 사용하면 별도의 하드웨어를 준비할 필요가 없어 더 빠르고 안전하게 어플리케이션을 개발하고 배포할수 있다. Elastic, '유연한' 이라는 단어 뜻에 맞게 아마존에서는 해당 서비스를 사용자가 필요할때 언제든 만들고 시작하고 종료할 수 있다. 사용과정을 간단히 설명하면 다음과 같다:

 

  1.   AWS 계정 로그인: 먼저 해당 서비스를 이용하려면 당연하게도 AWS 계정이 필요하다. AWS계정은 12개월간 정해진 제한선 안에서 무료로 사용할 수 있으나, 어찌됐든 계정을 생성하기 위해선 결제가 가능한 카드를 등록해야 하므로, 사용량을 항상 주시해야 한다. (교육용 버전으로 카드등록 없이 생성하는것도 있다고 한다.) 계정을 생성했으면 AWS Management Console을 통해 나만의 EC2를 시작할 수 있다.
  2. 인스턴스 시작: 계정을 생성했으면 Amazon EC2 대시보드에서 [인스턴스 시작] 버튼을 눌러 나의 인스턴스를 시작한다. 
  3. 인스턴스 구성: 인스턴스를 시작하면 본인의 인스턴스를 어떻게 구성할 것인지에 대한 설정창이 나온다. 여기서 운영체제, 세부정보 구성, 스토리지, 태그, 보안 그룹 등을 설정할 수 있다.
  4. 인스턴스 연결: 구성을 마친 인스턴스는 'Launch SSH Client'를 통해 연결할 수 있다.
  5. 인스턴스 종료: 해당 서비스는 프리티어로 사용하면 무료이지만, 추후 추가 비용발생을 막으려면 사용 후 인스턴스를 종료해야한다. 이때  EC2 인스턴스 및 관련 데이터가 삭제된다. 참고로 이는 삭제와 비슷한 개념이라 주의해야 한다.



 

(2) Lambda

Lambda란 요즘 떠오르고 있는 Serverless Architecture를 구축할 때 사용되는 서비스이다.

기본적으로 JavaScript, Python, Go, Java, Ruby 등의 언어를 지원하며, 함수화된 서비스를 Lambda에 올려 해당 함수의 실행 시간과 용량을 기준으로 요금이 발생하는 방식이므로 만약 트래픽이 낮은 서비스라면 EC2에 비해 요금 부담이 훨씬 덜하게 된다.

다만, EC2처럼 항시 대기하는 서버가 아니므로 요청이 발생했을 때 Cold start되어 응답하는 데까지의 시간이 EC2에 비해 조금 더 걸린다다.

따라서, 운영할 서비스의 종류와 목적에 따라 EC2와 Lambda 중 적절히 선택해야 한다.

 

(3) S3 (Simple Storage Service)

S3란 Simple Storage Service의 약자로 업계 최고의 성능과 확장성, 가용성, 내구성을 가지고 있다고 자랑하는 AWS의 핵심 스토리지 서비스이다. 

영화, 비디오, 이미지 등 파일을 저장하는 기능을 제공한다.

무제한 용량을 제공하며 사용한 만큼만 비용을 지불하는 것이 원칙이다.

 

 

(4) RDS

RDS란 AWS의 관계형 데이터베이스 PaaS이다.

MySQL, MariaDB, Oracle 등 주요 데이터베이스를 모두 선택할 수 있으며, 항상 켜져 있어야 하는 데이터베이스 특성상 요금이 많이 나오기 때문에 기업들이 주로 사용한다.

EC2 인스턴스에 데이터베이스를 직접 설치하면 요금 면에선 확실히 저렴하지만 기업에서는 요금 이상의 잠재적 기회비용과 시간을 절약할 수 있다.

 

(5) DynamoDB

DynamoDB란 AWS 또 다른 데이터베이스 PaaS이다.

AWS의 데이터베이스 분야를 대표하는 서비스이며, RDS와 달리 NoSQL 기반의 데이터베이스로 MongoDB와 비슷하다고 볼 수 있다.

또한, RDS에 비해 가격이 매우 저렴하고 무료 용량도 제공할 뿐만 아니라 AWS에서 직접 관리하기 때문에 별도의 EC2를 필요로 하지 않으므로 사용량에 따라 요금이 부과된다.

 

 

 

AWS  장단점

AWS의 장점

  • 사용량에 따른 지불
    • 일반적인 웹 호스팅 사이트는 월 고정액이 있는 반면, AWS같은경우 사용량이 적으면 그만큼 적게 지불한다.
  • 실시간 서버 설정
    • 일반적인 웹 호스팅같은 경우 갑작스러운 트래픽 증가 등으로 인해 사이트가 느려지거나 터지는 경우가 종종 발생한다. 하지만 AWS같은경우 해당 경우에 대해 자동적으로 작동하게끔 설정을 할 수 있으며, 당연히 수동적으로도 설정할 수 있다
  • 주요 지표 모니터링
    • AWS에서는 접속률 등의 많은 데이터를 제공해준다. 이를 잘 분석하고 활용한다면 상당히 유용한 데이터를 확보할 수 있다.
  • *클릭 몇번으로 서버 이중화 작업이 가능하다.

 

 

AWS의 단점

  •  사용량에 따른 지불
    • 위에서 장점이라 적었지만 단점이기도 한 항목이다. 실제 사용량을 제대로 모니터링을 안하면, 요금폭탄을 맞을 수가 있다.
  • 관리를 위해선 고급 전문 지식이 필요
  • 파악하기 힘든 광범위한 서비스
  • 클라우드는 물리적인 자원을 가상화(물리적 리소스인 하드웨어와 애플리케이션 간에 추상적인 계층을 두어, 리소스 공유나 격리 등의 상호작용을 가능하게 하는 기술) 기반으로 구현하기 때문에 가상화 소프트웨어 내에 보안 취약점이 존재할 수 있다. 물리적으로 분리된 것이 아닌 가상화 기술로 다른 기업의 IT 자원과 분리되어 있으므로 가상화 취약점을 통해 보안 취약점이 확산될 수 있는 위험이 있다. 또한 장애가 발생하였을 경우 클라우드 서비스 제공자가 책임지는 영역에 대한 접근이나 원인 분석이 불가한 블랙박스(Blackbox) 문제가 존재한다.