Chapter3. 컴퓨팅 서비스 (2)

강민지·2023년 12월 5일
0

AWS

목록 보기
4/6

서버 없이 프로그램 실행

AWS Lambda란

서버리스 컴퓨팅 서비스 Lamda

AWS Lambda(Lambda) : 서버리스 컴퓨팅 서비스이다.

  • 서버리스란?
    - AWS에서 서비스가 실행될 인프라를 관리하므로 사용자가 관리할 서버가 없다는 것. 사용자는 인프라 관리를 AWS에 맡기고 코드 개발에만 집중하면 된다.

Lamdba의 장점

  • 보안
    - AWS에서 OS와 미들웨어 등의 기반 시스템을 모두 관리함. 장애와 보안 패치 등도 모두 AWS 소관 하에이루어지므로 이용자는 Lamdba로 사용할 코드만 관리하면 됨
  • 비용
    - EC2는 사용하지 않아도 기동하고 있는 시간만큼 요금이 발생하지만, Lambda에서는 코드가 실행될 때만 요금이 부과되므로 비용을 절감할 수 있다.
  • 가용성
    - AWS에는 물리적으로 독립된 여러 개의 가용영역(AZ)이 있으며 Lambda는 복수의 가용 영역에서 실행된다. 사용자가 설정하지 않아도 고가용성, 장애 대응성이 유지된다.
  • 확장성
    - Lambda는 동시에 다수의 처리를 해야하는 경우 자동으로 AWS가 관리하는 처리용 인스턴스가 시작되면서 확장된다. 서울 리전의 동시 실행 수는 최대 1000개이며 별도의 확장 신청을 통해 동시 실행 수를 늘리는 것도 가능하다.

Lambda와 비교한 EC2의 장점.

  1. 온프레미스의 응용 프로글매을 AWS로 이전하는 경우 OS설정 등을 그대로 사용할 수 있다.
  2. 인스턴스 유형, OS, 네트워크 등을 자유롭게 설정할 수 있는 유연성이 있다.
  3. 대량의 트래픽이나 접속을 상시 처리하는 경우 EC2쪽이 저렴해질 수 있다.
  4. 서버에 프로그램을 배포한다는 기존 뱅식으로 개발을 진행할 수 있다. Lambda는 AWS의 독자적인
    설정방법과 개발 방법이 있으므로 초보자에게는 어려울 수 있다.

함수 생성 및 실행

Lambda에서는 함수의 단위로 프로그램 코드를 관리하고 처리한다. 함수를 화면상에서 생성해 프로그램 코드를 쓰는 것만으로도 실행할 수 있다. 단, 화면상에서 편집할 수 있는 코드는 파이썬이나 Node.js등 컴파일이 불필요한 일부의 언어만 해당한다.

서버리스 활용법 이해

AWS Lambda의 실용적인 사용법

AWS Lambda는 다른 서비스와 연계해 사용

Lambda는 입력받은 데이터를 처리하기도 하지만 다른 AWS서비스와 연계해 사용자 접속이나 데이터 연동과 같은 처리를 자동으로 수행 할 수도 있다.

  • 사용자 요청에 따라 Lambda 함수 실행
    Amaszon API Gateway(API Gateway) 서비스와 Lambda를 걸합해 사용자의 HTTP요청을 Lambda함수로 처리할 수 있다.

**Amaszon API Gateway(API Gateway) - 서버리스 서비스이므로 사용자는 서버를 구축하지 않고도 웹 응용 프로그램을 만들 수있다.

  • S3에 데이터를 저장할 때 자동 처리
    Amazon S3(S3)에 데이터가 저장되면 저장된 데이터를 Lambda로 자동 처리할 수 있따.

  • 주기적으로 Lambda 함수 실행
      주기적으로 정해진 시간에 어떤 처리를 하고 싶다면 Amazon EventBridge(EventBridge)라는 서비스와 Lambda를 연계해 구형할 수 있다.
      매일 정해진 시간에 EC2를 중지하거나 시작하는 작업도 가능하다.

