Backend Development(14)
-
Node.js 비동기 작업은 무엇인가? (feat. Promise.all)
우리는 지금까지 세뇌처럼 들어왔던 이야기들이 있습니다. "Node.js 는 싱글쓰레드 + 비동기 IO 모델 이다" 라는 말입니다. 이 개념에 대해서는 다들 어느정도 수준으로는 이해하고 있을 거라고 생각합니다. 하지만 자주 헷갈리는 부분이 있습니다. 바로 싱글쓰레드인 Node.js 에서 IO작업은 병렬적으로 처리되는 듯한 느낌 그리고 그것을 증명해주듯 공식문서에 명시되어 있는 기능인 Promise.all 이 그것들입니다. 오늘은 해당 이야기를 기반으로 개념을 정리해보고자 합니다.들어가기 앞서: Node.js의 이벤트 루프오늘 설명할 병렬적 작업과 Promise.all 에 대한 설명에 앞서 기본적으로 알아둬야할 부분입니다. 설명에 필요한 부분만 이야기할 예정이니 이론적으로 얕은 내용입니다.이번 글을 위해서는..
2025.09.06 -
트리거 vs 코드 트랙잭션, 어디서 선을 그을까?
"분명 아무도 업데이트 안 했다는데 값이 바뀌어 있네...?"이미 어느정도 만들어져 있는 서비스 단에서 백엔드를 개발하다보면 이런 미스터리한 경험을 한 번쯤 겪곤합니다. 범인은 종종 데이터베이스 트리거. 반대로 애플리케이션 코드에서 트랙잭션을 직접 열고 일련의 쿼리를 처리하기도 하죠. 둘 다 유용한 도구인데, 어디까지 DB에 맡기고 어디부터는 애플리케이션이 책임져야 할까요?트리거‑트랜잭션이 뭔가요?사실 이 둘을 비교하는 건 잘못된 비교일 수도 있습니다. 트리거 자체에서도 트랙잭션을 열고 사용하기도하고, 트리거 자체는 DB 내에서도 애플리케이션 수준으로 좀더 추상화된 개념이고, 트랙잭션은 DB 내의 기능으로 봐야하기 때문입니다. 그렇기에 이 글에서는 트랜잭션이라는 것은 애플리케이션 코드에서 트랙잭션을 직접..
2025.09.02 -
map() vs forEach() 언제 사용해야할까?
배열을 순회할 때 자주 쓰는 두 가지 메서드 map() 과 forEach() 는 겉보기엔 비슷하지만, 선택에 따라 코드의 동작 방식이 크게 달라집니다. 여기서는 두 메서드의 차이를 살펴보고, 어떤 상황에서 어떤 도구를 써야 하는지 정리합니다.map() 이란?map() 은 원본 배열을 변경하지 않고 각 요소에 함수를 적용해 새로운 배열을 반환합니다.let numbers = [1, 2, 3, 4];const squared = numbers.map(num => num * num);console.log(squared); // [1, 4, 9, 16]데이터를 변형하면서 새 배열이 필요할 때 가장 적합합니다.forEach() 란?forEach() 는 배열의 각 요소에 함수를 실행하지만 반환값이 undefined 입..
2025.05.06 -
ChatGPT와 Node.js로 네이버 뉴스 자동 요약 시스템 만들기
요즘 뉴스가 너무 많습니다. 특히나 요즘 시국의 정치 쪽은 따라가기도 너무 벅찹니다. 그래도 이 흐름을 놓칠수야 없죠.오늘은 네이버 뉴스를 크롤링해서 ChatGPT를 통해 내용을 요약하고, 그 내용을 읽기 편하게 텍스트 파일로 저장하는 훌륭한 자동화 프로그램을 만드려고 합니다. 이 글에서는 그 과정을 소개하고, 전체 코드를 공개하겠습니다.프로젝트 개요목표는 뉴스를 요약하고 파일 저장을 자동화 하는 겁니다. 사용할 기술 스택은 아래와 같습니다.Node.jsPuppeteer (크롤링)OpenAI API (ChatGPT)fs 모듈 (파일 저장)1. 네이버 뉴스 크롤링하기크롬에서 개발자 도구를 키고, 네이버 뉴스의 구조를 먼저 파악해야합니다. 헤드라인은 10개가 있습니다. 그렇다면 우선 각 뉴스 페이지에 접근할..
2025.05.01 -
Node.js로 ChatGPT API 연동합시다.
ChatGPT를 웹 페이지나 앱에서 질문하고 답변을 받는 건 많이들 이용하고 계실겁니다.하지만 그 훌륭한 도구가 우리의 웹 애플리케이션이나 우리의 웹 사이트에 장착된다면 큰 효과는 더 뛰어나지 않을까요?ChatGPT API를 Node.js(Javascript 동일)에서 호출하는 예시와 방법 그리고 간단한 코드 예시도 함께 알아보겠습니다. 1. 사전 준비코드를 작성하기 전에 우선 OpenAI API Key를 발급 받아야합니다.여기 페이지 에서 받으실 수 있습니다.Tip: 해당 Key는 발급 당시에만 원문이 확인 가능하니, 메모장이나 어딘가에 해당 키값을 저장해두시는 것을 추천 드립니다. 그리고 API 요금은 ChatGPT 구독료와 별개입니다. API 호출 건당 비용이 발생하기에 그 비용을 미리 충전하셔야합..
2025.04.29 -
Node.js 보다 빠른 런타임, Bun
Bun은 JavaScript의 런타임, 번들러, 패키지 매니저를 하나로 통합한 자바스크립트 올-인원 솔루션입니다. Node.js와 매우 유사하지만, 더 빠르고 간편한 개발 경험을 목표로 하고 있죠. Zig 라는 언어로 작성되었으며, JavaScriptCore 엔진을 기반으로 합니다.그래서 왜 만들었나요?기존 Node.js 환경에서는 여러 도구(npm, webpack, ts-node 등)를 함께 사용해야 하고, 빌드와 설치 시간이 매우 오래 걸리는 문제가 있었습니다. Bun은 이러한 번거로움을 없애고, "하나의 도구, 빠른 속도"라는 철학을 가지고 탄생했습니다. 간단한 Bun 사용법# Bunjs 설치curl -fsSL https://bun.sh/install | bash# 새 프로젝트 시작bun init ..
2025.04.27