새벽 2시, 250명 엑셀이 '응답 없음'으로 굳었을 때
멀쩡한 ERP를 바꿀 순 없고 엑셀은 터지기 직전일 때, 2주 만에 300만 원으로 현실적인 타협점을 찾아낸 실전 웹 구축기입니다.
모니터 두 대에 엑셀 창 열두 개를 띄워놓고 눈알이 빠지도록 VLOOKUP을 대조하던 어느 달 새벽 2시의 풍경입니다.
250여 명의 임직원이 일하는 번듯한 회사였지만, 인사팀의 월말은 늘 위태로웠습니다. 마우스 휠을 내리다가 실수로 수식 하나를 건드렸을 뿐인데, 화면 상단이 뽀얗게 흐려지며 불길한 윈도우 알림창이 뜹니다.
‘(응답 없음)’
(※ 수백 명의 누적 타각 데이터와 다중 VLOOKUP 수식이 얽힌 거대 엑셀 파일에서 마우스 조작 중 빈번하게 발생하는 윈도우 프리징 현상)
등줄기로 식은땀이 쫙 흘러내립니다. 지난 3일간 전 직원의 출퇴근 기록과 특근 내역을 밤새워 수작업으로 맞추던 작업본이었습니다. 컨트롤+S를 언제 마지막으로 눌렀더라? 머릿속이 새하얘집니다.
식어버린 야식을 앞에 두고 담당자는 깊은 한숨을 내쉬었습니다.
“다른 팀 업무는 다 멀쩡히 돌아가는데, 왜 내 근태 정산만 매달 이런 위험천만한 줄타기를 해야 할까?”
1. 멀쩡한 ERP를 바꿀 수도, 엑셀로 계속 버틸 수도 없는 딜레마
회사의 사내 ERP는 10여 년 전 도입된 구형 엔진이었습니다.
사실 회계나 자재, 영업 같은 다른 모듈은 여전히 쓰는 데 아무런 문제가 없었습니다. 그런데 회사 규모가 커지며 속속 도입된 유연근무제, 다양한 출장 및 외근 규정을 소화하기엔 근태 모듈만 유독 세월의 한계를 드러내고 있었습니다.
ERP가 뱉어내는 근태 원천 덤프 파일이 옛날 97-2003 바이너리(.xls) 형식으로 내보내지는 것만 봐도, 이 시스템이 얼마나 오래된 기반인지 알 수 있었습니다. 구형 파일 형식 자체야 파싱하면 그만이지만, 문제는 그 안에 담긴 데이터가 현장의 복잡한 룰을 100% 다 받쳐주지 못한다는 점이었습니다.
(※ 위 화면은 고객사 보안 보호를 위해 실제 구형 ERP 출력 파일(ATND_RAW_202605.xls)의 원천 컬럼과 실무자가 겪던 VLOOKUP 및 #VALUE! 수식 불일치 오류 구조를 충실히 재현한 참고용 화면입니다.)
그렇다고 다른 부서가 잘 쓰고 있는 멀쩡한 전사 ERP를, 고작 근태 정산 하나 때문에 수억 원을 들여 뜯어고치는 것은 회사 입장에서도, 담당자 입장에서도 너무나 큰 부담이었습니다.
담당자는 어떻게든 엑셀 서식을 뜯어고치고 함수를 덧대며 버텨왔습니다. 그렇게 시트 하나에 온갖 복잡한 수식과 매크로가 얽히고설켜, 한 번 삐끗하면 뻗어버리는 ‘시한폭탄 엑셀’이 만들어진 것입니다.
담당자가 “엑셀을 좀 어떻게 변형해보면 쉬운 길이 있지 않을까?”를 고민하던 바로 그 찰나에, 제이앤코어를 만나게 되었습니다.
2. “엑셀을 데이터베이스처럼 쓰시면, 어느 날 몇 년 치가 한순간에 날아갑니다”
미팅 테이블에 앉자마자 우리는 실무 현장에서 흔히 벌어지는 ‘엑셀 만능주의의 위험성’부터 짚어드렸습니다.
“담당자님, 지금 엑셀을 사실상 사내 데이터베이스처럼 쓰고 계신 겁니다. 하지만 엑셀은 파일 내부가 XML과 압축 구조로 이루어진 문서 도구일 뿐입니다. 수백 명의 몇 년 치 기록이 얽힌 거대한 파일을 열고 닫다가 저장 중 한 번이라도 오류가 나거나 파일이 깨지면, 그동안 쌓아둔 데이터가 한순간에 다 증발합니다.”
담당자의 눈빛이 흔들렸습니다. 실제로 매달 겪던 ‘응답 없음’의 공포가 바로 그 전조 증상이었기 때문입니다.
우리는 구조적인 대안을 제시했습니다.
“ERP 전체를 바꿀 필요도 없고, 위험하게 엑셀을 쥐어짤 필요도 없습니다. 구조적으로 안전한 데이터베이스와 브라우저 컴퓨팅 자원을 활용하면, ERP는 그대로 둔 채 근태 정산만 따로 떼어내는 독립 웹 시스템을 별건으로 충분히 만들 수 있습니다.”
(※ 멀쩡한 사내 ERP는 교체 비용 0원으로 그대로 존속시키고, 불안정한 엑셀 병목만 독립 웹 시스템과 RDB 엔진으로 안전하게 격리한 파이프라인)
담당자는 반신반의했습니다.
”프로그램 설계라는 게… 진짜 이런 지저분한 사내 예외 룰까지 다 처리해 주는 게 가능한가요?”
3. 완벽한 자동화는 환상: 현실적인 타협점을 합의하다
우리는 마법 같은 ‘원클릭 자동화’를 약속하지 않았습니다. 현장 업무를 아는 개발자라면 사람이 개입해야 할 영역을 명확히 구분해야 합니다.
“담당자님, 버튼 하나 누르면 마법처럼 100% 다 끝나는 시스템은 현장에 존재하지 않습니다. 대신 가장 현실적인 선에서 역할을 나눕시다.”

우리가 합의한 개발 착수 조건은 명확했습니다.
- 사람의 몫 (입력과 최종 검수):
- 구형 ERP에서 다운로드한 근태 덤프 엑셀 파일을 담당자가 웹 화면에 직접 업로드해준다.
- 철야 야근 후 퇴근을 못 찍어 다음 날 출근 기록이 꼬였거나, 집에서 곧장 외근지로 출발해 출퇴근 타각이 아예 없는 건은 시스템이 ‘예외 대상’으로 띄워주되, 최종 확인은 담당자가 직접 판단하고 승인한다.
- 소프트웨어의 몫 (복잡한 연산과 에러 제로화):
- 업로드된 구형 파일을 메모리에서 0.1초 만에 안전하게 파싱한다.
- 주 52시간, 법정 공휴일, 연장근로 할증, 탄력근무 계산 등 사람 머리를 터지게 만들던 95%의 정상 케이스를 1초 만에 완벽하게 정산해 캘린더에 뿌려준다.
수식 깨짐의 공포는 없애고, 담당자는 오직 ‘출장이나 야근 누락자 몇 명’만 챙겨보면 되는 현실적인 시스템.
딱 2주, 비용은 300만 원으로 합의하고 곧바로 코드에 들어갔습니다.
4. 약속했던 2주, 그리고 “혹시… 이것도 될까요?”
2주 뒤, 브라우저에서 바로 열리는 독립 웹 시스템을 납품했습니다.
담당자가 떨리는 손으로 250명분의 구형 근태 엑셀 파일을 웹 브라우저 안으로 끌어다 놓았습니다.

마우스를 놓자마자 모래시계도 없이 화면이 깔끔하게 열렸습니다.
250명의 한 달 근무 내역이 캘린더에 채워졌고, 공휴일과 특근이 칼같이 계산되었습니다. 그리고 사전에 약속했던 대로, 타각이 누락된 외근자 3명만 빨간색 배지로 깔끔하게 걸러져 상단에 도드라졌습니다.
이전 달 엑셀과 대조해보던 담당자의 얼굴에 안도감이 번졌습니다.
“이게… 진짜 되네요? 매달 꼬박 며칠을 밤새우던 게 1초 만에 끝나네요.”
그리고 바로 이 순간, 외주 개발 현장에서 가장 자주 벌어지는 익숙한 장면이 시작되었습니다.
처음에는 “설마 프로그램으로 이런 게 되겠어?” 싶어 미안해서 차마 말도 못 꺼내고 혼자 끙끙 앓던 숨은 요구사항들이, 눈앞에서 진짜 구현되는 걸 보자 슬금슬금 튀어나온 것입니다.
“저… 개발자님. 진짜 죄송한데, 이게 되니까 혹시나 해서 여쭤보는데요…"
"말씀해보세요."
"사실 특정 부서는 주말 당직 로테이션 기준이 일반 부서랑 완전히 달라서, 매달 저 혼자 계산기 두들기면서 수당 배율을 따로 먹이고 있었거든요. 이것까지 바라는 건 너무 무리겠죠…?”
평소 같았으면 범위 밖이라며 잘라냈을 수도 있습니다. 하지만 담당자가 억지를 부리는 게 아니라, 소프트웨어로 어디까지 가능한지 몰라 혼자 짊어지고 있던 짐이라는 걸 알기에 모른 척할 수 없었습니다.
가장 급했던 기본 배포를 마쳐 월말 정산의 불을 먼저 끈 뒤, 곧바로 당직 로테이션 예외 룰과 수당 배율을 자유롭게 조정할 수 있는 환경 설정 기능을 추가로 얹어드렸습니다.
(※ 특정 부서의 주말 당직 로테이션, 공휴일 및 수당 배율을 실무자가 개발자 의존 없이 브라우저에서 직접 등록·관리할 수 있는 환경 설정 콘솔)
5. 실무가 돌며 발견한 소소한 버그 3차례, 그리고 안착
실제 업무 현장은 책상머리 개발자의 예상보다 늘 복잡합니다. 아무리 테스트를 거쳐도, 진짜 데이터가 돌기 시작하면 엣지 케이스는 반드시 고개를 듭니다.
그다음 달 실제 정산 사이클을 돌리며 세 차례의 소소한 버그가 발견되었습니다.
- 익일 퇴근 역전 현상: 자정을 넘어 새벽까지 근무한 경우 날짜가 바뀌며 근무 시간이 음수로 튀던 현상 수정.
- 사번 자릿수 혼재: 입사 시기별로 사번 코드 체계(자릿수)가 달라 특정 직원의 데이터가 묶이지 않던 로직 보정.
- 사용자 PC 환경 엑셀 인코딩: 실무자 PC의 윈도우 환경에 따라 다운로드 파일의 한글 깨짐 현상 패치.
현장의 피드백을 받아 3차례에 걸쳐 소소한 버그들을 즉각 픽스했습니다. 비로소 시스템은 고객사 환경에 완벽하게 뿌리를 내렸습니다.
(※ 캘린더에서 직원을 클릭하면 자정을 넘어 새벽까지 이어진 철야 근무의 기본/연장/심야 수당이 법정 기준에 맞춰 분리 산출된 내역을 1초 만에 확인·승인할 수 있습니다.)
6. 마치며: 현장을 구하는 것은 거창한 솔루션이 아닙니다
현재 이 회사의 인사팀은 매달 말 더 이상 엑셀 ‘응답 없음’ 창을 보며 식은땀을 흘리지 않습니다.
ERP에서 내려받은 원천 파일을 웹 화면에 던져 넣고, 1초 만에 연산된 결과를 본 뒤, 빨간색으로 뜬 외근자 몇 명만 확인하고 10분 만에 정시 퇴근을 합니다.
수억 원짜리 차세대 시스템 구축만이 정답은 아닙니다. 멀쩡한 ERP를 두고 굳이 판을 벌릴 필요도 없습니다.
현장의 엑셀 파일이 가진 위험성을 정확히 진단하고, 사람과 시스템이 나눠 맡아야 할 현실적인 선을 그을 줄 아는 개발자가 있다면, 2주와 300만 원으로도 한 팀의 일하는 문화를 완전히 바꿔놓을 수 있습니다.
지금 당신의 모니터 안에서도 깨지기 일보 직전인 엑셀 파일이 돌아가고 있다면, 더 이상 사람의 밤을 갈아 넣어 버티지 마세요.
그 골치 아픈 파일 하나만 들고 오시면 됩니다. 나머지는 제이앤코어가 가장 현실적인 방법으로 풀어드립니다.
실무 담당자 자주 묻는 질문 (FAQ)
Q1. 기존에 잘 쓰고 있는 사내 구형 ERP를 전혀 건드리지 않고도 연동이 가능한가요?
A. 네, 100% 가능합니다. ERP 시스템 내부 데이터베이스에 직접 접속할 필요 없이, 기존 ERP에서 매달 내려받으시던 원천 덤프 엑셀(.xls,.csv)을 그대로 웹 시스템에 업로드하는 구조입니다. 기존 ERP 공급업체에 비싼 커스텀 개발비를 지불하지 않아도 됩니다.
Q2. 2주 300만 원이라는 조건으로 실제 사내 실서비스 배포와 운영까지 가능한가요?
A. 가능합니다. 불필요하고 비대한 기능은 과감히 배제하고, 실무자가 가장 고통받는 ‘원천 데이터 파싱’과 ‘수당·예외 룰 연산’에만 개발 역량을 집중하기 때문입니다. 납품 후 실제 정산 사이클에서 발생하는 소소한 엣지 케이스까지 책임지고 안정화해 드립니다.
Q3. 잘 돌아가던 엑셀 파일이 특정 월말에 갑자기 ‘응답 없음’으로 뻗는 근본 원인은 무엇인가요?
A. 엑셀은 데이터베이스가 아닌 단일 프로세스 기반의 스프레드시트 문서 도구입니다. 임직원 수가 늘어나고 수식(특히 VLOOKUP, INDEX-MATCH 등 다중 참조 함수)이 수만 개로 증가하면 윈도우 단일 스레드 메모리 한계에 도달하여 마우스 클릭 하나에도 프로그램이 멈추거나 파일 자체가 복구 불가능하게 깨질 수 있습니다.
“우리 회사 엑셀 업무도 이렇게 바꿀 수 있을까요?”
사내 ERP를 무리하게 바꾸지 않고도, 매달 터지기 일보 직전인 엑셀 병목만 독립 웹 시스템으로 2~4주 만에 안전하게 해결해 드립니다.
