소프트웨어 개발 외주 계약서는 최소한 다섯 가지를 명확히 해야 합니다. 무엇을 납품하는지, 어떤 기준으로 검수하는지, 결과물의 권리는 누구에게 있는지, 보안과 운영 위험을 어떻게 통제하는지, 계약 종료 시 무엇을 넘겨받는지입니다. 일반적인 3~9개월 개발 프로젝트라면 상업 조건 합의 후 계약서와 과업범위서(SOW)를 확정하는 데 1~3주를 계획하는 것이 현실적입니다. 아래 체크리스트는 국내 계약과 베트남 등 해외 개발센터를 함께 활용하는 발주사를 위한 실무 검토 자료이며, 개별 법률 자문을 대신하지 않습니다.
계약 분쟁은 어려운 법률 문구 하나가 빠져서 생기기보다 업무 범위, 검수 증빙, 대금 지급, 변경 승인 절차가 서로 연결되지 않았을 때 발생합니다.
서명 전 확인할 20개 계약 조항
| 번호 | 조항 | 계약서에 명시할 내용 | 확인 자료 |
|---|---|---|---|
| 1 | 계약 당사자 | 법인명, 등록정보, 주소, 서명권자, 실제 개발을 수행하는 법인과 국가 | 사업자 정보와 세금계산서 발행 주체 |
| 2 | 업무 범위와 제외 사항 | 기능, 플랫폼, 외부 연동, 데이터 이관, 운영환경 및 명시적 제외 범위 | 서명된 과업범위서와 우선순위 백로그 |
| 3 | 납품물 | 소스코드, 인프라 스크립트, 디자인, 테스트 자료, 문서, 배포 패키지 | 담당자와 납기일이 포함된 납품물 목록 |
| 4 | 마일스톤 | 일정, 선행조건, 검토 기간, 양측 의존 업무 지연 시 처리 방식 | 주요 경로가 표시된 일정표 |
| 5 | 검수 기준 | 기능, 성능, 브라우저·기기, 보안, 허용 결함 수준을 측정 가능한 형태로 정의 | 개발 착수 전 확정한 검수 테스트표 |
| 6 | 검수 절차 | 검수자, 결과 기록 위치, 검토 기간, 반려와 재검수 절차 | 검수보고서 양식과 이슈 처리 흐름 |
| 7 | 가격 방식 | 고정가, 투입공수, 상한형 투입공수 중 선택하고 단가·가정·통화 명시 | 역할별 단가표 또는 마일스톤 대금표 |
| 8 | 대금 지급 | 청구 조건, 지급기일, 부가세, 송금수수료, 이의 제기와 지연 처리 | 청구서 예시와 지급 일정 |
| 9 | 변경 관리 | 변경 요청의 산정, 승인, 우선순위, 비용 및 일정 반영 절차 | 비용·일정 영향이 포함된 변경요청서 |
| 10 | 투입 인력과 연속성 | 핵심 역할, 투입률, 교체 절차, 인수인계 중복 기간 | 역할 계획과 교체 대응 기준 |
| 11 | 의사소통 | 업무 언어, 근무시간 중첩, 회의 주기, 보고서, 의사결정 기록, 에스컬레이션 | 주간보고서와 연락망 샘플 |
| 12 | 발주사 책임 | 계정, 콘텐츠, 승인, 테스트 데이터, 현업 담당자 제공 기한 | 발주사와 개발사의 RACI 표 |
| 13 | 지식재산권 | 맞춤 개발물의 소유권, 이전 시점, 기존 보유 기술, 사용권 범위 | 기존 IP 및 제3자 라이선스 목록 |
| 14 | 오픈소스 | 사용 승인, 라이선스 검토, 구성요소 목록, 카피레프트 처리 | 소프트웨어 자재명세서 또는 의존성 보고서 |
| 15 | 비밀유지 | 보호정보, 허용된 이용, 접근 제한, 의무 존속기간, 법적 공개 절차 | 본 계약과 일치하는 비밀유지 조항 |
| 16 | 개인정보와 보안 | 데이터 위치, 재수탁자, 접근통제, 암호화, 사고 통지, 보유와 삭제 | 보안질문서, 데이터 흐름도, 접근자 목록 |
| 17 | 하자보수 | 보증 기간, 장애 등급, 응답시간, 무상 수정 범위와 제외 항목 | 장애 등급표와 대응 목표 |
| 18 | 유지보수 | 안정화 기간, 지원시간, 응답·복구 목표, 유지보수 단가와 갱신 조건 | 별도 유지보수 또는 SLA 문서 |
| 19 | 손해배상과 보험 | 책임 한도, 제외 손해, 예외, 면책과 필요한 보험 | 해당 시 보험가입 증명 |
| 20 | 해지와 인수인계 | 해지 사유, 통보기간, 기성고 정산, 데이터 반환, 계정 이전, 전환 지원 | 인수인계 목록, 저장소 접근권, 추가 지원 단가 |
요구사항 불확실성에 맞는 계약 방식을 선택해야 합니다
| 방식 | 적합한 상황 | 발주사 통제 | 주요 계약 위험 |
|---|---|---|---|
| 고정가 | 범위가 안정적이고 검수 기준이 명확한 프로젝트 | 예산 상한은 명확하지만 우선순위 변경은 제한적 | 추가 요구사항 여부에 대한 분쟁 |
| 투입공수 | 신규 서비스, 탐색 단계, 요구사항이 자주 바뀌는 프로젝트 | 범위 조정은 쉽지만 총비용은 변동 | 성과 가시성 없이 시간만 청구될 가능성 |
| 상한형 투입공수 | 예산 한도와 일정 수준의 유연성이 모두 필요한 경우 | 한도 내에서 백로그 조정 가능 | 상한 도달 후 처리 기준이 모호할 수 있음 |
| 전담팀 | 6개월 이상 제품을 지속적으로 개발하는 경우 | 우선순위와 팀 생산능력을 직접 관리 | 유휴 인력 또는 잦은 교체 비용 |
투입공수나 전담팀 계약이라면 역할별 주간 투입기록, 2주 단위 시연, 월별 잔여예산 전망을 요구하는 것이 좋습니다. 고정가 계약이라면 간단한 기능 목록만 두지 말고 검수 테스트와 변경요청서 양식을 계약 부속서로 첨부해야 합니다.
첫 스프린트 전에 검수 기준을 확정합니다
“정상적으로 동작할 것”은 검수 기준이 아닙니다. 검수 환경, 담당자, 테스트 데이터, 예상 결과, 허용 결함 등급, 검토 기한을 문서로 정해야 합니다. 한 번의 마일스톤을 검수하는 기간은 5~10영업일을 계획할 수 있지만, 배포 규모와 발주사 검수 인력에 따라 조정해야 합니다.
- 기능: 합의된 사용자 흐름이 첨부된 테스트 케이스를 통과합니다.
- 성능: 지정한 화면이나 API가 명시된 부하에서 목표 응답시간을 충족합니다.
- 호환성: 지원 브라우저, 운영체제, 기기 범위를 목록으로 정합니다.
- 보안: 치명적·높음 등급 취약점은 수정하거나 발주사가 서면으로 승인합니다.
- 결함: 검수 완료 시 허용할 미해결 결함 수와 등급을 명시합니다.
실행 가능한 빌드, 릴리스 노트, 테스트 결과를 받지 못했는데 단순히 회신이 없다는 이유로 자동 검수되는 조항은 피해야 합니다. 간주 검수를 사용하더라도 납품 확인과 합리적인 검토 기간을 전제로 해야 합니다.
대금 지급을 확인 가능한 진척과 연결합니다
고정가 프로젝트의 예시로 착수 시 10~20%, 디자인·아키텍처 승인 후 20~30%, 작동하는 소프트웨어 마일스톤에 30~40%, 최종 검수와 인수인계 후 15~25%를 배분할 수 있습니다. 이는 계획을 위한 범위이며 실제 비율은 구매 규정, 프로젝트 위험, 초기 투입비용에 따라 협의해야 합니다.
투입공수 계약은 역할별 단가, 최소 청구 단위, 초과근무 승인, 환율 기준, 회의·PM·클라우드·출장·외부 라이선스 비용의 포함 여부를 명시해야 합니다. 해외 송금이 있다면 송금수수료, 원천징수 검토, 청구 통화와 환율 기준일도 확인해야 합니다.
지식재산권을 실제 통제권으로 연결합니다
소유권 조항만 있고 발주사가 자산에 접근하지 못한다면 충분하지 않습니다. 가능한 경우 소스 저장소, 클라우드 테넌트, 도메인, 분석도구, 디자인 워크스페이스, 앱스토어 계정, CI/CD 환경을 발주사 명의로 만들고 개발사에는 필요한 최소 권한을 부여해야 합니다.
맞춤 개발 결과물, 개발사가 계약 전부터 보유한 기술, 제3자·오픈소스 구성요소를 구분하십시오. 개발사 기존 기술이 결과물에 포함된다면 발주사가 시스템을 운영·수정·유지보수하고 다른 개발사로 이전할 수 있는 범위의 사용권이 필요합니다.
국내 계약과 해외 개발센터를 함께 사용할 때의 보안 조항
| 통제 영역 | 최소 확인 질문 | 계약 결과물 |
|---|---|---|
| 접근권한 | 누가 어느 국가에서 운영 데이터에 접근하는가? | 역할별 권한, MFA, 승인 절차, 분기별 접근권한 검토 |
| 데이터 | 어떤 정보가 국외 또는 개발도구로 이동하는가? | 데이터 흐름도, 허용 위치, 마스킹, 보유기간 |
| 재수탁자 | 호스팅, 모니터링, AI, 고객지원 업체 중 데이터를 받는 곳은 어디인가? | 승인 목록과 변경 통지 절차 |
| 보안사고 | 사고 발견 후 언제까지 발주사에 통지하는가? | 통지기한, 담당자, 증거 보전, 조사보고 의무 |
| 퇴사·종료 | 계정과 데이터 사본을 어떻게 회수·삭제하는가? | 정해진 기한 내 권한 회수와 삭제 확인 |
다른 프로젝트의 보안 부속서를 그대로 복사하면 실제 위험을 놓치기 쉽습니다. 공개 콘텐츠 사이트, 임직원 정보를 다루는 HR 시스템, 사내 문서를 검색하는 AI 에이전트는 데이터 흐름과 필요한 통제가 서로 다릅니다.
관계가 좋을 때 종료 절차를 합의합니다
전환 지원의 범위와 가격은 문제가 생기기 전에 정해야 합니다. 통보기간, 기본 제공 인수인계 시간, 추가 시간당 단가, 필수 문서, 계정 이전 기한, 질의응답 기간을 계약서에 넣으십시오. 최신 소스코드, 배포 절차, 환경 목록, 아키텍처 문서, 알려진 이슈, 데이터 내보내기, 계정과 라이선스 목록이 기본 납품물에 포함되어야 합니다.
개발사 교체를 위한 25개 인수인계 체크리스트를 활용하면 계약 종료 조항을 실제 검수 가능한 전환 계획으로 바꿀 수 있습니다.
10영업일 계약 검토 순서
- 1~2일: 범위, 가격 방식, 계약 법인, 목표일, 의사결정자를 맞춥니다.
- 3~5일: 과업범위서, 검수표, RACI, 아키텍처 가정, 데이터 흐름도를 작성합니다.
- 6~8일: 운영 문서와 법률 조항을 대조해 IP, 보안, 책임, 해지 조건의 빈틈을 정리합니다.
- 9~10일: 변경 요청, 검수 반려, 보안사고 신고, 계약 종료를 문서상으로 한 번씩 시뮬레이션합니다.
- 서명 전: 모든 부속서의 버전, 본 계약 참조 여부, 서명을 확인합니다.
서명 전에 해결할 위험 신호
- 범위가 “전체 플랫폼 개발”이라고만 되어 있고 제외 사항, 연동 대상, 검수 테스트가 없습니다.
- 대금이 납품물과 무관하게 달력 날짜에만 연결되어 있습니다.
- 개발사가 공통 모듈을 소유하지만 발주사에 영구적인 운영·수정 권한을 주지 않습니다.
- 운영 계정을 메신저로 공유하거나 개발사 명의 계정에만 보관합니다.
- 변경 요청을 비용·일정 영향 없이 구두로 승인할 수 있습니다.
- 연동 개발이 범위에 포함되어 있는데 모든 연동 결함을 하자보수에서 제외합니다.
- 해지는 가능하지만 인수인계 항목, 기한, 지원 단가가 없습니다.
자주 묻는 질문
계약 준비와 법률 검토 비용은 얼마인가요?
관할 국가, 데이터 위험, 계약 규모에 따라 달라집니다. 변호사 검토 비용은 별도 예산으로 잡고, 과업범위서·검수표·RACI·보안질문서는 법무팀뿐 아니라 제품, 개발, 보안, 구매 담당자가 함께 작성해야 합니다.
계약 협상에는 얼마나 걸리나요?
3~9개월 규모의 일반적인 개발 프로젝트라면 상업 조건 합의 후 1~3주가 계획 범위입니다. 규제 대상 데이터, 다국가 계약, 복잡한 IP 또는 대기업 구매 절차가 있으면 더 길어질 수 있습니다.
소스코드는 누가 소유해야 하나요?
맞춤 개발 결과물은 합의한 대금 지급 조건 충족 후 발주사에 귀속되도록 정하는 경우가 일반적입니다. 기존 개발 도구와 제3자 구성요소는 별도 소유일 수 있으므로 전체 목록과 충분한 사용권을 확보해야 합니다.
무상 하자보수 기간은 어떻게 정해야 하나요?
하자보수와 운영 유지보수를 분리하십시오. 하자보수 기간과 장애 등급별 대응 목표를 정하고, 기능 개선, 플랫폼 업그레이드, 모니터링, 운영 지원은 별도 유지보수 계약으로 가격을 책정하는 편이 명확합니다.
해외 개발팀과의 커뮤니케이션 조건은 무엇이 필요한가요?
업무 언어, 매일 겹치는 근무시간, 주간보고, 의사결정 기록, 응답시간, 에스컬레이션 경로를 명시하십시오. 국내 계약·소통 창구와 해외 개발센터를 결합하면 계약과 언어의 마찰을 줄이면서 해외 개발의 비용 구조를 활용할 수 있습니다.
개발사를 교체하면 무엇을 받아야 하나요?
소스 저장소, 클라우드, 도메인, 데이터, 기술문서, 계정, 라이선스, 미해결 이슈를 고정된 일정에 따라 이전받아야 합니다. 계약서에 전환 지원 시간을 미리 포함하면 종료 시점의 재협상 위험을 줄일 수 있습니다.


