개발자가 되기 까지...!(2021 ~ 2023년)(개발자 회고록 2)

2023. 3. 2. 00:20개인노트

반응형

2023년 2월 28일 두 번째 이직을 시작하기 전 개인의 생각정리 및 이때까지의 여정을 정리해 보기 위해 글을 남긴다.
물론 너무 관리를 하지 못한 티스토리에 보여 줄 게 없는 듯한 느낌이 들어서 정리를 시작한 경향도 있다.

#1

다시 한번 준비시작....!

어정쩡한 6개월의 경력으로 나와버린 첫 직장과 다시 한번 취업준비를 해야하는 막연함이 있었지만 그래도 이 넓은 서울에 내가 갈 곳 하나 없겠어? 라는 생각으로 재 도전에 시작하는 시기가 다가왔다. 기존 직장에 있던 사람들에게 내가 해왔던 것들에 대해 인수인계 사항들에 대해 정리하고 문서화 하고 뒤돌아섰다. 이제 더 이상 출근을 하지 않게되니 뭔가 느낌이 이상했다.

그래도 나름 뭔가 초기에 막연함보다는 맡은 프로젝트 하나를 제대로 완성했고 그 과정에서 얻은 것들이 분명 도움이 될 거라는 생각이 있었다

2021년 3월에 시작하여 2021년 9월에 끝나버린 첫...사랑(?) 이였다! 

 

#2

새로운 직장으로!

여기저기 면접도 보고 혼자서 공부하는 시간도 가지다 보니 어느새 3개월정도 흘러있었던 어느날 면접을 보고 난 뒤 최종적으로 합격 오퍼를 받았다.

이번에 가게된 곳은 강남에 있는 한 쿠폰회사였다. 쿠폰이라는게 카카오톡이나 이런 곳에서 많이 활성화 되어 있기도 했었고, 그에 따른 자체앱 서비스도 운영하고 있는 곳이라서 지원하고 좋은 결과를 받게되어 행복했다. 면접때는 매우 힘들었지만...?

2022년 11월 초 다시 시작하는 직장 생활.
새로운 환경과 나를 반겨주는 회사 컴퓨터. 환경셋팅과 여러가지 사내 아이디 면담 등을 진행하고 나니 역시나 첫날은 사라져 있었다!!

 

#3 

수습기간이란 눈 깜빡 할 사이다

보통의 경우 회사와 내가 제대로 맞는지 서로 확인해보는 시간을 가지게 된다. 이건 어디회사든 똑같을 것이라 생각한다.
자체 서비스를 운영하고 있고, 24시간 돌아가야 하는 서비스 환경에서 모니터링과 각종 운영업무 그리고 조금씩 들어오는 개발업무를 진행하는 동안 어느새 3개월이라는 시간이 지나있었다.
수습의 끝 새로운 시작이 되었다.

#4

일은 항상 어렵고 쉽고 힘들지만 재밌다.

쿠폰시스템의 메인시스템과 정산시스템 그리고 구 정산시스템(PHP)의 완전 레거시 시스템 그 외 게이트웨이 시스템 등 여러가지 환경 등이 얽혀있는 곳의 운영과 개발을 진행하다보면 항상 내가 모르는 것들이 생기곤 했다.

외부 업체들이 쿠폰연동을 하려고 할 때 발생하는 오류에 대한 답글 작성, 내부에서 사용하는 쿠폰 정산 시스템 개선, 회사내 운영에 필요한 데이터 자료들에 대한 추출 여러가지가 몰아치고 지나가는 동안에도 몰려오는 개발업무 정신없는 나날이 시작되었다. 그 중 내가 주로 수행하는 업무는 정산시스템 파트였다. 같이 업무를 수행하는 분이 경력이 많아 매우 든든하게 진행 할 수 있었다는 건 나만의 비밀 아닌 비밀이다....!!

이전 직장에서는 전자정부프레임워크(Egov)를 사용했었으나 그냥 스프링 시스템이 기반이였는데 여기 정산시스템의 경우에는 스프링 부트가 주였다.(2 버전대에 JDK도 1.8 이라 행복했다.)

물론 여기도 레거시 시스템이 존재했는데.......
구 정산시스템의 경우 PHP였지만.. 프레임워크가 적용된게 없는 그냥 순수 PHP를 사용 중이였다...!(여기서 php 프레임워크란 라라벨이나..뭐 그런??)

PHP 시스템 또한 정산에 사용되는 어드민이였는데 거기에 개발 할 건도 있었고, crontab을 사용한 스케줄러로 돌아가는 것도 확인 해야 할 일이 있었는데 뭔가 새로우면서 재밌었다.

