데이터이야기

DB 노하우, 데이터직무, 다양한 인터뷰를 만나보세요.

단무지의 죽은 프로젝트 살리기 4회 : 분석과 설계

데이터 이야기
작성자
dataonair
작성일
2015-10-20 00:00
조회
4337


단무지 시즌 3: 단무지의 죽은 프로젝트 살리기 4회 : 분석과 설계

분석과 설계



들어가면서
프로젝트 맛도 보지 못한 단무지 과장이 대출시스템 재개발 프로젝트의 발주사측 PM으로 투입되었습니다. 단 과장은 걱정이 앞섰지만 데이터 모델링 부분의 개선이 필요한 프로젝트라는 점과 냉정해 차장의 적극 추천 등으로 참여하게 됩니다. 업계에 소문이 난 탄탄해시스템즈가 수주사로 선정이 되었으며, 지난 3편에서는 킥오프와 프로젝트 수행계획서 작성까지 완료하였습니다.

그런데 프로젝트가 시작되자 마자 리스크가 발생하기 시작합니다. 프로젝트에서 가장 중요한 역할을 맡고 있는 현업 담당자인 대출해 대리가 프로젝트 참여에 미온적인 입장을 취하고 있는 것이 첫 번째요, 수주사 측 2명의 PL 중 한명인 나허세 과장이 이름 그대로 허세 작렬로 허당의 냄새를 슬슬 풍기고 있는 점이 두 번째입니다. 이번 4편은 분석/설계에 대한 이야기입니다. 단무지 과장이 프로젝트를 어떻게 진행 시킬까요 산으로 보내 버릴지, 아니면 연착륙 시킬 것인지 독자 여러분과 함께 지켜 보도록 하겠습니다.



[등장 인물]

dbin_245.jpg

단무지 과장
잘나가은행의 과장으로 DBA다. DBA로서 DB 실력은 탁월하나 프로젝트 경험이 없다. 잘나가 대출시스템 재개발 프로젝트의 발주사 측(은행) PM(Project Manager)으로, 첫 프로젝트에 좋은 성과를 내기 위해 상황에 맞는 합리적인 판단을 내려고 노력을 한다.

dbin_246.jpg

문희만 부장
탄탄해시스템즈의 부장으로 이번 프로젝특의 수주사 PM이다. 탄탄해시스템즈는 SI(System Integration) 전문사로서 업계에서 인정받는 회사다. 문 부장은 프로젝트 경험은 많으며, 프로젝트의 상세 진행은 PL에게 위임하는 성격이다. 능력 있는 PL과 만났을 때는 좋은 성과를 내지만, 그렇지 않을 때는 프로젝트를 어렵게 꾸려간다. 정말 이름과 같이 무늬만 PM인 듯한 인사다.

dbin_247.jpg

홍두깨 과장
탄탄해시스템즈의 과장으로 잘나가은행 대출 시스템 재개발 프로젝트의 PL(Project Leader)이다. 정말 홍두깨 같은 인물이다. 파트원들과 노는 것만 같으나, 프로젝트의 매 중요한 순간의 결정은 전광석화 같이 빠르고 정확한 결정을 한다. 프로젝트 내내 자리에 앉아 있는 시간보다는 파트원들 책상 옆에 앉아 노닥거리는 시간이 더 많은 사람이다. 홍 과장 파트의 파트원들은 휴일 근무뿐 아니라, 시간외 근무도 하지 않는 정시 출퇴근 족이다. 하지만 이상하리만큼 마일스톤에 따른 매 일정에 정확한 산출물을 제공한다. 아마도 우렁각시라도 숨겨놓고 프로젝트를 하는 것 같다.

dbin_248.jpg

나허세 과장
탄탄해시스템즈의 과장으로, 잘나가은행 대출 시스템 재개발 프로젝트의 PL이다. 이름 그대로 허세 작렬이나 중요한 순간 순간을 놓치기 일수이다. 나 과장 파트는 PL의 능력에() 힘입어 프로젝트를 암흑 속으로 몰고 간다. 나 과장 파트의 파트원들은 매일 반복되는 야근에 휴일 근무까지 마다 안는다. 아무래도 나 과장은 파트원들을 수퍼맨 수퍼우먼들로 만들고 있는 듯 하다. 나 과장의 파트원들은 나 과장을 ‘직장의 신’이 아닌 ‘진작에 신’으로 만들어 버리고 싶어한다. 요컨대 신이 이승에 있는 것이 아니듯이, 신이 있는 곳으로 보내고 싶어 하는 것이다.

dbin_249.jpg

대출해 대리
잘나가은행의 대출팀 대리다. 이번 프로젝트를 위해 현업에서 파견된 직원으로 대출업무에 오랜 경험을 갖고 있으나, 전산에 대한 개념이 약한 직원이다. 어려운 상황에 봉착했을 때 위기를 약자에게 돌리는 얍삽한 성격의 소유자다. 낮은 책임감과 갑으로서의 권위주의적 성격으로 프로젝트 구성원들을 다양한 ‘기법’으로 힘들게 한다. 아마도 대출해 대리의 조상은 먼 나라 이웃나라에서 넘어온 것이 아닐까 의심이 되는 인사다.



