자료와 실습 링크는 public하게 공유를 안하는 것 같아, 여기에 그대로 올리지 않겠다.
참고: https://kr-resources.awscloud.com/aws-builders-korea-program
서버리스란?
서버리스 서비스는 차별화되지 않은 운영 작업을 클라우드 공급자에게 이전함으로써 클라우드 애플리케이션의 관리 및 확장을 단순화하여 개발 팀이 비즈니스 문제를 해결하는 코드 작성에 집중할 수 있게 한다.
- 서버 관리가 필요없고
- 사용한 만큼 지불하며
- 요청에 맞게 스케일링한다.
Lambda
불필요한 서버 관리를 하지 않아도 된다.
aws의 대부분 자동화 처리는 람다를 사용한다.
Web Apps에서 Static websites에 적용할 수 있다.
API Gateway
- 맨 앞단에서 사용자의 트래픽 받아준다.
- 다양한 API 유형을 지원한다;
- 실시간 양방향 통신: websocket
- restful, rest api (실습)
DynamoDB
- 대부분 관계형 데이터베이스는 많이 쓰는데, NoSQL은 이제야 많이 쓰려는 추세.
- DynamoDB는 NoSQL이다.
- 관계형 데이터베이스는 테이블 형태.
- 보통 서버리스는 인스턴스를 만들지 않는다. 그래서 유지관리가 불필요하다.
- DynamoDB는 table을 만들고 바로 사용한다. 실제 테이블 형태는 아니긴한데, 볼 때는 테이블 형태로 보게 된다.
- 사용자들이 아무리 많이 들어와도 거의 일정한 지연시간 안에 보여준다.
- NoSQL은 수직적인 확장 한계를 넘어선다. 여러 데이터가 나오면, 다수의 샤드로 수평 확장한다.
데이터를 구분하기 위한 key: partition key
데이터를 정렬하기 위한 키: sort key
partitioon key랑 sort key만 넣으면 데이터가 만들어진다.
DynomaDB는 column말고 attribute이란 용어를 사용한다. (column은 rdbs에 사용)
필요한 attribute은 자동적으로 추가된다.
s3
- 데이터를 저장하는 객체 스토리지
- 파일 올리면 객체 형태로 변환된다.
- 한번 올리면 데이터가 총 6개 복제된다. (안전과 내구성을 위해)
- 인스턴스 만들면 관리해야한다. 하지만 s3는 정적 웹 사이트 호스팅 기능을 제공한다.
- 사용자들이 버킷으로 접속하면, 브라우저를 볼 수 있게 된다.
- 버킷 만들면 퍼블릭 엑세스가 기본적으로 차단된다.
- 차단을 풀고 싶으면 따로 해제해야한다.
- 버킷 권한과 오브젝트 권한은 따로 있다. 오브젝트는 이미지, css 이런 파일들. 이것들도 외부에서 다운받을 수 있도록 따로 권한을 허용해야한다. → 버킷 정책
실습
루트 사용자로 쓰지 않기 위해 IAM 사용자를 만든다.
람다에 dynamo db 접근 권한이 필요하다. (둘 다 다른 서비스라)
iam의 role에 만들면 된다. 근데 실습에서는 만들어진 롤을 사용한다.
dnamodb에 값을 넣는다 == item을 넣는다.
(테스트하면서 실행된 값들이 다 들어간다)
인터넷은 http 프로토콜을 사용한다.
어떻게 데이터 요청 방법을 정해줄지 정한다 → method
get방식: 주소 통해 데이터를 보낸다.
값들을 커스텀하는게 많으면 proxy integration 비활성화하는데, 이건 단순하니 기본 proxy integration을 활성화한다.
integration 설명:
- 이 주소랑 람다를 통합해서 쓸거야. (다른 다양한 aws랑 통합해서 사용 가능)
s3는 버킷과 오브젝트로 구성되어 잇다.
- 버킷: 폴더 개념 (데이터를 저장하는 공간)
- 버킷 이름은 전세계에서 unique해야한다 (웹 호스팅 주소가 들어가기 때문에)
- 버킷은 외부에서 접근하는게 차단되어 있다. block all~ 이걸 체크해제해서 접근 차단하기(웹 서버 기능을 만들어야하기 때문에)
s3는 리전레벨 서비스이다. 하나의 리전에서 다른 리전으로 복사해서 설정하면 다른 리전으로 복사된다.
403 에러나면 index.html도 외부에서 받을 수 있도록 오브젝트 권한도 허용해야한다. → 버킷 policy로 들어가기.
/* : 이 버킷의 모든 오브젝트를 모든 사람한테 허용하겠다.
오브젝트에 대한 모든 권한은 bucket policy에서 주면된다.
S3에 get 오브젝트말고 약 140여가지나 될정도로 굉장히 많다.
S3는 기본이 데이터를 저장하는 기능이다. 이미지나 동영상을 DB에 넣기에는 너무 비대해진다. 이때 S3사용. DB는 주로 텍스트 데이터를 넣는다.
CORS: 한 도메인에서 로드되어 다른 도메인에 있는 리소스와 상호 작용하는 클라이언트 웹 애플리케이션에 대한 방법.
여기서 도메인은 www.example.com과 같은 URL 주소를 의미한다. S3, API Gateway 또한 CORS 기능을 활용하실 수 있다.
ec2 vs container vs lambda
- 인프라를 관리하기 위한 방법. 취향대로 쓰기. 꼭 이때는 이거 쓰고, 이때는 이거 쓰는건 없다.
- 람다를 쓰는 이유는 관리를 안해도 되기 때문.
실습 후기
이 사이트로 들어가면,
이게 나오고, 버튼을 클릭하면
랜덤으로 설명과 이름이 나온다.
위와 같이 DynamoDB에 보면 테스트한 값들이 잘 들어간다.
'AWS' 카테고리의 다른 글
데이터 파이프라인 흐름 (2) | 2022.08.21 |
---|---|
SageMaker (0) | 2021.07.30 |
AWS API Gateway와 Lambda (0) | 2021.07.30 |
앱 서버 연결 방법 (0) | 2021.07.30 |
스터디 1주차 (0) | 2021.07.21 |