banner image

분류 전체보기 85

[TypeORM] 데이터베이스 마이그레이션

타입스크립트 사용 시 TypeORM 공식 문서에 따른 명령어는 에러가 발생하여 사용하지 못한다. Migrations | typeormOnce you get into production you'll need to synchronize model changes into the database. Typically, it is unsafe to use synchronize: true for schema synchronization on production once you get data in your database. Here is where migrations come to help. Aorkhan.gitbook.io 공식문서 상 명령어npx typeorm-ts-node-esm migration:generat..

[Prisma] TypeORM vs Prisma 차이와 Prisma를 선택한 이유

타입스크립트를 이용해 개발하는 과정에서 사용할 수 있는 대표적인 ORM은 TypeORM과 Prisma입니다. 많은 사람들이 두 ORM 중 하나를 선택하는데요. 이때 두 ORM 중 어떤 것을 채택하는 것이 더 좋을지에 대해 많이 궁금하실 것입니다. 저도 마찬가지였습니다. 저는 타입스크립트 초기부터 현재까지 TypeORM을 잘 활용해오고 있었는데요. 이번에 새롭게 시작하는 프로젝트에는 TypeORM 대신 Prisma를 도입하기로 결정했습니다. 오늘은 그 이유를 TypeORM과 Prisma를 비교하며 공유해보려 합니다. 참고자료 Prisma ORM vs TypeORM | Prisma DocumentationLearn how Prisma compares to TypeORM.www.prisma.io TypeOR..

[Github] private 레포지토리 clone 에러 - remote: Repository not found

에러 상황git clone {레포지토리 URL} github에서 운영중인 private 레포지토리 코드를 clone 받으려는 상황. 아래와 같은 에러 발생 Cloning into '{레포지토리명}'...remote: Repository not found.fatal: repository '{레포지토리 URL}' not found 에러 코드를 읽어보면 해당 레포지토리를 찾지 못한다는 내용입니다. 하지만 보통 이런 경우 레포지토리 URL이 잘못된 경우는 많지 않습니다. 다른 이유가 더 일반적입니다. 그 이유는 바로 해당 레포지토리가 private이기 때문에 접근 권한이 없어 발생하는 에러입니다. 해결 방법1. Github 퍼스널 토큰 발급github 퍼스널 토근을 발급하기 위해서는 github 접속 시 우측 ..

카테고리 없음 2025.05.10

[MySQL] 쿼리 실행 계획(Query Execution Plan)을 통해 쿼리 최적화하기

쿼리 실행 계획은 데이터베이스에서 특정 SQL 쿼리문을 실행할 때, DB 옵티마이저가 해당 쿼리를 어떻게 실행할 지에 대한 계획을 의미합니다. 그래서 효율적인 데이터베이스 활용을 위해서는 쿼리 실행 계획에 대해 파악하는 것은 필수입니다. 저는 평소에 MySQL 데이터베이스를 많이 사용합니다. 그래서 오늘은 MySQL에서 쿼리 실행 계획을 확인하고 이를 통해 더 좋은 쿼리를 작성하는 방법에 대해 공유해보려합니다. 쿼리 실행 계획이란? MySQL :: MySQL 8.4 Reference Manual :: 10.8 Understanding the Query Execution Plan10.8 Understanding the Query Execution Plan Depending on the details of..

[NodeJS] 싱글 스레드도 경쟁 상태(Race Condition)는 발생합니다

Node.js는 싱글 스레드로 동작하는 서버 환경으로, 일반적으로 멀티스레드 환경에서 발생하는 Race Condition 문제와는 거리가 멀다고 여겨집니다. 그러나 비동기 코드가 사용되면 Node.js에서도 Race Condition 문제가 발생할 수 있습니다. 이번 글에서는 Race Condition의 개념을 짚어보고, Node.js에서 이를 어떻게 실험할 수 있는지에 대한 예제를 소개하려 합니다. 경쟁 상태(Race Condition)란?Race Condition은 여러 프로세스나 스레드가 동시에 동일한 자원에 접근하면서 발생하는 문제입니다. 이는 공유 자원을 동시에 변경하려 할 때, 각 작업의 실행 순서에 따라 예상치 못한 결과가 발생하는 상황을 말합니다.예를 들어 CounterService라는 ..

백엔드/Node.js 2025.05.04

함수형 프로그래밍에 대한 이해와 오해 (feat.절차지향, 객체지향)

