1. 컴퓨팅 서비스

  • EC2 (Elastic Compute Cloud): 사용자가 필요한 만큼 가상 서버 인스턴스를 생성하고 구성할 수 있는 서비스로, 유연한 확장성이 특징입니다. 웹 애플리케이션 호스팅, 대규모 컴퓨팅 작업, 모바일 백엔드 서비스에 사용합니다. 사용하지 않는 리소스에 대한 비용이 발생할 수 있으므로, 리소스 모니터링이 중요합니다. 또한 인스턴스의 보안 설정이 적절히 관리되지 않으면, 보안 취약점으로 인해 서비스에 문제가 발생할 수 있습니다.

 

  • Lambda: 서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있는 서비스로, 코드 실행에 필요한 컴퓨팅 리소스만큼만 비용을 지불하면 됩니다. 서버리스 백엔드 함수 실행, 이벤트 기반 데이터 처리, 자동화된 태스크 실행에 사용합니다. 람다의 최대 실행 시간 제한은 15분, 최대 메모리는 10GB(10,240MB)로 제한되어 있으므로(2024년 기준) 장시간 실행이 필요한 함수나 작업에는 적절하지 않습니다. 또한 사용빈도가 낮은 함수의 경우 초기 실행시 지연이 발생할 수 있습니다.(이를 콜드 스타트 문제라고 합니다. 이에 대한 해결방법은 다음 링크를 읽어보세요.)
 

Lambda 함수 콜드 스타트 문제 해결

AWS Lambda 함수에서 콜드 스타트 지속 시간이 오래 걸립니다.

repost.aws

 

  • Elastic Beanstalk: 애플리케이션 배포와 관리를 자동화할 수 있는 PaaS(Platform as a Service)로, 개발자는 코드 업로드만으로 배포가 가능합니다. 웹 애플리케이션 및 서비스의 빠른 배포 및 관리에 사용합니다. 환경설정, 스케일링 및 모니터링이 자동으로 이루어져 관리에 용이하지만, 플랫폼이 많은 부분을 자동으로 처리하는만큼 세부적인 커스터마이징이 불가능합니다. (장점이면서 단점이기도 한 점입니다.) 또한 내부적으로 사용하는 리소스(EC2, S3 등)에 대해 비용이 발생하므로, 비용이 어디서 발생하는지 모니터링과 관리가 필요합니다.

 

  • ECS (Elastic Container Service): Docker 컨테이너를 쉽고 빠르게 배포, 관리할 수 있는 서비스로서, 마이크로서비스 아키텍처를 구축할 때 유용합니다. 컨테이너화된 애플리케이션의 배포 및 관리에 사용합니다. 다만 초기 설정과 관리가 다소 복잡할 수 있으며, ECS를 효과적으로 사용하기 위해 컨테이너에 대한 이해가 요구됩니다.

 

2. 스토리지 서비스

  • S3 (Simple Storage Service): 높은 내구성(AWS에서는 99.999999999%로 표현하고 있습니다.)과 확장성을 제공하는 객체 스토리지로, 웹상의 어떤 양의 데이터도 저장하고 검색할 수 있습니다. 웹사이트 이미지와 동영상 저장, 데이터 백업 및 아카이빙, 대용량 데이터 분석 등에 사용합니다. 대량의 데이터를 저장할 경우 데이터의 생명주기 관리( DLM) 와 조직화를 적절히 하지 않았을때, 데이터의 관리가 복잡해질 수 있습니다.(다만 이것을 클라우드 서비스의 직접적인 단점으로 보기는 어렵네요. 상대적으로 물리적 한계가 있는 내부서버에 비해 확장성이 있어 데이터를 기왕이면 쌓아두고 싶다는 욕망에 대한 제어가 필요합니다.)

 

  • EBS (Elastic Block Store): EC2 인스턴스에 사용할 수 있는 블록 레벨 스토리지 볼륨을 제공하여, 데이터베이스 같은 트랜잭션 집중적인 애플리케이션에 적합합니다. 고성능 데이터베이스, 대규모 트랜잭션 처리, 빅 데이터 분석 애플리케이션에 사용되는 블록 스토리지에 사용합니다. 다양한 볼륨 유형을 제공하여 특정 워크로드 요구에 맞춰 선택할 수 있으며, 용량을 실시간으로 조정할 수 있습니다. 또한 SSD 기반의 EBS 볼륨은 IOPS(intensive input/output operations per second)를 최적화하여 고성능을 요구하는 데이터베이스 및 트랜잭션 처리 애플리케이션에 적합합니다. EBS 볼륨은 특정 EC2 인스턴스와 동일한 가용 영역에 위치해야 하므로, 가용성과 탄력성을 위한 설계가 중요합니다.

 

  • Glacier: 장기적인 데이터 보관을 위한 저렴한 스토리지 서비스로, 저비용으로 데이터 아카이빙 및 백업을 할 수 있습니다. 장기 데이터 보관 및 백업, 저비용 데이터 아카이빙에 사용합니다. Glacier는 비용을 낮추기 위해 접근 시간이 느립니다. 긴급하게 데이터에 접근해야 할 경우 비용이 더 많이 들거나 적합하지 않을 수 있습니다. 또한 데이터 검색 비용과 요청 수에 따라 요금이 추가되므로, 사용 전 예상 비용을 계산하고 모니터링 하는 것이 중요합니다.

 

