개발 외주

엑셀로 올리면 되죠? | 대량 등록에 붙는 6가지

요구사항서 한 줄이던 엑셀 업로드가 견적에서 수백만 원이 되는 이유를 정리했어요. 1만 건이 넘어가면 처리 방식 자체가 바뀌고, 내려받기는 접속기록을 1년에서 2년까지 남겨야 해요. 값이 갈리는 자리 6가지와 견적서 확인 항목을 담았어요.

크리에이티브소프트
크리에이티브소프트
2026년 8월 24일 ·

핵심 요약 — 요구사항서에 “엑셀로 대량 등록”이라고 한 줄 적히는 기능인데, 견적에서는 수백만 원이 붙는 자리예요. 값을 가르는 건 파일을 읽는 일이 아니라 잘못된 행을 어떻게 처리할지, 몇 건까지 견딜지, 내려받은 개인정보 기록을 어떻게 남길지예요. 접속기록만 해도 법이 1년에서 2년까지 보관하라고 정해두고 있고요. 직접 만들고 운영해온 개발사 기준으로 값이 붙는 자리를 정리했어요.

“고객 명단 엑셀로 한 번에 올릴 수 있게만 해주세요.”

이 한 문장이 회의에서 나오면 개발자는 잠깐 조용해져요. 짧은 요청인데 되물을 게 열 개쯤 생기거든요. 그 되물음이 곧 견적 차이예요.


1. 왜 한 줄짜리 요청이 견적을 흔들까요

서울 사무실에서 엑셀 파일을 열어놓고 업로드 화면을 확인하는 실무자

발주자가 떠올리는 그림은 대체로 이래요. 파일을 고르고, 올리고, 목록에 들어간다. 세 단계죠.

개발자가 떠올리는 그림은 이래요.

발주자가 생각하는 단계실제로 만들어야 하는 것
파일을 고른다확장자·용량 제한, 양식 내려받기 제공
올린다열 이름 맞추기, 값 형식 검사, 필수값 검사
목록에 들어간다오류 행 표시, 부분 저장 여부, 중복 판정, 되돌리기

오른쪽 칸이 값이에요. 그리고 이 칸들은 화면에 안 보여요. 그래서 견적을 받아본 발주자는 “화면 하나인데 왜 이렇게 비싸요”라고 되묻게 되고, 개발사는 설명할 자리를 못 찾아요.

2. 잘못된 행 하나가 나오면 어떻게 하시겠어요

여러 사람이 모니터를 보며 오류 행을 확인하는 회의 장면

이 질문 하나에 견적이 두 배까지 갈려요. 답은 크게 셋이에요.

  1. 통째로 되돌리기 — 한 행이라도 틀리면 전부 취소하고 처음부터. 만들기 가장 쉽고 값도 적어요. 대신 1,000행 중 3행이 틀렸을 때 사용자가 파일을 고쳐서 다시 올려야 해요.
  2. 맞는 것만 저장하기 — 틀린 행만 빼고 나머지를 넣어요. 편하지만 어디까지 들어갔는지 알려주는 결과 화면이 따로 필요해요.
  3. 미리 보여주고 확인받기 — 저장 전에 결과를 보여주고 사용자가 확인 버튼을 눌러야 반영돼요. 실수가 가장 적지만 화면이 하나 더 생겨요.

저희는 고객 자료나 금액이 들어가는 업로드라면 3번을 권해요. 한 번 잘못 들어간 자료를 되돌리는 값이 화면 하나 값보다 훨씬 크거든요. 반대로 사내 담당자만 쓰는 단순 목록이면 1번으로도 충분해요.

용어 짚고 가기 — 롤백 작업 중간에 문제가 생기면 시작 전 상태로 되돌리는 걸 말해요. 은행 이체가 중간에 끊겼을 때 돈이 사라지지 않는 것도 이 장치 덕분이에요. 엑셀 업로드에서는 “1,000행 중 500행 넣다가 오류가 났을 때 앞의 500행을 살릴지 지울지”를 정하는 문제로 나타나요.

3. 몇 건까지가 그냥 되고, 어디서부터 구조가 바뀌나요

대량 데이터 처리 진행 상황을 화면으로 확인하는 개발자

건수는 값에 직접 영향을 줘요. 대략 이런 구간이 있어요.