소(개팅)녀와의 한판 전쟁! 청춘사업의 시작

단무지의 휴대폰에서 알람 소리가 요란하게 울리고 있다. 뚝심 있는 천하의 단무지가 이기지 못하는 것이 2가지가 있는데 하나가 벌써 과거의 연인이 되어 버린 정지연이고 또 하나가 아침을 깨우는 알람 소리다. 알람은 5분 단위로 5번을 맞춰 놓았기 때문에 알람이 울리기 시작하면 일어나지 않고는 배겨낼 재간이 없다. 얼마 전 알람과의 전투에서 3번을 싸워 이기고 '보무도 당당하게' 잠을 자다 지각하는 낭패를 본적이 있던 단무지. 최근에는 알람을 5번으로 늘려놨다.

첫 번째 알람 소리가 맹렬이 새벽을 가른다. “벌써 아침인가 방금 전 잔 것 같은데” 그리고 스마트폰의 알람을 우측으로 밀어 껐다. 평상시 알람과는 좀 다르다는 것을 느끼며 다시 눈을 붙였다. 헌데 이번엔 스마트폰이 말을 하는 게 아닌가 단무지는 비몽사몽간에 잠시 생각에 잠겼다. “이거 내가 젊은 나이에 헛것이 들리는 구나 냉정해 차장의 꼬임에 빠져 프로젝트에 참여해서 요즘 스트레스가 과했나” 라고 생각했다.

다시 스마트폰이 말을 걸어온다. “그래?! 올 것이 왔구나! 나도 사람인 이상 스트레스를 어찌 안 받을 수 있단 말인가 하지만 이를 어찌해야 한단 말인가 새벽부터 스트레스로 인한 ‘이명’ 증상으로 119를 부를 수도 없는 노릇이고~~~” 한참 생각에 빠져 있던 차에도 스마트폰은 귀찮게 계속 말을 걸어온다. “아~~~차 전화가 온 것이로구나” 통화 버튼을 누른 단무지의 귀에 익은 목소리가 들려온다. 단무지는 벌떡 일어났다. IT 분야에서 일하는 사람이 새벽에 전화를 받고 벌떡 일어날 때는 두 가지다. 전산 장애이거나, 정신 장애이거나. “야? 단무지? 너 전화도 안 되고. 뭐 하는 놈이야 너 나랑 사생결단 한번 낼래 내가 어떻게 마련한 자리인데. 나 우리 마누라한테 쫓겨나면 니가 책임질래” 휴대폰 너머 사람은 단단히 화가 나 있었다. 단무지는 얼른 시계를 봤다. "이크~~~ 벌써 9시네." 오늘은 절친 붕구 놈이 소개팅을 해준다는 날이었다. 약속은 8시인데 지금은 9시. 일찍 퇴근해서 준비하고 나간다는 것이 그만 깜박 잠이 들어버리고 말았다. 붕구 놈이 대신 소개팅녀와 붕구비어에서 대작하고 있단다. 총알같이 나갈 테니 조금만 기다려 달라고 대답을 하니 붕구 놈은 “됐다. 오지 않아도 돼. 내 애인 하기로 했다” 라며 목소리를 높였다. “야~ 임마! 니 마누라는 어케 하고. 마누라 친구를 애인으로 두냐 시끄럽고. 지금 출발한다. 잘 좀 달래고 있어봐.”

누구나 소개팅 자리에 가면 제일 먼저 상대방이 누구일까 상상을 하며 찾으려 노력한다. 하지만 오늘만큼은 애쓸 필요가 전혀 없다. 단무지는 소(개팅)녀는 단박에 알아 봤다. 오늘의 주선자이자 날벼락 맞은 붕구 놈과 같이 걸쭉하게 마셔대고 있었기 때문이었다. 붕구 놈은 소녀에게 쩔쩔매면서 연신 마셔댔다. 소녀 역시 꿀꺽 꿀꺽 맥주잔을 잘도 넘기고 있었다. 급한 마음에 허겁지겁 달려온 단무지였건만 얼굴에 묘한 웃음마저 돌았다. 단무지는 소녀를 위아래로 스캔을 했다. 목을 살짝 가릴 듯한 깔끔한 단말머리에 무릎 위로 올라가 있는 스커트와 시원스레 뻗어 있는 종아리 그리고 하이힐이 눈에 들. 하필 오늘 같은 날 잠에 빠져 이런 시련을 맞이한단 말인가



