태그

2014년 6월 8일 일요일

SW개발자의 군생활 - SW개발병(현 SW관리병) part 1

오랜만에 글을 쓴다. 매주 하나씩 쓰려고 했는데, 몇 주간 발등에 떨어진 일 때문에 정신이 없었다. 각설하고..

오늘은 SW개발병으로 지낸 군 생활을 하고자 한다.


앞 글 에서 언급했듯이, 난 4년제 대학교를 졸업한 뒤, 핵심기술특화병 중 하나인 SW개발병으로 육군 병사로 입대하였다. 현재의 정확한 주특기 번호 및 명칭은 '175262 S/W관리병' 이다. 2004년 당시에는 대졸에 정보처리 산업기사 / 기사 자격증을 보유하고, JAVA/JSP 관련 경험이 있으면 들어가는데 큰 무리가 없었던 걸로 기억 한다.


입대 당시, 훈련소에는 나보다 나이 어린 애들이 대부분이 이였고, 심지어는 교육을 담당했던 병사도 나보다 어렸는데 속였다가 걸리고 그랬었다. 지금 생각 해보니까 나이도 한참 어린애들이 내 이름을 부르면 무척 기분 나빠했었고, 이름 부르지 말라고 했었던 적도 있었다. 하지만 대부분의 훈련소 동기들은 나이 많은 대접(?)을 해줬었고, 6주의 훈련 기간동안 나름 의미있는 시간을 보낸듯..

자대 배치를 받았을 때는 나이 때문에 걱정을 많이 했었으나.. 내 나이가 배치를 받은 육군전산소(현재 정보체계관리단)의 평균 나이 정도 여서 전혀 문제가 되지 않았다. 아마 나와 비슷한 처지에 있는 분들이 대부분이였던 듯.. 입대 동기들은 대부분 나와 나이가 같았고, 선임들은 결혼해서 애도 있는데 이혼한 사람도 있었고, 여튼 다 '어른' 이였다. ㅡㅡㅋ

5개 내무실만 있던 작은 부대였던 육군전산소는 육군 유일 전상병으로만 이루어진 부대였고, 규모가 크기 않아 육군 전산소의 헌병대가 있던 건물 3층에 3개 내무실만 있던 모 부대(무슨 정보 관리 하는 부대였는데 이름이 기억이 안나네..ㅡㅡㅋ)와 같은 층을 썼었다. 같은 층에 타 부대원들과 화장실(샤워실, 세탁실)과 공유 장소(탁구실, 체력단련실, PC방 등)를 공유 하면서 자주 다퉜던 걸로 기억 한다. 하루는 이발을 하는데 난 상병이였고 옆 부대 개념없는 이등병이 ㅈㄹ하는 바람에 싸운적도 있었다. ㅋㅋㅋㅋ

5개 내무실 중 마지막 1개 내무는 운전병들을 포함한 행정병들이 모여 있는 내무실이였고, 나머지 4개 내무실은 육군 본부의 각 산하 기간들과 관계 있는 부서의 병사들이 모여 있었다. 현재는 어떻게 구성되어 있는 지 모르겠으나, 난 그 당시 군수 관련된 부서에 배정된 3~4명의 병사중 한 명 이였다. 이외에도 여러 참모부의 여러 과에 소속된 병사들이 삼삼오오 모여서 내무반을 이루게 된다. 여기서 다루던 프로젝트는 자세히 말하기에는 보안상 문제가 될 수 있으니 간단하게 말하자면.. 전산화 프로젝트 중에 외주 주기에는 다소 가볍고 지속적으로 관리해야 하는 프로젝트.. 좋은 예로 예비군 홈페이지 정도 되겠다. 또 나름 중요한데 보안상 외주 업체에게 데이터를 모두 공개하기 어려운 프로젝트.. 가령 워게임이나 전시에 사용하는 예측성 프로그램 등 을 영관급 장교 - 군무원 - 개발병과 함께 개발하여 사용하게 된다.

내가 관여했던 플젝은 크게 2개 였다. 첫번째는 전시 상황에 각 부대에 미치는 피해상황을 예측하는 프로그램(편의상 A 프로그램)이였고, 두번째는 특전사 낙하산을 관리하는 프로그램(B프로그램)이였다. A프로그램은 입대 당시 이미 L모사에서 무슨 큰 프로젝트 수행시 곁다리(?)로 이미 만든 프로그램이였다.  MFC 기반의 C/S 프로그램이였고, DB 는 Informix, DB 관련된 로직은 Pro*C로 개발이 되어 있었다. 프로젝트 투입당시 사수는 전역을 앞둔 말년 병장이였고, 그때 당시에는 어린나이에 이것저것 다 하고 있는 것이 대단해 보였었다. 그 친구가 전역하고 혼자 맡게 되었을때 매번 마주치는 비즈니스 파트너(고객 혹은 갑)가 모 중령님이였다.

