TECH 으로 돌아가기
TECH HACKER NEWS 1주 전 6분 읽기 63 READS

분산 시스템 개발자가 21년째 빠지는 8가지 착각

분산 시스템 개발자가 21년째 빠지는 8가지 착각

21년이 지나도 그대로인 진리

여러 컴퓨터가 네트워크로 연결돼서 함께 일하는 시스템을 ‘분산 시스템(distributed system)’이라고 불러요. 요즘은 거의 모든 서비스가 그렇죠. 서버 한 대로만 돌아가는 서비스는 거의 없고, 여러 서버가 인터넷으로 통신하면서 같이 일하잖아요. 그런데 이런 분산 시스템을 만들 때 개발자들이 자기도 모르게 빠지는 8가지 착각이 있어요. 1990년대에 썬 마이크로시스템즈의 엔지니어들이 정리한 ‘분산 컴퓨팅의 8가지 오류(eight fallacies of distributed computing)’인데요, 20년이 훌쩍 넘은 지금도 여전히 유효하다는 게 신기하면서도 살짝 무서운 점이에요.

이게 왜 ‘오류’냐면요. 개발자들이 머리로는 “그렇지 않다”는 걸 알면서도, 막상 코드를 짤 때는 자꾸 “그럴 것이다”라고 가정하고 짜기 때문이에요. 평소엔 멀쩡하다가 새벽에 장애로 깨어나서야 “아, 내가 또 이걸 가정했구나” 하고 깨닫는 거죠.

8가지 착각을 하나씩 풀어보면

1. “네트워크는 안 끊긴다” — 가장 흔한 착각이에요. 다른 서버를 호출할 때 우리는 무의식적으로 “당연히 응답이 오겠지”라고 생각하거든요. 근데 케이블도 뽑히고, 라우터도 죽고, 패킷도 사라져요. 그래서 재시도(retry)와 타임아웃(timeout) 설정이 필수예요.

2. “응답은 즉시 온다(지연 시간 0)” — 같은 컴퓨터 안에서 함수를 부르는 것과, 바다 건너 서버를 부르는 건 속도가 수만 배 차이 나요. 메모리 접근이 나노초라면 네트워크 왕복은 밀리초, 즉 백만 배 느릴 수도 있거든요.

3. “대역폭은 무한하다” — 한 번에 보낼 수 있는 데이터 양에는 한계가 있어요. 작은 데이터를 수천 번 주고받는 설계는 금방 한계에 부딪혀요.

4. “네트워크는 안전하다” — 누군가 중간에서 엿보거나 끼어들 수 있다는 전제로 짜야 해요. 암호화와 인증이 기본인 이유죠.

5. “토폴로지는 안 변한다” — 토폴로지(topology)가 뭐냐면 서버들이 연결된 구조도예요. 클라우드에선 서버가 수시로 죽고 새로 생기니까 IP 주소를 코드에 박아두면 큰일 나요.

6. “관리자는 한 명이다” — 실제론 여러 팀, 여러 회사가 각자 다른 부분을 관리해요. 내가 모르는 곳에서 설정이 바뀔 수 있죠.

7. “데이터 전송 비용은 공짜다” — 데이터를 직렬화(serialization, 객체를 전송 가능한 형태로 바꾸는 것)하고 다시 푸는 데도 CPU와 시간이 들고, 클라우드에선 트래픽 요금까지 나와요.

8. “네트워크는 다 똑같다(균일하다)” — 실제론 다양한 장비, 다양한 속도, 다양한 프로토콜이 섞여 있어요.

왜 21년이 지나도 그대로일까

기술은 엄청나게 발전했는데 왜 이 오류들은 안 사라질까요? 답은 의외로 단순해요. 이건 기술의 문제가 아니라 ‘물리 법칙’과 ‘인간의 심리’ 문제거든요. 빛의 속도는 안 변하니까 지연 시간은 절대 0이 될 수 없고, 사람은 편하게 생각하고 싶어서 자꾸 “잘 되겠지”라고 낙관하니까요.

오히려 요즘처럼 마이크로서비스(microservice, 큰 서비스를 작은 서비스 여러 개로 쪼갠 구조)가 유행하면서 이 오류들이 더 중요해졌어요. 서비스를 잘게 쪼갤수록 네트워크 호출이 폭발적으로 늘어나니까, 위 8가지 함정에 빠질 기회도 그만큼 많아진 거죠.

한국 개발자에게

실무에서 당장 적용할 수 있는 건 의외로 간단해요. 외부 호출하는 코드를 짤 때마다 “이 호출이 실패하면? 느리면? 중간에 끊기면?”을 한 번씩 자문하는 습관이에요. 타임아웃을 반드시 걸고, 재시도 로직엔 백오프(backoff, 실패할수록 점점 더 길게 기다렸다 재시도하는 것)를 넣고, 서킷 브레이커(circuit breaker, 계속 실패하면 아예 호출을 잠시 끊어버리는 장치) 같은 패턴을 알아두면 좋아요.

면접에서도 단골로 나오는 주제예요. “분산 시스템에서 신경 써야 할 게 뭐냐”는 질문에 이 8가지를 술술 풀어내면 기본기가 탄탄하다는 인상을 줄 수 있거든요.

정리하며

분산 시스템에서 장애는 ‘혹시’가 아니라 ‘언제’의 문제예요. 8가지 착각을 기억하면 그 ‘언제’가 왔을 때 덜 당황할 수 있어요.

여러분은 이 8가지 중에 어떤 함정에 가장 크게 데여보셨나요? 새벽에 장애로 깨어났던 그 사연, 한번 풀어보면 어떨까요?


🔗 출처: Hacker News

SOURCE · HACKER NEWS
원문 전체 보기 → https://blog.apnic.net/2025/12/08/21-years-and-counting-of-e...
SHARE
처리 중...