본문 바로가기

[Project] 프로젝트 삽질기11 (feat pgAdmin4) 들어가며 사이드 프로젝트에서 푸시 알림을 활용한 서비스를 개발하고 있습니다. 그 과정에서 생각하고 배웠던 점들을 하나씩 작성하고자 합니다. 프로젝트를 진행하면서, PostgreSQL을 잘 활용하기 위해서는 pgAdmin4를 잘 활용할 수 있어야겠다고 생각했습니다. 이번 시간에는 pgAdmin4에 대해 조금 더 자세히 알아보겠습니다. ERD 그리기 예전 pgAdmin에서는 ERD를 바로 만들 수 없어서, 다른 툴을 활용했다고 합니다. 하지만 pgAdmin4에서는 ERD를 손쉽게 확인할 수 있습니다. 확인하고 싶은 DB를 선택하여 마우스 우측 클릭을 하면 아래와 같이 나옵니다. 위에서 Generate ERD를 클릭하면, 원하는 ERD를 확인할 수 있습니다. Table 복사하기 pgAdmin을 활용해서 Tab..
[Project] 프로젝트 삽질기10 (feat bull 공식문서 정리) 들어가며 사이드 프로젝트에서 푸시 알림을 활용한 서비스를 개발하고 있습니다. 그 과정에서 생각하고 배웠던 점들을 하나씩 작성하고자 합니다. 저번 글에서는 Queue에 대해 알아봤고, Queue 중에서도 Bull을 사용하는 것에 대해 알아봤습니다. 이번 시간에는 Bull에 대해 조금 더 자세히 알아보겠습니다. Bull 활용하기 Bull은 Node.js에서 활용할 수 있는 Redis 기반의 큐 시스템 라이브러리입니다. 물론 기본적인 Redis를 활용해서 큐를 직접 구현할 수 있지만, Bull을 활용하면 Redis의 기본 기능 이상으로 큐를 효율적으로 활용할 수 있습니다. 저번 글에서는 Bull에 대해 간략하게 활용해봤다면, 이번 글에서는 Bull에 대해 조금 더 자세히 알아보겠습니다. Installation..
[Project] 프로젝트 삽질기9 (feat Queue, bull) 들어가며 사이드 프로젝트에서 푸시 알림을 활용한 서비스를 개발하고 있습니다. 그 과정에서 생각하고 배웠던 점들을 하나씩 작성하고자 합니다. 먼저 푸시 알림 서비스를 구축하려면, Queue를 활용해야겠다고 생각했습니다. FCM을 활용하다 보면, 하나의 푸시를 보내는 경우는 상관없지만, 대용량의 푸시를 보내야 한다면, 동기 처리 방식으로 푸시 알림을 보내기 때문에, 푸시를 보내기 위해 대기하는 요청이 쌓이게 됩니다. 이 때문에 서버는 성능이 저하되고, 최악의 경우 서버가 다운되는 상황까지 직면합니다. 이 문제를 해결하기 위해서는 비동기 메시지 처리 방식인 Queue를 활용해야 합니다. 그럼 Queue란 무엇이며, 프로젝트에서 어떤 Queue를 활용해야 할지 정리하기 위해 글을 작성합니다. 메시지 큐 메시지 ..
[Project] 프로젝트 삽질기8 (feat ormConfig) 들어가며 사이드 프로젝트에서 푸시 알림을 활용한 서비스를 개발하고 있습니다. 그 과정에서 생각하고 배웠던 점들을 하나씩 작성하고자 합니다. 먼저 NestJS와 TypeORM을 활용해서 개발을 하고 있는데, TypeORM을 설정할 때 활용하는 ormConfig에서 autoLoadEntities가 어떤 역할을 하는지 궁금했습니다. 이 글은 TypeORM이 엔티티와 연동되는 과정(nest.js) 글을 참고했습니다. TypeORM 설정 TypeORM을 활용하기 위해서는 ormconfig를 설정해야 합니다. ormconfig에는 다양한 옵션이 있습니다. 예를 들면 다음과 같은 옵션이 존재합니다. export declare type TypeOrmModuleOptions = { retryAttempts?: numbe..
[Project] 프로젝트 삽질기7 (feat ORM 비교) 들어가며 사이드 프로젝트에서 푸시 알림을 활용한 서비스를 개발하고 있습니다. 그 과정에서 생각하고 배웠던 점들을 하나씩 작성하고자 합니다. 먼저 NestJS와 TypeORM을 활용해서 개발을 하고 있는데, 왜 TypeORM을 활용하는지, 다른 ORM을 사용하면 더 장점은 없는지에 대해 알아야 더 좋은 서비스를 만들 수 있다고 생각했습니다. 지금이라도 Node.js의 ORM에 대해 이해하기 위해 글을 작성합니다. ORM이란? ORM은 사물을 추상화시켜 이해하려는 OOP적 사고방식과 Data Model을 정형화하여 관리하려는 RDB 사이를 연결할 계층의 역할로 제시된 패러다임으로 RDB의 모델을 OOP에 Entity 형태로 투영시키는 방식을 사용합니다. 즉, Object와 Database 간에 연결 역할을 ..
[Project] 프로젝트 삽질기6 (feat PostgreSQL 버전) 들어가며 사이드 프로젝트에서 푸시 알림을 활용한 서비스를 개발하고 있습니다. 그 과정에서 생각하고 배웠던 점들을 하나씩 작성하고자 합니다. 먼저 푸시 알림을 구성하기 위한 로직을 작성하면서, AWS RDS를 활용하고 있습니다. 프로젝트를 진행하면서, DB의 버전에 대한 깊은 생각 없이, 무료로 이용할 수 있는 프리티어 버전을 이용했습니다. 하지만 그 과정에서 버전에 대한 문제가 발생했습니다. 이 글은 제가 겪었던 DB 버전 문제는 무엇이고, 문제를 어떻게 해결했는지에 대해 정리하고자 작성된 글입니다. PostgreSQL RDS 버전 문제 얼마전 AWS에서 메일 한 통을 받았습니다. 그 내용은 다음과 같았습니다. Amazon Relational Database Service (Amazon RDS) 는 Po..
[Project] 프로젝트 삽질기5 (feat Seeding, Faker) 들어가며 사이드 프로젝트에서 푸시 알림을 활용한 서비스를 개발하고 있습니다. 그 과정에서 생각하고 배웠던 점들을 하나씩 작성하고자 합니다. 먼저 푸시 알림에 필요한 로직을 테스트하기 위해서는 먼저 데이터베이스 세팅을 해야 합니다. 푸시 알림을 구성하기 위한 쿼리가 제대로 작성됐는지 확인하기 위해서는 데이터베이스에 대규모 데이터를 넣고, 쿼리 성능 테스트를 진행해야 하는데, 이때 데이터베이스에 대규모 데이터를 넣기 위해서는 seeding 작업이 필요합니다. 이 글은 데이터베이스의 Seeding에 대해 작성해 보겠습니다. Seeding이란? Seeding이란, seed라는 것이 씨앗이라는 뜻인데, 씨앗을 뿌리는 것이라고 생각하면 좋을 것 같습니다. 즉 데이터베이스에 일정 데이터를 넣을 수 있게 돕는 것입니다..
[Project] 프로젝트 삽질기4 (feat 마이그레이션) 들어가며 사이드 프로젝트에서 푸시 알림을 활용한 서비스를 개발하고 있습니다. 그 과정에서 생각하고 배웠던 점들을 하나씩 작성하고자 합니다. 먼저 푸시 알림에 필요한 로직을 테스트하기 위해서는 먼저 데이터베이스 세팅을 해야 합니다. 이 글은 NestJS로 배우는 백엔드 프로그래밍 글을 참고한 내용입니다. 링크에서 더 자세하게 내용을 살펴볼 수 있습니다. 마이그레이션 넓은 의미의 마이그레이션은 애플리케이션이 구동되는 OS를 바꾸거나 데이터베이스를 MySQL에서 Oracle로 바꾸는 것과 같이 인프라를 교체하는 것을 포함합니다. 데이터베이스를 다룰 때에도 마이그레이션이라는 용어를 자주 접하게 됩니다. 서비스를 개발하다 보면 데이터베이스 스키마를 변경할 일이 빈번하게 발생합니다. 신기능을 추가하면서 새로운 테이..
[Project] 프로젝트 삽질기3 (feat Docker, PostgreSQL) 들어가며 사이드 프로젝트에서 푸시 알림을 활용한 서비스를 개발하고 있습니다. 그 과정에서 생각하고 배웠던 점들을 하나씩 작성하고자 합니다. 먼저 푸시 알림에 필요한 로직을 테스트하기 위해서는 먼저 데이터베이스 세팅을 해야 합니다. 이 글은 테스트 DB를 구축하기 위해 Docker에 PostgreSQL을 설치해서 활용하는 방법을 알려드리고자 작성된 글입니다. 테스트 DB 구축하기 제가 구축하는 프로젝트는 PostgreSQL를 활용하고 있습니다. Docker에 대해 자세하게 알지 못하지만, Docker를 활용하면 쉽게 PostgreSQL을 활용할 수 있다고 판단하여, PostgreSQL을 Docker에 설치해봤습니다. 먼저 PostgreSQL을 Docker로 설치하기 위해 아래의 명령어를 입력했습니다. do..
[Project] 프로젝트 삽질기2 (feat MySQL, PostgreSQL) 들어가며 사이드 프로젝트에서 푸시 알림을 활용한 서비스를 개발하고 있습니다. 그 과정에서 생각하고 배웠던 점들을 하나씩 작성하고자 합니다. 먼저 푸시 알림에 필요한 로직을 테스트하기 위해서는 먼저 데이터베이스 세팅을 해야 합니다. 이 글은 프로젝트 DB로 어떤 것을 활용해야 할지 고민하며, 우아한형제들의 Aurora MySQL vs Aurora PostgreSQL 글을 참고하며 작성된 글입니다. MySQL? PostgreSQL? 제가 구축하는 프로젝트는 PostgreSQL를 활용하고 있습니다. 왜 다른 RDBMS 중에서도 PostgreSQL를 활용하는가에 대해 작성해보고자 합니다. 먼저 우아한형제들의 글에서는 MySQL에서는 멀티스레드 환경 및 제한된 join 방식 제공으로 복잡한 쿼리나 대량 데이터 처..