본문 바로가기

카카오 FE 개발 3년 돌아보기

첫 회사에 입사한 지도 벌써 만 3년이다.

정말 바쁜 날들이었고, 훌륭한 동료분들 사이에서 정말 정말 많이 배웠다. 개발뿐만 아니라, 다른 것들도.

 

1, 2년 차 때까지는 대학 4학년 때부터 하던 알고리즘 스터디도 계속하고, 토이 프로젝트나 개인 공부도 많이 했다. 하지만 최근 들어서는 다소 부진해진 것 같다. 그만큼 모니터 바깥으로 눈을 돌렸기 때문인데, 특별히 아쉬울 건 없고 내 생활이 계속 변하고 있구나 생각한다. 옛날에는 소비가 정말 없는 편이었는데, 요새는 조금 늘었다. 최근에는 조금 비싼 모니터도 사고, 그보다 더 비싼 키보드(친구가 선물로 많이 보태줬다.)도 추가됐다. 물론 여전히 멋지고 예쁜 옷이나 신발을 사는 건 어렵다.

 

여전히 내 코드는 마음에 안 든다. 작성할 당시에는 최선이었겠지만, 지금 보면 너무 부족하고 난잡할 뿐이다. 어떻게 보면 나중엔 더 좋은 코드를 쓸 수 있겠지 싶다.

 

지난 3년 간 주로 계정/회원 개발을 했고, 그 체계에 대해 많이 알게 되었다. 그리고 TypeScript, Next.js, BFF, GraphQL을 비롯해 정말 다양한 것들을 사용하며 배웠다. 그렇게 톡 체크아웃(구 카카오 페이구매)과 카카오톡 예약하기를 개발하여 오픈했다. 많이 어렵고 힘들었지만 나름 재밌었다. 이미 운영 중인 서비스를 유지보수 하는 대신, 나는 항상 새 프로젝트 개발에 참여해 왔는데 운이 좋았던 것 같다. 덕분에 'IE9 지원' 같은 고민 없이 새 기술을 마음껏 사용해봤고, 개발자로서 프로젝트를 어떻게 설계하고 배포, 운영해야 하는지 직접 고민할 수 있었다. 아무래도 발 빠르게 시장에 진입해야 하는 프로젝트이다 보니 기획/개발/오픈 일정이 매우 촉박했다. 하루에도 몇 번씩 달라지는 기획과 정책, 일정 속에서 어떻게 프론트엔드 개발자로서의 역할을 다할 수 있을지 계속 고민해왔다. 아직 많이 부족함을 느끼지만, 더 능숙해지고 있는 것도 느낀다.

 

그리고 정말... 정말 많은 분들이 프로젝트에 참여했다가 떠나가셨고, 회사를 떠나가셨다. 함께 호흡을 맞춰왔던, 배울 점이 많았던 좋은 동료를 잃는 것은 언제나 너무 아쉬웠다. 혹자는 일을 하다 보면 이런 일들은 늘 있는 것이라고 했다. 하지만 내 짧은 생각엔 이런 일들의 빈도나 과정이 마냥 정상적이진 않았던 것 같다. 더 잘 할 수 있었고, 더 아름답게 끝낼 수 있었다. 분명 모두 '새로운 기회를 찾아 떠나는 것'이라고 했지만, 많은 분들이 이 프로젝트나 조직이 싫어서 떠나는 것처럼 보였던 것 같기도 하다. 내 착각이길 바라지만, 적어도 그만큼 일(특히 일정)의 스트레스가 컸던 것은 분명 맞는 것 같다.

 

그 덕분인지, 그 때문인지, 나는 입사한 직후 큰 프로젝트의 QA와 오픈을 직접 함께했고, 곧이어 지루할 틈 없는 회원 개발을 맡게 되었다. 회원 개발은 온전히 내가 선택한 것은 아니었고, 기존 개발자가 떠나는 것이 가장 큰 이유였다. 회원 가입, 탈퇴, 조회, 수정 등의 기본적인 영역에서 여러 문제를 개선하고, AML/고객확인제도 시스템을 연동하고, 계속해서 강화되고 빠르게 변화하는 계정 체계와 정책에 맞춰 개발을 이어나갔다. 물론 이 밖에도 파트너, 쿠폰, 약관, 정산 등 다양한 도메인에서 많은 것을 개발했다.

 