붕구: 야 이~~~ XXX 쨔샤~~ 니가 지금~~~ 이 행님을 물 먹이냐단무지: 이거 정말로 죄송합니다. 단무지라고 합니다. 이 무례를 용서하시기 바랍니다.소녀: 안냐세요. 그대가 나를 바람 맞게 한 단순 무식한 놈 이세여~~~단무지: 죄송합니다. 제가 요즘 정신 줄 놓고 사느라 정말 죄송합니다. 오늘 술값은 제가 다 계산하겠습니다.소녀: 그럼 안 할라 그랬어여 이런 단순, 무식, 된장~~~단무지: (취했다는 핑계로 입 한번 걸지네~ 쩝) 아~~ 예소녀 : 후례자 세대라는 거 아시져 군자의 도를 아는 여자로서 매를 드는 것은 그렇고 자 술이나 석잔 드세요.단무지: 아~~ 네 알겠습니다.붕구 : 야~~ 늦었지만 인사해. 이상하게 내가 합석하게 됐는데, 이쪽은 우리 와이프 절친 한지아 씨.
그리고 늦게 온 이 불한당 놈은 단무지이고요. 무지 너 내가 지아씨를 애인 삼기로 했는데~
왜 이 중차대한 시점에 나타나는 겨단무지: 야 내가 정말 미안하다. 기왕 세 사람이 모였으니 술이나 한잔 하자.붕구: 됐다. 난 갈란다. 울 마누라가 기다린다. 오늘 같은 불금에는 자식 만들어야지.단무지: (그래~~~ 가라! 가~~) 잠시 좀 나가서 바람 좀 쐬시겠어요 한지아: 좀 전엔 바람을 맡고, 이젠 바람을 쐬야 하나요단무지: 아~~~ 하하하 지아 씨, 술 마셔서 불그레한 얼굴이 귀엽습니다.한지아: 작업하지 마세여. 단무지 씨는 오늘 땡입니다.단무지: (이거 제대로 까이는구먼. 오늘은 틀렸네) 아~ 네. 나가시죠. 술도 깰 겸 커피나 한잔 하시죠.



한지아는 바깥 바람을 맞자 술기운이 어느덧 가시는 것 같았고, 이내 예의를 차렸다. 커피숍 앞 테이블에 커피를 들고 앉았다. 가을 바람에 몸을 맡기니 상쾌한 기분이 들었다. 한지아의 이미지는 뒷모습과 그리 다르지 않았다. 빼어난 미모는 아닐 지라도 훤칠한 키와 시원한 마스크가 돋보였다. 그리고 그녀는 잘나가은행의 경쟁은행인 더잘나가은행의 카드사업본부 대출총괄 부서에서 카드대출을 담당하고 있단다.

단무지는 2년 전 아버지 병간호를 위해 멀리 유럽으로 떠나며 자신을 잊어 달라 했던 정지연을 생각하면 씁쓸하기 그지 없었다. 그렇게 사랑하던 사람도 2년이 지나고 나니 마음이 무뎌지기 시작하고 있었다.



단무지: 오늘 정말 미안했고, 즐거웠습니다. 이제 술기운은 좀 가셨지요한지아: 아~~ 네. 이제 술은 다 깼어요. 저도 즐거웠어요. 단무지: 네. 조심해서 들어 가십시오.한지아: 네. 그럼 조심해서 들어가세요. 아~~참. 실수는 한번 뿐이라는거 아시죠
설마 두 번의 실수는 안 하시겠죠
단무지: 그게 무슨 말씀이신지한지아: 만날 때 늦은 것은 첫 번째 실수이고요.
헤어지면서 전화번호도 묻지 않는 것은 두 번째 실수가 되겠죠단무지: 무슨 그런 섭섭한 말씀을... 방금 물어 보려 했습니다. 하하...
전화번호 좀 알려 주시겠어요 전 오늘 퇴짜 맞을 각오 하고 있는 중입니다.한지아: 잘 아시네요. 전화번호는 안 가르쳐 드리고 싶네요. 안녕히 가세요.단무지: (쩝~~~ 혹시나 했는데 역시나 군)



다음날 붕구를 통해 한지아의 연락처가 도착했고, 다음에 또 만나자며 전화하라는 이야기를 들었다. 그리고 단무지의 청춘 사업에도 중흥기가 도래하고 있었다.



귀신 씨나락 까먹는 소리 '현재 시스템과 똑 같이!'

홍두깨 과장은 나허세 과장과 대출해 대리가 요구사항 정의를 하도록 두고, 잘나가은행의 표준 아키텍처 분석을 진행했다. 단무지 과장에게 부탁해 아키텍처 담당자와의 인터뷰를 통해 아키텍처를 파악할 수 있었다. 그리고 잘나가은행의 아키텍처와 각종 프로세스 및 표준화 문서를 받아서 챙겨놨다. 향후 개발단계에서 개발자들이 투입되면 잘나가은행의 아키텍처에 맞게 개발 할 수 있도록 가이드라인을 줘야 하기 때문이다. 그래야 개발 완료 후 수정이 적어진다. 또한 개발자들의 시간외 근무를 줄일 뿐 아니라, 시스템의 품질을 높일 수 있는 길이기도 하다.

그런데 이상한 것이 있었다. 요구사항 정의를 위해 나허세 과장과 대출해 대리가 회의실에서 계속 밀당을 해야 할 상황인데, 나허세 과장은 자리를 굳건히 지키고만 있다. 마치 자리를 비우면 책상이 빠지는 것을 두려워하는 것처럼 보일 지경이었다. 그리고 대 대리는 도통 프로젝트 사무실에서 볼 수가 없었다.



