DevOps
[ DevOps ] - (DynamoDB) DynamoDB 개요와 Index 구성
DynamoDB는 수평확장(Scale-out)이 매우 쉽고 유연합니다. 그리고 쿼리 속도가 매우 빠릅니다. 또한 어떠한 데이터의 자율성이 높아지면 높아질 수록 공간대비 비용이 낮아지는 경향이 있습니다. 왜냐하면 스키마 같은 제약을 연산하는데 추가적인 비용과 신경쓸게 더 많아지기 때문입니다. 그리고 DynamoDB는 쿼리 속도가 매우 빠릅니다. 스키마도 없는데 왜 빠를까요? 바로 DynamoDB는 pK, global gsi외에 많은 키가 있는데, 이는 이 키 값을 기준으로 동일한 것을 찾거나, range를 정해준다거나 이 키 값에 대해서만 매우 빠르게 됩니다. 또한 맨 마지막에 Ideal of applications with known access patterns가 있는데, 만약 주문 내역을 조회하는데 정..
[ DevOps ] - (DynamoDB) 데이터 아키텍처의 변화
Legacy 기존에는 당연히 mysql, postgresql과 같이 관계형 데이터베이스가 주를 이루었었습니다. 하지만 요즘 같은 시대만 해도 넷플릭스의 추천시스템을 위한 사용자의 로그데이터, 다양한 음성데이터를 쌓아야 합니다. 이를 S3와 같은데에다 다 쌓을 순 있어도 매우 비 효율적입니다. 그리고 이를 관계형 데이터베이스에 넣자니, 데이터 형식(스키마)의 변동이 잦아서, 예측이 불가능하다는 한계가 있습니다. Current DakeLake는 아무 데이터를 의미합니다. 요즘에는 데이터가 매우 중요한 자산이기 때문에, 이러한 데이터와 데이터베이스는 매우 중요한 서비스가 됩니다. 그래서 기존에 ETL보다는 그냥 다 로드 한다음에 정제하는 ELT가 뜨고 있는 이유입니다. 다음시간부터 본격적으로 DynamoDB ..
[ DevOps ] - (AWS Lambda) Lambda Step Functions 구현
바로 Step Function을 만들어 보도록 하겠습니다. Step Function을 만드는 방법중에 그래픽으로 이를 짜는 것이 추가되었는데, 이 대신 코드로 간단히 이전에 만들어논 Lambda function을 기반으로 만들어보도록 하겠습니다. 바로 상태 머신 정의로 들어와서 코드조각을 바로 수정해 보도록 하겠습니다. 이런 화면에 코드조각에는 아래와 같이 적혀 있습니다. Code Block ( Default ) { "Comment": "A simple AWS Step functions with Lambda", "StartAt": "Start", "States": { "Start": { "Type": "Pass", "Result": "Hello", "Next": "World" }, "World": { "..
[ DevOps ] - (AWS Lambda) Step Functions 권한 설정
여기서는 우선 Step Function과 Lambda를 연결하기 위한 사전작업을 간단히 진행하도록 하겠습니다. 이를 진행하기 위해서는 우선 Lambda Function2개를 아래와 같이 만들어 주어야 합니다. function안의 내용은 둘이 동일합니다. lambdastep1, 2 Function import json def lambda_handler(message, context): # ex: {'type': 'first'} # ex: {'type': 'second'} # 1. logging print('Received message from step function') print(message) # 2. response object 생성 response = {} response['type'] = mes..