
1주 해커톤일주일 내 기획→K8s 배포 완료
Klume은 조직(팀) 단위로 회의실을 예약·관리하는 서비스입니다. 부트캠프 과정 중 회의실 수에 비해 이용 인원이 많아 매일 아침 가위바위보나 선착순으로 회의실을 두고 경쟁하는 상황이 반복됐고, 회의 일정과 사용 이력도 남지 않아 누가·언제·왜 사용했는지 파악할 수 없었습니다. 단순한 시간 예약 기능을 넘어 조직별 권한 관리, 회의실 사용 현황 시각화, 예약 충돌 방지 로직으로 자원을 공정하고 체계적으로 운영하는 것이 목적입니다.
일주일간 기획·설계·구현·배포까지 진행한 해커톤 성격의 프로젝트였고, 저는 그중 관리자용 회의실 관리 흐름, 관리자용 예약관리 흐름, 권한별 공지사항 화면 구성을 담당했습니다.
예약 목록 화면과 관리자 화면에서 동일한 예약 데이터가 서로 다르게 정렬되어 표시되는 문제가 있었습니다. 원인을 추적해보니 정렬·필터링 로직이 프론트엔드(예약 목록 화면)와 백엔드(관리자 화면)에 나뉘어 각자 구현돼 있어, 화면마다 기준이 달랐습니다. 정렬·필터링 책임을 Backend API로 일원화하고 정렬 기준을 요청 파라미터로 전달하도록 API 구조를 바꿔, 두 화면이 항상 같은 기준으로 정렬된 데이터를 받도록 해결했습니다. 핵심 비즈니스 규칙은 프론트가 아니라 서버에서 일관되게 관리해야 화면이 늘어나도 신뢰성이 유지된다는 걸 이 과정에서 확인했습니다.
Kubernetes + Docker (컨테이너 배포) Frontend/Backend를 컨테이너 단위로 분리해 배포 독립성을 확보하고, Kubernetes로 운영 안정성과 확장성을 고려했습니다. Ingress로 요청 흐름을 단일 진입점으로 통합해 라우팅을 단순화했습니다.
Redis (예약 동시성 제어) 여러 사용자가 같은 시간대 회의실을 동시에 예약하려는 상황에서 선착순 공정성을 보장해야 했습니다. Redis로 동시 요청 상황에서의 예약 충돌을 제어했습니다.
Jenkins (수동 배포) 해커톤 성격상 일주일 안에 배포까지 끝내야 했는데, 자동 배포보다 배포 시점과 변경 사항을 팀이 명확히 통제하는 게 우선이라 판단해 Jenkins 기반 수동 배포를 선택했습니다.
정렬·필터링 로직을 Backend API로 일원화해 예약 목록·관리자 화면 간 데이터 불일치를 제거했습니다. Kubernetes 기반으로 Frontend/Backend를 분리 배포해 컨테이너 단위 운영 안정성을 확보했고, Redis로 회의실 예약의 동시성과 공정성을 제어하는 구조를 만들었습니다. 일주일이라는 제한된 기간 안에 기획부터 K8s 배포까지 전 과정을 완료했습니다.
Impact
1주 해커톤
일주일 내 기획→K8s 배포 완료
TeamOxAM 해커톤 프로젝트
정렬 로직 일원화
화면 간 데이터 불일치 제거
예약목록·관리자 화면
Tech Stack