[cloud]AWS 기본 지식과 EC2와 Lambda의 차이

김수람·2023년 2월 1일
0
post-thumbnail

AWS

서버 운영 방식에는 온프레미스와 클라우드 두가지 서버 운영 방식이 있다.
온 프레미스는 전산실에 서버를 설치하여 자체 로컬 서버를 운영하는 방식이고, 클라우드는 데이터 센터를 만들고 필요한 만큼 할당받아 원격 환경에서 서버를 운영하는 방식이다.
오늘은 세계적으로 가장 포괄적이며, 널리 채택되고 있는 클라우드 플랫폼인 AWS에 대해서 알아보자.

AWS는 필요로 하는 스펙에 따라클라우드 프로덕트 명칭을 약어로 표현한다.

IAM : Identity and Access Management

IAM은 AWS 리소스에 대한 액세스를 안전하게 제어할 수 있는 웹 서비스다. AWS는 한 계정으로 다양한 서비스를 관리하는데, IAM은 우리가 사용하는 Linux에서 root 관리자와 같은 역할을 하며 사용자라고 정의한다. 사용자는 IAM을 사용하여 리소스를 사용하도록 인증(로그인) 및 권한 부여(권한 있음)된 대상을 제어한다.

루트 사용자 : Route User
  ▪ billing 용으로만 사용
아이엠 사용자 : IAM User
  ▪ IAM을 통해 생성한 유저

ex)

  • 관리자 or CTO (루트 사용자)
  • 개발자 또는 마케터 또는 회계사 (아이엠 사용자)

EC2 : Elastic Compute Cloud

EC2는 AWS가 제공하는 독립적인 컴퓨터 서버이다. 클라우드 공간 안에 원하는 OS(Linux, Ubuntu, Cent OS 등)를 선택하여 원하는 서버를 설치할 수 있으며 생성된 EC2 하나를 인스턴스라고 부른다.

  • EC2: 아마존의 서버(윈도우, 우분투, 센토스, 레드햇 등…)를 호스팅(임대하다)할 수 있는 서비스로 Elascic(크기 조절)이 가능한 것이 특징

  • Instance: 1대의 컴퓨터

  • Security group: 방화벽 설정 - 포트, IP주소를 통해 내 컴퓨터만 접속할 수 있도록 할 때 사용

  • Virtual Private Cloud(VPC): 가상 네트워크 - AWS 전체 서비스를 하나의 가상 공간으로 묶을 수 있도록 도와주는 기능.

  • Subnet: VPC의 IP 주소 범위

  • Load Balancing을 통해 트래픽을 분산시키거나 AutoScaling을 통해 서버를 확장하여 안전한 환경을 유지해주는등 다양한 서비스와 연계

RDS : Relational Database Service

관계형 데이터베이스를 제공하는 AWS의 서비스이다. 유저가 사용하기 쉽도록 인프라 등을 자동화 시켜주고 유저들은 앤드포인트로 접속할 수 있는 데이터베이스를 제공받는다.

▪ 아마존에서 말하는 RDS

Amazon RDS를 사용하면 클라우드에서 관계형 데이터베이스를 간편하게 설정, 운영 및 확장할 수 있습니다. 하드웨어 프로비저닝, 데이터베이스 설정, 패치 및 백업과 같은 시간 소모적인 관리 작업을 자동화하면서, 비용 효율적이고 크기 조정 가능한 용량을 제공합니다. 사용자가 애플리케이션에 집중해 애플리케이션에 필요한 빠른 성능, 고가용성, 보안 및 호환성을 제공할 수 있도록 지원합니다.

AutoScaling - EC2 개수를 조정

사용자 정책에 따라서 시스템을 자동으로 늘리고 줄여주는 시스템이다.
갑자기 트래픽이 폭주하였을 때 서버들의 CPU사용량이 점점 높아지고
사용자가 정의한 수치가 되었을 때 자동적으로 시스템을 확장하여 부하를 분산하는 방식.

  • AutoScaling은 말그대로 EC2의 갯수를 컨트롤 해주는 서비스

