100%를 한번에 바꾸는건 어려워도 1%를 100번 바꾸는건 쉽다.

생각정리 자세히보기

개발 47

[Node.js] Prisma VS MikroORM VS Drizzle

prisma에 대해서 어느정도 학습을 해보면서 약간 아쉬운 점들이 많았습니다. 그래서 Node.js 진영의 다른 ORM은 어떻게 하고있을까? 그 궁금함에 세 ORM을 비교하며 학습해보기로 하였습니다. 3가지 ORM의 특징특성PrismaMikroORMDrizzle ORM사용 편의성매우 직관적이고 설정이 간단하며, 빠르게 학습할 수 있음.관계 설정 및 모델링이 초기 구성이 Prisma에 비해 다소 복잡할 수 있음.API가 간단하고, 최소한의 설정으로 사용할 수 있도록 하여 사용자가 직접 필요한 부분을 확장마이그레이션 관리강력한 마이그레이션 관리 지원함. 마이그레이션 변경 사항 추적 및 자동화가 쉬움.Migration 기능이 내장되어 있으나, Prisma에 비해 설정과 관리가 복잡할 수 있음.마이그레이션 관리..

[Node.js] 413 Payload Too Large 오류 해결

안녕하세요. 이번 시간에는 413 Payload Too Large 오류를 해결해보는 시간을 가져보겠습니다. 413 Payload Too Large란?서버에서 처리할 수 있는 요청이 지정된 제한보다 큰 오류 RFC 9110부터는 Content Too Large로 오류 명이 수정됨. https://developer.mozilla.org/ko/docs/Web/HTTP/Status/413 413 Content Too Large - HTTP | MDNHTTP 413 Content Too Large 응답 상태 코드는 요청 엔터티가 서버에 의해 정의된 제한보다 크다는 것을 나타냅니다. 서버는 연결을 닫거나 Retry-After 헤더 필드를 반환할 수 있습니다.developer.mozilla.org 해결 방법우선 저는..

[Deploy] Docker Image Size를 줄여 성능 개선

작은 스타트업의 특성상 백엔드 개발자가 인프라까지 만져야 하는 상황이 생깁니다. 그래서 제가 직접 인프라를 관리하고 있는데요. 오늘은 해당 부분의 문제를 발견하여 개선이 필요하다고 판단하여 성능 개선을 한 내용을 공유드리려고 합니다. NestJS를 Docker Image로 빌드하여 배포하게 된다면 좋은 가이드 라인이 되었으면 좋겠습니다. 내가 마주했던 문제점평소부터 꾸준하게 문제점이라고 판단했던 부분이였습니다. node.js를 사용하는 이유가 보통 빠르게 개발을 진행하기 위해 사용한다고 생각하였습니다. 하지만 빌드된 Docker Image의 크기는 무려 약 909MB였습니다. Spring을 빌드한 Docker Image의 크기와 별로 다를바가 없었습니다. 이는 node.js를 사용하는 이유에 맞지 않았습..

개발/Deploy 2024.10.10

[Deploy] Docker란?

최근 사이드 프로젝트나 회사에서 Docker가 편리하여 자주 사용하게 되었습니다. 그냥 사용하는 것 보다는 왜 사용하는지 알기 위해서 글을 작성하며 내용을 정리하려고 합니다. 이 글은 Docker가 설치되었다는 전제하로 설명할 예정입니다! Docker란?한줄로 쉽게 요약을 하자면 Container 기반 가상화 기술입니다. Container란 소프트웨어를 실행하는 데 필요한 모든 것을 하나의 패키지로 묶어 독립적으로 실행할 수 있는 가상화 기술을 말합니다. 기존의 가상화 기술의 단점을 보완하면서 애플리케이션을 독립적으로 실행할 수 있는 환경을 제공하여 일관된 배포와 관리가 가능하게 합니다. 어떤 부분이 달라졌지?자세한 설명을 위해서 기존 가상화 기술과 Docker를 비교하면서 설명을 드리도록 하겠습니다. ..

개발/Deploy 2024.07.29

[Node.js] Prisma 한방 쿼리로 성능 개선

현재 NestJS와 MySQL 그리고 Prisma라는 ORM의 조합으로 백엔드 개발을 하고 있습니다. 개발을 진행하면서 늘 불편하다고 느껴왔던 부분에 대한 개선이 필요하다고 판단하여 진행하게 되었습니다. 불편했던 점을 어느정도 개선할 수 있는 가이드라인이 되었으면 하는 바램에서 이 글을 작성해봅니다. 내가 마주했던 문제점기능을 추가하게 되면서 table을 하나 더 Join하게 되었고 그 과정에서 기존에는 평균 100ms의 응답속도를 가지던 API가 최소 6배, 최대 10배 정도 느려지는 현상을 발견하였습니다. 다음 사진은 Thunder Client를 사용하여 테스트한 결과입니다. 보통 API의 응답 속도가 느려지는 원인은 여러가지가 있지만 이 경우는 한번에 가져올 수 있는 쿼리를 여러번에 걸쳐서 나눠서 ..

