AWS - DynamoDB GSI
·
Platform/AWS
[ GSI 개념 ]DyanmoDB는 기본키(PK) 기준으로 데이터를 조회하며 다양한 쿼리 패턴을 위해서는 추가적으로 인덱스가 필요합니다.  예를 들어 PK = user_id 로 지정했는데 age로 조회하고 싶을 경우,작은 테이블에선 조회가 가능할지 모르지만 저장된 데이터가 클 경우 에러 혹은 검색이 되지 않습니다.이럴 때 GSI나 LSI를 사용하면 데이터 복제 없이도 새로운 쿼리 경로를 생성할 수 있습니다. 아래는 DynamoDB에서 지원하는 인덱스 2가지 입니다. Global Secondary Index : 기본 키와 관계없이 다른 파키션 키와 정렬 키를 사용하는 인덱스Local Secondary Index : 기본 파키션 키는 유지하고 다른 정렬 키를 사용하는 인덱스 [ PK와 SK의 역할 ]Dyna..
AWS - DynamoDB Pagination과 Where절
·
Platform/AWS
DynamoDB Pagination 기본 개념DynamoDB는 Scan 또는 Query 작업을 수행할 때 모든 데이터를 한 번에 반환하지 않고, 페이지 단위로 나누어 데이터를 반환합니다.주요 개념Limit : 한 번의 요청에서 반환할 최대 항목 수LastEvaluatedKey 현재 페이지의 마지막 항목 (다음 페이지 조회 시 사용)ExclusiveStartKey 다음 페이지의 조회 시작점 (이전 LastEvaluatedKey 값) 전체 데이터 조회 예제따라서 일반적인 RDBMS의 "Select * From Users"와 같은 query로는 모든 데이터를 조회할 수 가 없습니다.아래는 DynamoDB에서 1만개의 데이터를 페이지네이션으로 전체 데이터를 조회하는 예제입니다.import boto3# Dynam..
AWS - Athena 날짜관련 함수
·
Platform/AWS
DATE_TRUNC()[ 설명 ]- 특정 날짜를 연, 월, 주, 일 단위로 "절단(Truncate)"하는 함수- 주어진 날짜의 해당 단위 시작일을 반환- 결과는 TIMESTAMP 타입- DATE_TRUNC()는 특정 기간(주, 월, 연도)의 시작점을 구할 때 유용! [ 기본 문법 ]DATE_TRUNC('단위', date_column) 단위year 해당 연도의 시작일 2025-01-01 00:00:00.000month 해당 월의 시작일 2025-03-01 00:00:00.000week 해당 주의 시작일 (월요일) 2025-03-10 00:00:00.000day 해당 날짜의 시작시간 2025-03-17 00:00:00.000hour 해당 시간의 시작시간 2025-03-17 14:00:00.000[ 예제 ]S..
AWS - REST API 설정 가이드
·
Platform/AWS
REST API 생성- API 생성 버튼 클릭 후, REST API의 구축 클릭 리소스 생성- 좌측 리소스 클릭 후, 리소스 생성 버튼 클릭- Configure as proxy resource : 프록시 리소스 사용https://docs.aws.amazon.com/ko_kr/apigateway/latest/developerguide/api-gateway-set-up-simple-proxy.html- Enable API Gateway CORS : cross-origin HTTP 요청을 제한하는 브라우저 보안 기능https://docs.aws.amazon.com/ko_kr/apigateway/latest/developerguide/how-to-cors.html 메소드 생성- DELETE, GET, HEAD,..
AWS - Lambda VPC를 사용하여 고정 IP 주소 생성
·
Platform/AWS
[1] 구현 아키텍처- Lambda는 VPC의 프라이빗 서브넷에서 실행되므로 외부(인터넷)에 접근할 수 없습니다.- 따라서 NAT Gateway를 사용하여 내부서브넷과 통신을 할 수 있게 합니다.- 아래 이미지의 빨간색 부분이 고정 IP 적용을 위한 차이점입니다. 참조 : 2024.08.11 - [Platform/AWS] - AWS - 네트워트(Network) 개념 AWS - 네트워트(Network) 개념1. AWS 네트워크 다이어그램AWS에서 내부 서비스를 접근할 때, 또는 외부 인터넷을 사용할 때 다이어그램을 요약하자면 아래와 같습니다.많이 복잡하지만, 아래 다른 네트워크 개념을 보고 다시wave35.tistory.com  [2] VPC 생성- VPC 대시보드에서 우측상단의 'VPC 생성' 버튼을 눌..
AWS - Lambda Runtime 실행환경
·
Platform/AWS
Lambda 실행 환경- Lambda는 안전하고 격리된 런타임 환경을 제공하는 실행 환경에서 함수를 호출- 실행 환경은 함수를 실행하는 데 필요한 리소스를 관리- 내/외부 익스텐션(extension)을 통해 실행환경 수명주기 지원  실행환경 수명주기(Lifecycle) 3단계Init리소스로 실행 환경을 만듬함수와 모든 계층(Layer)을 로드하고 S3에서 함수의 코드를 다운로드런타임&익스텐션을 초기화, 함수의 초기화 코드(기본 핸들러 외부의 코드)를 실행 Invoke함수 핸들러를 호출, 함수의 실행 완료 시킴 ShutdownLambda 함수가 일정 기간 동안 호출을 받지 않으면 이 단계가 트리거 됨Lambda는 런타임을 종료하고 익스텐션이 완전히 중지되도록 알림을 보낸 다음 환경을 제거모든 메모리와 시스..
AWS - Lambda Warm and Cold Start
·
Platform/AWS
Cold Start(콜드 스타트)Cold Start는 AWS Lambda 함수가 처음 호출되거나 오랜 시간 동안 호출되지 않다가 다시 호출될 때 발생하는 초기화 과정입니다. 초기화 과정AWS Lambda는 함수가 실행될 때마다 내부적으로 새로운 컨테이너(Execution Environment)를 생성합니다.이 과정에는 함수의 코드 및 라이브러리를 로드하고, 런타임 환경을 초기화하며, 네트워크 설정 및 보안 그룹 등을 설정하는 시간이 필요합니다.이 초기화 단계가 다소 시간이 걸리기 때문에, 첫 호출 시 지연(latency)이 발생할 수 있습니다. 실행단계  Warm Start(웜 스타트)Warm Start는 함수가 호출될 때 이미 생성된 컨테이너가 재사용되는 경우를 말합니다.Warm Start를 조정하여 ..
AWS - Athena Tuning 가이드
·
Platform/AWS
AthenaFaceBook에서 개발한 오픈소스 인메모리 분산쿼리엔진 Presto를 사용 파티셔닝- WHERE절 사용시 파티셔닝된 컬럼사용을 우선시하여 쿼리비용 감소- 쿼리당 파티션을 100개로 제한- 파티션 수가 너무 많으면 파티션 메타데이터를 처리하는데 오버헤드가 증가해, 비용과 쿼리속도 저하- 테이블당 최대 20,000개 파티션- 파티션 수가 너무 적을 시, 참조하는 파티션이 중복되면 파티션의 이점을 살리지 못함- 데이터가 없는 파티션은, 제거하여 관리 파일 압축과 크기- 파일압축으로 데이터가 작을 수록 쿼리속도와 S3에서 Athena까지 네트워크 트랙픽 감소- Parquet, ORC 파일 사용 권장- 파일사이즈가 작을 경우(128MB 이하), 읽기과정에서 생기는 오버헤드가 많이 일어남- 파일사이즈가..
wave35
'Platform' 카테고리의 글 목록