Project Retrospective

SI (System Ingreation) Project 회고 #1 (대규모 SI Pjt 경험의 장점)

Sungeun Cho 2024. 4. 10. 20:46
반응형

IT 계열 Career Path를 발전시켜 온지 올해 13년차가 되었다. 사회 초년생 때에는 내 Career 을 정리하고자 하는 마음이 크지 않았다. 하지만, 시간이 흐를 수록 Career를 어느정도 정리하고 글로 남겨놔야 하겠다는 생각이 들었다. 그렇게 마음을 먹고 작성하는 첫번째 글이다. 

 

첫 번째 주제는 SI(System Ingreation) Project 이다. 그 중에서도 대규모(Enterprise) SI Project 에 대하여 이야기 하려고 한다. 

 

SI Project 사업 특성상 여러 종류가 있겠지만 규모적으로 Project를 구분할 수 있다. 중소 시스템 구축을 위한 비교적 작은 규모의 Project, 또 다른 하나는 공공사업 부문에서 다뤄지는 대규모의 정통적 SI Project이다. (신규 시스템 구축 또는 차세대 구축 등이 Enterprise에 해당된다)

 

나의 첫 회사는 SI 전문기업인 "쌍용정보통신"이였다. 쌍용정보통신의 대부분 매출은 그룹사 SM(System Management)보다는 외부 SI Project 매출로 이루어져 있었다. 나는 공공사업 본부 스포츠 SI팀에 배정되어 약 5년 간 개발자로 직무를 수행하였다.

 

주요 프로젝트의 규모 및 수행 기간은 아래와 같다. 

  1. 2018 평창 동계 올림픽 정보통합 구축 프로젝트 (약 350억) - '15.10~'17.08 (1년 10개월)

  2. 2015 경북 문경 세계군인체육대회 정보통합 구축 프로젝트 (약 50억) - '14.10~'15.10 (1년) 

  3. 2014 인천 아시아 경기대회 정보통합 구축 프로젝트 (약 250억) - '12.08~'14.10 (2년 2개월)

 

Career를 관리해 오면서 크고 작은 SI/SM Project를 경험했지만 실직적으로 Project 관리 전문성에 큰 자양분이 된 것은 쥬니어 시절의 공공사업 SI Project 수행 경험이였다. 

 

Project의 영업 과정(제안서 등)에서 부터 Open 후 운영까지의 수행 경험, Predicitive(예측적) 개발 방법론의 각 단계별 AtoZ 업무 등을 수행하며 Project Life Cycles를 모두 경험하였고, 이로인해 정확한 이해를 기반으로 Project 수행/관리 전문성을 보유할 수 있게 되었다.  

 

대규모 Project를 수행하며 얻은 직무 전문성은 다음과 같다. 

 

1. Web Programming 지식 뿐 아니라, Infra/Network에 대한 전문 지식을 얻을 수 있다.

보통 SM(System Management)으로 Career를 시작한 쥬니어 분들은 비교적 Infra/Network에 대한 지식이 부족한 경우가 많다. 구축 Project 경험이 없고, 보통 이미 구축된 시스템에서 개선 및 운영 작업만 진행하다 보니 Infra/Network 작업 부분을 접할 기회가 많지 않기 때문이다. 아래와 같은 세부사항을 알고 시스템을 운영하는 것과 모르고 운영하는 것은 추후 시스템 고도화나 신규 Project 진행 시에 개인별로 성과 차이가 발생할 수 있다고 생각한다. 

 

[예시]

 1) Server OS에 대한 개념, Linux에 대한 Permission, 계정, 소유자, 그룹 소유자, bash_profile, Mount, 컴파일러 개념 등  

 2) Web Server, Was Server에 대한 기술적 메커니즘, 로드밸런싱(L4) 개념, 이중화 구조, 세션클러스터링, Full GC 등 

 3) 내부망, 전용망, 인터넷망 (DMZ) 등

 4) Fire-wall(방화벽), NAT(Network Address Translation), 사설IP, 공인IP, DNS(Domain name server) 등 

 

2. Predicitive (예측적) 개발 방법론에 기반한 Project의 각 Phase 별 모든 관리 절차를 경험할 수 있다.  

 - 제안요청서, 견적요청서, 제안서, 사업수행계획서, 과업내역서, SoW(Statement of Work) 등

 - 분석 : 요구사항 목록, 요구사항 정의서, 요구사항 추적표 등 

 - 설계 ; 프로그램 목록, 메뉴구조도, UI화면 설계서, Interface 설계서, 프로세스 흐름도 등 

 - 개발 :  테이블 목록, 테이블 정의서, ERD, 단위 TEST 결과서 등

 - 테스트 : 통합 TEST 시나리오, 통합 TEST 결과서, 부하 TEST, 모의해킹, 사용자 인수 TEST 등 

 - Open : Open 계획서

 - 운영 : 프로젝트 운영 결과서 

 