건수처리 방식사용자가 겪는 것
~1,000행올리는 즉시 처리몇 초 기다리면 끝
1,000~1만 행즉시 처리 가능하나 대기 화면 필요진행률 표시가 없으면 멈춘 줄 알고 새로고침
1만 행~뒤에서 따로 돌리는 구조올려두고 다른 일 하다가 알림으로 확인

1만 행 언저리에서 구조가 바뀌는 게 핵심이에요. 화면이 응답을 기다리는 방식으로는 버티기 어려워서, 작업을 대기열에 넣고 뒤에서 처리한 뒤 끝나면 알려주는 방식으로 가야 해요. 여기서 서버 구성과 알림 기능이 같이 붙으니 값이 계단식으로 올라가요.

그래서 견적 요청서에 “한 번에 올릴 최대 건수”를 숫자로 적어주시면 좋아요. 지금 5,000건인데 1년 뒤 5만 건이 될 예정이라면 그것도 같이요. 나중에 바꾸면 구조를 다시 짜야 해요.

4. 내려받기는 왜 올리기보다 까다로울까요

개인정보 다운로드 사유를 입력하는 화면을 보여주는 담당자

의외로 많이들 놓치는 자리예요. 올리는 건 우리 자료를 넣는 일이지만, 내려받는 건 자료가 회사 밖으로 나가는 일이거든요.

개인정보가 섞이면 규정이 따라붙어요. 개인정보의 안전성 확보조치 기준을 보면 이렇게 돼 있어요.

  • 개인정보처리시스템 접속기록은 최소 1년 이상 보관해야 해요.
  • 5만 명 이상을 처리하거나 고유식별정보·민감정보를 다루면 2년 이상 보관해야 하고요.
  • 개인정보를 내려받은 경우에는 그 사유를 확인하도록 하고 있어요.
  • 접속기록 점검 주기도 반기 1회에서 월 1회 이상으로 강화됐어요.

그래서 내려받기 버튼 하나에 권한 확인, 사유 입력, 기록 저장, 기록 조회 화면이 딸려와요. 여기에 주민번호나 연락처를 가리는 처리까지 넣으면 항목이 더 붙고요. 견적서에 “엑셀 다운로드”라고만 적혀 있다면 이 넷이 포함인지 물어보세요.

5. 중복은 무엇으로 판정하나요

두 개의 고객 목록을 나란히 놓고 중복 항목을 대조하는 실무자

대량 등록에서 사고가 가장 자주 나는 자리예요. 같은 거래처가 세 번 들어가 있는 목록을 나중에 정리하려면 사람이 하나씩 봐야 해요.

정해야 할 건 두 줄이에요.

무엇이 같으면 같은 것인가 — 사업자번호, 메일 주소, 휴대폰 번호처럼 겹치지 않는 값을 기준으로 잡아요. 회사 이름은 표기가 제각각이라 기준으로 쓰기 어려워요.

같은 게 들어오면 어떻게 하는가 — 건너뛸지, 덮어쓸지, 새로 만들되 표시만 해둘지예요. 덮어쓰기를 고르셨다면 기존에 담당자가 손으로 적어둔 메모가 날아가는 경우가 생기니, 어느 항목만 덮어쓸지도 같이 정해야 해요.

이 두 줄이 요구사항서에 없으면 개발사가 알아서 정해요. 그리고 대개 가장 만들기 쉬운 쪽으로 정해지죠. 데이터가 꼬인 뒤에 발견되면 정리 비용이 개발비보다 커지는 경우도 봤어요.

6. 견적서에서 확인할 6가지

견적서에 형광펜으로 항목을 표시하며 검토하는 담당자

계약 전에 이 여섯 줄이 견적서에 있는지 보세요.

  1. 양식 종류와 개수 — 한 종류인지, 고객용·상품용·주문용처럼 여러 종류인지. 양식마다 값이 붙어요.
  2. 오류 처리 방식 — 위 2번의 셋 중 어느 것인지 문장으로.
  3. 최대 처리 건수 — 지금 기준과 1년 뒤 예상 기준을 둘 다.
  4. 내려받기 범위와 개인정보 처리 — 권한·사유·기록·가리기가 포함인지.
  5. 중복 판정 기준과 처리 방식 — 무엇이 같으면 같은지, 같으면 어떻게 할지.
  6. 양식이 바뀔 때 누가 고치나 — 열이 하나 늘 때마다 개발사를 불러야 하는지, 관리자 화면에서 우리가 바꿀 수 있는지.

