본문 바로가기
WIKI 기술 지식 베이스

Lifecycle 서비스

원문 보기 위키 갱신

이 서비스는 플러그인이 서비스가 종료될 때(예: 파드가 종료되거나 로컬 개발 중 Ctrl+C를 누를 때) 리소스를 정리하기 위한 훅(hook)을 등록할 수 있게 해줘요. 다른 핵심 서비스들도 내부적으로 같은 메커니즘을 활용해 스스로 깔끔하게 중지돼요.

출처: 문서

본문

이 서비스는 플러그인이 서비스가 종료될 때(예: 파드가 종료되거나 로컬 개발 중 Ctrl+C를 누를 때) 리소스를 정리하기 위한 훅(hook)을 등록할 수 있게 해줘요. 다른 핵심 서비스들도 내부적으로 같은 메커니즘을 활용해 스스로 깔끔하게 중지돼요.

서비스 사용하기

다음 예시는 example 백엔드 플러그인에서 lifecycle 서비스를 가져와 서비스가 종료될 때 오래 실행되는 인터벌(interval)을 정리하는 방법을 보여줘요.

import {
  coreServices,
  createBackendPlugin,
} from '@backstage/backend-plugin-api';

createBackendPlugin({
  pluginId: 'example',
  register(env) {
    env.registerInit({
      deps: {
        lifecycle: coreServices.lifecycle,
        logger: coreServices.logger,
      },
      async init({ lifecycle, logger }) {
        // some example work that we want to stop when shutting down
        const interval = setInterval(async () => {
          await fetch('http://google.com/keepalive').then(r => r.json());
          // do some other stuff.
        }, 1000);
        lifecycle.addShutdownHook(() => clearInterval(interval));
      },
    });
  },
});

더 알아보기 (Learn more)