데브허브 | DEVHUB | Elevator System - Low Level Design Interview QuestionElevator System - Low Level Design Interview Question
- 엘리베이터 시스템은
n대의 엘리베이터, 최소/최대 층을 처리하며, 'request F DUR' 형식의 요청을 처리하는 인메모리 시뮬레이션으로 설계되었습니다. 🏢
ElevatorController는 전체 시스템을 관리하며, Elevator 객체는 각 엘리베이터의 개별적인 움직임 로직을 담당하여 책임이 명확히 분리됩니다. 🏗️
- 요청 할당 정책은 '가장 가까운 엘리베이터'이며, 각 엘리베이터는 할당된 요청을 현재 위치에서 가장 가까운 순서로 정렬하여 처리합니다. 🎯
step 메서드는 각 엘리베이터의 '원-틱 상태 머신'으로, 한 번의 시간 단계에서 한 층 이동하거나 문을 열고 닫는 등의 동작을 수행합니다. ⚙️
- 엘리베이터의 상태(Moving, Stopped, Door Open)와 방향(Up, Down, Idle)은 명확한 Enum으로 정의되어 코드의 가독성과 유지보수성을 높입니다. 🏷️
- 시간은 이산적인 단계로 진행되며, 문 열림/닫힘은 즉시 발생하지만, 실제 시스템의 지연 시간을 쉽게 추가할 수 있도록 설계되었습니다. ⏳
- 다중 스레드 환경을 고려하여
threading.Lock을 사용하여 상태 변경 시 동시성 문제를 방지하는 안전 장치를 포함했습니다. 🔒
- 설계는 스케줄링 로직(컨트롤러)과 이동 로직(엘리베이터)을 분리하여, 향후 더 스마트한 할당 전략이나 실시간 타이머 추가 등 시스템 확장이 용이합니다. 🚀