이 분은 정말 대화하기 힘든 분이였다. 머.. 중령과 일개 병사와의 대화가 있을 수 있는 지 의문을 갖는 사람도 있겠지만..(대부분 그렇지.. 중령이면 일반 부대에서는 얼굴도 한번 마주치기 힘든 사람이니..) 워낙 막무가내였고, 안되면 '나라의 명령' 이라느니 머라느니 하면서 말도 안되는 논리도 사람을 뭉개기 일쑤였고, 가만히 듣고 있으면 듣고 있는 사람 모두 열받게 만드는 그런 사람이였다. 게다가 제대로 만든 프로그램도 아니고, 정식 offer없이 받은 프로그램이다 보니 유지보수도 제대로 되지 않았고 인수인계도 엉망이였으니 짜증날만 했을 것이다. (그때는 이런 생각 못했었다.ㅡㅡㅋ) 게다가 이 프로그램은 군에서 수행하는 가장 큰 훈련(태극훈련, 을지훈련 등) 수행시 고위급 장관들에게 보고 하기 위해 사용하는 무척 중요한 프로그램 중 하나였다.

내가 만약에 이 분과 군생활을 계속 같이 했었다면, 아마 프로그래머로서의 업은 절대 하지 않았을 것이다. 실은.. 이 대목이 가장 중요한 포인트 이긴 하다.

한 3개월정도 해당 프로그램 유지보수를 하면서, 대학교때 잠시 Visual Studio로 그림그리기 하던 MFC 손좀 데보고, 쌩판 해보지도 못했던 Pro*C 수정 및 컴파일, 배포, 그리고 여러 DB 툴을 가지고 전군에서 취합한 데이터를 SQL 공부하면서 이리저리 살펴보고 있었을때, 모 중령님의 좌천(?) 소식을 듣게 되었다. A 프로그램때문에 그렇게 된건 아니겠지만, 여러가지 상황이 복잡하게 얽혀 있었겠지.. 그리고서는 강중령님이라는 분이 내 새 파트너로 오시게 되었다. 이 분 역시 전산쪽에는 깊은 지식은 없으셨고, 나라에 충성을 다하시는 분 이였지만, 모 중령님과 다른 중요한 한 가지가 있었다. 바로, 경청하는 자세였다.

일개 병사였던 나의 이야기를 이분은 차근 차근 들어 주셨다. 이 과정을 통해 무엇이 문제였는지, 이 프로그램을 제대로 돌아가게 하기 위해서는 무엇이 필요한지 하나 하나씩 풀어 나가셨다. 내가 강중령님께 제안을 했던 것은 크게 3가지 였다. 첫번째, 현재 DB가 Informix로 되어 있는데  Oracle 로 변경하는 것이 좋겠다. Informix를 쓰는 것은 목적지를 도착하기 위한 지름길이 있는데 돌아가는 격이다 라고 설명했었다. 두번째, 데이터 가공을 위해 Pro*C 를 사용하는 것은 비효율적이다. 상대적으로 리소스가 충분한 Oracle 서버에서 돌수 있는 PL/SQL(Stored Procedure, SP)로 변경하자. 세번째, 그 당시 유상으로 구매했던 JBuilder의 기능이 현재 프로그램 개발하는데 좋은 기능들이 많다. MFC는 버리고 Java 기반으로 가자..

회사로 따지만 입사 1년차에 어떻게 이런 제안을 했었는지 지금 생각 해보니 대단한 것 같기도 한다. 내 제안은 대부분 앞으로 내 경력을 쌓아가기 위해 전략적(?)으로 제시한 것이기도 하였지만, 나에게는 잘 알지도 못 하는 것을 억지로 배워가면서까지 개발할 여력도 없었고, 이유도 없었다. 그리고 나의 이야기에 귀기울여 주셨던 강대령님은 나의 제안을 모두 수용해주셨다. 해서 수 년 동안 애물단지로 취급받던 프로그램을 새로 재구성하기 시작했다. 이때 한 가지 유의했던 점은, 기존에 있던 프로그램을 그대로 마이그레이션 하지 않았었다. 왜냐하면, 테이블 구성이라던지 비즈니스 로직 자체에 비효율적인 부분이 무척 많았다고 생각 했기 때문이다. 가령, 군수 물자에는 종류가 분류되어 있고, 어떤 종은 전시 피해 상황시 계산할 필요가 없는 종도 있다.(자세히는 말하지 않겠다.) 헌데, 기존 프로그램 볼 필요도 없는 종 때문에 계산하는 시간이 소요되기 마련이였다. 전쟁 시나리오를 넣고 계산 버튼을 누르면, 답이 나오기까지는 꼬박 2박 3일이 소요 되었다. 이런 프로그램은 최소한 반나절에 한번 이상씩 데이터 기반으로 보고를 해야 되는 훈련 상황에 적합하지 않았다.

