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.

전통적인 기업의 IT 인프라

전통적인 IT 인프라는 기업이 직접 서버를 구매하고, 관리하며, 회사의 한켠에 위치시켜 운영하는 방식이었습니다. 단순히 여러분이 접하는 웹 서버만 해도 단독으로 작동하는 CPU, 메모리가 필요하고, 이를 저장하기 위한 데이터베이스, 그리고 외부와 최적화된 통신을 위한 라우터, 이외에도 백업서버, UPS(무정전 전원 장치)등을 구비해두어야 합니다. 회사의 서비스 규모가 커지면 커질수록, 서비스의 안정적인 공급을 위해 더 많은 비용을 투자해 인프라를 구축해야만 했습니다. 

 

이 방식은 IT 자원의 활용에 있어서 큰 비효율성을 내포하고 있었습니다. 서버의 유지관리, 업그레이드 비용, 전력 소비(24시간 켜져있기 때문에 개인사용자과는 전혀 다른 의미로 중요한 요소입니다.), 그리고 공간 사용(임대료를 지출하지 않는 자체 보유 공간 또한 보이지 않는 비용의 한 종류), 유지보수 관리인력(오로지 서버를 위한)은 모두 고정 비용으로, 기업에서 상당히 큰 비용을 지출하면서도, 자원의 활용도가 낮고, 확장성이 제한적이며, 관리가 복잡한 문제점이 있었습니다. 하지만 1990년대 후반, 2000년대 들어 클라우드 컴퓨팅의 등장은 이러한 상황에 혁명적인 변화를 가져왔습니다.

 

 

클라우드란? 

클라우드 컴퓨팅이란?

클라우드 컴퓨팅은 인터넷을 통해 서버, 스토리지, 데이터베이스, 네트워킹, 소프트웨어, 분석 등 컴퓨팅 서비스를 제공하는 기술입니다. 사용자는 서비스를 필요로 하는 만큼만 선택하여 사용하고, 사용한 만큼만 비용을 지불하게 됩니다. 클라우드 서비스는 유연성, 확장성, 효율성을 제공함으로써 기업이 IT 관리에 드는 비용과 복잡성을 대폭 줄일 수 있도록 돕습니다.

 

클라우드의 간단한 배경

클라우드 컴퓨팅의 개념은 1960년대의 Time sharing(시분할) 시스템과 1990년대의 그리드 컴퓨팅 기술에서 그 뿌리를 찾을 수 있습니다. 이러한 기술들은 리소스를 중앙집중화하고, 여러 사용자가 접근하여 활용할 수 있는 환경을 제공하는 아이디어에 기반을 두고 있었습니다.

 

2000년대에 들어서면서 인터넷 기술의 급속한 발전과 함께 기업이 보유한 데이터의 양도 기하급수적으로 증가했습니다. 기업들은 더 큰 규모의 데이터를 저장, 처리, 분석할 필요성에 직면했고, 이를 위해 필요한 IT 자원의 확장이 점점 더 비용 부담으로 다가왔습니다. 클라우드 컴퓨팅은 이러한 문제에 대한 해결책으로 부상했으며, 초기 투자 없이도 필요한 컴퓨팅 자원을 제공받을 수 있다는 점에서 많은 기업들의 관심을 받기 시작했습니다. 클라우드 컴퓨팅은 기업이 시장 변화에 빠르게 대응할 수 있는 민첩성을 제공하였고, 확장성과 유연성은 기업이 새로운 아이템을 서비스하거나, 갑작스런 수요 증가에 효과적으로 대응할 수 있게 해주었습니다. 

 

클라우드 컴퓨팅의 핵심 이점

    1. 비용 효율성: 클라우드 컴퓨팅은 초기 투자 비용 없이, 필요한 IT 자원을 즉시 사용할 수 있게 함으로써, 전체 비용을 크게 절감합니다. 사용한 만큼만 지불하는 모델(종량제)은 예산 관리에도 효율성을 제공합니다.
    2. 유연성과 확장성: 예측의 어려움(특히 최근들어, 소규모 서비스의 순간적인 붐이 있죠.)에 따른 자원의 낭비를 최소화하면서도, 필요 시 언제든지 인프라를 확장하거나 축소할 수 있는 유연성을 제공합니다. 이는 수요 변화에 빠르게 대응할 수 있으면서도, 추가적인 비용을 부담하지 않습니다. 
    3. 안정성: 데이터를 여러 장소에 분산 저장하여 재해, 재난시의 서비스 안정성을 보장합니다. 서비스를 이중화하는 것은 단순히 복사/붙여넣기로 이루어지는 것이 아니라, 상당히 어려운 일입니다. 관련하여 카카오에서 지난 2022년 판교 데이터센터 화재 이후 발표한 조사 내용을 참고해 보시면 좋겠습니다.


    4. 접근성: 어디에서나 인터넷이 연결된 환경에서 서버에 접근할 수 있어, 유지보수면에서도 이점이 있습니다.(서버상주인력이 필요하지 않습니다.)
    5. 유지관리 간소화: 클라우드 서비스 제공자가 서버 유지관리와 소프트웨어 업데이트를 담당합니다. 일반적으로 서비스 장애 시간에 따른 계약 세부내용이 존재합니다. 기업은 자체 IT 인력을 보다 전략적인 작업(비즈니스 알고리즘이나 데이터 분석 등)에 집중할 수 있습니다.
    6. 규제준수 및 보안: 많은 클라우드 서비스 제공업체들은 국제적인 보안 표준과 규제 준수 요구사항을 충족시키며, 이는 기업이 자체적으로 데이터 보안 및 규제 준수 시스템을 구축하는 것보다 경제적이고 효율적인 방법을 제공합니다. 클라우드를 통해 데이터 보안과 프라이버시가 강화되면서, 민감한 데이터를 다루는 기업들도 클라우드로의 전환을 가속화하고 있습니다.

 

