4 minute read

이전부터 3년은 일해보아야 개발자로 눈이 생긴다는 말을 들어보아서, 제가 3년차가 되면 어떤 변화가 있을지 궁금했어요. 지난 1~3년이 배움의 연속이었다는 것은 변함없지만, 올해 거기에 더해진 새로운 감각이 있었습니다. 그것은 바로 ‘개발하는 근육을 만드는 것뿐만 아니라, 만든 근육으로 움직이고 행하는 주체자’가 되어야 한다는 것이에요. output과 성과를 만들기 위해 고민을 많이 하게 되었습니다. 이 회고를 통해 저의 성장과정과 깨달음에 대해 이야기 하려고 합니다.

2024년의 키워드는 ‘의식적인 일하기’입니다.
(1) 나는 이 업무를 누군가에게 그림 그려 설명할 수 있을만큼 제대로 이해하고 있는가?
(2) 내가 개선할 수 있는 부분이 있는가? (문제 해결, 자동화, 프로세스 개선, 리팩토링 등등) 등등 이런 생각을 의식적으로 하면서 일을 하게 되었어요.

1. 성취 (Achievement)

프로젝트 및 주요 업무

MQ를 사용하는 금융결제원 연계 대외계 프로젝트에서 Spring Boot 기반으로 전문 처리를 하는 서비스와, React를 활용한 UI를 개발했습니다.

일단 처음 기반으로는, 공통파트를 개발하는데 이전에 대출업무 개발자로 공통 기능을 사용했을 때 유심히 보았던 점들을 참고하여 공통 개발에 녹여내려고 하였습니다. 공통이라고 하면 일자관리, 권한관리, 계좌 관리, 코드 관리, static한 정보를 다루는 많은 기반 시스템이 포함됩니다. 공통을 구축하는데 어떤 것을 고려하였냐면 다른 개발자들이 개발할때 도움이 되는 도구가 되어야 하기 때문에 유틸같은 기능을 할 수 있는지 생각하면서 개발하게 되었어요. 그리고 적용하기에 복잡하지 않고 간결하고 단순하면 좋겠다는 생각을 하면서 개발했습니다.

기술적 도약

  • Spring 프레임워크를 이용한 Web Application, RESTful API 개발
    • 글로벌 은행의 표준 api를 RestTemplate을 활용해 request를 보내어, daily로 일자정보와 휴일 calendar를 align하는 배치를 개발했습니다. 글로벌한 회사가 전 세계의 표준을 관리하는 방식을 보며, 배워가는 것이 많았습니다.
  • 설계 경험과 개선경험
    • admin에 꼭 필요한 기능인 권한별 승인 처리를 설계부터 완전히 리뉴얼하는 업무를 맡아 진행했습니다.
    • 고객의 니즈를 듣기 위해 상세히 커뮤니케이션하고, 이것을 어떤 방식으로 구현해야 고객의 니즈와 성능의 개선을 모두 성취할 것인가에 대해 1달여 기간동안 깊이 고민하고 여러 시니어 개발자들에게 상의하는 시간을 가졌습니다.
    • 구현 후에는 승인이 들어가는 업무 담당자들에게 필요한 교육자료를 정리하고 배포하였습니다.
  • Batch로 대용량 데이터 처리
    • CMS 배치를 개발하면서, 트랜잭션 관리와 테스트에 대해 배치 담당자들과 깊은 논의를 했습니다. 처음엔 tasklet으로 20여개 배치를 개발하기로 설계되었는데, 배치를 재실행할 때나, 대용량 처리 시에 tasklet으로 처리하면 트랜잭션 관리에 문제가 있다는 점을 발견하고 chunked job으로 모두 수정을 하면서 배치에 대한 이해도가 높아졌습니다.
    • 몇 번의 테스트를 거쳐 process부분에서 롤백 수행시에 트랜잭션이 이미 분리되어 롤백이 불가한 문제가 생긴다는 것을 발견하여 beforeJob, afterJob의 트랜잭션도 모두 분리하게 되었습니다.

팀 내에서의 성장

  • wiki에 제가 설계한 프로그램을 개발자 및 고객이 볼 수 있게 문서화하고 프로세스를 도식화하는 일에 강점을 가지게 되었습니다. 이것을 알아봐 준 좋은 선배 개발자를 만나서, 2024년을 마무리하는 사내 Excellence Award를 수상을 하게 되었어요. 아래는 Award에 올라가게 된 추천사입니다. 제 마음속에 저장하려고 첨부해요.

