이전 회사에서는 총 4개의 프로젝트를 진행하였고 이에 대해서 정리를 해보려고 해요. 2022년 03월 프론트엔드 서비스부서에 입사하게 되었고 수습 3개월의 OJT 기간동안에는 같은 달에 들어왔던 동기들과 직장 선배님들의 도움을 받아 관리자 시스템을 개발하였죠, 그렇게 3개월이 지난 후 '한화생명 코어 프로젝트' 첫 프로젝트를 들어갔었죠.
HCS에는 생명보험, 손해보험, 운영비, 수수료 지급 등의 20개가 넘는 수수료 시스템이 존재합니다.
제가 한화생명에서 담당했던 파트는 HCS인 수수료 시스템에요
HCS에는 생명보험, 손해보험, 운영비, 수수료 지급 등의 20개가 넘는 수수료 시스템이 존재합니다. 수습기간에 진행했던 OJT 프로젝트 외 개발자로서의 첫 업무라 무척 설레이고 떨렸었죠 아직도 63빌딩 엘레베이터를 타고 제가 업무를 해야하는 층까지 가는 길이 생생하게 기억이 나네요. 업무 컴퓨터는 총 2대가 있으며 보안을 위해 인터넷이 되지 않는 본체 1대, 그 외 본체 1대 이렇게 총 2대의 컴퓨터로 업무를 진행했어요. 들어가서 가장 먼저 했던 일은 현재 HCS 프로그램의 구조를 파악하며 이 업무를 왜 해야하는지 알아야 했던 것이 1순위라고 생각했어요. 이렇게 저의 첫 업무가 시작되었죠.

