전체 글
[ DevOps ] - 패커 설치 및 기본 설정
패커 설치는 테라폼과 매우 유사하게 설치가 가능합니다. 간단히 명령어만 짚고 넘어가도록 하겠습니다. https://learn.hashicorp.com/tutorials/packer/get-started-install-cli?in=packer/aws-get-started $ brew install hashicorp/tap/packer 이렇게 잘 packer가 깔린 것을 확인하실 수 있습니다. $ packer -autocomplete-install $ zsh 그리고 위 명령어를 통해 자동완성 기능을 만들어 주었습니다.
[ DevOps ] - 테라폼 설치 및 기본 설정
이번 시간에는 terraform 공식문서를 따라서 기본 설정을 진행해 보도록 하겠습니다. Install Terraform https://learn.hashicorp.com/tutorials/terraform/install-cli?in=terraform/aws-get-started Install Terraform | Terraform - HashiCorp Learn Install Terraform on Mac, Linux, or Windows by downloading the binary or using a package manager (Homebrew or Chocolatey). Then create a Docker container locally by following a quick-start tuto..
[ DevOps ] - (IaC) 형상 관리 (Configuration Management) - 이미지 빌드
이번 시간에는 IaC가 무엇인지, 그리고 형상 관리(Configuration Management), IaC와 형상관리와의 차이점과, 이미지 빌드 소개, 코드로 관리한다는게 도대체 뭔지에 대해서 간단히 알아보는 시간을 가져보도록 하겠습니다. IaC IaC는 인프라 자원을 말 그대로 코드로 관리하는 것을 말합니다. 저희는 이번에는 하시코프의 Terraform을 IaC도구로 다루어 보도록 하겠습니다. 형상관리 (Configuration Management) 형상관리는 서버 운영체제 상에 필요한 소프트웨어를 설치하고 원하는 설정으로 관리하는 것을 말합니다. 저희는 이번에 가장 대중적인 ANSIBLE을 다루어 보도록 하겠습니다. IaC vs 형상관리 이제 IaC와 형상관리와의 차이점을 알아보겠습니다. 요즘 IaC..
[ DevOps ] - (부록) AWS SAM 개요 및 실습
AWS SAM은 서버시르 애플리케이션 개발을 위한 기능들을 코드로 저장해서 코드로 관리하게 도와주는 오픈소스 서비스입니다. 그래서 이번시간에는 AWS Lambda 콘솔에서 하던 일들을 코드화, 체계화를 해보도록 하겠습니다. 우선 아래 링크를 따라서 기본적인 사전준비를 해보겠습니다. https://docs.aws.amazon.com/ko_kr/serverless-application-model/latest/developerguide/serverless-sam-cli-install-mac.html 다음 설치AWS SAMmacOS용 CLI - AWS Serverless Application Model Docker는 응용 프로그램을 로컬에서 테스트하고 다음을 사용하여 배포 패키지를 빌드하기 위한 전제 조건입니다..
[ DevOps ] - (DynamoDB) Python으로 DynamoDB 접근
이번 시간에는 python에서 바로 DynamoDB에 접근해서 Item을 수정하고 Item을 조회하는 실습을 진행해 보도록 하겠습니다. dynamoaccess.py import boto3 client = boto3.client('dynamodb') data = client.put_item( TableName = 'Orders', Item = { 'OrderID': { 'S': '2' }, 'Date': { 'S': '20221111' } } ) 이는 일단 boto3를 가상환경에서 설치했다는 가정하에 진행됩니다. 이는 현재 aws-cli에 등록한 사용자의 region에 있는 dynamodb client를 가져옵니다. 그리고 Orders라는 테이블에 OrderID가 '1'이고 Date가 '20221111'인..
[ DevOps ] - (DynamoDB) Lambda로 DynamoDB 접근
일단 바로 Lambda 함수를 만들어보도록 하겠습니다. 그런데, 기존에는 python3.9를 선택했지만, 이를 python을 통해서 하기에는 어렵지만, 이번에는 Node를 통해서 진행해 보도록 하겠습니다. 그리고 Lambda에서 DynamoDB에 접근할 수 있게끔 권한을 추가해 주겠습니다. 그리고 Node코드로 DynamoDB에 접근해서 항목을 추가하는 코드를 작성해 보도록 하겠습니다. https://docs.aws.amazon.com/ko_kr/apigateway/latest/developerguide/http-api-dynamo-db.html 자습서: Lambda 및 DynamoDB를 사용한 CRUD API 구축 - Amazon API Gateway 자습서: Lambda 및 DynamoDB를 사용한 ..
[ DevOps ] - (DynamoDB) DynamoDB 구성하기
DynamoDB 실습 바로 테이블을 생성해 보도록 하겠습니다. 테이블 이름은 Orders라고하고 파티션키와 정렬키의 조합으로 아이템을 구분한다고 했습니다. 이 둘을 각각 OrderID, Date로 해보겠습니다. 그 다음에는 온디멘드, 프로비저닝을 고를 수 있습니다. 만약에 스케일링을 접속에 따라 해주고 싶다면 프로비저닝을 하시면 되고, 그냥 단순하게 가고 싶으면 온디맨드를 선택하면 됩니다. 그리고 보조 인덱스에서 글로벌 인덱스인 GSI를 설정해 줄 수 있습니다. 이는 나중에 설정해 주겠습니다. 대부분의 데이터베이스 워크로드는 원래 주기적으로 반복되나 미리 예측하기가 어렵습니다. 낮 시간 동안에는 대부분의 사용자가 활성 상태인 소셜 네트워킹 앱을 예를 들어보겠습니다. 이러한 데이터베이스에서는 주간 활동을 ..
[ 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 ..