banner image

전체 글 85

[TypeORM]쉽고 빠르게 사용해보자

1:N 관계와 N:1 관계는 가장 흔하게 사용되는 연관 관계 중 하나입니다. 선수와 팀의 관계, 게시물과 댓글의 관계 등 많은 상황에 적용될 수 있습니다. 하나의 팀에는 여러 선수가 포함될 수 있고, 여러 선수는 하나의 팀에 포함될 수 있죠. 또한 하나의 게시물에는 여러 댓글이 달릴 수 있고, 여러 댓글은 하나의 게시물에 달릴 수 있습니다.

CommonJS(CJS), ES Module(ESM) 차이점과 특징

Node.js에서 모듈을 호출하는 방식은 2 가지 존재합니다. CommonJS 방식과 ES Module 방식입니다. CommonJS는 기존에 node 쪽에서 사용되던 근본 방식으로 require 명령어로 모듈을 호출합니다. ES Module은 비교적 최근인 node.js 12 버전부터 추가된 방식으로 import 명령어로 모듈을 호출합니다. 오늘은 이런 2 가지 방식의 특징과 차이점에 대해 알아보겠습니다. 참조 블로그 CommonJS와 ESM에 모두 대응하는 라이브러리 개발하기: exports fieldNode.js에는 두 가지 Module System이 존재합니다. 토스 프론트엔드 챕터에서 운영하는 100개가 넘는 라이브러리들은 그것에 어떻게 대응하고 있을까요?toss.tech CommonJS(CJS)..

백엔드/Node.js 2024.11.20

[NestJS]Jest를 이용해 테스트하자 - 1. 유닛 테스트(Unit Testing)

