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 구조로 설계하는 방법에 대해서 다루고 있다.

모던 자바 인 액션 간단 리뷰

한빛 미디어의 나는 리뷰어다에서 10월 미션으로 나온 책 중에 하나인 모던 자바 인 액션을 받게 됐고, 이번 달에 읽어보게 됐다. 이 글은 이 책에 대한 간단한 리뷰이다.

RxJS Operator 01 - Creation, Filtering

RxJS에 대한 개념과 동작 방식 등을 간단하게 알아봤고, RxJS의 핵심이라고 볼 수 있는, Operator 사용에 대해서 몇 가지만 간단하게 뽑아서 정리해보려고 한다. 이번 글에서는 Creation Operator, Filtering Operator를 확인 보려고 한다.

Creation Operator"rxjs/operators"에서 가져오지 않고, "rxjs"에서 가져와서, 그냥 생성 함수라고 설명하는 경우도 있는 것 같다.

RxJS 프로그래밍 간단 리뷰

한빛 미디어의 나는 리뷰어다에서 9월달 미션으로 나온 책 중에 하나인 RxJS 프로그래밍을 받게 됐고, 이번 달에 읽어보게 됐다. 이 글은 이 책에 대한 간단한 리뷰이다.

RxJS 빠르게 배우기 03 - Observer & Subscription & Operator

지난 글에서는 Observable과 구독 관련 동작 방식에 대해서 글을 작성했다. 이번 글에서는 Observer, Subscription, Operator에 대해서 간단하게 알아보자.

RxJS 빠르게 배우기 02 - Observables

지난 글에서 RxJS로 코드를 짰을 때 어떤 느낌인지 살짝 확인 했다. 이제는 핵심적인 개념들과 실제로 어떻게 구현 되어 있는지 등을 하나씩 확인해보자.

RxJS 빠르게 배우기 01 - Overview

새로운 토이프로젝트를 하기 앞서, 프로젝트에 도입하기 위한 RxJS를 한 번 볼까 한다. RxJS를 사용하면 비동기 처리에 대해 정말 직관적이고 간단한 코드를 쓸 수 있다는 풍문을 들었기 때문에, 리액티브 프로그래밍에 대한 느낌도 잡아보고자…

이 시리즈는 주로 RxJS 공식 문서의 Overview 부분을 번역하면서, 참조로 ReactiveX에서 설명해주는 개념적인 부분을 공부한 내용이다. 모든 내용을 담지는 않았다.

초기 스타트업 회고

개발을 시작하고 1년이 되어서 아주 처음 시작하는 스타트업에 참여하게 되었다. 일반적인 초기 스타트업 경우와 다르게, 초기 자본이 어느 정도 있었기 때문에 월급을 적게 받았어야 한다든지, 뭐 정말로 열악한 환경에서 개발을 했다든지 이런 내용은 크게 없었다 (필자가 환경에 대해 둔감한 편이기도 해서 사실 환경은 크게 문제 삼지 않는다. 좋으면 좋은거지). 이번 글은 약 8월 동안 참여했던 스타트업 후기이다.

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

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

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

리팩토링 실습하기

약 한 달 조금 넘는 기간 동안 팀에서 듀데이트가 걸린 프로젝트를 완성하느라 블로그와 기타 공부를 완전히 손 놓고 정말 바쁘게 지냈다. 덕분에 머리도 2달 만에 자른 것 같고, 운동도 단 한 번도 안 했다. 책은 꾸역꾸역 받아서 읽긴 했는데 이전에 여유 있던 때처럼 읽지는 못 했다. 아무튼 현재는 그런 시간이 끝났고, 돌아가는 프로젝트의 코드베이스를 뭇지게 정리해두고 싶어져서 당분간은 기능 개발과 기존 기능들에 대한 리팩토링을 동시에 반반 정도 가져가려고 한다. 물론 새로운 기능들 역시 리팩토링을 진행 하면서! 이 글은 리팩토링 책을 읽은 후 우리 프로젝트의 코드베이스를 대상으로 실습을 진행하기 위해 어떤 리팩토링을 하게 되는지 정리한 글이다.

Your browser is out-of-date!

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

×