본문 바로가기

실무 경험담

[경험담] 공공기관 SI 프로젝트 전체 프로세스(정보전략계획부터 사업철수까지) 소개

오늘은 공공기관 SI 프로젝트 프로세스에 대해서 알아보려고 해요.

아직 프로젝트를 처음부터 끝까지 진행해보지 않으신 분들이 궁금해하실거 같아서 작성해봤어요. 나름 의미가 있는 굵직한 업무 단위로 작성했고, 지나치게 디테일한 내용은 제외했어요.

 

소프트웨어 개발방법론을 말하자면 정보공학 방법론(폭포수 모델) 입니다.  

공공기관 SI 프로젝트 하면서 다른 방법론(예:Agile 등)을 쓰는 곳은 못봤어요. 아무래도 공공기관은 데이터를 중심으로 시스템이 개발되기 때문에 어쩔 수 없는거 같습니다. 

제가 경험한 사업규모는 8억 이상 사업들이었으니 참고바랍니다. (보통 몇백억 하는 큰 규모의 차세대 프로젝트는 저도 처음부터 경험한 적은 없어서 잘 모르겠네요. 그런데 회사나 주변사람들에게 들어봤을 때 큰 차이는 없는거 같습니다. )

 

 

 

 

프로젝트 시작 전
  1. 정보전략계획(ISP:Information Strategy Planning)  
    시스템을 왜 만들어야 하는가? 비용은 얼마나 드는지? 어떻게 만들어야 하는지? 등에 대한 컨설팅을 받는다고 생각하시면 됩니다.(외부 용역을 주는데 사업 규모가 작은 경우는 하지 않습니다.)
  2. 사전규격공개
    ISP로 나온 정보를 토대로 제안요청서를 작성하게 되는데, 정식으로 입찰공고 내기 전에 업체들이 제안요청서에 문제가 없는지, 즉 사업 수행가능한지 확인해봐라 하고 미리 제안요청서를 공개합니다. 업체들은 사전규격공개된 제안요청서를 검토하고 제안요청 내용이 애매하거나 잘못된 부분이 있으면 고객으로부터 확인을 받거나 수정을 요청합니다. 
  3. 입찰공고(제안요청)
    제안요청서는 사업 금액, 일정, 왜 사업을 하는지?(기존 문제점), 개선방향, 시스템 개발 요구사항, 보안요구사항, 데이터 요구사항, 성능 요구사항 등등 고객이 원하는 내용을 정의한 문서입니다. (문서량이 상당히 많습니다.) 이 문서를 통해 입찰공고를 올리게 되는거죠.
  4. 제안서 작성
    업체들은 제안요청서(RFP) 내용을 확인하고 제안서를 작성하게 됩니다. 대략 입찰마감까지 40일 정도 기간이 있는데 40일 동안 파워포인트 작업만 하게 됩니다. 내부검토도 많이하고 전략 및 기술 구현방안 쥐어짜야하는데 아주 짜증나는 기간이죠 ㅎㅎ. 특히 이쁘게 한페이지에 도식화하는게 어렵습니다. 개발자들은 디자인 감각이 아주 꽝이잖아요 ㅎㅎ (디자인 감각 있으신 분들 부럽습니다.)
    좀 큰 회사는 제안서만 별도로 작성하는 분들(개발자가 아닌)이 있다고 하더군요.   
  5. 입찰/사업수주
    여러 업체가 입찰하게 되면 제안발표를 통해 결정된 기술점수와 업체가 제출한 입찰가격을 합쳐서 최종 낙찰자를 선정하게 됩니다. 만약 한 업체만 입찰하게 되면 경쟁업체가 없기 때문에(유찰) 다시 재공고를 통해 다른 업체가 입찰하도록 유도하고, 그래도 한 업체만 입찰하게 되면 경쟁업체가 없기 때문에 바로 수의계약을 진행합니다. 
  6. 기술협상/계약
    고객과 사업자가 제안요청서의 내용 중 추가하거나 수정할 부분, 명확하게 정의가 필요한 부분 등을 협상하게 됩니다. 

 

프로젝트 시작 - 분석/설계단계 (문서작업)
  1. 사업수행계획 보고
    고객(갑), 시스템과 관련된 담당자, 업체 대표 등을 대상으로 어떻게 사업을 수행할지 보고합니다. 
  2. 회식
  3. 분석 설계 (문서작업 시작~)
    고객과의 미팅을 통한 요구사항 분석 및 정의를 시작으로 여러 산출물 작업을 하게 됩니다. 
    주요 작업 내용(실제로는 더 많습니다. ㅜㅜ)
    - 요구사항 분석/정의, 유스케이스 다이어그램/정의, ERD(논리/물리), 테이블 목록/정의, 클래스 다이어그램/정의, 화면 목록/정의, 메뉴 목록, 코드 정의, 단위테스트시나리오, 통합테스트시나리오, 검사검수기준서
  4. 중간감리
    감리업체가 5일정도 제안요청서~제안서~요구사항정의~관련산출물 들을 추적하면서 분석/설계가 잘 되고 있는지 확인합니다. 
  5. 중간진행상황 보고
  6. 회식

 

