[nodejs] Fastify 백그라운드 작업 처리

Fastify는 Node.js를 위한 웹 프레임워크이며 빠른 속도와 낮은 오버헤드를 자랑합니다. 이러한 특징으로 인해 Fastify를 사용하여 웹 서버를 구축하는 경우 백그라운드 작업을 처리하는 것이 중요합니다. 이 블로그에서는 Fastify에서의 백그라운드 작업 처리 방법을 살펴보겠습니다.

백그라운드 작업 처리

웹 서버 애플리케이션은 대부분 HTTP 요청에 대한 응답을 처리하는 데 중점을 둡니다. 그러나 때로는 데이터베이스 정리, 정기적인 작업 실행 또는 외부 시스템과의 통합을 위한 백그라운드 작업이 필요할 수 있습니다.

Fastify에서 백그라운드 작업 처리를 구현하는 방법은 주로 Node.js의 내장 모듈 setInterval을 사용하는 것입니다.

// 예시: 10초마다 실행되는 백그라운드 작업
function backgroundTask() {
  setInterval(() => {
    // 실행할 작업 내용
  }, 10000);
}

// Fastify 애플리케이션 시작 시 백그라운드 작업 실행
fastify.listen(3000, () => {
  backgroundTask();
});

위의 예시에서 setInterval을 사용하여 10초 간격으로 특정 작업을 실행하는 backgroundTask 함수를 정의하고, Fastify 애플리케이션이 시작될 때 이 함수를 호출하여 백그라운드 작업을 실행합니다.

백그라운드 작업 모듈

또한, Fastify 애플리케이션 내에서 백그라운드 작업을 더 효율적으로 다루기 위해 fastify-cron과 같은 외부 모듈을 활용할 수 있습니다. fastify-cron 모듈을 사용하면 크론 작업과 비슷한 방식으로 백그라운드 작업을 스케줄링할 수 있어서 코드를 더 깔끔하게 유지할 수 있습니다.

다음은 fastify-cron 모듈을 사용하여 10초 간격으로 백그라운드 작업을 처리하는 예시입니다.

const fastify = require('fastify')();
const fastifyCron = require('fastify-cron');

fastify.register(fastifyCron, {
  cronTime: '*/10 * * * * *', // 10초마다
  onTick: () => {
      // 실행할 작업 내용
  },
  start: true
});

fastify.listen(3000, (err) => {
  if (err) throw err;
  console.log('Server listening at http://localhost:3000');
});

fastify-cron 모듈을 사용하면 코드를 더 간결하고 읽기 쉽게 유지할 수 있으며, 작업 스케줄링도 쉽게 처리할 수 있습니다.

결론

Fastify를 사용하여 웹 애플리케이션을 개발할 때, 백그라운드 작업 처리가 필요한 경우 setInterval을 사용하여 직접 구현하거나 fastify-cron과 같은 외부 모듈을 활용하여 작업을 처리할 수 있습니다. 이를 통해 웹 서버와 백그라운드 작업을 효율적으로 관리할 수 있습니다.