AWS?

아마존 웹 서비스(AWS)는 2006년부터 클라우드 솔루션을 제공하기 시작하여, 클라우드 컴퓨팅 서비스의 시장을 개척하고 리드해 왔습니다. AWS는 전세계적으로 수많은 데이터 센터를 운영하며, 다음과 같이 가장 유명한 서비스 이외에도, 3000개가 넘는 다양한 서비스 및 기능을 제공하고 있습니다.

  • Amazon EC2: 가상 서버를 필요에 따라 빠르게 배포할 수 있는 서비스입니다.
  • Amazon S3: 높은 내구성을 자랑하는 스토리지 서비스로, 어느 규모의 데이터도 저장하고 검색할 수 있습니다.
  • Amazon RDS: 관리형 SQL 데이터베이스 서비스로, 관리의 복잡성 없이 데이터베이스 솔루션을 제공합니다.

2000년대 초반, 아마존은 자체적으로 거대한 컴퓨팅 인프라를 구축하면서 이를 외부에서도 사용할 수 있게 하는 서비스 모델을 실험하기 시작했고, 이는 후에 AWS로 발전하게 됩니다. 관련하여 아마존이 남는 서버를 빌려주기 시작한 것이 서비스의 시작이라는 이야기가 있지만, 사실이 아닙니다. 관련해서 아래 내용을 첨부합니다.

 

 

A Brief History Of AWS - And How Computing Has Changed

This article cover a Brief History Of AWS, the fastest growing cloud computing platform from Amazon Web Services

digitalcloud.training

 

 

 

왜 AWS인가?

클라우드 컴퓨팅의 이러한 장점들은 전통적인 IT 인프라에 비해 월등히 많은 이점을 제공하며, 기업 비즈니스의 필수적인 요소로 자리 잡게 되었습니다. 현재 클라우드 컴퓨팅 시장에는 AWS 말고도, 마이크로소프트 Azure, 구글 클라우드 플랫폼(GCP)과 같은 대형 글로벌 기업들이 서비스하고 있습니다. 

 

그럼에도 불구하고 AWS는 2006년에 서비스를 시작한 이후 현재까지도 클라우드 컴퓨팅 분야에서 선도적인 역할을 하고 있습니다. 클라우드 서비스로의 전환이 가속되면서 등장한 막강한 경쟁자들을 상대로 AWS는 어떻게 시장 점유율을 지킬 수 있었을까요? 

 

앞으로 연재될 시리즈에서 AWS의 다양한 서비스를 세부적으로 보면서, AWS가 클라우드 서비스 시장에서 어떻게 독보적인 위치를 유지하고 있는지 살펴보겠습니다. 또한 가능한 선에서, 실제 비즈니스 환경에서 서비스를 효과적으로 사용하는 방법에 대해 고민해보는 시간이 되었으면 좋겠습니다.

 

 

 

 

추신. 클라우드는 무조건 좋은 선택인가요? - 고민해볼 만한 새로운 주제

클라우드 컴퓨팅은 CapEx(설비투자지출)를 OpEx(운영 지출)로 전환하는 경제적 이점을 제공합니다. 이는 기업이 비용을 자본 지출로 한 번에 처리하는 대신, 실제 사용량에 따라 지출을 분산시킬 수 있음을 의미합니다. 또한, 클라우드 서비스의 가격 경쟁은 계속해서 비용을 낮추는 효과를 가져왔으며, 이는 다시 기업들이 IT 비용을 더욱 효율적으로 관리할 수 있게 만들었습니다. 하지만 과연 이것이 무조건 효율적일까요? 실제로 아마존의 서비스을 보면 리전에 따라 다소 차이는 있지만, 모든 회사들에게 비용적으로 부담이 되지 않는 수준은 아닙니다. 관련해서는 경영학적인 논의, 특히 기업의 CapEx에 대해 심도깊은 고민이 필요하고, 이를 위해 기업의 워크로드에 대한 구체적인 이해가 필요합니다. 관련하여 좋은 글을 소개합니다. 

 

 

클라우드 경제학의 CAPEX vs. OPEX

클라우드 경제학에 관한 논쟁에 맞닥뜨리기 전에 클라우드 컴퓨팅 때문에 많은 시간을 소비할 필요는 없다. 이 경우 “CAPEX vs. OPEX