세상에서 가장 큰 게

#5

그리고 큰게 다가오게 된다!!

구 정산시스템(PHP)에 대해 개발을 진행을 하기는 하지만... 아무래도 여기 회사에서 주로 지원하는 언어가 아니기도 하고 시스템 자체가 너무 낡아 보안상 문제가 있어서 구 정산시스템(PHP)와 정산시스템(JAVA) 의 통합 프로젝트가 시작되었다...!!!!

php로 돌아가는 모든 소스에 대한 분석을 시작하고, 추가로 필요한 기능들이 어떤게 있을지 리스트업 하고, 필요한게 있으면 추가로 적용, 필요없는 부분은 제거하는 등 여러가지 고민들을 하게되는 신기한 경험이였다.
(이때 한창 코로나가로 인해 재택중이라 같이 협업하는 경력자분에게 회의나 로직상 어떻게 풀어야 할 지 전화회의를 여자친구에게 보다 많이 했다는건 정말...놀라운 일이었다)

커피

#6

그리고 완료되다.

참 많은 회의도 진행되었다.

현재는 JAVA 8인데 그대로 갈 것인가 아니면 JAVA 11? JAVA17? 어떤 걸로 할 것인가.. 스프링부트의 경우 이미 좀 2버전 초반대 인데.. 그대로 사용하는게 맞는가? 여러가지 이야기들이 나오고 난 뒤 최종 결정은 JAVA 17, Spring boot 2.8.2에 maven -> gradle로 진행되었다. 매우 흥미로운 시간이었다. (왜 17로 왜 올려야만 하는가에 대해 조사해 온 분과, 8버전에서 이미 잘 돌아가고 있는데 그걸 왜 변경해야 하는가에 대한 토론이 가장 재밌었다.)

요건을 정리하고, 정산 운영업무에서 주기적으로 들어오는 요청들에 대해서 추가적인 기능으로 통합되는 정산 시스템에 녹여내고, 점주들이 접속해야하는 외부사이트에는 DB에 대해서 접속이 안되었으면 한다는 위(?)에서의 의견을 들어...
API서버를 따로 만들기 시작했다.(확장성을 위해 JWT를 사용... + 프론트 서버에서는 기존 jsp에서 Thymeleaf가 더 편하다는 의견을 수용하여 진행... + 프론트 서버에서는 캐싱이나 이런부분을 세션에 대한 부담을 줄이기 위해 Redis를 사용..)

공부+공부+공부를 하며 일하는 신기한 시간이 이어지고 어느새 완성되었다...! 기존 정산시스템 기능에 대한 추가 및 개선, 안정화와 오류수정, 실무자들의 테스트가 진행되고 바빴지만 사람들과 같이 공부하며 즐거운 시간이 계속 이어져 어느새 시간은 많이 흘러 있었다......... 그리고 회사는 어느새 커져있었다..? 내가 올 때만 해도 60명 정도였던거 같은데 100명에 가까워져 있었다.

return

#7

왜 지금 일까........?

모든게 정리되고 연봉협상마저 끝나고 난 뒤 여러가지 일도 있었고 재미도 있었는데 왜 지금 일까??
회사를 나간다고 말 하니 같이 개발하는 동료가 요즘 개발시장이 한파다.. 나가면 고생한다 준비를 먼저 하라 등 여러가지 이야기들을 해주셨다.

