본문 바로가기
🚀 IT/✏️TIL

💡 하나의 서버에 여러 프로세스를 실행할 때 발생할 수 있는 문제점

by higyeong 2025. 4. 21.

💡 하나의 서버에 여러 프로세스를 실행할 때 발생할 수 있는 문제점

📌 예시 시나리오

어떤 결제 서비스를 운영 중이라고 가정했을 때, 이 서비스는 결제 종류별로 각각 독립된 프로세스로 구동 중이다.

serviceA, serviceB, serviceC, serviceD, serviceE, ...

 

운영의 편의성을 위해 이 모든 프로세스를 하나의 Admin WAS 서버에 띄우는 구성으로 만든다면?


⚠️ 문제점 정리

1. 장애 전파 위험

  • 하나의 프로세스에서 장애가 발생하면, 같은 서버 내 다른 프로세스까지 영향을 줄 수 있다.
  • 예: 특정 프로세스에서 메모리 누수가 발생하면, 전체 WAS가 영향을 받아 모든 서비스가 응답하지 않을 수 있다.

2. 자원 고갈

  • 여러 프로세스가 동시에 CPU와 메모리를 사용하면서 자원이 빠르게 소모된다.
  • 피크 시간대에는 자원이 부족해져 응답 지연, 장애 등으로 이어질 수 있다.

3. 장애 분석 및 로그 확인 어려움

  • 모든 프로세스의 로그가 한 디렉토리에 쌓이면, 어떤 서비스에서 문제가 발생했는지 빠르게 파악하기 어렵다.
  • 이는 장애 대응 시간을 지연시키는 주요 원인이 된다.

4. 배포 유연성 부족

  • 하나의 프로세스만 수정하고 배포하려고 해도, 전체 WAS를 재기동해야 하는 경우가 발생할 수 있다.
  • 그로 인해 전체 서비스가 중단될 수 있어 운영 리스크가 커진다.

5. 보안 및 분리 정책 적용 어려움

  • 서로 다른 권한이나 보안 설정이 필요한 프로세스라도, 같은 서버 안에서는 분리 적용이 어렵다.
  • 이는 보안 측면에서도 리스크를 내포하게 된다.

✅ 개선 방안 : 프로세스 분리 또는 컨테이너 기반 운영

항목 기존 방식(단일 서버 다중 프로세스) 개선 방식(분리된 프로세스 운영)
장애 대응 전체 서비스 영향 우려 특정 서비스만 재기동 가능
리소스 사용 자원 고갈 가능성 ↑ 자원 분산 및 최적화 가능
로그 관리 로그 혼재 → 분석 어려움 서비스별 로그 구분 가능
보안 정책 통합 정책만 적용 가능 서비스별 정책 적용 용이
배포 유연성 전체 재기동 필요 개별 배포 가능

예시 개선 방안

  • 각각의 프로세스를 독립된 WAS나 컨테이너 환경에서 구동
  • Nginx 또는 L7 Load Balancer로 통합 Admin 화면 구성
  • 서비스별 로그 디렉토리 및 헬스체크 적용

🔍 결론

처음엔 편리함 때문에 여러 프로세스를 한 서버에 구성하더라도, 장기적인 관점에선 운영 안정성과 유연성, 확장성을 확보하는 것이 훨씬 중요하다 !
가능하다면 서비스 단위로 분리된 운영 구조를 도입하는 것이 장애 대응, 모니터링, 보안 측면에서도 훨씬 유리하다.