www.itworld.co.kr

 

 

‘클라우드 안 쓴다, 고정 관념 버린다’··· 한 SaaS 기업이 ‘서버’를 구매하는 사연

37시그널의 CTO에 따르면 클라우드를 포기함으로써 회사는 연간 막대한 금액을 절감할 수 있을 전망이다. 인터넷이라는 공간을 위하는 바람직한 결

www.ciokorea.com

 

약 3개월 동안 AWS의 다양한 서비스를 소개하고, 실제 비즈니스 환경에서 이 서비스들을 어떻게 적용할 수 있는지를 탐구하는 블로그 시리즈를 게시하고자 합니다. 

 

1. AWS 기초

이 챕터에서는 클라우드 서비스가 무엇인지, 그리고 AWS가 무엇인지에 대한 소개를 하고, AWS의 가장 핵심 서비스의 기능을 살펴보고 기초적인 사용법을 설명합니다. 

  • AWS 소개: 클라우드 서비스의 출현 배경과 AWS
  • AWS 핵심 서비스 소개:
    • Compute: EC2, Lambda, Elastic Beanstalk, ECS
    • Storage: S3, EBS, Glacier
    • Database: RDS, DynamoDB
  • AWS 관리 콘솔 사용법: 콘솔의 기본적인 사용 방법
  • AWS 가격 정책: 서비스별 가격 구조, 비용 절감 및 빌링
  • AWS 보안 기초: IAM 기초, 보안 베스트 프랙티스(AWS Security Best Practices) 소개

2. AWS 심화

이 챕터에서는 매우 널리 알려진 Compute, Storage, DB에서 더 나아가 실제 비즈니스 환경에서 자주 쓰이는 AWS 서비스에 대해 살펴봅니다.

  • 고급 네트워킹 구성: VPC, 서브넷팅, NAT, VPN, Direct Connect
  • 보안 강화: IAM 고급, KMS, HSM, Shield, WAF
  • 자동화와 관리 툴: CloudFormation, Terraform on AWS, OpsWorks, Systems Manager
  • 데이터베이스 관리와 최적화: RDS 고급 설정, DynamoDB 성능 튜닝, ElastiCache

3. 서버리스 아키텍처

이 챕터에서는 서버리스 컴퓨팅의 기본 개념, 주요 장점, 그리고 AWS에서 서버리스 아키텍처를 구현하는 방법을 설명합니다.

  • 서버리스 컴퓨팅 입문: 서버리스의 개념, 장점 및 주요 패턴
  • AWS Lambda 심화: 이벤트 소스, Lambda@Edge, 성능 최적화 전략
  • API Gateway 활용법: RESTful API 및 WebSocket API 구성 방법
  • 서버리스 패턴과 프레임워크: SAM, Serverless Framework의 사용과 배포 자동화

4. 머신러닝과 AI

이 챕터에서는 AWS의 AI 서비스를 살펴보며, 기업이 실시간 데이터 분석이나 딥러닝 환경 구축을 어떻게 할 수 있는지를 살펴봅니다.

  • AWS AI/ML 서비스 개요: Rekognition, Textract, Translate, Polly 등의 소개
  • SageMaker 심화: 머신러닝 워크플로우 구축, 자동화 및 최적화 기법
  • 딥러닝 환경 구축: AWS Deep Learning AMIs, Elastic Inference
  • 실시간 데이터 분석: Kinesis 심화, 실시간 스트리밍 분석, QuickSight를 이용한 BI 통합

5. DevOps와 CI/CD

이 챕터에서는 AWS에서 DevOps 문화를 어떻게 구축하고 관리할 수 있는지를 살펴보고, CI/CD 파이프라인을 효과적으로 설계하는 방법을 다룹니다. 

  • AWS DevOps 도구 소개: CodeBuild, CodeDeploy, CodePipeline, CodeStar
  • 컨테이너 서비스 심화: ECS 심화, EKS 구축 및 관리, Fargate 활용 방법
  • 모니터링과 로깅 심화: CloudWatch, CloudTrail, ELK 스택, X-Ray
  • Microservices on AWS: 서비스 메쉬, EKS 및 ECS를 사용한 마이크로서비스 아키텍처

6. 비용 최적화

이 챕터에서는 AWS 리소스의 비용을 효율적으로 관리하고 최적화하는 전략에 대해 알아봅니다. 기업이 비용을 절감하면서도 성능을 극대화할 수 있는 방안이 존재하는 지에 대해 생각해보는 챕터입니다.

  • 비용 효율적인 리소스 관리: 예약 인스턴스, 스팟 인스턴스, 저비용 리전 선택
  • 태그 및 리소스 최적화 심화: 자동화된 태깅 전략, 비용 분석을 위한 태그 활용
  • 비용 모니터링과 보고: Cost Explorer, AWS Budgets의 심화 활용, 비용 보고(report) 자동화
  • 성능과 비용의 균형: 성능 효율성 평가, 비용 대 성능 최적화 전략

+ Recent posts