| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
- 성수
- 책너두
- 깨끗한코드
- 성수맛집
- 오브젝트
- IntelliJ
- 독서
- 독서일지
- 디자인패턴
- 개발자
- 주니어개발자
- JAVA개발자
- 직장인
- 헤드퍼스트디자인패턴
- 객체지향프로그래밍
- Java
- 성수핫플
- JavaScript
- 클린코드
- 헤드퍼스트
- Linux
- 직장인점심
- 객체지향
- 성수직장인
- DesignPattern
- 성수볼거리
- 코딩
- 상속
- 책읽기
- docker
- Today
- Total
닭발개발
AWS EC2, AWS Elastic Beanstalk, AWS ECS, AWS Fargate, AWS Lambda (Serverless) 본문
AWS EC2, AWS Elastic Beanstalk, AWS ECS, AWS Fargate, AWS Lambda (Serverless)
D269 2023. 3. 23. 09:58이 글은
2022년 12월 7일 ~ 2022년 12월 18일 에 원티드에서 프리온보딩 백엔드 챌린지에 참가하여 들은 강의를 정리한 것입니다.

AWS EC2
Amazon Elastic Cloud Compute (C가 2개라서 2임..)
가장 보편적인 시스템
흔히 얘기하는 클라우드 컴퓨터 한 대라고 보면 됨. 여기에 vpc 연결해서 나만의 컴퓨터 한 대를 만들 수 있는 서비스.
가격대별로 코어랑 메모리 설정해서 컴퓨터 처럼 이용함.
스팟 인스턴스 : 한번에 많은 용량을 보내야 할때? 사용함.
- aws 내에 있는 컴퓨터 중에서 사용이 되고 있지 않는 컴퓨터 자원을 임시적으로 얻어서 사용을 함
- 단점 : 우선순위가 낮은 형태의 인스턴스이기 때문에 온디맨드로 사용하는 사람이 있으면 스팟 인스턴스는 중간에 꺼질 수가 있음. 따라서 꺼져도 되는 인스턴스 사용할 때 좋음
- 우선순위가 낮으니까 저렴함.
saving plans : 웬만한 회사들이 사용함. 약정 걸어놓는 것.
실제 회사에서는 ec2’만’ 사용하는 경우는 없다.
AWS Elastic Beanstalk
- 어플리케이션을 신속하게 배포, 관리할 수 있는 서비스
- 쉽게 얘기하면 어플리케이션 코드를 업로드하기만 하면 작동함.
- 모니터링, 오토 스케일링도 다 자동으로 해 줌
- 아래에 적힌 언어만 사용할 수 있음
- 서비스 개념보다 E2 + 잡다한 기능 넣은 것.
asw 사이트에서 시작할 때 추가 옵션에서 다 설정가능
단일 인스턴스 사용할 것임.
모니터링 옵션도 설정할 수 있음.

과부하 등 로그 확인 가능.
‘로그’라는 곳으로 가면, (ec2는 번거로움) 더 쉽게 로그를 가져올 수 있다.
롤링 업데이트와 배포 수정 : 배포를 한번에 할 수도 있고, 서버가 만약 3개 떠있으면 계속 괜찮은지 체크하면서 하나씩 바꿔가는 방식의 배포방식도 진행 할 수 있다.

EB: Elastic Beanstalk
EB에 들어갈 수 있는 각 포맷이 있다. 예를들면, 시작 스크립트 같은 걸 설정 해줘야 함.
AWA ECR
프로젝트에서는 사용할 일이 거의 없고, 굳이 사용하지 않아도 된다.
하지만 프로덕션에서는 사용하기 때문에 알아두면 좋다.

질문 : EB서비스를 사용하면 지속적인 배포가 보장되나? yes
AWS ECS
프로덕션에서 제일 많이 사용하는 서비스.
(EKS 에서 돌리는 회사도 많다.)
서버를 늘리고 줄이고 하는 오케스트레이션을 쉽고 빠르게 실행함.
환경에 맞춰서 이용자가 많으면 서버를 확장, 적으면 축소하는걸 도와주는 서비스.
docker container는 EC2와 fargate중 원하는 환경에서 실행 가능하다.