AWS Lambda 추가 설정 및 모니터링

Lambda의 실행 환경은 일반적으로 AWS측에서 관리하므로 사용자는 특별히 서버 설정에 관여하지 않아도 되지만

  • 메모리 용량
  • 타임아웃 시간
  • 환경변수 : 함수에 사용하는 외부 변수와 같은 개념. 가령 개발 환경과 서비스 환경이 서로 다른 데이터베이스를 사용해야하는 경우, 환경 변수에 데이터베이스 접속 정보를 저장해두면 동일한 코드를 사용해도 서로 다른 데이터베이스를 이용할 수 있다.
    (= 환경마다 서로 다른 소스 코드를 만들지 않아도 됨.)

위의 3가지는 사용자가 변경할 수 있다.

Lambda는 다른 AWS자원을 조작하기 위한 목적으로 사용되는 경우가 많지만, 처음 Lambda함수를 만들면 다른 서비스에 대한 조작 권함을 따로 부여해야 한다.

  • Lambda 함수 실행 상태 모니터링
    - Lambda함수를 만들어 배포하면 AWS 모니터링 서비스인 CloudWatch에 실행횟수, 실행시간(최소/최대/평균),오류 수와 실행 성공률 같은 정보가 자동으로 전송되므로 사용자는 Lambda 실행 상황을 확인 할 수있다.

컨테이너의 구조와 특징 이해

컨테이너란

컨테이너란?

가상서버  VS  컨테이너

  • 가상서버
    - 1대의 물리 서버에서 복수의 가상 서버가 동작한다.
    - 가상 하드웨어 위에 OS, 미들웨어가 설치돼 그 위에서 프로세스가 실행된다.

  • 컨테이너
    - 1개의 물리 서버에 여러 컨테이너가 동작한다.
    - 서버의 OS와 물리 자원은 각 컨테이너가 공동으로 이용한다.
    - 각 컨테이너는 네트워크가 분리돼 있지만 외부 네트워크와읭 통신이나 컨테이너 간 통신을 할 때 컨테이너 런타임을 통해 이루어 진다.


컨테이너 이미지: 어떤 응용 프로그램을 실행할지 미리 정의해두는 파일


가볍고 빠른 컨테이너

컨테이너 내에 포함된 것이 적음.
가상 머신과 비교해 빠르게 시작됨. : 컨테이너 자체가 직접 응용 프로그램을 실행함.
OS에 대한 오버헤드가 없기 때문에 가상서버보다 처리 속도가 빠르다.

배포의 용이성

  • 컨테이너 이미지는 한번 생성하면 그 이미지를 다른 서버에서 바로 사용할 수 있다.
  • 컨테이너 이미지는 바로 압축 파일 형태로 내보내거나 가져오기를 수행할 수 있다.
  • 이미지 리포지토리를 이용해 이미지를 업로드 하거나 내려받을 수도 있다.

** 컨테이너는 기본적으로 '완성된 이미지'이므로 컨테이너가 종료되면 안에 저장된 내용이 사라진다. 컨테이너가 실행될 포스트 서버의 디렉터리를 마운트해서 작업 내용을 저장하는 등의 처리를 해야한다.

컨테이너 오스트레이션

컨테이너 관리를 자동화해 운영부하를 줄일 수 있다.

ECS로 누리는 컨테이너의 장점

Amazon EC2란

AWS의 컨테이너 오케스트레이션 서비스

AWS에서 컨테이너 시스템을 구축하는 경우

  • Amazon Elastic Container Service(ECS)

  • Amazon Elastic Kuybernetes Service(EKS)

    위의 둘 중에서 선택할 수 있다.

    -> 두 서비스의 가장 큰 차이점은 컨테이너 오케스트레이션 기능을 AWS가 담당하느냐, 쿠버네티스(Kubernetes)가 담당하느냐다.

