기업은 모든 소프트웨어를 내부에서 개발하기 어렵습니다. AI 기술은 전문성이 높아 숙련된 개발자를 확보하기 힘듭니다. 데이터 과학자와 머신러닝 엔지니어 그리고 백엔드 개발자를 모두 채용하려면 비용이 큽니다. 프로젝트 기간이 정해져 있으면 인력을 일시적으로만 필요로 합니다. 정규직으로 채용했다가 프로젝트 종료 후 유휴 인력이 되는 문제가 생깁니다. 외부 전문 업체에 개발을 위탁하면 이러한 부담을 줄입니다. 필요한 기간 동안만 서비스를 이용하고 비용을 지불합니다. 개발사는 이미 검증된 기술과 방법론을 보유하고 있어 품질과 속도를 보장합니다.
개발을 외부에 맡기더라도 관리는 발주사가 해야 합니다. 위탁 관리자는 프로젝트의 성공을 책임집니다. 요구사항을 명확히 정의하고 개발사에 전달합니다. 개발 진행 상황을 추적하고 일정을 관리합니다. 주간 또는 월간 미팅을 통해 이슈를 파악하고 해결 방안을 논의합니다. 중간 산출물을 검토하여 방향이 맞는지 확인합니다. 변경 요청이 발생하면 범위와 비용 그리고 일정 영향을 평가합니다. 최종 납품물을 검수하고 계약 조건 충족 여부를 판단합니다. 개발사와 내부 이해관계자 사이에서 소통 창구 역할을 합니다.
▲ 개발할 소프트웨어의 기능과 성능 요구사항을 구체적으로 작성합니다
▲ 사용자 시나리오와 화면 설계를 포함하여 개발사가 이해하기 쉽게 만듭니다
▲ 비기능 요구사항으로 보안과 성능 그리고 호환성 기준을 명시합니다
프로젝트 실패의 주요 원인은 불명확한 요구사항입니다. 개발 위탁 전에 무엇을 만들지 명확히 정의해야 합니다. AI 시스템이라면 어떤 데이터를 입력받아 어떤 결과를 출력할지 기술합니다. 예상 정확도와 응답 시간 같은 성능 목표를 설정합니다. 사용자 인터페이스가 있다면 화면 구성과 동작 흐름을 그립니다. 외부 시스템과 연동이 필요하면 인터페이스 사양을 정합니다. 요구사항 문서는 계약서에 첨부되어 법적 근거가 됩니다. 개발사는 이 문서를 기준으로 견적을 산정하고 일정을 계획합니다.
적절한 개발사를 선택하는 것이 중요합니다. 여러 업체에 제안 요청서를 보내고 견적을 받습니다. 기술 역량과 경험을 평가합니다. AI 분야의 유사 프로젝트 수행 실적을 확인합니다. 보유 인력의 자격증과 경력을 검토합니다. 기존 고객의 레퍼런스를 요청하여 만족도를 파악합니다. 제안 발표를 통해 프로젝트 이해도와 접근 방법을 듣습니다. 비용도 중요하지만 가장 싼 곳이 항상 최선은 아닙니다. 품질과 일정 준수 능력을 종합적으로 고려합니다. 의사소통이 원활한지 계약 조건이 합리적인지도 판단 기준입니다.
개발 위탁 계약서는 법적 보호 장치입니다. 계약 범위를 명확히 정의하여 추가 비용 분쟁을 방지합니다. 납품 일정과 중간 마일스톤을 기록합니다. 각 단계별 산출물과 검수 기준을 명시합니다. 대금 지불 조건을 정합니다. 착수금과 중도금 그리고 잔금 비율을 정하고 지급 시점을 연결합니다. 지적 재산권 귀속을 명확히 합니다. 개발된 소스코드와 산출물의 소유권이 누구에게 있는지 정합니다. 하자 보수 기간과 범위를 설정합니다. 납품 후 일정 기간 무상 수정을 보장받습니다. 비밀 유지 조항으로 프로젝트 정보 유출을 방지합니다.
▲ 프로젝트 시작 회의에서 목표와 범위 그리고 일정을 공유합니다
▲ 의사소통 채널과 보고 체계를 정하여 원활한 협업 기반을 만듭니다
▲ 개발 환경과 도구 그리고 접근 권한을 설정하여 작업을 시작합니다
계약 후 킥오프 미팅을 개최합니다. 양측 핵심 인원이 참석하여 프로젝트를 시작합니다. 요구사항을 다시 검토하고 불명확한 부분을 명확히 합니다. 개발 방법론을 확인합니다. 애자일인지 폭포수 모델인지 따라 진행 방식이 다릅니다. 의사소통 도구를 정합니다. 슬랙이나 팀즈 같은 협업 툴을 사용하거나 이메일로 소통합니다. 이슈 트래킹 시스템을 설정하여 문제를 기록하고 추적합니다. 개발사에게 필요한 자료와 접근 권한을 제공합니다. 기존 시스템 문서와 데이터 그리고 API 키를 전달합니다.
개발이 시작되면 정기적인 모니터링이 필요합니다. 주간 회의에서 완료된 작업과 진행 중인 작업을 확인합니다. 일정 대비 실제 진척률을 측정합니다. 지연이 발생하면 원인을 파악하고 대응 방안을 수립합니다. 개발사는 정기 보고서를 제출합니다. 기능 구현 현황과 발견된 이슈 그리고 다음 주 계획을 포함합니다. 중간 산출물을 검토합니다. 설계 문서와 프로토타입 그리고 테스트 결과를 확인합니다. 문제가 있으면 조기에 수정 요청합니다. 나중에 발견하면 수정 비용과 시간이 더 필요해지기 때문입니다.
프로젝트 중 요구사항이 바뀌는 경우가 많습니다. 사용자 피드백이나 시장 변화로 기능 수정이 필요합니다. 변경 요청 프로세스를 따라야 합니다. 변경 사항을 문서로 작성하고 영향을 분석합니다. 추가 개발 공수와 비용 그리고 일정 지연을 평가합니다. 변경 승인 여부를 결정합니다. 중요한 변경이면 승인하고 사소한 것은 다음 버전으로 미룹니다. 승인된 변경은 계약을 수정하거나 추가 계약을 체결합니다. 무분별한 변경 요청은 프로젝트를 위험에 빠뜨립니다. 범위 확대를 통제하는 것이 관리자의 중요한 역할입니다.
▲ 단위 테스트와 통합 테스트 그리고 시스템 테스트 결과를 검토합니다
▲ 코드 리뷰를 요청하여 개발 품질을 확인합니다
▲ 성능 테스트로 응답 시간과 처리량이 요구사항을 만족하는지 검증합니다
개발사가 자체 테스트를 수행하지만 발주사도 확인해야 합니다. 테스트 계획서를 검토하여 충분히 검증되는지 확인합니다. AI 모델이라면 정확도와 재현율 같은 지표를 측정합니다. 다양한 입력 데이터로 예상대로 작동하는지 확인합니다. 에지 케이스와 오류 상황도 테스트합니다. 부하 테스트로 동시 사용자가 많아도 안정적인지 검증합니다. 보안 테스트로 취약점이 없는지 점검합니다. 사용자 인수 테스트를 실시합니다. 실제 사용자가 시스템을 사용해보고 피드백을 줍니다. 발견된 버그는 수정하고 재테스트합니다.
프로젝트에는 항상 위험이 존재합니다. 사전에 예상 가능한 위험을 식별합니다. 핵심 인력이 퇴사하거나 기술적 난제를 만날 수 있습니다. 각 위험에 대한 대응 계획을 수립합니다. 백업 인력을 준비하거나 대안 기술을 검토합니다. 이슈가 발생하면 신속하게 대응합니다. 이슈 심각도를 평가하고 우선순위를 정합니다. 높은 우선순위 이슈는 즉시 해결하고 낮은 것은 나중에 처리합니다. 이슈 해결 과정을 추적하고 문서화합니다. 같은 문제가 재발하지 않도록 근본 원인을 파악합니다. 정기 위험 리뷰 회의에서 새로운 위험을 식별하고 대응합니다.
▲ 납품 체크리스트로 모든 산출물이 제출되었는지 확인합니다
▲ 소스코드와 문서 그리고 설치 매뉴얼을 검토합니다
▲ 요구사항 대비 구현 완성도를 평가하고 누락된 기능이 없는지 점검합니다
프로젝트 완료 시점에 최종 검수를 진행합니다. 계약서와 요구사항 문서를 기준으로 평가합니다. 모든 기능이 정상 작동하는지 확인합니다. 성능 목표를 달성했는지 측정합니다. 문서가 완전하고 정확한지 검토합니다. 소스코드와 데이터베이스 스키마 그리고 API 문서를 점검합니다. 운영 매뉴얼과 사용자 가이드가 이해하기 쉬운지 확인합니다. 미비한 부분이 있으면 수정을 요청합니다. 검수 완료 후 인수증을 발급하고 잔금을 지급합니다. 프로젝트 산출물을 인수받아 내부 시스템에 통합합니다.
개발사로부터 시스템을 인수받는 과정이 필요합니다. 소스코드 저장소 접근 권한을 이전받습니다. 서버와 데이터베이스 계정 정보를 전달받습니다. 시스템 구조와 주요 모듈에 대한 설명을 듣습니다. 내부 운영 담당자에게 교육을 실시합니다. 기본적인 운영 방법과 모니터링 방법을 배우고 간단한 문제 해결 방법도 익힙니다. 교육 자료를 제공받아 나중에도 참고할 수 있게 하고 일정 기간 기술 지원을 받을 수 있도록 합니다. 문제 발생 시 개발사에 문의할 수 있는 채널을 유지합니다.
납품 후에도 시스템 관리가 필요합니다. 하자 보수 기간 동안 발견되는 버그를 무상으로 수정받습니다. 일반적으로 납품 후 몇 개월간 보증 기간이 있습니다. 하자 보수 이후에는 유지보수 계약을 체결합니다. 월간 또는 연간 계약으로 지속적인 지원을 받습니다. 보안 패치와 성능 개선 그리고 소규모 기능 추가를 포함합니다. 유지보수 범위와 비용을 협의합니다. 내부에서 관리할 수 없는 부분만 위탁하거나 전체를 맡길 수 있습니다. 장기 파트너십을 고려하여 개발사와 좋은 관계를 유지하고 향후 추가 개발이 필요할 때 같은 업체와 협력하면 효율적입니다.
프로젝트 종료 후 회고 미팅을 진행합니다. 잘된 점과 아쉬운 점을 돌아보고 일정과 비용이 계획대로 진행되었는지 평가합니다. 의사소통은 원활했는지 이슈 대응은 적절했는지 검토하며 개발사의 성과를 평가하고 기록합니다. 다음 프로젝트 업체 선정 시 참고 자료로 활용하고 내부적으로도 개선점을 찾습니다. 요구사항 정의가 충분했는지 관리 프로세스가 효과적이었는지 확인하면서 교훈을 문서화하여 조직의 자산으로 남깁니다. 다음 개발 위탁 프로젝트에서 같은 실수를 반복하지 않도록 합니다.