더북(TheBook)

9.9 분산 처리를 엄선해야 하는 이유

 

 

지나친 분산 처리는 피하는 것이 좋습니다. 앞서 살펴보았듯이 분산 처리가 지닌 여러 가지 위험성을 고려해야 하기 때문입니다. 지나친 분산 처리는 네트워크 장비에 부하 몰림, 네트워크 장비 과부하로 서비스 장애를 일으킬 수도 있습니다. 네트워크 장비는 쉽게 과부하에 걸리지 않지만 일단 걸리면 해결이 어렵습니다.

게다가 분산 처리 프로그램은 디버깅이 까다롭습니다. 여러 프로그램에 원격 디버깅을 하거나 로그 출력을 보고 번거로운 원인 분석을 해야 합니다.

다행히 분산 처리 프로그램을 분석하는 다양한 개발 도구가 있습니다. 원격 디버거나 통합 로그 도구, 애플리케이션 성능 분석 도구(APM) 등을 활용하면 됩니다. 하지만 이들은 분산 처리 프로그램을 예전보다 더 쉽게 개발하는 데 도움을 줄 뿐이지, 분산 처리가 되지 않은 프로그램을 개발하는 것보다는 여전히 어렵습니다.

지나친 분산 처리는 9.6.2절에서 보았듯이 운영체제가 해야 하는 일을 불필요하게 증가시킵니다. 따라서 분산 처리를 지나치게 혹은 맹목적으로 하면 서버의 처리량이 기대에 못 미치는 성능을 낼 수 있습니다. 심하면 분산 처리를 안 하느니만 못한 나쁜 결과를 보여 줄 수도 있습니다. 디버깅과 유지 보수도 힘든데 성능까지 나쁘다면 분산 처리를 할 이유가 전혀 없죠.

클라우드 서버 환경에서는 클라우드 서버 인스턴스 간에 통신 회선의 신뢰성도 문제가 될 수 있습니다. 서버가 구동되는 거의 대부분의 시간에 클라우드 서버 인스턴스 간 통신은 매우 빠르고 짧은 레이턴시를 제공합니다만, 그럼에도 아주 드물게 레이턴시가 크게 증가하거나 잠시 통신이 불능이 되는 경우도 있습니다. 이처럼 서버 인스턴스 간에 역할 의존이 많을 때, 즉 분산 처리가 많이 될 때는 쉽게 서비스 장애로 이어집니다.

따라서 분산 처리는 꼭 해야 하는 이유를 설명할 수 없다면 피하는 것이 좋습니다. 콘텐츠 업데이트나 시스템 업데이트가 계속 있어야 하는 게임 서버의 특성상 서버를 만드는 것도 중요하지만, 안정적인 서비스가 더 중요하기 때문입니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.