본문 바로가기
츄Log/시스템 끄적

분산 컴퓨팅의 오류 (Fallacies of distributed computing)

by 츄츄🦭 2023. 11. 6.
728x90

 

안녕하세요! 

소프트웨어101 책을 보다가 ‘분산컴퓨팅의 오류’ 라는 아티클을 접하게 되었습니다.

당연하지만 새삼 놓치기 쉬운 부분이라고 생각하여 정리해봅니다.

 


 

 

출처 : https://architecturenotes.co/fallacies-of-distributed-systems/

 

위키피디아 : Fallacies of distributed computing — Wikipedia

 

 

오류1. 네트워크는 믿을 수 있다.

과거에 비해 네트워크가 좋아졌다고 하지만 여전히 네트워크는 믿을 수 없습니다. 네트워크는 신뢰하기 어렵기 때문에 타임아웃, 서킷브레이커 같은 개념들이 있는 것입니다. ‘마이크로서비스 아키텍쳐’같이 네트워크에 의존할 수록 시스템의 신뢰도는 잠재적으로 떨어질 가능성이 있습니다.

 

오류2. 레이턴시는 0이 아니다.

t_remote는 t_local보다 클 수밖에 없고 모든 분산 아키텍처에서 레이턴시는 0이 아닙니다. (보통 t_local은 나노초 t_remote는 밀리초로 측정됩니다.)

평균 레이턴시가 60ms에 불과해도 95번째 백분위 수는 400ms일 수 있습니다. 보통 이런 긴꼬리 지연(long tail latency)이 분산 아키텍처의 성능을 저해하는 주범이 됩니다.

 

오류3. 대역폭은 무한하다.

모놀리식은 큰 대역폭이 필요하지 않습니다. 하지만 마이크로서비스 분산 아키텍쳐에서 배포단위(서비스)로 쪼개지면 이 서비스들 간에 주고 받는 통신이 대역폭을 상당히 점유하여 네트워크는 느려지고 결국 레이턴시와 신뢰성에도 영향을 미칩니다.

 

오류4. 네트워크는 안전하다.

보통 가상사설망(VPN), 신뢰할 수 있는 네트워크(Trusted network), 방화벽에 익숙한 나머지 네트워크가 안전하지 않다는 사실을 망각합니다. 하지만 아시다시피 모놀리식에서 잘게 쪼개진 분산아키텍쳐는 더 많은 영역이 악의적인 외부 위협과 공격에 노출됩니다.

 

오류5. 토폴로지는 절대 안 바뀐다.

네트워크 토폴로지는 항상 바뀝니다. 네트워크를 구성하는 모든 라우터, 허브, 스위치, 방화벽, 네트워크, 어플라이언스 등 전체 네트워크 토폴로지가 불변일 거란 가정은 섣부른 오해입니다. 아키텍트는 운영자, 네트워크 관리자와 항시 소통을 하면서 무엇이 언제 변경되었는지 알고 있어야 하지만 이는 매우 만만치 않은 일입니다.

 

오류6. 관리자는 한 사람뿐이다.

네트워크 부서에 몇 명의 사람이 있는지 확인해보세요. 한명의 관리자하고만 협의하고 소통하는 것으로 충분하지 않습니다.

 

오류7. 운송비는 0이다.

운송비는 레이턴시가 아니라 단순한 REST호출을 하는 데 소요되는 진짜 비용(actual cost)을 의미합니다. 분산아키텍처는 하드웨어, 서버, 게이트웨이, 방화벽, 신규 서브넷, 프록시 등 리소스가 더 많이 동원되므로 모놀리식 아키텍처보다 훨씬 많은 비용이 듭니다.

 

오류8. 네트워크는 균일하다.

대부분 네트워크가 균일(homogeneous)하다고 착각합니다. 많은 회사의 인프라는 여러 업체의 네트워크 하드웨어 제품들이 얽히고 설켜있습니다. 즉, 온갖 종류의 하드웨어가 서로 다 잘 맞물려 동작하는 것이 아니라는 뜻입니다. 네트워크 표준은 오랜 세월 발전을 해왔으니 큰 문제가 안 될 수 있지만, 모든 상황과 부하, 환경에서 100% 완벽하게 테스트를 마친 것은 아니어서 실제로 간혹 네트워크 패킷이 유실되는 사고도 심심찮게 일어납니다.

 


 

 

궁금한 점이나, 오류가 있으면 언제든 댓글 남겨주세요 :)

함께 성장합시다!

728x90