여섯 번째가 총비용을 가장 크게 바꿔요. 업무 양식은 해마다 바뀌거든요. 견적을 나란히 놓고 비교하는 방법은 외주개발 견적, 어떻게 비교해야 맞을까요에 6칸 비교표로 정리해뒀어요.

7. 운영까지 보면 무엇이 달라질까요

저녁 사무실에서 업로드 실패 목록을 확인하는 운영 담당자

저희는 자체 SaaS 4종을 직접 운영하고 있어요. 대량 등록 기능을 만들고 굴려보면서 배운 게 하나 있어요. 성공한 업로드보다 실패한 업로드가 운영 비용을 만들어요.

사용자가 파일을 올렸는데 실패했어요. 이때 실패 이유가 화면에 안 남으면 그 사용자는 어디로 갈까요. 고객센터로 가요. 그러면 담당자가 파일을 받아서 열어보고 어느 행이 문제인지 찾아줘야 해요. 이 일이 한 달에 스무 번이면 사람 하나가 거기 묶여요.

그래서 저희는 업로드 기능을 만들 때 실패 목록 화면을 같이 넣어요. 언제 누가 어떤 파일을 올려서 몇 행이 왜 실패했는지가 남는 화면이에요. 만들 때는 값이 더 들지만, 이게 없으면 고객센터 문의로 매달 값을 내게 돼요.

기존에 쌓인 자료를 새 시스템으로 한 번에 옮기는 일은 성격이 또 달라요. 그건 데이터 이관은 왜 따로 견적을 받아야 할까요에 별도로 정리해뒀어요. 파일 첨부 자체에 붙는 값이 궁금하시면 파일 첨부 기능에 무엇이 붙나요도 같이 보시면 좋고요.

8. 정리하면

엑셀 업로드는 파일을 읽는 기능이 아니라 잘못된 자료가 들어왔을 때 어떻게 할지 정하는 기능이에요. 그 결정을 요구사항서에 적어두면 견적이 맞아떨어지고, 안 적으면 개발사가 대신 정한 뒤 나중에 발견돼요.

지금 견적서를 손에 들고 계시다면 위 여섯 줄부터 대조해보세요. 어느 칸이 비어 있는지 금방 보일 거예요. 대조해봐도 판단이 서지 않으면 빠진 칸을 같이 찾아드릴게요 →

저희는 10년 넘게 50개가 넘는 프로젝트를 진행하고 자체 SaaS 4종을 직접 운영해온 개발사예요. 롯데·캐논 같은 곳과도 함께해 왔고요. 만들어서 넘긴 뒤에도 계속 굴려봤기 때문에, 어느 기능이 나중에 사람 손을 부르는지 먼저 짚어드릴 수 있어요.

9. 자주 묻는 질문

엑셀 업로드 기능 하나에 개발 기간이 얼마나 걸리나요?

범위에 따라 폭이 커요. 정해진 양식 한 종류를 받아서 오류가 있으면 통째로 되돌리는 수준이면 며칠에서 한 주 안쪽이에요. 열 이름 맞추기, 행별 오류 표시, 성공한 행만 저장, 저장 전 미리보기가 붙으면 2주에서 한 달로 늘어나요. 1만 건이 넘는 파일을 화면이 멈추지 않게 처리하려면 뒤에서 돌리는 구조가 따로 필요하니 여기서 또 늘고요.

엑셀 내려받기는 왜 올리기보다 값이 더 나올 때가 있나요?

개인정보가 섞이는 순간 규정이 따라붙기 때문이에요. 접속기록은 최소 1년, 5만 명 이상이거나 고유식별정보·민감정보를 다루면 2년 이상 보관해야 하고, 내려받은 경우 사유를 확인하도록 하고 있어요. 점검도 월 1회 이상이고요. 그래서 버튼 하나에 권한 확인, 사유 입력, 기록 저장, 기록 조회 화면이 딸려와요.

중복 데이터는 시스템이 알아서 걸러주지 않나요?

무엇을 같은 것으로 볼지 정해주기 전에는 못 걸러요. 사업자번호가 같으면 같은 곳으로 본다든지, 메일 주소가 같으면 같은 사람으로 본다든지를 먼저 정해야 해요. 그다음 같은 것이 들어왔을 때 건너뛸지 덮어쓸지 표시만 할지도 정해야 하고요. 이 두 줄이 없으면 개발사가 임의로 정하게 돼요.