홍두깨 과장: 나 과장. 대 대리는 사무실에 없네 요구사항 정의는 잘 되어가고 있나 나허세 과장: 어 그거 거의 끝났어 할 것도 없더구만 우리가 맡은 대출 상품관리와 대출 실행 부분은 끝이 났어.
이제 자네가 맡은 청구.결제와 대출관리 부분만 끝을 내면 될 거야.홍두깨 과장: 이 무슨 귀신 씨나락 까먹는 소리야 어떻게 요구사항 정의를 4일만에 끝날 수 있어나허세 과장: 어~~ 사실. 30분 만에 끝났어홍두깨 과장: (뜨~~~악 도대체 이 화상이 무슨 짓을 저지른 거야 도대체 자기가 저지른 만행을 알기나 하는 거야 )나허세 과장: 현재 시스템하고 똑같이 해 달래. 그래서 난 알았다고 하고 끝을 냈어.
이제 AS-IS(현 시스템) 분석만 하면 될 것 같아.홍두깨 과장: 그럼 요구사항 정의서는 받았어나허세 과장: 그게 무슨 필요가 있어 현재 시스템과 똑같이 해 달라고 이야기 했으면
현재 시스템이 요구사항 정의서지.홍두깨 과장: 자네 분야는 자네가 PL이니 알아서 해. 대신 프로젝트 후반부에
지난번처럼 나한테 도와 달라고 하면 이번엔 국물도 없어나허세 과장: 이번엔 절대 안 그런다에 내 손가락을 걸지. 하하~홍두깨 과장: (아이구 이 화상아~~~ 그 놈의 손가락이 남아 있는 것이 있기나 해)나허세 과장: 이번엔 믿어 보라고. 대출 분야는 내가 전문가 아닌가.홍두깨 과장: 대출 받는 거 말고. 대출시스템 구축하는 거 말야.나허세 과장: 그게 그거 아닌가 대출을 많이 받아봤으니, 그만큼 대출에 빠삭한 거야.홍두깨 과장: (이번에도 영락없이 저 놈의 일까지 내가 맡아서 해야겠구먼.
문희만 부장에게 이야기 해 봤자 해결책이 없을 것이고. 차라리 저 허당놈을 내 아래에 두면
들들 볶아서라도 이것 저것 시킬 텐데. 그러지도 못하는 상황이고... 할 수 있나
미리미리 우리 파트 일을 끝내놔야겠구먼. 이 놈의 팔자야! 나허세 없는 아름다운 세상에 살고 싶다~~)



홍 과장은 나 과장과 같은 프로젝트를 진행한 것만 벌써 세 번째다. 나 과장은 앞의 두 프로젝트때도 지금과 같이 호언장담을 했으나, 결과는 호언장난으로 끝을 맺곤 했다. 항상 끝에는 홍 과장이 나 과장이 맡은 영역을 처리해 줘야 했다. 당최 신뢰라고는 찾아 볼래야 볼 수가 없는 인사다. 이번 프로젝트는 다른 사람과 같이 참여해야 한다고 문희만 부장에게 수 차례 이야기 했으나, 소용이 없었다. 사람 좋기만 한 문 부장은 홍 과장의 이야기를 꿀꺽 삼켜버리고 위로는 보고조차 하지 않았다. 프로젝트 막바지에는 자신의 앞가림만 하기도 바쁜 상황인데, 나 과장의 뒤까지 닦아주며 일을 한다는 것이 보통 힘든 게 아니다. 회사를 다른 곳으로 옮겨 볼까도 생각했지만, 자신을 믿어주고 이것 저것 챙겨주는 본부장 및 부사장에게 차마 사직서를 내밀 용기가 없었던 홍 과장이다.

프로젝트가 산으로 갈 때 초반의 대표적인 증상은 현업이 하는 말이다. 기능 요구사항을 정의할 때는 “알아서 해 주세요. 한두 번 한 것도 아니잖아요.” 성능 요구사항을 정의할 때는 “탁 하고 누르면 턱 하고 나오게 해 주세요.” 고객 입에서 “알아서 해 주세요” 와허세와 대출해가 담합해서 한 짓이 바로 “현재 시스템과 똑 같이 알아서 해 주세요.” 인 것이다. 처음부터 나 과장의 영역까지 나설 수도 없고, 나허세는 자기가 알아서 하겠다고 허장성세이니 타는 속을 진정시킬 수 있는 방법이 없다. 홍두깨는 두 눈을 찔끔 감았다. '그래도 내가 맡은 역할 만은 제대로 해보자. 어차피 책임은 PM인 문 부장이 질 것 아닌가'



홍두깨 과장의 고군분투 "현업과의 조율을 부탁해'

