[Project] 프로젝트 삽질기13 (feat class-transformer) 들어가며 사이드 프로젝트에서 푸시 알림을 활용한 서비스를 개발하고 있습니다. 그 과정에서 생각하고 배웠던 점들을 하나씩 작성하고자 합니다. 프로젝트를 진행하면서, 직렬화와 역직렬화를 공부하면서, 때에 따라 JSON 객체와 클래스의 인스턴스를 알맞게 변환하는 것이 필요하다는 것을 알았습니다. 그때 활용하는 것이 class-transformer인데, 이번 기회에 class-transformer에 대해 정리하고 프로젝트를 진행해야겠다고 생각했습니다. 이 글은 TypeScript 환경에서 class-transformer 적극적으로 사용하기를 참고한 내용입니다. 링크에서 더 자세하게 내용을 살펴볼 수 있습니다. class-transformer 백엔드 환경에서도 외부의 HTTP API를 호출하는 일이 생깁니다. 그.. [Project] 프로젝트 삽질기12 (feat 직렬화) 들어가며 사이드 프로젝트에서 푸시 알림을 활용한 서비스를 개발하고 있습니다. 그 과정에서 생각하고 배웠던 점들을 하나씩 작성하고자 합니다. 프로젝트를 진행하면서, DB에서 조회한 컬럼값이 담긴 객체를 외부에 그대로 전달한다면, DB의 구조를 외부에서도 쉽게 알 수 있고, 민감한 정보가 담겨서 전달될 수 있기 때문에 보안상 대단히 좋지 못하다는 것을 알 수 있었습니다. 또한, 만약 DB에서 조회한 값이 담긴 Entity 객체를 외부에서 그대로 사용할 경우, Entity가 변경될 경우 Entity 객체를 활용하는 모든 코드의 변경이 일어날 수 있음은 더 큰 문제입니다. 그래서 이 문제를 해결하기 위해, Entity 객체를 Dto 객체로 변경하고, 최종적으로 응답을 할 때 Dto 객체를 JSON 객체로 직렬화.. [Project] 프로젝트 삽질기11 (feat pgAdmin4) 들어가며 사이드 프로젝트에서 푸시 알림을 활용한 서비스를 개발하고 있습니다. 그 과정에서 생각하고 배웠던 점들을 하나씩 작성하고자 합니다. 프로젝트를 진행하면서, PostgreSQL을 잘 활용하기 위해서는 pgAdmin4를 잘 활용할 수 있어야겠다고 생각했습니다. 이번 시간에는 pgAdmin4에 대해 조금 더 자세히 알아보겠습니다. ERD 그리기 예전 pgAdmin에서는 ERD를 바로 만들 수 없어서, 다른 툴을 활용했다고 합니다. 하지만 pgAdmin4에서는 ERD를 손쉽게 확인할 수 있습니다. 확인하고 싶은 DB를 선택하여 마우스 우측 클릭을 하면 아래와 같이 나옵니다. 위에서 Generate ERD를 클릭하면, 원하는 ERD를 확인할 수 있습니다. Table 복사하기 pgAdmin을 활용해서 Tab.. [협업] 협업을 위한 JIRA 이슈 번호 커밋 메시지 자동 추가하기 들어가며 사이드 프로젝트를 진행하면서, 효율적인 일정 관리의 필요성을 느끼면서 JIRA를 적극적으로 도입했습니다. JIRA를 처음 써보면서, JIRA를 어떻게 하면 효율적으로 사용할 수 있을까 알아보던 중, 회사에서는 JIRA의 이슈 번호를 PR과 Commit에 적극적으로 활용한다는 것을 알 수 있었습니다. 저희 팀에서도 적극적으로 활용해보고자, JIRA를 제대로 활용하는 방법에 대해 글을 작성하고자 합니다. JIRA를 사용하면서 편하게 사용하는 첫 번째는 바로 JIRA의 이슈 번호를 커밋 메시지에 git hooks을 이용해서 추가하는 것입니다. 지금부터 JIRA 이슈 번호를 어떻게 Commit 메시지에 추가하는지 살펴보겠습니다. 귀찮은 Jira 이슈 번호 작성 현재 사용하고 있는 커밋 메시지는 제가 예.. [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라는 것이 씨앗이라는 뜻인데, 씨앗을 뿌리는 것이라고 생각하면 좋을 것 같습니다. 즉 데이터베이스에 일정 데이터를 넣을 수 있게 돕는 것입니다.. 이전 1 ··· 7 8 9 10 11 12 13 ··· 19 다음