
서버리스란?
차별화되지 않은 운영 작업을 클라우드 공급자에게 이전함으로써 클라우드 애플리케이션의 과닐 및 확장을 단순화하여 개발 팀이 비즈니스 문제를 해결하는 코드 작성에 집중할 수 있게 하는 서비스
기존 -> 서버를 만들기 위해 물리적 장비를 직접 구매하고 구축했어야함
최근 -> 클라우드가 발전하면서 가상머신을 많이 사용하게됨 -> EC2가 가상머신임
요즘엔 컨테이너를 구축해서 많이 사용한다
여기 까지의 기술을 보면 물리적 장비나, 컨테이너, 가상머신이 많이 발전해도 관리를 해야함.
관리라는게 많이 귀찮고 부담된다. -> 24시간 모니터링 해야함.
하지만 서버리스를 사용하면 부담을 줄일 수 있다. 왜냐면 인프라를 다 관리해준다.
서버리스의 장점
1. 서버 관리 필요 없음
2. 사용한 만큼만 지불
3. 요청에 맞게 스케일링
4. 높은 보안 수준
실제 서버리스 서비스는 굉장히 다양하다.
COMPUTE -> Lambda, Fargate
DATA STORES -> S3, Serverless, DynamoDB
INTEGRATION -> EventBridge, API Gateway, SQS, SNS, Step Functions, AppSync
3-Tier 서버리스 아키텍처 구성
S3(웹페이지 호스팅) --> API Gateway(웹 페이지의 기능을 호출하는 통로) --> Lambda(웹 페이지의 기능을 가지고 있음) --> DynamoDB(Member의 내용을 저장하는 DB)
Lambda의 특성
1. 불필요한 서버 관리가 필요 없다.
2. 자동 확장
3. 고가용성 및 보안
4. 사용한 만큼만 지불
Lambda 사용 하기
Lambda에 원하는 언어로 애플리케이션을 만들고 코드를 올리면 된다.
실행되는 방법은 여러가지다. 어떻게 실행할지 방법을 정해야한다.
실행되는 코드는 DB에 저장하거나, 다른 서비스들로 요청을 하는 등의 방법으로 운영된다.
API Gateway
어떤 규모에서든 개발자가 API를 손쉽게 생성, 게시, 유지관리, 모니터링 및 보안 유지를 할 수 있는 완전 관리형 서비스이다.
API는 애플리케이션이 백엔드 서비스의 DATA, 비즈니스 로직에 액세스 할 수 있는 정문 역할을 한다.
사용자들로부터 요청을 받게 되면 요청을 다양한 서비스에 전달할 수 있다.
다양한 API유형을 지원한다. 흔한 REST API, 실시간 양방향 통신을 할 수 있는 Web Socket API를 제공한다.
DynamoDB
대규모 성능에 최적화된 완전 관리형 noSQL 데이터베이스 서비스
1. 서버리스 - 유지관리 불필요, 오토 스케일링, 고가용성 및 내결함성
2. 높은 성능 - Known access pattern이 있는 어플리케이션에서 이상적 성능. 초당 수백만의 유청 처리 및 짧은 지연 시간, 자동화된 글로벌 복제, 다른 AWS 서비스와 통합.
3. 보안 및 액세스 - 전송 중 및 저장 시 암호화, API/ORM을 통한 세부적인 액세스 제어. IAM을 통한 승인
데이터베이스 확장
데이터베이스는 두가지 종류가 있음. 1. SQL, 2. noSQL
일반적으로 많이 사용하는 것은 관계형 데이터베이스다.
관계형 데이터베이스 => oracle, mariadb, mysql, mssql같은 것들 -> 이들은 SQL 언어를 사용함. -> 트래픽이 많이 필요할 때 수직적인 확장을 함 -> DB 서버에 CPU나 메모리를 더 많이 꽂아서 성능을 좋게 만드는 것. = 클라우드에서는 인스턴스를 변경해서 성능을 올리는 것을 얘기함.
관계형 DB는 한계가 있다. 과도한 읽기 쓰기에 취약하다.
수직적 확장 = 한계, AWS에서 제공하는 인스턴스는 제일 좋은 타입이 있다. 트래픽이 그 이상으로 들어오게 되면 읽기 쓰기에 장애가 일어날 수 있다.
noSQL은 성능이 많이 필요하게 되면 샤드를 늘려서 수평적인 확장을 한다. - 무한 퍼포먼스 가능.
noSQL은 종류가 많지만 그 중에서 AWS에서 제공하는 DynamoDB라는 것을 사용해볼 것이다. - Key Value형태의 데이터를 저장하는 noSQL이다.
DynamoDB는 서버를 사용하기 때문에 인스턴스를 만들거나 하지 않음 - 테이블을 만들어야 함.
테이블을 만들기 위해서 파티션 키를 넣어야함 - 그러면 테이블이 만들어짐
파티션 키는 unique여야함, 정렬이 필요한 부분이 있다면 sort키를 넣어야함, 파티션 키랑 sort키를 합쳐도 unique해야 함 - 두개를 합쳐서 보통 primary key라고 함
DynamoDB는 하나의 줄, 하나의 row를 column말고 items라고 함. 컬럼은 관계형 데이터베이스에서 주로 쓰는 말
Amazon S3
Amazon Simple Storage Service
어디서나 원하는 양의 데이터를 저장하고 검색할 수 있도록 구축된 객체 스토리지
객체 스토리지 - 파일을 올리게 되면 객체 형태로 올라가게 됨
특징 1. 확장성, 2. 데이터 가용성, 3. 보안, 4. 성능
정적 웹 사이트 호스팅 기능 사용 - 웹 서버를 만들어주는 기능
차단되는 퍼블릭 액세스의 유형
1. 새 ACL을 통해 부여된 버킷 및 객체에 대한 액세스
2. 모든 ACL을 통해 부여된 버킷과 객체에 대한 액세스
3. 새 퍼블릭 버킷이나 액세스 제어 정책을 통해 부여된 버킷과 객체에 대한 액세스
4. 모든 퍼블릭 버킷이나 액세스 제어 정책을 통해 부여된 버킷과 객체에 대한 액세스
S3 버킷 정책
S3 버킷 정책은 익명 사용자에게 읽기 전용 권한을 부여합니다.