단무지, 홍두깨 그리고 대출해가 회의실에 앉아 청구/결제 부문의 요구사항 정의를 시작하고 있다. 힘들고도 어렵게 마련한 자리이다. 홍두깨가 대출해에게 요구사항 정의를 위한 회의를 하자고 2번을 요청했으나, 바쁘다는 핑계로 3일을 미룬 후 다시 단무지의 요청으로 회의를 하게 된 것이다.



홍두깨 과장: 대 대리님. 요구사항 정의서는 만들고 계신거죠대출해 대리: 요구사항 정의서요 그게 뭐죠홍두깨 과장: 아~~ 네. 시스템에 대해서 어떻게 만들어 달라는 업무 기능에 대한 것을 정의해 놓은
문서입니다. 형식은 상관 없습니다. 대 대리님께서 이번 대출시스템에 반영하고 싶은 요구사항을
문서로 작성하면 됩니다.대출해 대리: 그게 왜 필요하죠 현재 시스템과 똑같이 만들어 달라고 나 과장님께도 말씀 드렸는데요
나 과장도 아무런 얘기 없던데요. 이런 이야기 물어 보시려면 저는 앞으로 회의 안 들어 오겠습니다.홍두깨 과장: (허허~~~ 이거 할 일도 안하고 오히려 배짱으로 나오는 구만! 너 같은 놈 많이 봤다.
장사 한 두 번 하냐) 요구사항 정의서가 없다고 하시니 앞으로 프로젝트 진행에 지장이 많을 것
같습니다. 하지만 이번 프로젝트만큼은 유능한 대 대리님을 믿고 그냥 진행해 보도록 하지요.
하하~ 대신 당분간은 매일 회의를 진행하시죠. 제가 문의를 하고 대 대리님이 답변해 주시면
그걸 요구사항 분석서로 작성하도록 하겠습니다. 작성이 완료되면 그걸 확인하신 후 확정만 해 주세요.
우선 청구 부문부터 진행해 나가는 걸로 하죠 청구서는 보통 결제일 며칠 전까지 고객에게 배송 되야 하나요
그리고 고객에게 청구서를 발송하는 채널이~ 그러니까 이메일, LMS, 모바일 등 몇 가지인가요대출해 대리: 음~ 일단 고객에게는 1주일 전까지 발송하면 됩니다. 그리고 발송 채널은
우편이 있고, 이메일이 있습니다. 아~~~ 그리고 모바일은 계획은 되어 있지만, 현재로선 사용하지 않고 있어요.홍두깨 과장: 모바일은 우리 프로젝트 범위에 없는데, 나중에 개발하시겠군요대출해 대리: 어~~~ 그런가요 이번에 들어가기로 되어 있는 줄 알고 있는데요
이왕 개발하기로 한 것, 이번에 같이 개발해 주시죠홍두깨 과장: 음~~ 그렇군요. 그런데 어쩌죠 이번 프로젝트 범위에 없기 때문에
개발 공수 산정이 되어 있지 않아서요. 다시 말하자면 모바일 개발을 하려면
개발자를 더 투입해야 하는데 현재 인력으로는 쉽지 않을 것 같은데요.단무지 과장: 대 대리. 좀 전에는 현재 시스템과 똑 같이 해 달라고 했잖아 그리고 이건 프로젝트 범위 밖이야.대출해 대리: 하는 김에 조금만 더 개발하면 되는데 같이 하면 좋잖아요. 난다 긴다 하는
프로 개발자들이 다 들어왔는데, 저희 모바일 시스템에 까짓 화면 몇 개 더 넣는 건데 그렇게 힘든가요.



이때 단무지가 인자해 부장의 전화 호출을 받고 잠시 자리를 비웠다. 단무지가 자리를 비우자 대출해의 자세가 삐딱해 진다. 그리고 마치 홍 과장을 아래 사람 다루는 듯한 태도로 돌변해 버렸다.



홍두깨 과장: 프로젝트 범위를 늘리는 문제는 저도 제 권한이 아니라 다시 협의를 해 봐야 할 것 같습니다.대출해 대리: 이봐요. 홍 과장님. 이거 프로끼리 왜 이러시나. 저희 팀장님께 보고된 사항입니다.
그냥 넣어 주세요. 모바일 청구가 없으면 프로젝트가 끝나도 검수 사인 못해 드립니다.홍두깨 과장: 일단 알겠습니다. 이 문제에 대해서는 추후 책임 있는 담당자들과 모여서
다시 이야기 해 보시죠. 그리고 청구에 대한 문의를 더 드리겠습니다.대출해 대리: 그게 무슨 말이요 그냥 해 주신다고 하면 되는 걸 가지고...
그리고 지금 바빠서 올라가 봐야 해요. 자세한 요건은 현재 시스템 분석해서
똑 같이 해 주세요. 나 과장님과도 그렇게 협의 했으니, 우리도 그렇게 합시다. 홍두깨 과장: (이쯤 나오면 달리 방법이 없다. 이런 된장? 사면초가이구먼. 니 맘대로 하세요)



'산으로 올라간' 요구사항

