어느 순간 시트와 싸우고 있었다 (5)

어느 순간 시트와 싸우고 있었다 (5)

문과생 유목이의 개발일지 · 5화

Google Sheet 방식은 잘 돌아갔다. 문제가 생긴 건 예약 건수가 쌓이고, 관리하는 자원이 늘면서부터였다.

1. 느렸다

예약 가능 시간을 확인하려면 Sheet에 쌓인 데이터를 전부 불러와서 하나씩 비교해야 했다. 데이터가 몇백 건을 넘어가자 반응이 눈에 띄게 느려지기 시작했다.

사용자는 제출 버튼을 누르고 결과가 나올 때까지 화면을 보며 기다린다. 처음엔 몇 초짜리 대기였다. 한 주 한 주 예약이 쌓이면서 지금은 거의 10분을 기다려야 하고, 어쩔 때는 불러와지지도 않기 시작했다.

"유목님, 이거 눌렀는데 아무 반응이 없는데요?"
"두 번 눌러도 되나요?"

두 번 누르면 신청이 두 건 들어온다. 그럼 내가 하나를 지워야 한다. 없애려던 수작업이 다른 모양으로 돌아왔다.

2. Apps Script가 점점 손대기 무서워졌다

기능을 하나 추가할 때마다 스크립트가 길어졌다.

처음엔 "신청이 들어오면 메일을 보낸다" 한 줄짜리 로직이었는데, 여기에 자원별 분기가 붙고, 승인 여부 분기가 붙고, 취소 처리가 붙었다. 어느 순간부터는 한 곳을 고치면 다른 곳이 왜 멈추는지 알 수 없게 됐다.

비전공자가 붙인 코드라 구조랄 것도 없었다. 문제가 생기면 고치는 게 아니라, 되던 시점으로 되돌리고 다시 붙였다. 짜깁기도 이런 짜깁기가 없었다. 아마도 전문가가 보면 비웃었을 것이다.

3. 자원이 늘어나니 시트 구조가 감당이 안 되었다

회의실 하나일 때는 시트 하나면 충분했다. 그런데 대회의실, 소회의실 A·B, 교육실, 법인차 3대, 촬영장비, 노트북까지 들어오자 구조부터 막히기 시작했다.

자원별로 시트를 나누면 → 전체 현황을 한 번에 볼 수 없음
한 시트에 다 넣으면 → 필터 조건이 복잡해지고 더 느려짐

둘 다 해봤고, 둘 다 만족스럽지 않았다.

4. 원하는 화면을 만들 수 없었다

이게 가장 답답했다.

처음 내가 만들고 싶었던 건 "이 회의실은 화요일 오후 2시부터 4시까지 비어 있습니다"를 눈으로 보여주는 화면이었다. 달력처럼.

그런데 Google Form은 정해진 형태를 크게 벗어날 수 없었다. 결국 사용자는 빈 시간을 모르는 채로 일단 신청하고, 겹치면 반려 메일을 받는 구조였다.

이건 사실상 예약이 아니라 응모에 가까웠다. 로또보다 조금 더 확률이 높은

5. 밖에 나간 직원은 예약을 할 수가 없었다

운영하다 보니 가장 아쉬운 건 사무실 밖에 있는 직원이었다. 외근 나간 영업팀, 현장에 있는 물류센터 인원, 출장 중인 팀장님. 돌아오는 길에 회의실을 잡아야 하는 사람들이 정작 예약을 못 했다.

예약하려면 사내 계정으로 로그인해야 했고, 핸드폰 화면에서 Google Form과 Sheet를 오가는 건 한계가 명확했다. 결국 밖에 있는 직원이 예약을 하려면 사무실에 있는 다른 직원에게 부탁하거나, 나에게 전화가 왔다.

자동화를 한다고 했는데, 여전히 사람이 중간에 끼어 있었다. 예전엔 나 한 명이 병목이었는데, 이제는 각 부서 담당자들이 대신 끼어 있는 형태로 바뀐 것뿐.

회사 밖에서 접속해서, 빈 시간을 직접 확인하고, 직접 예약하는 페이지가 필요했다.

그래서 방향을 바꿨다

여기까지 오니 결론이 나왔다.

Sheet를 예약 시스템처럼 억지로 쓰지 말고,
아예 예약 시스템을 만들자.

Google Sheet는 훌륭한 도구이다. 아니, 였다. 다만 예약 시스템에 맞는 것은 아니었다. 예약 시스템에 필요한 기능을 Sheet 위에 계속 얹다 보니, 어느 순간부터 나는 Sheet를 쓰는 게 아니라 Sheet와 싸우고 있었다.

Google Sheet 기반 관리에서, NAS 기반 독립 예약 시스템으로.

여기까지가 1부다. 코드는 한 줄도 나오지 않았지만, 개인적으로는 이 다섯 편이 가장 중요했다고 생각한다. 무엇을 만들지 정하는 데 실패 두 번이 필요했었다.

문제는 정의됐는데, 현실적인 벽이 있었다. 서버가 없었고 나는 개발자가 아니었다.

서버를 새로 사자고 품의를 올릴 자신은 없었고, 클라우드 비용을 매달 쓰는 것도 부담이었다. 그러다 서버실 한쪽에서 파일 저장용으로만 쓰이던 Synology NAS가 눈에 들어왔다.


다음 편 — 회사에 있던 NAS를 예약 서버로 써보기로 했다 (6)

※ 이 연재에 등장하는 ㈜세움과 모든 인물은 가상이다. 기술적인 구성과 시행착오는 실제 구축 경험을 바탕으로 재구성했다.

댓글

이 블로그의 인기 게시물

또 회의실 예약 좀 잡아주세요 (1)

직원이 직접 쓰는 예약 페이지 만들기 (10)