예약하기 개발을 시작할 때, 기존의 전통적인 API gateway를 백엔드 개발자 분들이 만들어주는 대신 프론트엔드 개발자들이 BFF를 만들게 되었다. 나를 포함해 모두가 BFF는 처음이었고, 주변에서도 하는 곳이 없었다. 내가 계정과 인증/인가에 관련된 개발을 하고 있었으니, BFF를 개발하기 시작할 때도 자연스레 내가 먼저, 더 관심을 갖게 되었다. 무엇이 가장 좋은 방법인지는 몰랐지만 나름대로의 방법으로 BFF 개발을 시작했고, 지금까지도 어찌어찌 잘 운영되고 있다. BFF 개발을 결정하면서 동시에 GraphQL 사용도 함께 결정했는데, 이것은 나와 동료들의 새 기술에 대한 호기심이 한 몫 했다. 당시로서는 괜찮은, 희망찬 선택이었다. 이후의 프로젝트 진행과 일정, 그리고 그것의 변동이 아주 엉망일 줄은 몰랐기 때문이다. 조금 더 천천히 진행했다면 훨씬 더 잘 할 수 있었다고 생각한다. 지금은 GraphQL의 장점을 제대로 활용하고 있지 못하지만, 앞으로 개선할 수 있을 것이다. 언제든 더 나은 방법으로 BFF를 개발할 수 있도록 타입을 개선하고 관련 유틸을 만들어두었으며, 최적화된 쿼리도 하나 만들어두었다.

 

회원, 상품, 예약, 쿠폰, ... 총 10개가 넘는 서버와 각각의 스웨거 문서를 보고 이를 모두 GraphQL 코드로 수기로 변환하여 BFF를 작성하는 것은 미친 짓이었다. 하루에도 여러 번 추가/삭제/변경되는 API와 스키마를 보며 어떻게 이를 모두 추적해 Schema, Query, Mutation으로 작성하겠는가. 모두가 이것이 불가능에 가까운 일이라는 것을 직감했고, 나는 회원/인증/인가를 개발해야 했기에 더 빨리 개발을 시작하며 미리 알아챌 수 있었다. 그렇게 나는 해야 할 일을 잠시 미뤄두고 swagger docs를 바탕으로 GraphQL 코드를 자동으로 생성하는 라이브러리 swg2gql을 만들게 되었다. 다행히도 이것은 제법 성공적이었으며, 이후의 서비스 개발은 한결 더 수월해졌다.

 

라이브러리를 만들어도 일정 압박이 거세지는 것을 막을 수는 없었다. 이에 계속해서 동료 분들이 떠나갔다. 나도 결국 극단적인 업무 시간에 피로가 누적되었고, 많은 회의감을 느끼며 결국 조직 이동을 신청했다.

 

 

새 조직에 온 지 한 달이 되었지만, 모종의 이유로 나는 손발이 묶인 채 무인도에 유배된 기분이 들곤 한다. 하지만 덕분에 누구도 시키지 않은 일을 할 수 있는 나만의 시간을 가질 수 있게 되어 조금은 만족하고 있다. 사내 라이브러리 하나의 성능을 개선했고, 사내 SDK를 위한 d.ts 파일을 작성했다. 업무 편의를 위한 크롬 확장 프로그램도 2개 만들었다. 또 다른 새로운 도전도 진행 중이다.

 

내가 어떤 개발을 좋아하는지, 어떤 개발자가 되고 싶은지에 대해서는 입사 전이나 지금이나 큰 차이가 없다. 근로 경력은 3년이어도 개발은 벌써 15년쯤 한 것 같으니 더 그런 것 같다. 다만, 어떤 환경에서 어떤 사람들과 일하고 싶은지에 대한 생각은 별로 없었는데 이제 많이 확실해졌다. 행복, 여유, 안정은 생산성과 제법 관련이 깊은 것 같다. 3년 간 많은 교훈을 얻었고, 앞으로의 3년은 더 많은 경험을 통해 조금 더 행복한(그리고 주변 동료들도 행복하게 하는) 개발자가 될 것 같다.