DynamoDB 설계 방법: Single Table Design

NoSQL 종류 중 하나인 DyanamoDB는 일반적인 SQL 테이블과 다르게, query를 할 때 조건을 설정할 수 있는 대상이 Partition Key (이하 PK)와 Sort Key (이하 SK) 그리고 추가적으로는 Global Secondary Index (이하 GSI)와 Local Secondary Index(이하 LSI)로 구분되는 Secondary Index로 한정된다. 다른 속성 필드에 대해서는 쿼리 조건을 설정할 수 없다. 만약 다른 속성에 대해 결과를 보려면 scan을 사용해야 한다. scan은 테이블의 모든 데이터를 조회하기 때문에 성능면에서 좋지 않은 모습을 보여준다. 이러한 특성이 있어서, DynamoDB 테이블은 일반적으로 SQL 테이블을 만들듯 만들면 안 된다. 이 글은 AWS에서 공식적으로 추천하고 있는 Single Table 구조로 설계하는 방법에 대해서 다루고 있다.

Golang + Lambda로 신규 유저 정보 이메일로 보내기 삽질기

이번 글은 실패한 사례를 공유해두려고 한다. 실패라기 보다는 몰랐던 사실 때문에 방법을 수정하게 되었다. 결론적으로 말하자면, EC2에 스케줄링 하는 방식으로 수정되었다. 다만 람다에 배포하고 CloudWatch Event를 사용해 스케줄링 하는 과정까지는 진행했고, 해당 과정을 담았다.

서비스 중인 앱 중에서는 회원가입 신청한 유저의 신원을 직접 확인한 후 Activate를 해줘야 하는 부분이 있다. 회원 가입 후, 비개발인력이 데이터베이스에서 새롭게 가입한 유저를 확인하고, 몇 가지 확인과 등록 절차를 통해 유저를 등록시켜야 하는데, 비개발 인력이 하기 어려운 작업이라 매일 오전 9시에 전날 새로 가입한 유저 정보를 CSV로 만들고 메일로 보내는 스케줄링 작업을 Go로 만들어보려고 한다. 먼저 데이터베이스에서 내용을 가져와 CSV로 만들어내는 부분을 만든 다음, 메일 보내기 작업을 한 다음 RDS에 연결한 Lambda 배포까지 진행해보려고 한다.

Nest + TypeORM TODO API 만들기

우선 빠르게 배워봤으니 Nest와 TypeORM을 사용해서 국민 데모 앱 TODO API를 만들어보자. 앤드포인트는 아래와 같이 설계할 생각이다.

NestJS 빠르게 배우기 05

지난 글에서는 Middleware에 대해서 알아봤다. 이번 글에서는 Exception filters에 대해서 알아보자.

NestJS 빠르게 배우기 04

지난 글에서는 Module에 대해서 알아봤다. 이번 글에서는 Middleware에 대해서 알아보자.

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×