[Cl☁️udClub] AWS 강의 노트_4

지니박박구리·2021년 5월 17일
0
post-thumbnail

🐤 AWS Lambda

  • Severless의 주축을 담당
  • Events(파일 업로드, 삭제 ...)를 통하여 Lamda를 실행시킴
  • NodeJS, Python, Java, GO 등 다양한 언어 지원
  • Lambda는 다른 서비스를 호출할 수 있다
  • Lambda에서 짠 함수를 Lamda 함수라고 한다
  • 최대 300초 런타임 시간 허용
  • 512MB의 일시적인 디스크 공간 제공
  • 최대 50MB Deployment Package 허용



🐤 CloudFront

  • 정적, 동적, 실시간 웹사이트 컨텐츠를 유저들에게 전달

용어 정리

  • Edge Location(엣지지역): 컨텐츠들이 캐시에 보관되어지는 장소
  • Origin(오리진): 원래 콘텐츠들이 들어있는 곳, 웹 서버 호스팅이 되어지는 곳
    S3, EC2 인스턴스가 오리진이 될 수 있음
  • Distribution(분산): CDN에서 사용되어지며 Edge Location들을 묶고 있다는 개념



🐤 DynamoDB

DynamoDB란?

  • NoSQL 데이터베이스
  • 매우 빠른 쿼리 속도
  • Auto-Scaling 기능 탑재 (처음 데이터 베이스를 만들 때 크기가 정해지는데, 이 친구는 알아서 크기를 조절할 수 있음)
  • Key-Value 데이터 모델 지원
  • 데이터 생성시 스키마 생성이 필요없다
  • 모바일, 웹, IOT 데이터 사용시 추천된다
  • SSD 스토리지 사용

구성

  • 테이블
  • 아이템 (행과 비슷)
  • 특징 (열과 비슷)
  • Key-Value (데이터이름-데이터자신)
  • ex) JSON, XML

Primary Keys(PK)

  • PK를 사용하여 데이터 쿼리
  • DynamoDB에는 두가지 PK 유형이 있음
  • 파티션키
    고유 특징, 실제 데이터가 들어가는 위치를 결정해줌, 파티션 키 사용시 동일한 두개의 데이터가 같은 위치에 저장될 수 없음!
  • 복합키 (Composite Key)
    파티션키+정렬키

데이터 접근 관리

  • IAM으로 관리할 수 있음
  • 테이블 생성과 접근 전환을 부여할 수 있음
  • 특정 테이블만, 특정 데이터만 접근 가능케 해주는 특별한 IAM 역할 존재

Index

  • 특정 컬럼만을 사용하여 쿼리
  • 테이블 전체가 아닌 기준점을 사용해 쿼리가 이루어짐
  • 매우 큰 쿼리 성능 효과
  • Local Secondary Index
    테이블 생성시에만 정의해줄 수 있음
    따라서 테이블 생성 후 변경,삭제가 불가능
    똑같은 파티션키를 사용하지만 다른 정렬키를 사용

  • Global Secondary Index
    테이블 생성 후에도 추가,변경,삭제 가능
    다른 파티션키, 정렬키 사용

Query

  • Primary Key를 사용하여 데이터 검색
  • Query 사용시 모든 데이터(컬럼) 반환
  • ProjectionExpression 파라미터

Scan

  • 모든 데이터를 불러옴(PK 사용 x)
  • projectionExpression 파라미터
    원하는 컬럼만 볼 수 있다

Query VS Scan
Query가 Scan 보다 훨씬 효율적임! 따라서 Query 사용 추천
단, 테이블의 크기가 상대적으로 크지 않고, PK가 필요하지 않다면 Scan을 사용해도 좋다!

DAX

  • 클러스터 In-memory 캐시
  • 10배 이상의 속도 향상(읽을 때)
  • 읽기 요청이 많을 때 유용함
  • DAX 캐싱 시스템
    테이블에 데이터 삽입&업데이트시 DAX에도 반영
    읽기 요청에 맞는 데이터가 DAX에 들어왔을시 DAX에서 데이터 즉시 반환

  • DAX 단점
    쓰기요청이 많을 때는 부적절
    읽기 요청이 많지 않다면 부적절



🐤 수업 듣던 중 모르겠는 개념 정리

1. In-memory computing

인메모리 컴퓨팅은 기존의 디스크 기반 컴퓨팅과는 달리 데이터를 하드디스크에 저장하고 관리하는 것이 아니라, 전체 데이터를 메모리에 적재하여 사용하는 것을 의미한다.

2. 서버 클러스터

여러 대의 서버를 네트워크로 연결하여 전체적으로 하나의 서버처럼 보이게 하는 기술을 ‘클러스터’라고 한다.

클러스터를 구성하면 한 대의 서버가 고장이 나도 다른 서버에서 처리를 계속할 수 있어서 서비스의 신뢰성을 확보할 수 있다.



🐤 느낀점

cloud front를 실습하며
콘텐츠가 어느 리전에 있고 그것을 빠르게 호스팅하려면 어떻게 분산시켜야하는가에 대해 생각해볼 수 있는 경험이 되었다.
클라우드 아키텍쳐라는 말이 추상적이였다면 왜 클라우드 구조가 필요하고 네트워크가 중요한지 알게 되었다.

dynamoDB를 실습하며
Lambda함수, IAM(정책, 역할) 내용과 연결하면서 실습하며 각각 배웠던 내용이 연결되어 유익했다.

profile
킹왕짱 DevOps Engineer가 되고 싶습니다

0개의 댓글