프로젝트 요구분석 단계에서 대출해 대리를 만나기란 하늘의 별 따기 보다 어려웠다. 할 수 없이 홍두깨는 AS-IS 화면을 분석하고, 복잡한 부분은 현재의 개발 프로그램을 분석해 가며, 요구사항 분석서를 완료 했다. 나허세 과장도 나름 열심히 하는 것 같았다. 홍 과장과 같은 방식으로 기존 화면 및 소스코드를 분석해 가며 요구사항 분석서 작성을 끝냈다. 문제는 분석한 것을 발주사에서 확인해 줘야 하는데, 대출해 대리가 말썽이었다. 요구사항 분석에 대한 설명을 하려 해도 참여를 하지 않았다. 대출해의 행패는 이 뿐만이 아니었다. 요구사항 분석서를 보낸 지 일주일이 지났는데도 확정을 하지 않는 것이었다. 확정이 아니라 아직 들여다 보지도 않았다. 이쯤 되면 과거 단순! 무식! XX! 의 대가였던 단무지가 폭발할 만도 한데 이상하리 만큼 단무지는 싱글벙글 웃기만 했다. 뭔가 나사 하나 빠진 모양새다. 조만간 머리에 꽃이라도 꽂을 기세다.



홍두깨 과장: 단 과장님. 대출해 대리가 요구분석을 확정하지 않고 있어요.
더 이상 미루게 되면 프로젝트의 이슈로 다루어야 합니다.
(리스크는 발생하지 않은 위험이고, 이슈는 이미 발생한 위험을 말한다.)단무지 과장: 아~~~ 그렇지요. 사실 그게 가장 큰 이슈인데요. 이제 설계 단계로 넘어가시죠.
이미 홍 과장님은 많은 부분에서 설계를 진행하고 계시잖아요.
요구분석서는 제가 사인해 드릴께요. 대 대리 믿고 있다간 되는 게 하나도 없을 것 같습니다.홍두깨 과장: 흠~~~ 원래 요구분석서 확정은 현업에서 해야 되는데요.
단 과장님이 서명하시겠다고 하면 그렇게 하겠습니다.
대신 개발 완료되고 나서 대출해 대리가 다른 말 하면 단 과장님이 막아 주셔야 합니다.단무지 과장: 네 알겠습니다. 어쩌겠습니까



설계단계(데이터 모델링: Bottom-up)

프로젝트 초반 PM인 문희만 부장과 PL인 홍두깨 과장, 나허세 과장 그리고 일부 분석가들로만 이루어진 팀이 설계 작업에 들어가면서 일부 고참 개발자들도 뒤를 이어 참여했다. 그리고 화면 설계서, 프로그램 설계서를 작성하기 시작했다. 그리고 단무지는 기존 ERD(Eentity-Relationship Diagram)에 요구사항 분석서를 가지고 사투를 벌이고 있었다. 단무지는 프로젝트 시작 전 현재의 ERD 분석을 했는데도, 다시 보니 새롭기 그지 없었다.

데이터 모델링은 Bottom-up 방식으로 진행하기로 결정했다. Bottom-up 방식은 제일 하단인 액션 엔터티를 시작으로 키 엔터티까지 찾아 올라가는 방식으로, 기존 Top-Down 방식의 반대 방식이다. Top-Down은 새로운 데이터 모델을 설계할 때 사용하는 방식이며, Bottom-up은 존재하는 데이터 모델을 바로 잡을 때 진행하는 방식이다. 먼저 1. 주제 영역별로 분리를 한 후 2. 주요 엔터티를 분류했다. 언터티의 개수는 1,000개가 넘게 존재하지만, 실제로 많이 사용되는 엔터티는 100개 미만이기 때문이다. 일단 현 시스템의 DB에서 v$sql과 v$plan_table을 조인하여 주로 사용되는 테이블을 찾아 냈다. 역시 100개가 조금 안되었다. 그리고 3. 하위 엔터티의 본질 식별자부터 찾아 나가기 시작했다. 전체적인 엔터티 관계를 정확히 만들어 나가기 위해서다. 동시에 관계를 명확히 하기 위해 4. 인조식별자와 본질식별자가 잘못 사용된 것을 잡아 나가는 작업도 병행했다.

정말 엉망이었다. 특정 주제영역의 엔터티는 액션 엔터티에도 무조건 일련번호를 붙인 인조식별자를 사용하고 있었다. 도대체 어떤 인간이 모델링을 이런 식으로 했단 말인가 현 시스템을 설계했던 사람이 옆에 있으면, 손가락 사이에 볼펜을 끼워 놓은 상태에서 양쪽 손가락을 꽈~~~악 힘주어 누른 후 식별자 확정에 대해 2시간쯤 설명해 주고 싶은 심정이었다. 현 시스템 DB를 설계한 인간은 아마도 불쌍한 인간일 것이리라. 본인의 무지함을 모르니 창피한 줄도 모르지 않겠는가 사실 잘나가은행의 시스템도 뒤져보면 이런 식으로 모델링 되어져 있는 DB들이 많이 있을 것이다.