NestJS에서는 기본적으로 jest를 활용한 테스트 기능을 제공합니다. 오늘은 jest를 활용해 유닛 테스트하는 방법에 대해 알아보겠습니다. Documentation | NestJS - A progressive Node.js frameworkNest is a framework for building efficient, scalable Node.js server-side applications. It uses progressive JavaScript, is built with TypeScript and combines elements of OOP (Object Oriented Programming), FP (Functional Programming), and FRP (Functional Readocs.n..

백엔드/NestJS 2024.11.12

객체 지향 프로그래밍(OOP): 내 방식대로 개념 적용해보기 - feat. 객체지향의 사실과 오해 책 리뷰

개발을 공부해 본 사람은 한 번쯤은 듣게 되는 객체 지향 프로그래밍(Object-Oriented Programming, OOP). 굉장히 친숙하면서도 정확히 이해하기에는 모호한 개념이라고 생각하는데요. 이를 더 깊이 이해하기 위해'객체지향의 사실과 오해: 역할, 책임, 협력 관점에서 본 객체지향'이라는 책을 읽고 나름대로 느낀 점들을 정리해보려 합니다.  '객체지향의 사실과 오해' 리뷰우선 내용을 전체적으로 요약하지는 않을 것입니다. 모든 내용이 하나하나 정확히 기억나지는 않을뿐더러, 전체적으로 코드 수준에서 명확하게 설명하는 방식보다는 추상적이고 모호한 형태로 설명하는 방식이 주로 사용되었다고 생각해 내용을 요약하는 것이 크게 도움이 되지 않다고 생각하기 때문입니다(개인적인 생각입니다)... 그래서 ..

Yarn Berry 사용 시 에러 리스트 및 해결 방법

저는 npm에서 yarn berry로 갈아타던 중 예상치 못한 에러가 몇 가지 발생해 고생한 경험이 있습니다. 이런 에러들과 제가 에러를 해결한 방법에 대해 공유드리려합니다. 1. ERR_INVALID_ARG_TYPEnode:buffer:587 throw new ERR_INVALID_ARG_TYPE( ^TypeError [ERR_INVALID_ARG_TYPE]: The "list[2]" argument must be an instance of Buffer or Uint8Array. Received type string ('app.controller.d.ts') at Function.concat (node:buffer:587:13) at node:internal/fs..

에러 2024.11.08

npm에서 yarn으로 갈아타기(yarn berry)

Node.js 프로젝트에서 예전부터 사용되던 패키지 관리자는 npm입니다. 하지만 npm 이후 새롭게 생겨난 패키지 관리자는 yarn입니다. 저는 계속해서 npm을 이용해왔기에 아무런 생각없이 항상 패키지 관리자는 npm으로 구성했습니다. 하지만 언제가부터 yarn의 성능이 더 좋다는 블로그 글을 몇 번 보게 되면서 yarn에 대한 궁금증이 생겼습니다. 그래서 오늘은 제가 조사한 yarn에 대한 정보를 공유해보려합니다.  Yarn이란?yarn은 2016년에 페이스북에서 개발한 Node.js 패키지 관리자 시스템입니다. npm같은 경우 Node.js에 기본적으로 포함되어 있기 때문에 쉽게 사용할 수 있는데요. npm에 몇 가지 단점이 존재했기 때문에 yarn은 이를 보완하기 위해 개발되었다고 합니다.  n..

백엔드 2024.11.07

의존성 주입(Dependency Injection, DI): 간단한 비유와 단위 테스트로 이해하기

객체 지향 프로그래밍의 주요한 패턴 중 하나는 의존성 주입(Dependency Injection, DI) 입니다. 하지만 저는 이런 개념이 정확히 이해되지 않더라구요. 아마 많은 사람들이 저와 비슷한 상황일 것이라고 생각합니다. 그래서 오늘은 제가 이해한 의존성 주입에 대해 공유해보려 합니다. 의존성 주입이란?먼저 위키백과를 통해 확인할 수 있는 간단한 의존성 주입에 대한 정의입니다.소프트웨어 엔지니어링에서 의존성 주입은 하나의 객체가 다른 객체의 의존성을 제공하는 테크닉이다. "의존성"은 예를 들어 서비스로 사용할 수 있는 객체이다. 클라이언트가 어떤 서비스를 사용할 것인지 지정하는 대신, 클라이언트에게 무슨 서비스를 사용할 것인지를 말해주는 것이다. #위키백과 의존성 주입의 핵심 목적결합도 감소의존성..

Kafka 카프카에 대한 이해와 간단한 실습

카프카(Kafka)란?Kafka는 원래 LinkedIn에서 개발되었고, 처음에는 로그 수집 및 스트리밍 플랫폼으로 사용되었습니다. 하지만 시간이 지나면서 그 기능이 마이크로서비스 간 통신에 적절하다고 생각되어 많은 곳에서 MSA 구조를 구현하는 데 사용되고 있습니다. 저는 마이크로서비스에서 사용되는 카프카에 대해 이해해 보고 간단한 실습을 진행해 보았습니다.  카프카 구성 요소- 생산자 (Producer)카프카에 특정 토픽을 이용한 메시지를 전송하는 클라이언트 애플리케이션을 의미합니다. - 소비자 (Consumer)소비자는 카프카에 특정 토픽을 구독합니다. 어떤 생산자가 해당 토픽을 발행하면 카프카로부터 해당 토픽과 메시지를 가져옵니다. - 브로커 (Broker)카프카의 서버. 하나의 브로커는 여러 개의..

백엔드 2024.11.04

[NestJS]내장된 기능 활용해 마이크로서비스 구현하기 - 4. Kafka

[NestJS]내장된 기능 활용해 마이크로서비스 구현하기 - 1. 개요[NestJS]내장된 기능 활용해 마이크로서비스 구현하기 - 2. TCP[NestJS]내장된기능활용해마이크로서비스구현하기 - 3. MQTT[NestJS]내장된 기능 활용해 마이크로서비스 구현하기 - 4. Kafka  Documentation | NestJS - A progressive Node.js frameworkNest is a framework for building efficient, scalable Node.js server-side applications. It uses progressive JavaScript, is built with TypeScript and combines elements of OOP (Object O..

백엔드/NestJS 2024.11.04

MSA 구조 구성의 핵심: 메시지 큐(Message Queue)란? - RabbitMQ, Kafka, Redis

MSA 구조를 이용할 때 마이크로서비스 간 통신을 구현하기 위해서는 어떤 프로토콜을 많이 사용할까요? 가장 흔하게 사용되는 방법 중 하나가 바로 메시지 큐 방식입니다. 메시지 큐 방식이 마이크로서비스 간에 많은 통신이 필요할 때 효율적으로 통신하기 때문인데요. 어떤 원리로 효율적인 통신이 가능할까요?오늘은 MSA 구조의 핵심 포인트인 메시지 큐에 대해 자세히 알아보겠습니다.  메시지 큐(Message Queue)란?우선 간단한 자료구조를 이해하고 있는 분들은 당연히 큐(Queue)라는 자료구조에 대해 이미 알고 있을 것입니다. 큐 구조는 선입선출(First-In-First-Out, FIFO) 원칙을 따르는 구조로 가장 먼저 들어온 요소가 가장 먼저 처리됩니다. 이런 큐 구조를 활용한 메시지 큐는 많은 애..

백엔드 2024.11.04