'함수형 프로그래밍'은 함수형이라는 이름으로 인해 많은 오해를 불러일으킵니다. 가장 흔한 오해는 함수형 프로그래밍의 반대는 '객체 지향 프로그래밍'이라는 생각입니다. 이외에도 함수형 프로그래밍에 대한 오해는 꽤 많습니다. 그래서 오늘 이 글에서 함수형 프로그래밍이 무엇인지에 대해 설명하고, 관련한 오해를 풀어보려합니다. 먼저 함수형 프로그래밍과 관련한 여러 프로그래밍 관점들을 소개하겠습니다. 절차 지향 vs 함수형 vs 객체 지향✅ 절차 지향 프로그래밍 (Procedural Programming)핵심 개념: 프로그램을 순차적인 절차(명령의 흐름)로 구성하여 문제를 해결함.기반 구조: 함수(또는 프로시저)를 사용하여 코드를 구조화하되, 주로 전역 상태와 공유된 데이터를 중심으로 동작.대표 언어: C, P..

[JS] 자바스크립트 호이스팅 쉽게 이해하기

자바스크립트를 공부하는 과정에서 자주 등장하는 개념 중 하나가 바로 호이스팅(Hoisting)입니다. 호이스팅은 자바스크립트의 변수 선언과 함수 선언이 코드 실행 전에 "끌어 올려진다"는 특성을 의미합니다. 이 글에서 호이스팅이 무엇인지, 어떻게 동작하는지, 그리고 이를 어떻게 다뤄야 하는지에 대해 설명하겠습니다. 🤔 호이스팅이란?호이스팅(Hoisting)은 자바스크립트에서 변수 선언과 함수 선언이 실행되기 전에 스코프(범위)의 최상단으로 끌어올려지는 현상을 말합니다. 이때 사용된 단언 hoist는 hoist crane에서 따온 것으로 hoist crane은 위 이미지에서 볼 수 있는 공사현장의 크레인을 의미합니다. 즉, 자바스크립트 엔진은 코드 실행 전에 선언된 변수와 함수들을 미리 최상단으로 끌어..

백엔드/Node.js 2025.05.02

ESLint, Prettier 기초부터 실전 적용까지 - Node 개발자 필수 상식

개요ESLint는 정적 분석을 통해 코드 품질을 체크하는 도구로, 주로 코드의 문법적 오류나 불필요한 코드를 찾아내는 데 집중합니다. 반면, Prettier는 코드를 자동으로 포맷해서 일관된 스타일을 유지하는 데 도움을 줍니다. 그래서 Node 개발자들이 협업할 때는 이 둘을 같이 사용해 코드 품질과 스타일을 일관성있게 유지하는 것이 일반적입니다. ESLintPrettier설명코드 문법 오류, 버그 가능성 탐지 목적코드 스타일 일관성 유지 목적목적코드 안정성코드 가독성 간단한 예시를 통해 ESLint와 Prettier를 사용하는 이유를 알아보겠습니다.ESLint사용되지 않는 변수 찾기: 쓸데없는 변수 선언 피할 수 있음잘못된 함수 호출: 존재하지 않는 함수. 혹은 함수 호출 시 함수명을 잘못 사용한 부분..

[TypeORM] connection pool size 조정해서 데이터베이스 작업 효율 높이기

커넥션 테스트 준비(현재 글은 typeorm 0.3.21 버전, mysql 8.0 버전을 토대로 작성하였습니다.)저는 NestJS 프레임워크에서 typeorm을 활용하여 데이터베이스 작업을 진행하고 있습니다. 그리고 typeorm과 관련된 설정에서 connection pool과 관련된 설정은 어떠한 것도 수정하지 않았습니다. 이때 typeorm에서 데이터베이스와 연결되는 커넥션 수가 궁금하여 다음과 같은 테스트를 진행하였습니다.커넥션 수 확인nest js 어플리케이션 실행 후 커넥션 수 확인nest js 서비스 코드 중 데이터베이스에 한 번 CRUD 작업을 진행하는 메서드 실행 후 커넥션 확인nest js 서비스 코드 중 데이터베이스에 여러 번 CRUD 작업을 진행하는 메서드 실행 후 커넥션 확인이때 사..

[AWS] Auto Scaling 사용해 트래픽에 맞춰 스케일링하기 (EC2, ALB)

클라우드 서비스를 이용하는 이유 중 하나는 고가용성일 것입니다. 예전에 물리적 서버를 직접 운영하던 시절에는 트래픽이 증가하면 서버실에 개발 인원이 직접 가서 물리적 서버를 한 대 더 켜야했습니다. 이런 작업은 굉장한 불편함을 발생시켰고, 현재는 클라우드 서비스의 등장으로 모두 자동화되가고 있습니다. 즉, 특정 조건이 만족되면 알아서 서버가 스케일 아웃되게 할 수 있는 것이죠. 오늘은 AWS에서 제공하는 스케이일 서비스인 Auto Scaling을 활용하는 방법에 대해 간략히 공유하겠습니다.Auto Scaling 설정1. 그룹 크기최소 용량과 최대 용량만 제대로 작성하면 될 듯 싶습니다. 원하는 용량 값은 스케일 아웃, 스케일 인이 실행되면 현재 인스턴스 개수로 수정되고 있었습니다. 2. 동적 크기 조정 ..