이어 단무지는 5. 관계의 적정성에 대한 판명을 진행해 나갔다. 어떤 엔터티는 부모-자식이 뒤 바뀌어 구성되어 있는 관계도 있었다. 기가 막힐 노릇이었다. 하지만 어쩌랴... 이 또한 우리 회사의 자산인데. 아끼고 사랑해야 하지 않겠는가 잘못된 부분을 수정하여 재 개발이 완료되고 나면 데이터 품질도 좋아 지리라. 6. 속성이 자신이 위치해야 할 엔터티에 제대로 들어가 있는지도 꼼꼼히 확인했다. 많은 속성들이 부모 엔터티에 위치해 있었지만, 반대의 경우가 정말 많았다. 이때는 7. 정규화 규칙을 철저히 머리 속에 두고 진행하였다. 자칫 데이터 모델링 고수들도 속성의 위치에 대해 실수하는 경향이 있다. 이때 반드시 정규화라는 기준을 두고 진행하면 실수가 적어진다.

논리 모델링이 완료되어 갈 즈음 단무지는 고민에 빠져 들었다. 거의 모든 메인 엔터티에는 무조건 이력을 쌓고 있었다. 이력이 필요한 항목은 그리 많지 않아 보였다. 필요한 것만 이력을 쌓도록 하고, 과거 이력을 버릴 것인가 아니면 현재처럼 만들어 둘 것인가 이를 위해 현업 담당자인 대출해 대리와 상의해야 하는데, 지금은 대출해의 얼굴 마져 잊어버릴 지경이었다. 단무지는 결정했다. 1. 과감하게 이력은 정리한다. 필요한 엔터티에만 이력을 가져가도록 설계하자는 것이다. 2. 데이터 이관 시 과거 데이터는 혹시 필요할 수도 있으니 적당한 임시 테이블에 보관해 놓는다. 마지막으로 무슨 일이 있어도 3. 현업에게 확답을 받고 넘어가야 한다.

단무지는 마지막으로 공통코드 엔터티를 구성했다. 코드가 너무나도 여기저기 산재해 있었다. 별도의 엔터티로 구성해 줘야 할 키 엔터티성 코드 엔터티는 모두 구성이 완료된 상태다. 이제는 불필요하게 별도의 엔터티를 차지하고 있는 코드들을 한데 모았다. 코드 종류를 분류하는 코드 종류 엔터티를 만들었다.

상세 코드들은 단계가 다양했다. 코드와 코드명으로 단순 구성된 것부터 대분류, 중분류, 소분류로 3단계로 구성된 것 등 다양하게 존재했다. 이를 위해 코드 엔터티는 재귀관계로 엔터티를 만들었다. 코드, 코드명으로 구성되어 있는 것은 1단계만 존재할 것이며, 대-중-소 분류는 3단계로 구성되도록 설정했다. 또한 각 업무별로 다르게 사용하는 코드를 위해 파생코드 엔터티를 만들었다. 예를 들면 이런 것이다. 대출실행 업무에서는 고객의 연체 상태에 대한 코드는 “01.정상”, “02.연체” 2개만 필요하다. 하지만 연체관리 엔터티에서는 “01.정상”, “03.단기연체”, “04.중기연체”, “05.장기연체”로 구분한다. 따라서 파생코드 엔터티에서 업무코드를 분리해 업무별로 2개의 코드만 사용할지 아니면 4개의 코드를 사용할지 분류할 수 있게 해 준다.

단무지는 얼추 논리 데이터 모델링은 완료가 되었다고 보고, 물리 데이터 모델을 진행하면서 반정규화 및 IoT 구성 테이블, 파티션 구성 테이블 및 인덱스 설계까지 완료했다. 인덱스는 현재 시스템에서 수행되고 있는 SQL을 참조해 최소화해 구성했는데, 개발이 진행되는 단계를 보아 추가해 설정하기로 했다. 데이터 설계의 마지막은 데이터 이관에 대한 매핑 룰을 작성하는 부분이다. 이는 개발 단계에서 진행하기로 하고, 이쯤에서 단무지는 설계를 마무리 했다.

데이터 설계 최종본을 홍두깨 과장과 나허세 과장에게 전달해 주었다. 이상한 점은 나허세 과장의 반발이 거셀 것이라 예상했으나 데이터 설계를 보고 나서 나 과장은 별 말이 없었다. 그리고 홍 과장도 별 이견이 없었다. 이제 프로젝트도 두 달여가 지나고 있었다. 단무지 과장은 프로젝트 설계가 완료되는 시점에 진행하기로 했던 중간발표를 준비해 달라고 문희만 부장에게 이야기 했다. 이미 프로젝트 수행계획서에 들어가 있는 내용이라서 문 부장은 별 말이 없다.



빅데이터에 대한 단무지의 곁눈질