3. 데이터베이스 서비스

  • RDS (Relational Database Service): SQL, MySQL, PostgreSQL 등 여러 관계형 데이터베이스 관리 시스템을 운영할 수 있습니다. 관리의 복잡성 없이 쉽게 설정, 운영 및 스케일링이 가능합니다. 웹 애플리케이션, 모바일 애플리케이션, 내부 비즈니스 애플리케이션에서 사용되는 관리형 데이터베이스에 사용합니다. AWS가 데이터베이스의 패치 관리, 백업, 복구, 스케일링 등을 자동으로 처리하여 운영 부담을 크게 줄여줍니다. 그러나  하드웨어나 운영 체제 수준에서의 맞춤 최적화가 제한적이어서, 매우 특수한 요구 사항을 가진 데이터베이스에는 적합하지 않을 수 있습니다.

 

  • DynamoDB: 완전 관리형 NoSQL 데이터베이스 서비스로, 대량의 데이터를 빠르게 읽고 쓸 수 있으며, 자동 확장 기능도 지원합니다. 빠른 읽기 및 쓰기가 요구되는 웹, 모바일, 게임 애플리케이션의 데이터베이스 관리에 사용합니다. 사용량이 예측하기 어려울 수 있으며, 특히 읽기 및 쓰기 요청이 많은 경우 비용이 급격히 증가할 수 있습니다.

 

 

추가. 클라우드 용어

클라우드 서비스를 공부하다보면, 네트워크에 대한 개념 이외에도 여러가지 용어들이 다수 등장하여 서비스에 대한 이해를 어렵게 만들곤 합니다. 이런 용어들에 대해 예시를 곁들어 간략히 정리해보았습니다.

 

  • 리전 (Region): 리전은 AWS 클라우드 서비스가 물리적으로 위치한 지역을 의미합니다. 각 리전은 여러 개의 독립적인 데이터 센터로 구성된 여러 개의 가용 영역(Availability Zones)을 포함합니다. 리전을 선택함으로써 사용자는 데이터 저장 위치를 결정하고, 지역적으로 가까운 서비스를 통해 더 빠른 접근성과 반응성을 확보할 수 있습니다. ex) 한국 서울, 미국 북부 버지니아, 독일 프랑크푸르트 등.

 

  • 인스턴스 (Instance): 인스턴스는 가상 서버를 의미합니다. 클라우드에서는 물리적 서버를 가상화하여 여러 개의 독립적인 서버로 분할할 수 있으며, 이렇게 생성된 가상 서버를 인스턴스라고 합니다. 사용자는 필요에 따라 인스턴스의 사양을 선택하고, 운영 체제와 애플리케이션을 설치하여 사용합니다. ex) Amazon EC2에서 제공하는 t2.micro, m5.large 등의 인스턴스 유형.

 

  • 클러스터 (Cluster): 클러스터는 네트워크로 연결된 여러 대의 서버(인스턴스) 그룹입니다. 이들은 특정 작업을 공동으로 처리하며, 고가용성, 높은 성능, 부하 분산 등의 목적으로 구성됩니다. 클러스터는 데이터 처리, 컴퓨팅 작업, 컨테이너 관리 등 다양한 용도로 사용됩니다. ex)  Amazon ECS에서의 컨테이너 관리 클러스터, Amazon EMR의 데이터 처리 클러스터.

 

  • 컨테이너 (Container): 컨테이너는 애플리케이션과 그 종속성을 포함하는 경량의 독립 실행형 패키지입니다. 컨테이너는 시스템의 나머지 부분과 격리되어 있으며, 다른 환경에서도 일관된 동작을 보장합니다. 컨테이너는 기존의 가상화 기술보다 더 적은 오버헤드와 더 빠른 시작 시간을 제공합니다. ex)  Docker 컨테이너, Amazon ECS에서 관리하는 컨테이너.

 

  • 로드 밸런서 (Load Balancer): 로드 밸런서는 인터넷 트래픽이나 애플리케이션 요청을 여러 서버(인스턴스)에 분산시키는 장치 또는 서비스입니다. 이는 각 서버에 고르게 부하를 분배하여 과부하를 방지하고, 전체 시스템의 가용성과 성능을 향상시키는 역할을 합니다. ex)  AWS의 Elastic Load Balancing(ELB) 서비스.

 

  • 오토 스케일링 (Auto Scaling): 오토 스케일링은 애플리케이션의 부하에 따라 자동으로 서버(인스턴스) 수를 증가시키거나 감소시키는 기능입니다. 이를 통해 사용자는 비용을 절감하면서도 애플리케이션의 성능을 최적화할 수 있습니다. 부하가 적을 때는 인스턴스 수를 줄여 비용을 절약하고, 부하가 많을 때는 인스턴스 수를 늘려 성능을 유지할 수 있습니다. ex)  Amazon EC2 Auto Scaling.

+ Recent posts