[MySQL] DataBase 계정 추가, 수정

DataBase 계정을 추가해야할 일이 생겨서 추가하고 난 후 블로그로 다시 생각을 정리하게 되었습니다. MySQL을 설치했다는 전제하로 설명합니다. 추가 CREATE USER '사용자명'@'원격호스트' IDENTIFIED WITH 'mysql_native_password' BY '비밀번호'; GRANT ALL PRIVILEGES ON *.* TO '사용자명'@'원격호스트'; 수정 ALTER USER '사용자명'@'호스트명' IDENTIFIED BY '비밀번호'; FLUSH PRIVILEGES; 실 예시 root 계정의 모든 호스트에서 모든 DB와 모든 테이블의 접근을 허용한다. CREATE USER 'root'@'%' IDENTIFIED WITH 'mysql_native_password' BY '비밀번..

개발/MySQL 2024.01.26

[Linux] 그룹, 계정 설정

최근에 각자 리눅스 계정을 줄 일이 생겨서 그룹 설정과 계정 설정을 진행하였습니다. groupadd 그룹을 추가하는 명령어입니다. 그룹은 GID가 생성됩니다. GID는 그룹 생성시 할당되는 ID입니다. # 그룹 추가하기 sudo groupadd {groupName} # 그룹 생성 확인하기 cat /etc/group groupdel 그룹을 삭제하는 명령어입니다. sudo groupdel {groupName} useradd 사용자를 추가하는 명령어입니다. 사용자를 추가할 때 그룹을 지정해줘야 사용자관리가 편해집니다. sudo useradd -m {username} -g {groupname} -- 옵션 -- -m : 해당 유저의 폴더를 같이 생성 -g : 그룹 지정 passwd 계정의 비밀번호를 세팅합니다. ..

개발/Linux 2024.01.26

[기타] Jira와 Discord 연동

최근 팀원들을 모아 사이드 프로젝트를 시작하게 되었습니다. 전에는 Jira와 Slack을 사용하여 팀원들과 소통을 했었습니다. Slack과 Jira는 서로 연동이 잘되어 편리하였습니다. 하지만 현재 팀원들은 Discord를 사용하는 것이 더 친숙하기에 Discord를 선택하게 되었습니다. 서로 연동하기 위한 방법은 크게 두가지 방법이 있었습니다. 1. Discord에 WebHook을 설정한 다음 Jira에서 WebHook을 보내는 것. 2. Discord에 WebHook을 설정한 다음 Jira의 자동화를 사용하여 Discord의 WebHook에 요청을 보내는 것 첫번째 방법의 경우 다음과 같이 설정하였습니다. 위 사진처럼 설정하였으나, 실제 시스템에서 동작하지 않는 오류가 있었습니다. 그래서 이 방법은 ..

개발/기타 2024.01.05

[Cloud] AWS와 비교해보는 NCP 후기

실습환경의 경우 NCP의 VPC 버전을 사용하지않고 Classic 버전을 사용하였습니다. Linux Server의 경우 ubuntu-18.04를 사용하였습니다. EC2 VS NCP Server AWS의 EC2와 비슷한 개념으로 NCP에도 인스턴스를 만들 수 있었습니다. 다음과 같이 구성을 진행하였습니다. 특이사항이 있었다면 보안공격을 받을 때 메일로 알림을 보내줘서 정말 좋았습니다. 친절하게 공격유형까지 설명을 해주어서 보안쪽을 한번 더 공부할 수 있었습니다. public IP AWS와 달리 맨 처음 인스턴스를 생성할 때 내부 IP만 세팅이 되고, 외부와 접속하기 위한 공인IP를 할당해줘야 합니다. 외부 네트워크와 연결할 수 있는 IP를 총 4개 할당하였습니다. RDS VS DB Server AWS의 R..

개발/Cloud 2023.12.18

[기타] 인텔리제이 세팅

인텔리제이를 사용하기 시작하면서 매 프로젝트마다 기본적인 세팅 방법을 다시 찾아보는 것이 번거로워 글로서 정리하게 되었다. 인텔리제이 설치시 한번만 설정을 해도 되는 것. 1. 글꼴 설정 프로그래밍을 위한 가독성 좋은 폰트를 설정한다. Naver에서 제공해주는 D2Coding 폰트를 설정한다. 크기는 사용자에 맞게 설정한다. https://github.com/naver/d2codingfont/releases/tag/VER1.3.2 Release D2Coding Ver 1.3.2 · naver/d2codingfont D2Coding 1.3.2 버전을 릴리즈 합니다. ligature 관련 이슈를 수정하여, ligature 적용/미적용 폰트를 구분하여 배포합니다. 기존 버전은 반드시 삭제후 설치 바랍니다. 개..

개발/기타 2023.10.19