본문으로 건너뛰기

개요

폐기가능성 원칙은 프로세스를 빠르게 시작하고, 안전하게 종료하고, 언제든 교체할 수 있게 만들라는 뜻입니다. 서버나 프로세스가 영원히 살아 있다고 가정하면 배포, 장애 복구, 확장이 모두 어려워집니다.

HandStack 운영에서는 ack 프로세스, IIS Application Pool, pm2 프로세스, Docker 컨테이너, 배포 산출물이 모두 교체 가능한 단위입니다. 중요한 것은 프로세스가 종료되어도 업무 데이터와 설정이 사라지지 않도록 설계하는 것입니다.

HandStack에서의 폐기가능성

HandStack에서 폐기가능성을 높이는 기준은 다음과 같습니다.

  • 시작 시 필요한 설정과 모듈을 명확히 검증합니다.
  • 종료 시 파일 쓰기, 로그 기록, 외부 호출이 어중간하게 남지 않도록 합니다.
  • 배포 중에는 앱 풀이나 프로세스를 중지한 뒤 파일을 교체합니다.
  • 모듈 계약과 정적 자산은 재배포로 복구 가능해야 합니다.
  • 프로세스 메모리에만 중요한 상태를 두지 않습니다.

폐기가능성이 좋으면 배포 실패와 장애 대응이 단순해집니다. 문제가 생기면 새 산출물로 다시 시작하거나 이전 산출물로 되돌릴 수 있습니다.

신규 개발자가 알아야 할 점

기능 개발자는 프로세스 재시작을 평범한 일로 받아들여야 합니다. 재시작하면 사라지는 값은 임시 상태로 보고, 업무적으로 중요한 값은 저장소에 남겨야 합니다.

관리작업도 마찬가지입니다. task 스크립트가 중간에 실패해도 다시 실행하거나 복구할 수 있어야 합니다.

마치며

폐기가능성은 운영팀만의 관심사가 아닙니다. 개발자가 파일 잠금, 임시 파일, 중복 실행, 외부 서비스 실패를 고려해서 만들수록 HandStack 서비스는 더 쉽게 교체되고 복구됩니다.