Node.js에서 비동기적 백그라운드 작업 처리

yujin·2023년 11월 1일
0

TIL

목록 보기
5/48
post-thumbnail
post-custom-banner

Node.js에서 비동기 프로그래밍을 활용한 백그라운드 작업 처리 방법

1. 비동기 백그라운드 작업 처리란?

주로 시간이 오래 걸리는 작업을 사용자에게 빠른 응답을 제공하기 위해 백그라운드에서 처리하는 기법을 의미한다. Node.js 환경에서는 API 호출, 데이터베이스 작업, 이미지 처리 등의 작업을 백그라운드에서 처리한다.

2. 비동기 처리의 장점

비동기 처리는 사용자 경험을 향상시키는데 큰 도움이 된다. 시간이 오래 걸리는 작업을 백그라운드에서 처리함으로써, 사용자는 애플리케이션의 다른 부분을 계속 사용할 수 있다.

3. 비동기 처리의 단점

비동기 처리는 코드의 복잡성을 증가시킬 수 있다. 특히 여러 비동기 작업이 병렬로 실행되는 경우, 작업의 완료 시점을 예측하기 어렵고, 에러 처리도 복잡해질 수 있다.

4. 예시 코드

  • 테스트 코드에서는 사용자가 업로드한 이미지를 백그라운드에서 비동기적으로 처리하여, 사용자에게 빠른 응답을 제공하였다.
const express = require("express");
const multer = require("multer");
const upload = multer({ dest: "uploads/" });
const app = express();

app.use(express.json());

app.post("/upload", upload.single("image"), (req, res) => {
  // 데이터 저장
  console.log(`Post received: ${JSON.stringify(req.body)}`);

  // 일단 응답 보냄
  res.status(200).send("Post and image received successfully.");

  // 백그라운드에서 이미지 따로 작업
  processImageInBackground(req.file).then(() => {
    console.log("Image processing completed.");
  });
});

function processImageInBackground(file) {
  return new Promise((resolve, reject) => {
    console.log(`Processing image: ${file.originalname}`);
    setTimeout(() => {
      resolve();
    }, 5000);
  });
}

app.listen(3000, () =>
  console.log("Server is running on port 3000.")
);

etc

setTimeoutsetInterval의 관계에 대해 파보다가 비동기 전파에 대해 알게 되었고,
비동기에 대해서 계속 파다보니 문득 '저런 무거운 작업은 어떻게 해결할까?'에 대해 찾아보았다.
튜터님께 질문도 구하고, 직접 찾아보면서 절반정도는 이해한 것 같다.
물론 실제로 사용할 수 있기까지는 꽤 걸리겠지만..

참고 자료

Node.js Documentation
Understanding JavaScript's async await

profile
고통 받는 코딩일기
post-custom-banner

0개의 댓글