프로젝트 중간 - 개발단계
  1. 개발환경/테스트환경 구축
    보통 사업 시작하면서 개발자들이 같이 들어가서 환경 구축을 합니다. 
    프로젝트 설정(최초 샘플 세팅), 소스형상관리, 통합빌드, 이슈추적관리, 개발DB, 테스트서버  등
  2. 개발
    분석설계 산출물을 보고 개발합니다. 그런데 산출물만 보고서 개발하는 경우는 드뭅니다. 산출물이 그만큼 자세하지 않거든요. (어차피 작성자가 또는 작성자와 함께 다른 개발자가 함께 개발하기 때문에 궁금하면 이야기해주면 되겠지 라고 생각하면서 산출물을 만들기 때문에 감리에서 지적당하지 않을 정도로 만들게 됩니다. )
    요즘은 분석설계 단계와 개발단계를 분리발주하는 경우가 있어서 정말 분석설계한 업체가 만든 산출물만 보고 개발해야 하는 경우도 있는데 불필요한 공수(업무 다시 파악, 기능이 명확하게 정의되어 있지 않아서 다시 협의하는 등)만 더 늘어나게 됩니다.
    중요한 산출물
    전체적인 업무흐름 파악 : 유스케이스 정의서
    데이터 흐름 파악 : ERD(논리)
    실제 개발할 화면 : 화면정의서
  3. 단위테스트
    본인이 개발한 화면만 테스트 하는 겁니다. 자바스크립트 오류가 없는지, 유효성 체크 잘되는지 등등. 개발자 본인이 하기 때문에 대부분 무난하게 통과 됩니다. 
  4. 통합테스트
    전체적인 프로세스를 테스트합니다. 1차로 사업팀 내에서 진행을하고 2차로 고객이나 시스템관련 담당자, 운영유지팀이 있다면 업무흐름을 알고 있는 운영유지팀 등이 하게 됩니다. 여기에서부터 헬이 시작됩니다. 혼자 테스트할 때는 잘 돌아가던 시스템이 통합테스트만 들어가면 프로세스가 막히거나 오류가 발견됩니다. 고객도 시스템을 실제로 확인하면서 '이게 아닌데.. 불편한데..' 등등 수정사항을 요구합니다. 
  5. 최종감리
    실제 개발된 시스템이 잘 돌아가는지 테스트 합니다. 요구사항 정의서와 통합테스트 시나리오를 보면서 테스트하고 요구사항이 잘 구현되었는지 확인하는 겁니다. 어떤 감리는 데이터를 막 이상하게 넣습니다. 그리고 오류나면 지적사항에 넣는거죠. 그러면 감리 끝나기 전, 감리 보통 5일인데 이 시점은 3일차 정도 되는데 마지막날은 보고서 쓰는날이라 제외하면 하루 정도 남게 됩니다. 그래서 보통 밤을 세워서라도 당일 내에 고쳐놔야 합니다. 그리고 감리에게 '감리 중 조치되었다. 지적사항에서 빼달라'고 빌게 됩니다. 
    (SI 시스템 프로젝트에 대한 감리에 대해서는 하고 싶은 말이 많습니다. 다음에 기회가 되면 따로 포스팅하도록 하겠습니다. 대부분 불만.. ㅋㅋ)
  6. 운영매뉴얼, 사용자매뉴얼, 관리자 매뉴얼 작성
    엄청 귀찮은 작업이죠. 개발자들 시켜놓으면 엄청 대충 만듭니다. 화면만 봐도 다 알만한 설명 위주로 되어있죠. (등록버튼을 누른다. 검색조건을 입력 후 검색버튼을 누른다. ㅎㅎ)
  7. 사업종료보고
  8. 회식
  9. 시스템 관련 담당자 교육
    고객, 시스템 관련 담당자, 콜센터 등등 교육을 합니다. 콜센터 질문 업청 해댑니다. ㅎㅎ 서비스 오픈과 동시에 실사용자들이 문의전화를 엄청할테니까요.
  10. 시스템 오픈 준비
    오픈 시나리오 작성, 작업계획서 작성, DB 이관 준비 등등. 

 

프로젝트 완료
  1. 시스템 오픈
    보통 금요일 밤에 시작해서 운영서버 설정 및 DB이관 등이 토요일 오전에 끝나면 운영테스트 하고, 이상없으면 퇴근~!!! 만약 문제있으면 원복하고 다시 원복테스트를 진행합니다. (원복은 생각하기도 싫네요. ㅎㅎ)
    주말에는 공공기관 시스템을 많이 사용하지 않기 때문에 별 문제 없는 것처럼 보입니다. 월요일 아침부터 전화기 불이 나는거죠 ㅎㅎ.
    예전에 대금관리 시스템을 오픈한 적이 있었는데 아주 살떨려 죽는줄 알았습니다. 혹시라도 대금이체가 잘못되면 어떻게 하나. 기존에 대금이체했던 기록들을 데이터 이관했는데 조회가 안되면 어떻게 하나.. ㅎㅎㅎ
  2. 안정화 지원
    보통 한달 정도 지원합니다. 시스템 오픈하고 바로 철수하는 케이스는 못봤어요. 운영하면서 발생하는 에러들을 고치면서 운영유지팀을 지원하게 됩니다.
  3. 사업철수
    오예~!!! 안정화 지원과 사업철수는 보통 단계적으로 실행합니다. 한번에 전부 철수하는게 아니라 초중급 개발자가 먼저 철수하고, PM, PL, 핵심 개발자은 나중에 철수하는 식으로요. 

사업 철수~ 오예~~

 

 

전체적인 프로젝트 프로세스 중에서 실제로 개발(코딩)하는 기간은 정말 짧습니다. 

요즘 공공기관 SI가 1년 이내(보통 6~7개월)에 끝난다고 했을 때 개발기간은 문서상에 2개월 정도 되어있습니다. 

그런데 테스트 기간이 1개월 정도 되고 실제 오픈 및 안정화 기간을 고려하면 4개월 정도 코딩을 하게 되는거죠.

 

개발 경력이 쌓여가면서 PL역할을 하다보니 개발보단 문서작업을 많이 하게 되네요. 

공공기관 프로젝트를 계속하게 되면 어쩔 수 없는거 같습니다. ㅎㅎ