ECS
: AWS의 관리형 컨테이너 오케스트레이션 서비스
: AWS에 오케스트레이션 도구를 구축하고 관리하는 것을 모두 맡길 수 있다.
-> Amazon Elastic Container Registry(ECR)라는 컨테이너 이미지레지스트리 서비스도 제공한다.
-> 사용자 정의된 컨테이너 이미지를 AWS에서 관리할 수 있고 ECS에도 쉽게 배포할 수 있다.


    ECS
    컨테이너 배포, 상태 모니터링. 스케일링 관리, 작업 정의를 기반으로 설정된 컨테이너의    상태와 수를 유지한다.

    ALB
    ALB(Application Load Balancer)와 연결된 태스크의 집합체를 서비스로 정의 한다.

EC2와 Fargate

ECS를 이용해 컨테이너를 기동할 떄 어떤 플랫폼에서 시작할지 선택할 수 있다.

  • EC2 :
    - EC2 인스턴스 내에서 실행되는 컨테이너 런타임에서 컨테이너를 실행하는 타입.
    - 사용자가 컨테이너 런타임이 실치된 서버(EC2 인스턴스)를 관리해야함.
    - CPU/메모리를 늘리고 싶다면 인스턴스 타입을 적절한 것으로 변경하고, 스토리지를 늘리고 싶다면 스토리지(EBS)의 볼륨 크기를 확장하면 된다.

  • AWS Fargate(Fargate) : AWS에서 관리하는서버에서 컨테이너를 실행함.
    - 컨테이너 런타임, OS 버전업과 같은 서버 관리를 AWS에서 하므로 사용자는 컨테이너 이미지만 관리하면 된다.
    - CPU와 메모리를 직접 할당 할 수 있다. 하지만 지정한 CPU값에 따라 할당할 수 있는 메모리 크기가 정해져 있따.
    - 스토리지는 사전에 Fargate 태스크 스토리지로 태스크 실행 시 할당 되며 할당량은 PV에 따라 다르다.

Fargate의 장점

주요특징 AWS에서 서버를 관리한다는 점
-> 유지보수작업은 AWS에서 담당하므로 편하게 ECS를 사용할 수 있다.

쿠버네티스를 보다 쉽게 사용할 수 있는 서비스

서버 지식 없이 사용할 수 있는 대표적인 서비스 5개

기타 컴퓨팅 서비스

AWS Lightsail

✔ 일반적으로 자주 사용되는 구성의 가상 서버를 수비고 빠르게 구축하기 위한 서비스
✔ 여러 인스턴스를 만들면 자동으로 로드 밸런싱을 해주거나 SSL/ TLS인증서를 통한 통신 암호화도 대응한다.

➖ EC2에서 구축할 때와 같이 미들웨어 버전을 고려해 설치하거나 ELB를 이용해 유연한 부하 분산을 설정하는 등의 자유도는 없다.

✔ Lightsail로 서버를 구축 후 조금 더 다양한 기능을 자유롭게 사용하고 싶다면 EC2로 마이그레이션을 하면 된다.

AWS Elastic Beanstalk

✔ JAVA, .NET, PHP, Python, Ruby, Go, Docker와 같은 주요 언어나 환경에서 개발된 응용 프로그램을 배포하기 위한 실행 환경을 자동으로 만들어주는 서비스다

AWS App Runger

✔ 컨테이너화된 응용 프로그램을 손쉽게 배포하는 서비스.

AWS Batch

✔ 지정된 프로그램을 EC2나 Fargate에서 실행하는 서비스다.

✔ Lambda와 똑같아 보이지만 실행 프로그램의 순서 관리나 다수 프로그램의 병렬 구동과 같은 복잡한 제어에 특화된 서비스다.

AWS OutPosts

✔ 사용자가 온프레미스 환경에서 AWS와 같은 서비스를 실행할 수 있또록 AWS가 물리 서버를 대여하는 서비스
-> AWS를 프라이빗 클라우드와해서 제공하는 서비스

✔AWS Outposts를 AWS의 새로운 가용영역으로 사용 할 수 있다.

0개의 댓글