Each language version is independently generated for its own context, not a direct translation.
링크드인의 데이터 거인, '핀롯 (Pinot)'을 튼튼하게 만드는 4 가지 비법
링크드인 (LinkedIn) 의 데이터 엔지니어들이 작성한 이 논문은, 매일 수백만 명의 사용자가 프로필을 보고, 채용 정보를 검색하고, 광고를 볼 때 그 뒤에서 작동하는 거대한 데이터 시스템이 어떻게 멈추지 않고, 느려지지 않고, 안전하게 운영되는지에 대한 이야기입니다.
이 시스템은 '핀롯 (Pinot)'이라는 이름의 실시간 데이터베이스입니다. 마치 거대한 도서관 같아서, 수조 개의 책 (데이터) 을 1 초도 안 되는 시간에 찾아주어야 합니다. 하지만 도서관이 너무 크고, 사람들이 몰리거나, 책장 하나가 고장 나면 어떻게 될까요? 이 논문은 그 위기를 막기 위해 개발한 4 가지 혁신적인 방어 전략을 소개합니다.
1. "누가 더 많이 먹었지?" - 쿼리 작업 격리 (QWI)
비유: 뷔페 식당의 '개인 식판'
상상해 보세요. 거대한 뷔페 식당이 있습니다. 모든 손님이 같은 뷔페 테이블에 앉아 있습니다. 그런데 어떤 손님이 (무거운 쿼리) 혼자서 모든 고기 접시를 싹쓸이해 버리면, 다른 손님들 (다른 쿼리) 은 굶게 되거나 기다려야 합니다. 이를 '노이즈 이웃 (Noisy Neighbor)' 문제라고 합니다.
- 문제: 한 두 개의 복잡한 질문이 시스템의 CPU 와 메모리 (식당의 음식) 를 다 차지해 버리면, 다른 중요한 질문들도 느려지거나 멈춥니다.
- 해결책 (QWI): 링크드인은 각 질문 그룹마다 **'개인 식판 (예산)'**을 정해줍니다.
- "너는 오늘 10 접시까지만 먹을 수 있어."라고 미리 정해두면, 한 손님이 너무 많이 먹어도 다른 사람의 식판에는 음식이 남아있게 됩니다.
- 만약 누군가 식판을 넘어서려고 하면, 시스템이 즉시 "멈춰!"라고 말하며 그 질문을 차단합니다.
- 효과: 한 그룹이 폭주해도 다른 그룹은 평소처럼 빠르게 서비스를 받을 수 있습니다. 이 모든 과정이 1% 도 안 되는 비용으로 이루어져 시스템이 무겁지 않습니다.
2. "재해 대비 훈련" - 유지보수 구역 인식 배치 (MZ Awareness)
비유: 지진에 강한 '건물 배치'
데이터는 여러 서버 (컴퓨터) 에 나누어 저장됩니다. 만약 한 서버가 고장 나거나, 유지보수를 위해 전원을 꺼야 한다면 데이터가 사라지지 않도록 여러 곳에 복사 (백업) 해둡니다.
- 문제: 과거에는 복사본들을 무작위로 배치하거나, 같은 건물 (전력망) 에 몰아두는 경우가 있었습니다. 만약 그 건물의 전기가 나간다면, 모든 복사본이 동시에 사라져 데이터를 찾을 수 없게 됩니다.
- 해결책: 링크드인은 복사본들을 **'서로 다른 전력망 (유지보수 구역)'**에 고르게 분산시킵니다.
- 마치 지진이 났을 때 한 건물이 무너져도 다른 건물의 복사본으로 데이터를 복구할 수 있도록, 복사본들을 물리적으로 멀리 떨어뜨려 배치합니다.
- 서버를 추가하거나 교체할 때도 이 규칙을 자동으로 지켜줍니다.
- 효과: 한 구역 전체가 유지보수 중이거나 고장 나더라도, 시스템은 멈추지 않고 계속 작동합니다.
3. "조용한 이동" - 영향 없는 데이터 재배치 (Impact-Free Rebalancing)
비유: 비행기 엔진 교체 while 비행 중
시스템이 커지거나 줄어들 때, 데이터를 한 서버에서 다른 서버로 옮겨야 합니다. 보통은 이 작업을 하느라 시스템이 느려지거나 잠시 멈추기 마련입니다.
- 문제: 데이터를 옮기는 동안 서버가 바빠지면, 사용자의 질문 (쿼리) 을 처리할 시간이 부족해져서 속도가 느려집니다.
- 해결책: 링크드인은 **"먼저 질문을 멈추고, 그 사이 데이터를 옮긴다"**는 전략을 씁니다.
- 데이터를 옮길 서버에 "잠시만 질문 받지 마"라고 신호를 보냅니다.
- 서버가 쉬는 동안 데이터를 옮기고, 다 옮기면 다시 "질문 받기 시작"합니다.
- 이 과정을 한 번에 다 하는 게 아니라, 조금씩 나누어서 진행하므로 전체 시스템은 전혀 느려지지 않습니다.
- 효과: 데이터를 10 페타바이트 (약 1000 만 GB) 넘게 옮기는 거대한 작업도 **사용자가 전혀 느끼지 못하는 동안 (Zero Downtime)**에 끝낼 수 있습니다.
4. "빠른 길 찾기" - 적응형 서버 선택 (ADSS)
비유: 네비게이션의 '실시간 교통 정보'
사용자의 질문은 여러 서버로 동시에 보내져서 처리됩니다. 보통은 "A 서버, B 서버, C 서버" 순서로 고르게 보내는데, 만약 B 서버가 갑자기 느려지면 (예: 쓰레기 치우기 작업 중), 그 서버로 가는 모든 질문이 B 서버 때문에 느려집니다.
- 문제: 한 서버가 느려지면, 그 서버로 가는 모든 트래픽이 병목이 되어 전체 속도가 떨어집니다.
- 해결책: 링크드인은 실시간으로 서버의 상태를 체크하는 네비게이션을 도입했습니다.
- "B 서버가 지금 너무 느리다? 그럼 B 서버로 보내지 말고, 지금 여유로운 C 서버로 보내자!"
- 이 시스템은 서버가 느려지는 순간 (수 초 내) 에 알아채고, 자동으로 질문을 다른 서버로 우회시킵니다.
- 효과: 서버 하나가 고장 나거나 느려져도, 사용자는 그 사실을 모르고 평소처럼 빠르게 결과를 받습니다.
요약: 왜 이것이 중요한가요?
이 논문은 단순히 "시스템을 빠르게 만드는 법"이 아니라, **"시스템이 망가져도, 사람들이 몰려도, 데이터를 옮겨도 절대 멈추지 않게 만드는 법"**을 설명합니다.
링크드인은 이 4 가지 기술을 통해:
- 공정한 자원 분배 (누가 많이 먹어도 다른 사람이 굶지 않음)
- 재해 대비 (한 구역이 꺼져도 데이터는 살아남음)
- 무중단 유지보수 (이동 중에도 서비스는 멈추지 않음)
- 스마트한 우회 (느린 길은 피해서 빠르게 이동)
를 실현하여, 전 세계 수억 명의 사용자가 매초마다 신뢰할 수 있는 데이터를 경험할 수 있게 합니다. 이는 거대한 데이터 시스템이 어떻게 **'튼튼함 (Resilience)'**을 갖추는지에 대한 완벽한 사례입니다.