나는 약 7개월동안 강중령님께 말씀 드린 모든 약속들을 충실히 이행해 나갔다. Oracle 기반의 데이터 테이블 구조를 만들고, 일반적인 정규화를 바탕으로 관계형 데이터베이스에 충실한 데이터 모델을 만들어 냈다.(그때 당시에는 같은 데이터가 여러개 테이블에 분산되어 있으면 죄악으로 삼던 시절인 듯..ㅡㅡ) 잘 알지도 못하는 SP 작성을 위해 오라클사에서 제공한 복사본 매뉴얼을 옆에 끼고 살았다.  그때 버전이 9i 였고, 이 과정이 무척 재미 있었다. 그리고 모든 UI는 JAVA기반으로 변경했고, JBuilder 컴포넌트도 다수 사용했었다.

SP 작업시 기억이 나는 작업이 하나 있다. 육본은 냉방이 잘되는 건물이지만, 주말 혹은 퇴근 시간 이후에는 냉방이 되지 않는다. 비즈니스 로직을 전혀 모르고 있던 나는, 프로시저를 제대로 작성하기 위해서 강중령님의 도움이 절대적으로 필요 했다. 물론, 서로의 능력이 절실히 필요했던 여름이였다. 정말 무더운 여름에 중령님과 나는 텅빈 사무실에 앉아 함께 작업을 했고, 옷에 있어서는 격식 차리지 말자는 말씀에 속옷만 입고 땀을 뻘뻘 흘리면서 이천줄 정도 되는 프로시저를 검토하곤 했었다. 지금 짜면 그렇게 안 짜겠지..ㅡㅡㅋ 프로시저 전체를 글자 줄여서 출력한 다음 테이프로 붙이면 길이가 꽤 되었다. 그걸 앞에 벽에 붙여 놓고 한 줄 한 줄 훑어 나가면서 잘 못 된 부분이 있는 지 없는 지 검토 했었다. 쉽지 않은 작업이였지만.. 난 그 순간이 지금도 힘들때면 기억을 하는 좋은 기억이다.

이렇게 만든 프로그램은 7개월안에 모습이 들어났고, 가장 중요하게 생각했던 산정 시간은 기존 2박 3일의 시간이 13시간으로 단축하게 되었다. 프로시저 중간 중간에 로그성 구문을 집어넣어 커밋 갯수와 루프를 튜닝하고 나니 최종적으로 4시간 30분으로 단축이 되었고, 이 프로그램은 전시 훈련시에 가장 중요한 프로그램으로 자리매김 하게 되었다. 실제로 훈련상황을 모니터링하는 대형화면에 내가 만든 프로그램이 한 켠을 차지하게 되었고, 결과물은 신뢰도가 무척 높았다.

이 프로그램을 만든 사람들을 생각해보니, 강중령님과 나, 그리고 주사님 한분, UI 를 그려주었던 후임이 투입되었었다. 그리고 상병쯤에 해당 프로젝트의 성과를 인정받아 군수참모부 표창장(2스타)을 받게 되었다.

그때 당시에는 군에서 수행하는 프로젝트가 별거 아니겠다는 생각을 많이 했고, 밖에 나오면 제대로 된 환경에서 더 큰 프로젝트를 수행하겠지 라고 생각했었지만, 지금 생각해보면 꽤 규모도 컸고, 나름 체계적이였었다. 그리고 첫 프로젝트가 대량 데이터를 가공하는 작업을 하다 보니 자연스럽게 대용량 데이터베이스, 처리속도 등을 고민하게 되었었고, 이후 대부분의 경험들이 대용량 데이터와 직접적인 관계를 맺게 해주었고, 잘 수행하게 해준 원동력이 되지 않았나 싶다.

쓰다 보니 너무 길어진듯 하다. 두 번째 프로젝트와 기타 기억에 남는 프로젝트는 다음 글에 남기도록 하겠다. 오늘도 쓰다 보니 무척 길어지는 듯..ㅋ 하지만 더 잊혀지기 전에 꼭 정리해보고 싶다. 참고로 함께 근무했던 선후임들은 대부분 이름있는 회사에서 기량을 뽐내고 있음..ㅋ 자랑스러운 친구들이다.

To be continued..

>_



-- My Story ---------------------------------------










---------------------------------------------------