제가 담당했던 '수수료 관리 시스템' 파트는 한화 생명에 소속되어있는 모든 FP(보험설계사) 분들에게 수수료를 지급하는 것이 궁극적인 목표에요. 매 월 기간내에 지급되는 시스템을 관리하고 보험 약관에 맞춰 새로운 기능을 개발하고 보수를 하였으며 또한 리뉴얼 개발로 인한 차세대 시스템을 개발하였고 Core에서 받아오는 데이터를 위한 시스템을 개발하며 각 수수료 지급에 관한 페이지를 개발하였죠.
수수료 지급을 '지급의뢰' 라고 했으며 매 월 특정 일자에 해당 배치 프로그램을 실행시켜요. ETL 프로그램을 통하여 월 자동배치가 실행되긴 하지만 수수료 데이터가 변경될 수 있기에 수기로 배치를 실행시키기도 해요. 그러면 이 안에서 가장 중요한 것은 뭘까요? 당연히 FP분들에게 정확한 금액의 수수료가 지급될 수 있도록 검증을 해야하죠. 그렇기 때문에 프로세스에 이상이 전혀 없고 완전해야 해요.
그러면 제가 하는 일을 명확히 알게됐으니 어떤 업무를 했는지 알아보죠.
위에서 말했다시피 지급의뢰가 저의 업무에 있어서 1순위였죠. 코어 시스템을 구축하고 시스템 개편을 한다 하더라도 기존 시스템을 이용하여 그대로 지급의뢰는 실행되어야 하죠. 어떻게 보면 담당 업무가 두가지(운영, 신규개발)였죠. 보험약관은 생각보다 자주 변경된다는 것을 해당 프로젝트에서 알게되었어요. 보험 약관으로 인한 오라클 프로시저 수정요청이 들어오면 PL_SQL을 수정하였고. 신규 지급의뢰가 추가될 경우 새로운 배치 인터페이스를 만들고 해당 지급의뢰에 관한 페이지를 만들었어요.
오라클 프로시저란? 오라클 프로시저는 Oracle 데이터베이스에서 사용하는 PL/SQL(Procedural Language/SQL) 기반의 `저장 프로시저(Stored Procedure)`입니다. 자주 반복되는 데이터베이스 작업을 하나의 블록으로 묶어두고 필요할 때마다 호출하여 실행할 수 있도록 만든 함수처럼 동작하는 SQL 코드의 집합입니다.
1// 프로시져 예시 2CREATE OR REPLACE PROCEDURE 프로시저이름 ( 3 매개변수명 IN 데이터타입, 4 매개변수명 OUT 데이터타입 5) 6IS 7 -- 변수 선언 8BEGIN 9 -- 실행할 SQL 문 10EXCEPTION 11 -- 예외 처리 12END;
기존 ETL 프로그램을 청산하고 신규 ETL 프로그램을 도입하였어요. 여기서 추가로 Core에서 들어오는 데이터 수집을 위한 기존 HCS 테이블, 컬럼명 변경으로 인해 신규 배치 프로세스를 구축해야 했죠.
수수료 지급의 ETL 프로그램은 JopPass와 TeraStream을 이용하여 데이터를 받아왔어요.
- TeraSteream 이란? 고성능 데이터 통합 ETL 솔루션으로 대용량의 데이터의 추출, 변환, 적재 과정을 효율적으로 처리할 수 있도록 해주는 프로그램이에요. - JopPass 란? 자동화 관리 솔루션으로 배치, DBMS, 파일 송수신 작업 등을 도와주고 있는 프로그램이에요.
받아오는 방식은 총 두가지로 DD(DB to DB), FD(File to DB) 방식이 있죠, 즉 한화생명에서 데이터 파일을 전송해 주면 프로그램을 실행하여 수수료 시스템에 데이터를 적재하고 수수료 계산 로직을 이용하여 수수료를 산출하고 ERP로 전송하는 것이 최종 작업이죠 수수료의 흐름을 정리해보면
1. 데이터 파일 전송 2. ETL 프로그램을 이용하여 데이터 적재 3. 해당 지급 수수료 유형에 맞는 프로시저 실행 4. 지급될 금액과 데이터 검증 5. 데이터 검증 및 결재 후 수수료 지급
이러한 단계를 거치고 있어요. 제가 여기서 진행하고 담당했던 부분은 차세대 프로젝트 환경에 맞게 각 지급유형별 수수료 계산 프로시저를 개발하고 배치 시스템 및 인터페이스를 개발하고 보험 정책 변경에 따른 유지보수, 데이터 마이그래이션 등 이렇게 보니 많은 부분을 진행하였네요. 배치시스템 인터페이스에는 일배치, 월배치가 있었으며 특정 스케쥴러 시간 혹은 직접 실행할 수 있었고 이는 SQL MERGE 사용하여 데이터를 적재하는 형식을 갖고 있어요
MERGE문이란? MERGE INTO Customer AS target USING CustomerUpdates AS source ON target.CustomerID = source.CustomerID WHEN MATCHED THEN UPDATE SET target.Name = source.Name, target.Email = source.Email, target.Phone = source.Phone WHEN NOT MATCHED THEN INSERT (CustomerID, Name, Email, Phone) VALUES (source.CustomerID, source.Name, source.Email, source.Phone); 이처럼 두 테이블 간의 데이터를 비교하여 조건에 따라서 INSERT, UPDATE, DELETE를 수행하는 문이에요. 위 예시의 쿼리는 기존 고객 정보가 있는 테이블 Customer, 새로운 고객 정보가 담긴 테이블 CustomerUpdates라는 테이블이 있다고 가정할 때 기존 고객이면 정보를 업데이트하고 없으면 새로 추가하는 쿼리이죠.
개발을 진행할 때 다행이도 AS-IS 버전이 존재하여 참고하여 개발했던 것으로 기억해요. 개발 업무에서 가장 중요한 것이 테스트 부분이라고 생각해요 내가 완벽하게 개발을 한다 가정을 하여도 나올 수 있는 것이 버그 및 이슈사항이며 다양한 방면으로 테스트를 해야하는 것도 첫 프로젝트 경험에서 얻을 수 있었죠.
한화생명 코어 프로젝트는 일정 연기가 두 번 정도 됐던 것으로 기억해요. 저희 수수료 관리 시스템 파트는 개발이 완료되고 테스트까지 모두 끝난 상태였지만, 다른 파트에서 예상치 못한 큰 이슈사항들이 발생하면서 오픈 연기를 요청했어요. 그렇게 몇 달을 더 기다린 후 드디어 대망의 오픈 날이 다가왔죠. 같은 팀원분들과 함께 새벽부터 나름의 긴장감을 가지고 준비했어요. 오픈 당일에는 모든 팀원들이 각자 맡은 부분을 점검하며 체크리스트를 하나씩 확인해나갔어요. 본격적인 배포가 시작되면서 하나하나 본 서버에 반영을 시작했고 가장 중요한 데이터 마이그레이션 작업을 신중하게 진행했어요. 제가 개발했던 인터페이스와 지급의뢰 페이지들이 차례대로 올라가는 모습을 지켜보며 마음이 조마조마했죠. 시스템이 안정적으로 올라간 후에는 한화생명 현업 직원분들이 실제 업무 데이터로 테스트를 진행하시는 동안 저희 개발팀은 최종 기능 테스트와 모니터링을 병행했어요. 실시간으로 로그를 확인하면서 혹시나 하는 오류가 없는지 긴장의 끈을 놓지 않았죠. 다행히도 오픈 이후 큰 이슈사항 없이 모든 기능들이 정상적으로 작동했고 며칠간의 안정화 기간을 거쳐 정식으로 서비스를 오픈하게 되었어요. 그동안의 고생이 보상받는 순간이었죠.
저는 회사 내부에서 부득이하게 혼자서 해당 프로젝트를 들어갔었죠 첫 프로젝트이고 개발자의 첫 발걸음이 비록 쉽지만은 않았어요. 이전에 배웠던 개발은 기초중에 기초였고 실무는 정말 다르다는 것을 알았죠. 한화생명은 보험회사이며 가장 어색했던 것이 보험에 관련한 명칭들이었어요 예로 보험설계사는 FP로 불리는 등 이러한 명칭들을 모르면 업무를 진행하기가 힘들어 개발뿐만 아니라 보험에 관련된 명칭들을 정리한 뒤 출력하여 4장정도 되는 명칭들을 출퇴근할때 외웠던 것으로 기억이 나요.
많은 것을 느끼고 또 제가 개발자로서 가야할 방향성이 정해졌어요. 코딩을 잘 하는 것도 중요하지만 현재 위치에서 자신이 하는 업무는 무엇인지 어떠한 책임감을 가져야 하는지 알 수 있는 첫 프로젝트였어요. 진행했던 6개월동안 야근도 많이하고 공휴일도 쉬지 않고 출근하며 달마다 있는 지급의뢰 기간에는 항상 철야작업을 진행했지만 좋은 팀원분들 덕분에 실력도 많이 늘고 해당 프로젝트를 마칠 때는 웃으면서 철수할 수 있었던 것 같아요.