금요일 저녁 단무지는 한지아와의 즐거운 시간을 보내고 집에 들어왔다. 둘은 토요일에 주로 만났는데, 이번 주말은 한지아가 부모님과 함께 할아버지 댁에 다녀와야 하는 관계로 금요일에 이루어졌다. 단무지는 한지아가 내어준 이번 주말에 기초통계학에 대해 공부하기로 했다. 최근 일고 있는 빅데이터의 바람이 단무지에게도 불어온 것이다. 빅데이터 분석의 기본인 통계를 알아야 했다. 과거 DW의 분석은 단순히 합계와 평균 값을 내 주는 것이 전부였다면, 빅데이터는 방대한 데이터를 통계학적으로 분석해서 주는 영역까지 필요했던 것이다. 데이터 사이언티스트가 아닌 IT 영역에서는 깊이 있는 통계학까지는 아닐지라도 기초통계까지는 알아 두어야 했다.

기초 통계를 명확하게 구분하기는 쉽지 않지만, 일반적으로 경영학과 학생들이 배우는 기초통계 정도라 생각하면 될 것이다. 통계의 기초 개념, 이산확률분포, 연속확률분포, 추정, 가설검정, 분산분석, 카이제곱 검정, 회귀분석, 상관분석까지를 배우는 것이 일반적이다.

얼마 전 이산확률분포까지 공부를 하다 한지아를 만난 이후로는 더 이상 진도를 나가보지 못했다. 이번 주말에는 연속확률분포까지 진도를 뽑아 정규분포를 반드시 이해 해야겠다고 생각했다. 그리고 올해 남은 석 달 동안 기초통계를 완료하고, 내년에는 통계 패키지 “R”과 그 유명한 Hadoop을 만져 보리라.



오 신이시여~ 어찌 하오리까

한지아와 데이트를 마치고 빅데이터 관련 이러 저러한 생각을 하다 밤 12시가 된 줄도 모르고 있던 단무지. 이때 갑자기 스마트폰이 울린다. “무지씨. 혹시 잠든 건 아니죠” 스마트폰은 명랑한 여자의 목소리를 들려 주었다. 그리고 잠시 정적이 흘렀다. 단무지가 대답 해야 할 차례다. 그런데 수화기 넘어 저쪽 목소리의 정체가 분명치 않았다. 분명 낮이 익은 목소리 인데

그리고 잠시 단무지의 뇌 속에 있는 인덱스를 바쁘게 검색했다. 1. “목소리”라는 키 값으로 Index Unique Scan을 했다. 그리고 2. RowID(해당 레코드를 찾아가기 위한 주소)를 찾아 냈다. 3. 찾아낸 RowID를 이용하여 냉큼 Table에서 정확한 블록을 Random I/O로 찾아냈다. 찾는 과정이 조금 오래 걸렸던 이유는 DB Buffer Cache에 존재하지 않고, Disk에서 찾아 Cache에 올리는 과정을 거쳤기 때문이다. 아무래도 최근 듣던 목소리는 아닌 듯 했다. Disk에서 읽는 동안 “db file sequential read”라는 wait event 가 발생했다.

단무지는 대답을 못하고 잠시 버벅대고 있었다. 그리고 이내 확인할 수 있었다. 명랑한 여자 목소리의 주인공은 단무지를 떠나 버린 첫사랑 정지연의 목소리였다. 단무지의 가슴은 요동치기 시작했다. 첫사랑 정지연의 목소리를 들었다는 환희와 함께 한지아의 얼굴이 잠시 교차 했던 것이다.



정지연: 뭐야~~~ 벌써 나 잊었어요단무지: 그~~ 그~~ 그럴 리가 있나 정지연: 나 지금 공항이야. 지금 인천행 비행기 막 타기 직전 이예요.
내일 12시에 인천공항 도착해요.정지연은 마치 어제 만났던 사 만난 것이 벌써 2년이 훌쩍 넘어 3년이 다 되어 가는데도 말이다.단무지: (내가 꿈꾸는 건 아니지) 어~~~ 정말
내가 나갈게. 모시러 가야지 아버님 건강은 부모님은 같이 오시나
이제 다시 안가도 돼정지연: 무지씨. 하나씩만 물어봐야지. 자세한 얘기는 만나서 얘기해요. 이번엔 나 혼자 들어가단무지: 어~ 그래. 내일 봐



단무지는 시계를 봤다. 그리고 순간 멍 해 졌다. 뛰는 가슴과 함께 이제 막 시작한 한지아와의 사랑이 묘하게 Trade-Off 관계를 이뤘다. 이는 서브타입을 많이 표현하면 명확성은 높아지는 대신 복잡성이 증가하는 관계와 같은 상황인 듯 했다. 단무지는 모델링 할 때 명확성과 복잡성 사이에 적지 않은 고민을 하곤 했다. 하지만 이 상황은 그 정도의 고민으로 끝날 상황이 아니라는 것을 단무지는 직감했다. 단무지는 밤새 한숨도 못 자고 아침을 먹는 둥 마는 둥 마쳤다. 그리고 이내 차를 몰아 인천공항으로 향하고 있었다. (다음 회에 계속)



출처 : 한국데이터베이스진흥원

제공 : 데이터 전문가 지식포털 DBguide.net