위 절차에 따라 체계적으로 프로젝트를 관리하는 방법과 각종 도구 사용 경험을 할 수 있다. 

 

3.  Project 요구사항 정의를 위한 고객 인터뷰 및 Product 벤치마킹 등을 통해 IT Trend를 빠르게 접할 수 있다.

나의 경우는 2015년도에 Project를 수행하면서 Web Application 성능 측정 (리소스 압축관리, Page 로딩 속도 개선, 이미지 로딩 속도 개선 등), Google Analytics, SEO 등을 적용하고 운영하며 그 성과를 측정하고 Reporting 했던 업무 경험이 있다. 

 2017년도에 이직을 진행할 때, 프로젝트 수행 성과로 SEO 관련 업무를  작성 했는데 당시 이직 할 회사의 리더급(상무) 분이 SEO가 뭔지 모르겠다며 개념을 질의하시던게 지금도 기억에 남는다. 그 만큼 SEO가 활성화 되지 않았던 시기였으며, SI였기에 비교적 IT Trend를 빠르게 접하고 받아들여, 직접 구현하고 시험에 볼 수 있는 기회가 있었다고 생각한다. 

 

4. 다양한 Project 팀, 이해관계자들과 일하면서 의사소통 관리에 대한 중요성과 커뮤니케이션 스킬에 대해 배울 수 있다. 

대규모 Project를 진행하다 보면 의사소통의 중요성을 깨닫게 된다. 예를 들어, 15명 정도로 구성된 개발 파트가 있다고 가정해 보자. 보통은 선임 개발자나 공통 영역 개발자 분이 개발에 대한 프로토타입을 만들어 개발 가이드를 제공하는 것이 일반적이다. 하지만 의사소통이 제대로 되지 않는다면 이러한 개발 Rule이 모두 깨지고 추후, 유지보수 뿐 아니라 보안 감사나 소스 정적분석/점검 등에서 많은 지적사항이 나올 수 있다. 그로 인해 예상치 못한 유지보수 공수가 증가 될 수 있으며, 이러한 결과는 Project 수행과정의 납기 부분에 Risk 요소가 될 수 있다. 

 

또 다른 경우는 고객과 함께 요구사항 정의 시 의사소통이 서로 잘 되지 않는다면 고객이 원하지 않는 엉뚱한 결과물(인도물)이 나올 수 있다.

때문에, 의사소통 Ground Rule 수립이 매우 중요하며, 상대와 내가 이해 수준이 동일한지 확인하는 습관이 매우 중요하다. 

대량의 자료 및 공통 규칙 등은 Pull 방식으로 PMIS나 공통 게시판을 사용하여 Rule을 공지하고, 정확한 의사소통이 필요한 경우는 프로토타입을 만들어 상대방과 소통하는 것이 효과적일 수 있다. 이 처럼 여러 Case 별로 커뮤니케이션 스킬을 배울 수 있다. 

 

5. FW(Framework)에 대한 메커니즘을 이해 할 수 있고, 전체적인 시스템 아키텍처를 볼 수 있는 시야를 얻을 수 있다.  

1번에서 이야기 했던 Infra와 Network 에 대한 이야기의 연장선일 수도 있지만, FW(Framework)의 정확한 메커니즘을 이해 할 수 있다. 

우리나라 SI Project의 대부분은 Web Application 이며 보통 Java 기반의 Spring Framework를 사용한다. 

하지만, 의외로 FW(Framework)를 직접 구축해본 경험이 없는 개발자가 상당히 많다. SM의 경우, 개별적으로 사이드 Project를 진행하지 않는다면 Enterprise급 Spring Framework를 구축할 기회가 많지 않다. 

FW(Framework) 를 맨땅에 구축해본 개발자와 이미 안정성있게 구축된 FW(Framework)에 들어가 MVC 패턴을 준수하며 개발하는 개발자는 추후 개발능력 성장에 많은 차이가 있다고 생각한다. 아마 개발자라면 나의 이런 말을 이해 할 것이라 생각한다. 

 

[정리]

위 5가지 뿐만 아니라, 얻을 수 있는 직무 전문성과 장점이 무수히 많지만 글로 다 풀어내기엔 내용이 많으므로 다른 글에서 조금씩 정리하겠다. 추가로, 나의 개인적인 생각으로는 SI 직무를 먼저 경험하고 SM직무로 전환하는 것이 개발자나 Project Manager에게 Career 측면에서 더 도움이 될 수 있다고 생각한다.