ECS 에서 EC2 두 대를 띄워주고, 어떤 컨테이너를 올린다고 했을 때, 컨테이너를 EC2에 분배하는 역할을 ECS가 하고, 새벽시간이라 필요가 없으면 한 EC2로 옮기는 작업을 해줌.
알아야 하는 필수적 용어들!
- Task Definition : ecs를 구분할 때 task 단위로 구분을 하는데, task의 설정(컨테이너 이미지, 리소스 할당 설정, 서버의 port를 어디로 열건지 등등)
- Task : 한 개 이상의 컨테이너들이 포함되어 있으며, ecs에서 컨테이너를 실행하는 최소 단위.
- Service : 논리적인 단위이기 때문에 오토스케일링과 로드밸런싱 관리
- Cluster

Task 안에는 컨테이너가 여러 개 들어있을 수 있다.
언제 docker container를 여러 개 띄우나?
로그 관리 하는 경우를 예시로 들 수 있는데, 한 container는 서버, 한 container는 로그관리 등 서버 관리 하는 container 일 수 있다. 그런 것들을 하나로 묶어서 task라 하고
task 를 여러개 묶어서 service,
service가 여러개 묶어서 Cluster라고 함

task 하나하나를 task definition으로 생성해서 묶어서 service로 관리한다.
AWS Fargate
기존의 ECS를 실행할 떄, EC2나 fargate 두 가지 옵션이 있다.
fargate는 ec2가 없이도 container를 실행할 수 있게 해주는 서비스.
도커 이미지를 저장하는 장소 (ECR)에서 이미지를 가지고 와서 fargate를 실행할 수 있다.
장점 : 서비스가 커가면 ec2를 이용해서 늘려서 ecs를 사용했는데, 그런거 없이 fargate를 이용해서 간단하게 서버를 늘리고 줄이고 할 수 있음.
아직도 ec2를 사용하는 이유는?
가격적인 부분이 가장 큼.
ec2의 t2.micro는 (cpu 1 / 1gb) ⇒ 0.0116 USD
fargate는 (cpu 1 / 1gb) ⇒ 0.04048 + 0.004445 USD
가격이 4배 차이가 남.
AWS Lambda
무조건 쓰는 서비스. 모르면 절대 안됨. 꼭 알아둬야 함.
서버 없이도 코드를 실행시킬 수 있는 serverless computing service
코드를 돌리기 위한 리소스를 임의로 지정할 수 있음.
가성비 좋은 서비스.
코드를 실행하는 시간, 사용되는 리소스에 비례해서 가격이 과금되기 때문이다.
최대 10기가, 6개의 코어를 설정해서 사용할 수 있다.
치명적 단점 : 최대 30분밖에 사용하지 못함. 오래 걸리는 작업은 fargate 사용함

사용 예) 비동기 처리(이미지 썸네일 생성)
app에서 이미지를 올림 →
aws에서 Presigned URL(이미 허가된 url, 임의의 사람 접근 가능) 을 보내줌. →
S3로 감 (이미지를 서버로 바로 보내면 서버는 과부하가 걸리기 때문에 바로 보내는 경우는 없음)
S3에는 오리지널 파일이 담겨짐 → Lambda가 쓸 수 있는 상태의 썸네일로 바꿔줌. → S3로 보냄.
예를 들어,
10,000명이 한번에 이미지를 업로드 한다면, 대용량으로 처리해야 하는데, Lambda를 사용하면, 신청만 하면 1,000개의 Lambda가 한번에 돌 수 있다.
비교적 수월하게 이미지를 처리 할 수 있음.
왜 항상 켜져있어야 하는 EC2 / EB를 사용하고, 가성비 있는 Lambda를 선택하지 않을까?
AWS Lambda
cold start / warm start
EC2와 같은 인스턴스 보다는 latency가 높다.

람다에는 코드를 올리는데, 이 코드를 container에서 실행 시킨다.
aws에서 코드를 실행시키는 시간 1초 정도가 걸림.
앞부분을 cold start(1초 정도 걸리는게), 뒤부분이 warm start

화면이 켜지는데 걸리는 시간.

AWS Lambda - Serverless
클라우드 서비스에서 서버리스 서비스를 쉽게 사용할 수 있도록 도와주는 오픈소스 프레임 워크.
사용 가능 언어 : 노드, 자바, 파이썬 등
https://www.serverless.com/
Serverless: Develop & Monitor Apps On AWS Lambda
Easily develop and monitor auto-scaling applications on AWS Lambda, API Gateway, DynamoDB, etc., with the Serverless Framework and Serverless Monitoring Dashboard.
www.serverless.com
백엔드 프레임워크를 serverless로 감싸서 lambda에서 사용할 수 있도록 해주는 프레임 워크.