TECH 으로 돌아가기
TECH HACKER NEWS 오늘 6분 읽기 27 READS

엘리베이터는 왜 안 올까: 최적화 알고리즘이 버튼을 누르는 법

엘리베이터는 왜 안 올까: 최적화 알고리즘이 버튼을 누르는 법
SOURCE IMAGE · HACKER NEWS

엘리베이터 버튼을 눌러 놓고 하염없이 기다려 본 경험은 누구에게나 있다. "분명히 눌렀는데 왜 안 오지?"라는 짜증은 사실 단순한 기계적 지연이 아니라, 여러 대의 승강기를 실시간으로 배차하는 스케줄링 알고리즘의 판단 결과다. 일상에서 가장 흔하게 마주치는 이 장치는 겉보기보다 훨씬 복잡한 최적화 문제 위에서 돌아간다. 소프트웨어 실무자 입장에서 보면, 엘리베이터는 디스크 I/O 스케줄링부터 작업 큐 배분까지 우리가 다루는 문제들과 놀랄 만큼 닮아 있다.

가장 단순한 규칙에서 출발한다

엘리베이터 제어의 출발점은 1961년 특허로 등록된 SCAN 알고리즘이다. 승강기가 로비에서 최상층까지 한 방향으로 끝까지 올라간 뒤 방향을 바꿔 내려오면서, 가는 길에 있는 승객을 태우고 내려 준다. 그런데 대부분의 승객은 굳이 꼭대기 층까지 갈 필요가 없다. 그래서 요청된 가장 높은 층까지만 올라간 뒤 방향을 바꾸도록 개선한 것이 LOOK 알고리즘이며, 우리가 흔히 기대하는 동작 방식이 바로 이것이다. 디스크 헤드 스케줄링에서 쓰이는 SCAN·LOOK과 같은 이름을 공유한다는 점은 두 문제의 본질이 같다는 것을 잘 보여 준다.

승강기가 여러 대일 때부터 진짜 문제가 시작된다. 가장 기본적인 방식은 중앙 스케줄러가 새 호출이 들어올 때마다 가장 가까운 차량에 배정하는 것이다. 직관적이지만, 정작 가장 가까운 차량이 만원이라면 이 규칙은 무너진다.

무엇을 '좋은 성능'이라 부를 것인가

알고리즘을 개선하려면 먼저 성능을 측정해야 한다. 가장 자연스러운 지표는 대기 시간이다. "30초 안에 도착하는 비율"이나 "90초 안에 도착하는 비율" 같은 단순 측정도 가능하지만, 더 엄밀하게는 수천 번의 탑승에서 나온 대기 시간의 분포를 봐야 한다. p50이 1분이라면 절반의 경우 1분 안에 도착한다는 뜻이고, p90이 2분이라면 90%가 2분 이내에 도착한다는 의미다. 여기서 실무적으로 중요한 통찰이 하나 있다. 사람들은 평균 대기 시간을 기억하지 않는다. 유난히 오래 걸렸던 순간, 즉 p90 같은 꼬리 구간을 기억한다. 서비스 지연을 논할 때 평균보다 테일 레이턴시가 체감 품질을 좌우한다는 원칙과 정확히 일치한다.

트래픽 패턴이 시간대에 따라 크게 달라진다는 점도 놓칠 수 없다. 대형 오피스 빌딩의 아침에는 로비에서 상층부로 향하는 이동이 대부분을 차지하고, 저녁에는 그 흐름이 반대로 뒤집힌다. 점심시간은 두 방향이 섞이고, 나머지 시간대에는 층간 이동이 많다. 대기 시간 분포는 이 패턴에 따라 극적으로 달라지며, 특히 아침 러시아워는 통계상 가장 나쁜 대기 성능을 보이는 것으로 악명 높다.

더 똑똑한 배차, 그리고 역설

오티스의 RSR(Relative System Response) 알고리즘은 각 차량이 특정 승객을 태우기에 얼마나 적합한지를 점수로 매기고, 점수가 낮을수록 좋은 후보로 본다. 핵심은 5초마다 전체 배차를 다시 최적화한다는 점이다. 원래 A호기가 태우기로 했던 승객이라도 A호기가 지연되면 B호기로 재배정된다. 이 재최적화가 전체 흐름을 매끄럽게 만드는 열쇠다. 다만 만능은 아니다. 통행량이 아주 많아 모든 차량이 늘 만원이고 매 층에 서게 되는 상황에서는 오히려 단순한 LOOK이 RSR을 앞서기 시작한다. 승강기 뱅크당 차량 수가 적은 소규모 건물에서도 단순한 쪽이 더 낫다. 규칙을 정교하게 더하는 것이 항상 이득은 아니라는 얘기다.

가장 흥미로운 반전은 목적층 예약(Destination Dispatch) 방식에서 나온다. 각 층의 키오스크에 목적지를 미리 입력하면 어느 승강기를 기다리라고 안내해 주는 이 방식은, 최적화 엔진이 모든 승객의 목적지를 사전에 안다는 점에서 유리해 보인다. 그러나 실제로는 대부분의 경우 전통적인 상·하행 버튼보다 대기 시간이 더 나빴다. 8대 이상 대규모 뱅크를 갖춘 초고층 같은 예외는 있지만 일반적으로는 단순한 버튼이 우세하다. 이유는 다시 5초 재조정에 있다. 키오스크는 지정된 승강기에 반드시 타야 한다는 경직성을 강제하는데, 호출 후 30초가 지나면 상황이 완전히 달라졌을 수 있음에도 시스템이 적응하지 못한다. 더 많은 정보를 얻는 대가로 잃는 유연성이 그 정보의 가치보다 컸던 셈이다.

실무자에게 이 사례가 주는 교훈은 분명하다. 정보를 앞당겨 확보하는 설계가 언제나 최적은 아니며, 결정을 늦게 확정하고 재조정 여지를 남겨 두는 편이 변동성 큰 환경에서는 더 강하다는 것이다. 다만 이 글이 근거로 삼은 것은 특정 시뮬레이션과 벤치마크 결과이므로, 건물 구조와 트래픽 특성에 따라 결론이 달라질 수 있다는 점은 감안해야 한다. 다음번에 승강기가 늦게 온다면 무시당했다고 여기지 말자. 승강기는 당신의 호출을 들었고, 다만 고려할 것이 아주 많을 뿐이다.

SOURCE · HACKER NEWS
원문 전체 보기 → https://john.fun/elevators
SHARE
처리 중...