
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
TTJ 코딩클래스 정규반
월급 외 수입,
코딩으로 만들 수 있습니다
17가지 수익 모델을 직접 실습하고, 1,300만원 상당의 자동화 도구와 소스코드를 받아가세요.
"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"
실제 수강생 후기- 비전공자도 6개월이면 첫 수익
- 20년 경력 개발자 직강
- 자동화 프로그램 + 소스코드 제공