본문 바로가기

전체 글66

[nodeJS] Node.js에서 서버사이드 렌더링(SSR) 구현하기 [서버사이드 렌더링(SSR)]웹 페이지를 서버에서 렌더링하여 클라이언트에 전달하는 방식클라이언트는 서버에서 받은 HTML을 그대로 화면에 표시빠른 초기 로딩 시간: 서버에서 이미 렌더링된 HTML을 전달하므로 클라이언트는 즉시 콘텐츠를 볼 수 있음.SEO 개선: 검색 엔진은 완전히 렌더링된 HTML을 크롤링하므로, 페이지의 가시성이 높아짐. 1. Node.js와 Express를 사용한 SSR 기본 설정Node.js 프로젝트를 설정하고 필요한 패키지를 설치mkdir ssr-examplecd ssr-examplenpm init -ynpm install express react react-dom @babel/core @babel/preset-env @babel/preset-react babel-loader w.. 2024. 8. 2.
[nodeJS] Node.js에서 로그 관리하기 효율적인 로깅과 모니터링 시스템은 애플리케이션의 안정성과 성능을 유지하는 데 필수적입니다. 이를 통해 서버의 상태를 실시간으로 파악하고, 오류를 빠르게 감지하며, 성능 문제를 진단할 수 있습니다. 이번 포스팅에서는 Winston을 사용하여 Node.js 애플리케이션의 로그를 관리하는 방법을 설명하겠습니다. 1. 로깅 필요성로깅 : 애플리케이션의 동작을 기록하는 과정개발자는 애플리케이션의 상태를 파악하고, 발생한 오류를 진단하며, 성능분석 가능디버깅: 애플리케이션에서 발생하는 오류를 추적하고 해결하기 위해 도움성능 분석: 애플리케이션의 성능을 모니터링하고 병목 지점을 식별 가능보안: 보안 이벤트를 기록하고 분석하여 잠재적인 위협 감지2. Winston 기본 설정Node.js의 강력하고 유연한 로깅 라이브러.. 2024. 7. 15.
[nodeJS] Node.js로 tRPC API 만들기 tRPC는 타입 안전성과 자동 생성된 클라이언트를 제공하는 새로운 방식의 API 프레임워크입니다.타입스크립트를 사용하지 않고 tRPC API를 설정하고 사용하는 방법을 설명하겠습니다. 1. tRPC란?서버와 클라이언트 간의 타입 안전성을 보장하며, 별도의 스키마 정의 없이 API를 구축할 수 있게 해주는 프레임워크[tRPC의 장점]타입 안전성: 서버와 클라이언트 간의 데이터 타입 일치 보장자동 생성된 클라이언트: API 호출을 위한 클라이언트 코드 자동 생성생산성 향상: 별도의 스키마 정의나 코드 생성 단계 없이 바로 API 작성 가능 2. 프로젝트 구조 설정src/index.js: Express 서버와 tRPC를 설정하는 메인 파일.src/routers/appRouter.js: tRPC 라우터를 정의하.. 2024. 7. 11.
[nodeJS] Node.js에서 대규모 파일 업로드 처리하기 웹 애플리케이션에서 이미지, 비디오, 문서 등의 파일을 업로드하는 기능은 필수적입니다. 특히 대용량 파일을 업로드할 때는 서버 메모리의 효율적 사용과 사용자 경험을 고려해야 합니다. 스트리밍과 버퍼링을 이용하면 메모리 사용량을 최소화하고, 파일 업로드 속도를 최적화할 수 있습니다. 1. 스트리밍과 버퍼링의 기본 개념스트리밍데이터를 작은 조각으로 나누어 전송하는 방식파일을 스트리밍하면 전체 파일을 메모리에 저장하지 않고, 데이터를 순차적으로 처리 가능메모리 사용을 절약하고, 대용량 파일을 효율적으로 처리하는 데 유리버퍼링데이터를 일정량 모아 한꺼번에 처리하는 방식파일 업로드 시 일정 크기의 버퍼를 사용해 데이터를 저장하고, 일정량이 모이면 처리데이터 전송의 효율성을 높이고, 네트워크 자원을 효과적으로 활용.. 2024. 6. 28.
[nodeJS] Node.js에서 세션 관리 구현하기 웹 애플리케이션에서 세션 관리는 사용자 인증과 상태 유지를 위해 매우 중요합니다.Express-session을 사용해 Node.js 애플리케이션에서 사용자 세션을 관리하는 방법을 설명하겠습니다.1. 세션(Session) 이해하기세션은 서버 측에 사용자 정보를 저장하는 방식입니다. 사용자가 웹사이트를 방문할 때 서버는 고유한 세션 ID를 생성하고, 이를 클라이언트(브라우저)에 쿠키로 전달합니다. 클라이언트는 이 쿠키를 통해 서버와 통신하며, 서버는 세션 ID를 기반으로 사용자의 상태와 정보를 추적합니다.  [세션의 역할]- 로그인 상태 유지: 사용자가 로그인한 후, 다른 페이지로 이동하더라도 로그인 상태 유지 가능- 사용자 맞춤형 설정: 사용자별로 다른 설정이나 데이터 유지 가능- 쇼핑 카트: 전자 상거래.. 2024. 5. 29.
[nodeJS] Node.js에서 스케줄링 작업 자동화하기 자동화된 스케줄링 작업은 시스템 관리, 데이터 백업, 주기적인 보고서 생성 등 다양한 상황에서 매우 유용합니다. 이러한 작업들은 일정한 시간 간격으로 실행되어야 하며, 수동으로 수행하기에는 번거롭고 오류가 발생할 가능성이 높습니다. Node.js에서는 node-cron 모듈을 사용해 이러한 작업을 쉽게 자동화할 수 있습니다. 1. Node-cron 모듈 설치npm install node-cron 2. 기본 스케줄링 작업 설정하기* * * * *라는 표현식을 사용해 매분마다 작업을 실행하도록 설정 크론 표현식의 각 위치는 분, 시, 일, 월, 요일을 의미const cron = require('node-cron');// 매분마다 실행되는 작업cron.schedule('* * * * *', () => { .. 2024. 5. 28.
[API] REST API, GraphQL, gRPC, SOAP, WebSocket, SSE 구분하기 API(Application Programming Interface)는 소프트웨어 간의 상호작용을 가능하게 하는 인터페이스입니다. API를 사용하면 서로 다른 소프트웨어 시스템이 서로 상호작용하고 데이터를 주고받을 수 있습니다. 예를 들어, 스마트폰 앱이 서버에 저장된 데이터를 가져오거나, 웹사이트가 외부 서비스의 기능을 이용할 때 API를 사용합니다. API는 웹사이트나 앱에서 날씨 정보를 가져오거나, 온라인 쇼핑몰에서 결제를 처리하는 등 다양한 용도로 사용됩니다.다양한 API 스타일이 존재하며, REST API, GraphQL, gRPC, SOAP, WebSocket, SSR의 개념을 이해하고 각각을 구분해 보겠습니다. 1. REST APIREST(Representational State Transf.. 2024. 5. 24.
[nodeJS] Node.js로 페이징네이션 활용하기 페이징네이션은 전체 데이터셋을 일정한 크기로 나누어 페이지별로 데이터를 제공하는 방식입니다. 이를 통해 한 번에 모든 데이터를 불러오는 부담을 줄이고, 사용자는 필요한 데이터를 쉽게 탐색할 수 있습니다. 일반적으로 페이지 번호와 페이지당 항목 수를 사용해 특정 페이지의 데이터를 가져옵니다. 1. Node.js 프로젝트 설정하기Express는 웹 서버를 구축하는 데 사용하고, MySQL과 MongoDB 연결을 위해 각각 mysql과 mongoose를 사용mkdir pagination-examplecd pagination-examplenpm init -ynpm install express mysql mongoose 2. MySQL에서 페이징네이션 구현하기1) 데이터베이스 설정간단한 users 테이블을 생성C.. 2024. 5. 23.
[nodeJS] Node.js와 redis 연동하기 Redis는 "Remote Dictionary Server"의 약자로, 고성능 키-값 저장소로 널리 사용되는 오픈 소스 인-메모리 데이터 구조 서버입니다. 다양한 데이터 구조를 지원하며, 데이터베이스, 캐시, 메시지 브로커 역할을 할 수 있습니다. Redis는 메모리 내 데이터 저장소로서 빠른 읽기 및 쓰기 작업을 제공하며, 디스크에도 지속적으로 데이터를 저장할 수 있어 재시작 후에도 데이터를 유지할 수 있습니다. 1. Node.js에서 Redis 사용 준비하기Node.js에서 Redis를 사용하기 위해서는 먼저 Redis 서버가 설치되어 있어야 하며, Node.js 애플리케이션에서 Redis 클라이언트를 사용할 수 있도록 redis 패키지도 설치 필요npm install redis  2. Redis 연.. 2024. 5. 7.