지금까지 백엔드 개발자로 했던 일, 취업 준비를 하면서 하고 있는 일들을 긴 일기로 쓰기로 했다.
첫 번째 일기는 과거의 내 모습에 대한 일기
2023년 9월, 2년 10개월 함께 일했던 팀 해체
2023년 9월, 2년 10개월 동안 함께 일했던 팀이 해체하면서 처음으로 긴 공백기를 가지게 되었다.
개발자는 어디까지 생각하고 있어야 할까?
서비스의 모든 방향성, 사업의 진척...
물론 개발만 할 수 없다는 걸 알고 있지만, 그래서 궁금하다.
대체 내 연차의 개발자가 할 수 있는 일이 뭐가 더 있을까?
아무튼 나는 최근까지만 해도 직업인으로서 가지는 목표도 꿈도 하고 싶은 일도 없었다.
그래서 백엔드 개발자로 약 3년을 일했음에도, 왜 컴퓨터 전공을 선택했고, 앞으로는 어떤 일을 하고 싶냐는 물음에 할 말이 없었다.
무슨 생각으로 대학을 가고, 휴학 없이 졸업을 했는지 모르겠다.
졸업하기 직전에 교수님과의 면담에서 무슨 일을 하고 싶은지 모르겠다면서 눈물을 흘렸는데, 그러다가 뚜렷한 목표가 없는 상태로 개발을 할 수는 있는 회사에 다니게 되었다.
덜컥 취업을 하고 나서는 아무런 의욕도 꿈도 없이 그냥 해야 하는 일을 하면서 시간을 보냈던 것 같다.
취준을 하면서 다시 한번 느낀 점이 있다.
남들과 비교하는 것이 소용없는 일인 것을 잘 알고 있지만, 대부분의 개발자들은 꿈과 목표가 확고한 편인 것 같다.
서비스의 형태를 만들어가는 것이 재밌다.
처음에는 정말 어떻게 돌아가는 건지 하나도 모르는 상태에서 입사했는데, 눈치껏 이것저것 따라 하다 보니까 어설프게 흉내를 낼 수 있었다.
기획서를 읽고 궁금한 점에 대해 함께 의논하고 수정하면서 서비스의 방향을 찾아가는 것이 재밌었다. 그리고 그렇게 기획된 내용을 직접 작성한 코드로 완성하는 것도 재밌었다.
내가 평소에 사용하는 서비스들도 이렇게 만들어지는구나 하는 생각이 들면서 코드를 작성하고 서비스를 구현하는 과정에 재미를 느꼈다.
물론 쉽지 않은 일도 있었다.
외부 모듈을 연동해서 시스템을 구축해야 한다거나, 아예 테이블 설계부터 내가 직접 해야 되는 상황이 닥치면 크게 막막함을 느꼈다.
해 본 적 없어서 막막했겠지.
그래도 어쩌겠어 해야지...
이니시스 모듈을 이용해서 결제 시스템을 구축할 때에는 모든 과정을 나 혼자 진행할 수 없었다. 프론트엔드에서 모듈 팝업을 호출하고, 요청을 전달하면 내가 백엔드에서 받아서 승인을 요청한다. 승인이 완료되면 결제가 진행되고 그 상태를 내가 또다시 백엔드에서 받아서 프론트엔드로 전달하는 플로우였다.
처음에는 대체 어디까지 내가 관여하는 건지 이해가 어려워서 힘들었다. 요청이랑 승인을 4단계로 나눠서 진행하는 과정을 이해하는 것도 한참 걸렸다. 그래도 하다 보니까 결제 요청 데이터를 업데이트하고, 모듈에 승인 요청을 전달하고, 승인 완료된 데이터를 결제 완료 테이블에 업데이트하고, 마지막으로 프론트엔드에 성공적인 결제 결과를 전달하는 과정을 모두 이해하고 성공적으로 구현할 수 있었다.
나는 백엔드를 구현하면서 대부분의 데이터베이스 테이블은 다른 사람이 설계한 형태를 사용했다. 결제 시스템도 그 당시 팀장이었던 사람이 구현한 테이블을 이용했다.
결제 시스템의 경우, 결제 요청 테이블과 결제 완료 테이블을 분리해서 사용했다.
나는 당시에 테이블을 분리한 이유를 모든 결제 요청이 완료된 결제로 이어지지 않기 때문이라고 생각했다.
결제를 요청할 때, 필수 파라미터로 주문 번호가 있었다. 처음에는 내부에서 정한 규칙에 따라 생성한 주문 번호를 사용했는데, 중복 생성 방지 로직을 작성하지 않아서 사용되지 않고 버려지는 주문 번호가 많았다.
아무 생각 없이 만들면 이렇게 되는구나.
이때 남들보다 생각을 좀 더 할 필요가 있다는 걸 느끼고 코드를 작성하기 전에 필요한 요소들과 생각할 거리에 대해 기록하기 시작했다.
기록한 내용은 퇴사하면서 다 파쇄하고 나와서 남은 게 없지만 나름 나만의 일하는 방법을 찾고 생각하는 힘을 기르는 경험이었다고 생각한다.
개발 서버에서 구현을 완료했지만, 추가 개발이 중단되어 운영까지 가지 못했다.
공식 문서는 아니었고, iOS의 빌링 시스템을 설명한 외국 개발 블로그를 참고했던 기억이 난다.
블로그 글 안에 공식 개발 문서와 이어지는 항목들이 있었는데, 개발 문서 만으로는 맥락 이해가 안 돼서 블로그 글을 보고 이해하는 것이 더 도움이 됐다.
막상 연동하니까 별것 아니었는데 가장 큰 문제는 인증 토큰을 요청하는 과정에서 발생했다.
AppStore에서는 보안 상의 문제로 인증 토큰의 만료 기간을 20분 이상 지정할 경우 401 에러를 전달하는데, 이게 내가 지정한 만료 기간의 문제인지 모르고 key를 잘못 설정했거나 하는 문제인 줄 알고 해결하는 데 오래 걸렸다.
새로 알게 된 것은, JWT의 용도이다.
일단 JWT라는 것을 플랫폼의 회원 정보 인증과 인가를 위해 사용하는 것으로 처음 알게 되었다. 그래서 회원 정보를 전달하는 용도로만 사용한다고 착각했는데, iOS 빌링 시스템의 영수증 정보가 JWT 형식으로 반환되는 것을 보고 데이터의 보안을 위해 압축해서 사용한다는 점을 알게 되었다.
그리고 Pub/Sub이라는 형태를 처음 다뤄보았다.
구독 상태를 확인하고, 영수증과 사용자의 상태를 업데이트할 수 있도록 주기적으로 데이터가 전달되었다.
처음에는 빌링 시스템의 빌링 키나 상태와 문서를 보고 이해한 내용에 차이가 있는 경우가 있었다.
이를 수정하고 시스템으로 완성하기 위해 데이터를 여러 번 받아서 분석하고 용도에 맞는 것을 찾아다녔다.
이런 예외들을 발견할 때마다 머리가 아팠다.
많은 예외 처리를 통해 성공적으로 빌링 시스템을 구축하긴 했지만, 결과적으로는 운영 서버까지 반영하지 못했다.
여전히 아무 생각 없음
20살 때부터 방학도 없이 살았더니 숨통이 트이는 것 같았다.
퇴사하기 전부터 건강 문제가 있었는데, 이 기회를 이용해서 체력을 회복했다.
꾸준히 헬스장을 다니면서 23년 연말까지 거의 7kg를 뺐다.
아파서 갑작스럽게 무거워진 몸을 빨리 덜어냈고, 지금은 생존 근육을 키우고 있다.
오랜만에 찾은 시간적 여유 속에서 인간적인 성장을 했던 것 같다.
체력을 기르고, 여행을 다니며 추억을 쌓고, 책을 읽고, 평소에 미뤘던 일들을 하나씩 해나갔다.
문제가 하나 있다면 여전히 개발자로서 방향성이 없다는 점이었다.
공부를 했어야 했는데...
이력서를 거의 100장 정도 넣었을 때였다.
공고가 올라온 대부분의 회사들에 이력서를 넣고 떨어진 상태였다.
운 좋게 면접을 보러 갈 때도 있었지만, 가진 게 없으니 좋은 결과를 얻기 힘들었다.
대체 난 뭘 하고 싶은 걸까?
난 왜 하고 싶은 일도 없는데 굳이 개발자를 하려고 하는 걸까?
시켜주면 잘할 텐데... 뭐라도 배우고 싶다...
뭐 이런 조급하고 두서없는 마음으로 하루하루를 보냈다.
자기소개서 항목을 다시 쓰면서 생각해 봤다.
내가 어떤 일을 할 때 즐거웠는지
왜 개발자를 계속하려고 하는 건지
일할 때는 API를 작성하는 과정에서 데이터를 다루는 게 재밌었다.
그리고 이걸 사람들이 원하는 형태로 제공할 수 있는 서비스를 만드는 것이 좋았다.
구체적으로는 추천 서비스랑 필터링 서비스를 구현하면서 즐거웠던 것이 생각났다.
일상생활 속에서 사용하는 서비스 중, 어떤 서비스의 어떤 부분을 개발하는 사람으로 일해보고 싶은지 생각해 봤다.
나는 검색-추천-필터링과 같이 사람들에게 정확한 정보를 편리하게 제공하는 서비스를 구현하고 싶다는 답을 처음으로 찾게 되었다.
데이터를 포함해 많은 자원을 다룰 수밖에 없는 곳, 모두가 쉽게 접근할 수 있는 곳, 편리함을 목적으로 구현된 시스템을 생각하다가 이커머스라는 결론을 얻게 되었다.
이커머스 분야에서 다양한 자원을 효율적으로 다루는 백엔드 개발이 해보고 싶다.
하고 싶은 일을 찾았으니, 이제 어떻게 시작할 수 있는지가 가장 큰 문제였다.
일단 공부를 안 한 지 꽤 오래됐다.
CS 지식은 남아있는 것이 없는 수준이었고, 면접에 갔을 때마다 발등에 떨어진 불만 겨우 끄는 수준의 대답을 했다. 그리고 떨어졌다.
생각해 보면 공부를 못하는 것이 아닌 안 하고 있다는 건 의욕도 열정도 없는 상태라는 소리밖에 안 되는 것 같다.
그래서 하기로 했다.
그냥 내가 일하고 싶은 분야에서 조금이라도 더 잘하고 싶다는 마음으로 시작했다.
일을 잘하는 사람이 되고 싶다.
학부생 때는 자료구조를 좋아했는데, 공부를 오래 안 하니까 다 까먹고 알고리즘에도 취약하다고 느껴서 프로그래머스의 문제들을 풀기 시작했다.
나는 원래 기록하는 것을 좋아하는 사람인데, 그런 사람 치고 벨로그는 만들 마음이 없었다.
일단 개발에 관한 내용을 써야 할 것 같다는 점에서 만들기 싫었다.
내 부족함이 드러나는 것이 싫었고, 계속 안일하게 살아와서 필요성을 못 느꼈던 것 같다.
하고 싶은 일이 생겼고, 할 수 있다면 더 잘하는 방법을 알고 싶고, 공부한 내용을 모두 기억할 수 없으니 주기적으로 복습하기 위해 결국 벨로그를 만들었다.
매일 똑같은 양의 공부를 할 수 없으니 주기적으로 기록할 수 있을 수준의 학습량을 꾸준히 가져가는 것이 목표다.
사실 2024년 상반기에도 많이 놀았는데, 다음 일기에는 2024년 상반기에 나름 노력했던 것들을 정리할 예정이다.
이렇게 어제보다 나은 오늘을 쌓아가다 발전을 몸소 느낄 수 있는 날이 오기를