또 이런것도 보내주셨다..!!(토x도 권고사직 당하는 시기라고.. https://www.sedaily.com/NewsView/29LWHM8LQ7)

그러나 나는 아직도 성장하고 싶었다..................

그만두기를 결심하게 되는 이유는 여러가지가 있었다.

1.  그래서 도대체.. 언제...?

코어가 되는 쿠폰시스템의 경우에는 스트럿츠2를 기반으로 돌아가고 있었다.

뭔가 소스를 바라 볼 때 마다 가슴이 콱 막혀가는 그 느낌이란.....; 
로직상에서 이해가 가지 않을 때 날 도와주던 디버깅은 없었고, 로컬환경에서는 아예 돌려 볼 수 조차 없는 그런 환경에서 하나하나 로그를 찍어가면서 보고있고 비지니스 로직을 바라 볼 때 마다 소스를 따라가며 해야하는 뇌지컬을 무한대로 사용하는 그 환경이 너무 싫었다.


그리고 팀장님은 그 시스템또한 레거시에서 Spring boot로의 전환을 진행한다고 하셨으나............ 벌써 1년 3개월이 지났지만 일정은 하나도 잡히지 않고 있었다.(가장 중요해 보임에도 다른일정에 밀리고 있는게 눈에 보였다.)

처음 회사에 들어와서 부터 현재까지 들어왔던 이야기였다. 더 이상 레거시 시스템에 개발을 진행 하는것은 힘들기 때문에기존 시스템을 개편하고 새로운 환경을 꼭 구축해야한다. 반드시 올해 안에 진행 할 것이다.


그러나 해당 프로젝트를 진행하게 된다면 솔직히 수십개의 프로시저들로 얽혀있는 시스템에 대한 분석과 타 업체들과 연동된 API에 대한 테스트 등등 진행하는데 시간이 들어 갈 텐데 새로운 업체와의 연동(돈이되는일)과 기타 운영업무에 대한 시간이 들어감으로써 하지 못하는게 너무 눈에 보였다.

2. 자동화란 어느 나라 말인가...

난 개발자란 다른사람만 편하게 만들어주는게 아닌 개발자들도 편하게 일을 해야 한다고 생각하고 항상 지냈던거 같다. 여가 회사에서도 CI/CD에 대한것도 없었고, API서버가 존재하지만 그것에 대해 특정 규격이 정해진게 아님에도 불구하고 하나씩 힘들게 문서화 시키는게 너무 싫었다.(혹은 그런게 아예 없는 경우가 많았다.)

사내 개발자들을이 사용 할 젠킨스(Jenkins)를 다시 기억속에서 가져와(이전직장 감사합니다!) 셋팅하고, Spring Rest Docs를 적용하여 내부 공유를 위한 API문서도 만들어서 배포하고 사람들에게 알리는 여러가지 일들이 있었지만... 쓰는사람만 쓰게되는 것으로 끝이 났다.

이유는 그것보다 더 중요한 일들이 많았기..때문에....? 이런저런것들에 대해서 어필하였으나 개발팀 전체에 적용되는건 윗선(?)에서 반려되었다.(결국 그냥 몰래 개발서버에 올려두고 친한 개발자들만 사용하는 그런 시스템으로 남았다.)

3. 그게 무슨..말입니까?!

대부분의 서비스 회사들의 경우 SM의 성격을 많이 띄게된다. 실제로 운영중인 서비스에서 발생하는 오류 대응이나 운영업무를 함에 있어서 불편한 사항들에 대한 개선 등등 여러가지가 있지만 2022년도의 경우에는 신규 시스템을 개발함에 있어서 SI의 성향을 많이 띄게되었고..... 그에 따라 다시한번 수없이 반복되는 CRUD가 매우 도드라져 보였다.....(JPA님..어디계세요!)

그에 따른 JPA도입의 필요성에 대해 어필하였다...!(몇몇 개발자분들과 함께했다)

Mybatis라는 기술이 나쁘다는건 아니다. 하지만 JPA를 사용한다고 Mybatis나 jdbcTemplate등 다른 기술들을 못 쓰는게 아니였고, 거기서 제공되는 여러가지 편의성 및 분명한 러닝커브는 존재하지만 Qureydsl이라는 기술과 함께하는 수 많은 회사들이 있다는 점도 말함에 따라 불편함을 감수하는 사람들에게는 한줄기 빛이 될 수 있을거라 생각했었다..!

그러나 위에서 돌아온 대답은.......
(JPA란 신뢰 할 수 없는 기술이다.) 아마 잘 모르는 기술에 대한 위험이나 러닝커브가 크기때문에 그렇게 말 하셨다고 믿고 싶다.

 

#8

다시 시작 할 결심이 생기다.

내가 너무 새로운 기술들에 대해서만 생각하는 것인가 라고 고민도 해봤었다.(그렇다고 위 대답이 아직까지 이해가 가는건 아니다.)

시스템을 크게 개선을 해야 할 시기임을 모두가 알고 있지만.... 당장의 기술부채가 너무 쌓여 있음에도 불구하고 어느것 하나 진행하지 못하는 상황이 지속되는게 보여지고 있었다.
회사는 커져 가지만 그에 따라 나도 더 발전하고 있는가 다시 회의감이 들었을 때...........
이전 직장을 그만두는 결심을 했던 것 처럼 또 다시 결심이 생겼다.

고민이 될 때 도전 해 보겠다. 그렇게 젊은건 아니지만 뭐 못 할게 뭐가 있겠는가? 나는 아직도 행복하고 재밌게 개발일을 하고있다............!

2023년 새로운 시작. 마음을 정리하는 글은 다음년도에나 다시 작성 할 듯하다.

반응형