image

  • 위에 써 있는 바와 같이 업무를 여러 파트 수행했어요. 처음에는 공통, 공통이 안정화 된 다음엔 전자어음 서비스 전반을 개발하고, 그 다음엔 CMS 배치를 개발했습니다. 호기심이 많아서 여러 업무를 하게 되는 기회를 갖게 되는게 좋았어요. 그리고 비교적 규모가 작은 프로젝트에서 일을 하다보니 제가 해결할 수 있는 일이 있는지 찾아서 하게 되었어요.

  • 저는 내 일을 잘 수행하는 것 이상으로 프로젝트가 잘 운영되는 데 관심이 있는 사람이더라고요. 어딘가 병목이 있다면 여유가 있는 누구라도 팔을 걷어 붙이고 도와서 문제가 없게 하는거죠. 병목이 있다면 그 지점을 해결하는 것에 관심을 갖는 태도를 갖게 되었습니다.

아래는 일년간 깃랩에 커밋해온 잔디를 기록해둘게요. 잔디만 봐도 여러가지 우여곡절이 생각나네요. 검정색에 가까운 날들이 모두 야근의 나날들 이었던 것 같습니다.
image

2. 도전과 문제 (Challenge)

어려웠던 부분

  • 대외계에서 응답이 오지 않아도, 어떤 응답이 왔다고 mock을 하고 테스트를 해야하는 불확실함이 어려웠어요. 시뮬레이터를 만들고, 그에 따라 어떤 응답이 온 것 처럴 그럴싸하게 만들 수 있었지만, 진짜 대외계가 연동되었을 때 다른 답을 주는 경우도 많았어요.

  • 위에서 말한 바와 같이 병목을 해소하는 것은 좋지만, 항상 구성원이 부족하고, 항상 일에 비해 사람이 부족해 오버워킹을 하느라 팀원들 모두가 번아웃에 지쳐서 마음이 힘들었어요.

극복방법

  • 대외계 연동까지 다양한 테스트 케이스를 수립하고 테스트 한 뒤, 실제 대외계 연동 시 테스트가 순조롭게 진행되도록 미리 준비를 해놓는 것이 중요한 것 같아요.

3. 배움과 성장 (Growth)

개인적으로는 토스뱅크의 Picnic (기술 컨퍼런스)와 AWS의 Industry Week (핀테크 세션)에 참가하여 많은 인사이트를 얻었습니다. 그 중 Picnic에서는 제 기억상자에 넣을 일이 있었는데요. 경품추첨에서 커피챗에 당첨되었고, CTO 박준하 님과 2시간 정도 커피챗을 하게 되었습니다. 토스뱅크 아티클을 다 읽어온 제겐 팬미팅 같은 사건이었습니다.

2024년의 기술적 배움

TDD를 통한 클린코드 작성법을 배우면서 도메인 레벨의 코드를 작성하는 방식을 완전히 바꾸게 되었고, 리팩토링을 할 포인트가 눈에 보이기 시작했습니다. 성장의 도약점이었습니다. 그리고 Spring, 데이터베이스, 트랜잭션, 메세징 큐를 활용한 아키텍쳐, 시스템 디자인 등을 공부하면서 1년간 많은 성장을 했습니다.

2024년의 개발 외 배움

  • 큰 책임과 역할을 맡으면서 커뮤니케이션 방식에 대한 고민을 하게 되었고, 중요한 업무의 경우 탄탄하게 정리해서 공유하거나 질문을 드리는 등의 업무처리에 성장이 있었습니다.
  • 좋은 선배를 만나서 그분이 일하는 방식을 보고 많이 배웠습니다. 커뮤니케이션에 엄청난 강점을 가진 분이셨고, 어떤 결정이 나지 않고 미뤄지고 있던 문제들에 대해 안건을 정리해서 프린트한 용지를 회의 때 나눠주시면서 마침내 문제를 해결하시는 모습을 보았어요. 그 문제에 대한 결정을 더 이상 미룰 수 없게, 일이 진행되도록 푸시를 하시는 것이었는데 즉각적인 효과가 있었고 이렇게 반드시 처리를 하고 넘어가자고 보여주는 기세가 일의 처리와 커뮤니케이션에서 중요함을 배웠습니다.

4. 후회와 개선 (Reflection)

아쉬웠던 점: 더 잘할 수 있었던 부분

  • 제가 개발한 코드들을 더 설계를 잘 했다면 어땠을까 아쉬워요.

개선 목표: 내년에 꼭 시도해보고 싶은 목표

  • 더 금융의 본질에 가까운 일, 더 재밌는 일에 도전해보고 싶습니다.

마무리 (Outro)

작년대비 저는 좀 더 강해진 것 같아요. 펀치드렁크러브 영화에 나오는 구절을 인용하자면..

내가 지금 얼마나 센지 넌 모를거야. 난 사랑에 빠졌거든. 사랑으로 얼마나 강해질수 있는지.. 넌 모를거야.

일과 사랑에 빠져서 강해진 한 해였다고 총평하겠습니다.
그럼 이만.

Categories:

Updated:

Comments