Load Balancing

하나의 인터넷 서비스가 발생하는 트래픽이 많을 때 여러 대의 서버가 분산처리하려 서버의 로드율 증가, 부하량, 속도 저하 등을 고려하여 트래픽을 적절하게 분산처리하는 시스템이다.

  • 부하를 분산시켜주는 서비스

ELB (Elastic Load Balancer) - 분산시켜주는 역할

AWS에서 제공하는 Load Balancer로 EC2 인스턴스, 컨테이너 및 IP 주소와 같은 여러 대상에 대해 수신 애플리케이션 또는 네트워크 트래픽을 여러 가용영역에 배포하는 서비스 입니다.

ELB는 서버의 부하 조절을 담당하고 타겟 서버에 과부하가 발생할 경우 트래픽을 분산시키거나 오토 스케일링을 통해 추가적인 인스턴스 추가/삭제가 이루어진다.

Lambda - Serverless

AWS Lambda는 이벤트에 대한 응답으로 코드를 실행하고 자동으로 기본 컴퓨팅 리소스를 관리하는 서버리스 컴퓨팅 서비스이다. 파이썬, 자바스크립트 등 다양한 언어를 바탕으로 람다 서비스를 만들 수 있다. 많은 서버 설정이 필요 없을 때 EC2 대신 람다로 기능을 구현해 사용할 수 있다.

EC2와 Lambda 비교

  • EC2
    독립된 컴퓨터를 임대해주는 서비스로 그 컴퓨터에 가상서버를 구축해서 그 공간을 제 공간인 것처럼 네트워크 구성이나 스토리지 관리 등등 이용하는 서비스이다. 그 가상서버가 실행되는 정도에 따라 비용이 상이하고, 가장 큰 장점으로는 만약 본인의 서비스의 트래픽이 증대해서 서버가 터질 위험이 오더라도 자동으로 서버를 스케일링(auto-scaling 설정하면)해서 서버 부하를 덜어주는 기능이 탑재되어 있다.

  • Lambda
    EC2와 다르게 별도의 서버 세팅 없이 곧바로 코드를 함수로 실행하게 해주는 서비스입니다.
    EC2와 동일하게 사용하는 시간에 비례해서 비용이 책정되는 구조인데 초 단위로 책정이 됩니다.(EC2도 동일합니다.) 물론 함수를 돌리지 않는다면 전혀 과금이 되지 않는 구조입니다.

EC2와 Lambda 차이

  • AWS EC2는 IaaS(Infrastructure-as-a-Service)이다. 가상 머신을 실행하거나 서버를 실행하는 것이다. EC2를 사용하면 더 많은 제어 기능을 사용할 수 있지만 패치, 유지 관리 등의 작업을 더 많이 수행 할 수 있습니다. EC2를 사용할 때는 코드가 한 번 이상 실행되지 않더라도 인스턴스 (서버) 실행 비용을 지불해야 한다.

  • AWS Lambda는 EC2와는 다르게 서버가 없는(Serverless), 기본적으로 서버를 명시적으로 실행하지 않고 코드를 실행한다. 클라우드에 코드를 업로드하는 것으로 생각하면 AWS에서 서버를 실행하고 있다.
    EC2와 다르게 코드가 실행되는 횟수에 비례해서 비용이 책정되고 사용하지 않는 동안에는 비용이 발생하지 않는다.

EC2와 명확한 차이는 서버 세팅이 필요없기에 작성하고 있는 코드만 복붙해서 빠르게 제품을 개발하는데 유리하다는 점입니다. 그러나 만약 서버도 수정을 해야하고 컴퓨터 사양을 조정하는 일이 추가로 들어가야 하는 매우 유연한 제품을 개발하는 경우에는 람다 서비스보다는 EC2가 더 좋은 선택이 될 수 있습니다.

profile
프론트엔트 개발 꿈나무🍀

0개의 댓글