작년 이맘때쯤 2022년 회고를 올렸었는데 벌써 2023년 회고를 올릴 때가 되었다. 처음에 회고는 2023년 마지막 주에 올릴 예정이었지만 올해 진행했던 프로젝트를 완전히 마무리하고 올리고 싶어서 부득이하게 며칠 미뤘다.
1. 회사
1) 프로젝트
가장 먼저 회사에 관한 이야기를 먼저 하려고 한다.
올 한 해 동안은 '쿠폰적용가' 프로젝트를 계속해서 성장시키고 확장해가는 데 많은 시간을 할애했다. 기존 지마켓 사이트에선 상품 상세 페이지 진입 시 고객이 실제로 할인받을 수 있는 금액에 대한 정보를 확인할 수 없었다. 그와 더불어 쿠폰 다운로드 시 실제로 할인받을 수 있는 금액이 노출되지 않는 것과 쿠폰함에서 최적쿠폰이 자동적으로 선택되지 않는 것 또한 큰 불편요소였다.
쿠폰적용가 프로젝트는 이러한 불편함을 개선하기 위해 시작됐고, 타 사이트에서 제공되는 쿠폰적용가 기능에 더해 다운로드 및 적용 과정에서도 고객에게 편리함을 주는 것을 목적으로 진행됐다.
그리고 하반기에 진행된 후속 프로젝트의 결과로 검색 결과 페이지 및 홈 화면에서도 쿠폰적용가를 노출할 수 있었다.
특히 검색 결과 페이지 쿠폰적용가는 대상 상품도 많으면서 타임아웃도 짧은 탓에 단기간 내에 응답속도를 일정 수준 이상으로 높여야 하는 미션이 주어져서 어렵기도 했지만, 문제를 해결하는 과정이 굉장히 재밌었다.
여러 가지 지표들을 살펴보며 문제들을 추적해간 끝에 최종적으론 응답속도를 약 40% 이상 향상시킬 수 있었다. 이전까지는 조금 생각 없이(?) 코루틴을 사용했는데 트러블 슈팅 과정에서 코루틴에 대한 이해도가 조금이나마 더 높아졌다는 점도 하나의 큰 소득이었다.
이러한 일련의 프로젝트를 통해 사용자 경험 측면에서 큰 발전을 이뤄낼 수 있었다. 개발적인 부분에서도 RDB에 의존하던 할인 시스템을 캐시 기반으로 옮기면서 코어 데이터베이스에 대한 부하도 줄이고, 적재한 캐시 데이터를 판매자 툴 등 다양한 곳에 활용하는 성과도 거둘 수 있었다.
쿠폰적용가 프로젝트와 동시에 할인 펀딩 프로젝트도 진행됐다. 말 그대로 판매자로부터 할인 예산을 펀딩받는 것인데, 나는 여기서 판매자의 예산을 관리해주는 기능을 개발했다. 주문이 발생하면 판매자의 예산을 차감하고 주문이 실패하거나 취소되면 예산을 복구해주는 것이다.
이 프로젝트에서 개인적으로 의미가 있는 부분을 뽑자면 팀원분들께서 나에게 시스템 설계에 대한 권한을 일임해주셨다는 점이다. 다른 분들께서 감사하게도 레거시나 백오피스와 같은 영역들을 맡아주신 덕분에 온전히 해당 기능 설계에만 집중할 수 있었고, 팀원들에게 피드백을 받으며 무사히 기능을 완성해갈 수 있었다.
기능을 구현하는 데 비교적 일정이 널널한 편이어서 남는 시간동안 기술 부채로 남아있던 프로젝트의 버전업을 진행했다.
- Spring Boot 2.3.8 → 2.7.6 으로 업그레이드
- Kotlin 1.3 → 1.8로 업그레이드
- JUnit5 제거 및 Kotest 도입
- hystrix 제거 및 resilience4j / spring-retry 도입
- 기타 사내 라이브러리 업그레이드
처음엔 스프링 부트랑 코틀린 정도만 버전업을 하고 싶었지만, 하다보니 전부 다 통째로 뜯어내야만 하는 상황에 직면해서 어쩔 수 없이 다 바꿔버렸다. 작년부터 하고 싶었던 작업이라 후련하긴 했는데 같은 소스를 두고 작업하시던 다른 팀원분께서 코드를 머지할 때 고생하셔서 동시에 죄송스러운 마음도 들었다.
올해 했던 프로젝트들은 타 부서의 담당자들과 소통할 일이 많았고 당연하게도 다른 이들에게 정보를 전달하거나 설득하는 일 또한 많았다. 이 과정에서 커뮤니케이션 능력을 많이 키울 수 있던 점도 개발 외적으로 좋은 부분이었다.
2) 운영 업무
작년 상반기에 입사한 후 백오피스 관련 작업만 하다가 하반기에 팀이 통째로 선물하기 TF에 투입된 상황이었고, 팀 내 신규 입사자도 많아서 R&R이 불분명한 상황이었다. 올해 초 팀장님께서 다시 R&R을 지정해주셔서 나는 상품 상세 페이지 내 쿠폰 다운로드 기능의 제1 담당자가 되었다.
이 기능은 현업에서 많이 사용하는 기능이라 문의가 일주일에 서너 번 이상은 들어와서 응대할 일이 많았다. 처음엔 나에게 익숙한 용어로 설명을 하다 보니 상대방이 이해하기 힘들어 했고, 비슷한 문의를 여러 번 하는 상황이 발생했다. 팀장님께서 우리가 당연하게 사용하는 도메인 용어들이 그분들에겐 낯설 수 있다는 피드백을 주셔서 그 이후로는 최대한 쉬운 말로 풀어서 설명하려고 노력했다.
응대 업무 외에 성능적인 이슈도 있었다. 쿠폰 다운로드 시스템은 대략 아래와 같이 구성되어 있는데, 컨슈머에서 ElasticSearch를 조회할 때 성능이 너무 안 나왔다. 쿠폰적용가 프로젝트를 하면서 로컬 캐시를 넣어서 조회 성능을 올리긴 했지만, 근본적인 해결책은 되지 못했다.
그 결과 할인 행사가 있거나 해서 트래픽이 몰리면 컨슈머 랙이 치솟게 되었다. 항상 이때마다 카프카 담당자분께 연락을 드려 오프셋을 초기화시키는 작업을 진행하거나 메시지 발행주기를 늘리는 방식으로 대응했다. (카프카 오프셋은 함부로 초기화하면 안 되는데, 해당 데이터의 경우 유실돼도 괜찮은 데이터여서 가능한 부분이었다)
다행히 이번에 리팩토링을 하면서 쿼리도 개선했고, Elastic Search에 적재되어 있는 데이터의 리텐션 정책도 수립하면서 컨슈머 속도가 엄청나게 빨라졌다. 그 덕에 요동치던 컨슈머 랙도 잠잠해졌고, 메시지 발행주기도 줄일 수 있어서 캐시 데이터의 정확성도 한층 높아졌다
그리고 R&R이 확립되면서 빅스마일데이 모니터링에도 참여했다. 특정 시점에 몰리는 대규모 트래픽에 대응하는 경험은 나같은 초짜 개발자에겐 귀한 경험인지라 행사 기간마다 힘들지만서도 배우는 부분이 많았다. 물론 쿠폰 발급에 문제가 생겨서 매 정각마다 대기를 했다거나.. 배포 이슈로 서버가 다운되거나 하는 기억은 잊고 싶다.. 2024년에는 별 일 없길..
3) 부가 활동
작년 회고글에서 기술블로그에 글을 작성하겠다는 다짐을 했었다. 다행히 상반기 테크 에디터에 선정됐고 동료 에디터분들이 많이 다듬어주신 덕분에 무사히 2개의 글을 기고하게 되었다. 작년 선물하기 때 클라이언트/서버에서 Validation 처리하는 걸 많이 했어서 Spring Bean Validation에 대해 글을 쓰고 싶었는데, 어쩌다 보니 타이밍을 놓쳐버려서 2개밖에 쓰지 못한 부분은 많이 아쉽다.
글을 써서 결과물을 내는 것도 좋은 성과였지만, 리뷰를 받거나 해주는 과정 그 자체만으로도 즐거운 경험이었다.
올해는 신기하게(?) 발표할 기회가 많았다. 상반기엔 전사 올핸즈, 하반기엔 지식 공유 세션에서 발표를 진행했다. 보통 전사 올핸즈에서 프로젝트 성과를 보고할 땐 PM분들이 하시는데, 왠지 모르게 개발자인 나에게 차례가 돌아왔다. 솔직히 처음엔 너무 부담이 커서 하기 싫었지만.. 어쩔 수 없이 해야만 했다. 그렇게 발표 당일이 돼서 앞에 서니 심박수가 급속도로 올라갔는데, 팀원분들이 만들어주신 팜플랫 덕분에 빵 터져서 다행히 긴장이 많이 풀렸고 잘 마무리할 수 있었다.
지식 공유 세션은 HR의 제의로 진행하게 되었다. 아는 게 별로 없어서 주제 선정을 어떻게 할 지 많이 고민하다가 주력 언어이기도 하고 팀 스터디도 해봤던 코틀린을 주제로 세션을 진행했다. 하고나니 스스로에게 아쉬운 부분이 많아서 세션의 크리에이터로 참여할 기회가 다시 주어진다면 욕심을 버리고 쉬운 내용으로 알차게 준비하고 싶다.
4) 해커톤
입사 후에 가장 하고 싶었던 한 가지를 뽑자면 해커톤이었다. 작년엔 선물하기 프로젝트 때문에 참여를 못 해서 올해는 꼭 참여하겠다는 다짐 속에 해커톤에 참여했다. 팀원들이랑 숙소를 하나 구해서 출퇴근하면서 거기서 먹고 자고 했는데, 개인적으로는 회사 다니면서 제일 재밌었던 3일이었다.
해커톤은 12월 5일부터 7일까지 3일에 걸쳐 남산 연수원에서 진행되었다. 모든 팀을 5개의 그룹으로 나뉘고 그룹별 1등과 점수가 높은 2등 팀들이 결선으로 진출하는 방식이었다. 우리 팀은 아쉽게 결선 진출을 하지 못했지만, 2박 3일 동안 팀원들이랑 함께 즐거운 시간을 보낼 수 있어서 행복했다. 그리고 정말 좋은 아이디어들이 많아서 스스로 자극이 많이 되었다. (우리 팀은 아니지만, 다른 팀으로 출전한 팀원분들이 우승해서 대리만족할 수 있었다 👍)
2. 개인
1) 공부
자잘한 개인 공부 외에 올해엔 크게 3가지 스터디를 했다.
- 스프링 고급과 배치
- 이펙티브 코틀린
- 도메인 주도 설계 첫걸음
작년에도 사내 스터디를 했지만, 올해는 뭔가 좀 더 체득이 잘 된 느낌이다. 실무를 조금이나마 경험하면서 쌓인 개념들이 이론을 이해하는 데 도움이 됐던 덕분이 아닐까 싶다. 그리고 스터디 주제 자체도 실무와 밀접한 것들이기도 했다. 2024년에는 개인적으로 데이터베이스나 컨테이너 기술에 관련된 스터디를 해보고 싶고, 팀원들과는 테스트를 주제로 공부해보고 싶다.
참여한 스터디 모두 즐거운 마음으로 참여했고 배운 게 많았지만 돌이켜보면 팀원들과 함께했던 이펙티브 코틀린 스터디가 그래도 기억에 많이 남는다. 보통 스터디를 하면 한 명을 뽑아서 발표하는 방식으로 진행하는 게 일반적인데, 이 스터디는 깃헙 Repository에서 자유롭게 질문/공유하고 싶은 내용/토론하고 싶은 내용 등을 이슈로 올리는 방식으로 진행됐다.
발표 방식의 스터디의 장점도 있지만 개인적으로는 이렇게 자유롭게 토론하는 방식의 스터디가 나에겐 더 잘 맞았다. 발표는 복습의 느낌인 반면, 토론 방식으로 진행하면 확장성 있는 공부를 하는 느낌이었다. 또 엔터프라이즈 버전이 아닌 퍼블릭 깃헙에서 레포를 만든 덕분에 언젠가 회사를 떠나게 되더라도 자료로서 남길 수 있는 점도 좋았다.
스터디 외에도 넥스트 스탭 강의도 참여했다.
- ATDD, 클린 코드 with Spring
- DDD 세레나데
강의를 신청한 이유는 현재 업무환경에서 경험할 수 없는 주제를 실습해보기 위함이었고, 코드 리뷰를 받으면서 객체 지향이나 코드의 가독성에 대한 고민을 많이 해볼 수 있던 점 또한 부가적으로 크게 도움이 되었다. 여기서 배운 내용들을 실무에 적용해보면서 기존 코드들을 리팩토링해가는 과정이 소소한 즐거움이 되기도 했다.
2) 운동
재택근무를 하면서 살이 너무 쪘기도 했고 작년 말부터 시작된 목 디스크가 점점 더 심해지는 관계로 더 이상 운동을 미룰 수 없었다.
8월부터 헬스장에 등록하고 회사에서 열린 인바디 챌린지도 참여하기로 했다. 그리고 함께 운동하는 팀원분들과 운동 인증 챌린지를 시작해서 서로의 러닝메이트가 되어 주기로 했다. 그 결과 인바디 점수도 많이 올랐고, 건강검진 결과 작년에 비해 훨씬 몸이 건강해져서 만족스러웠다
3. 마무리
지난 2023년 한 해의 삶을 되돌아보면 다음과 같은 부분에서 만족스러웠다.
- 업무 수행 능력의 발전
- 짧은 주기로 목표를 설정하고 달성해나간 점
- 건강이 많이 좋아진 점
반면 아쉬운 면도 있었다.
- 긴 주기의 목표 수립이 미숙했던 점
- 업무와 관련된 서적 외 독서를 많이 하지 못한 점
- 일과 삶의 분리가 잘 안된 점
특히, 일과 삶이 잘 분리가 되지 않는 점은 동료 피드백에서 받았던 내용이기도 해서 반드시 개선해야 할 사항이다. 재택근무를 많이 하다 보니 좋은 점도 많지만 삶의 공간 = 업무 공간이 되어 버려서 삶과 일의 경계가 너무 무너져버렸다. 다행히(?) 이제는 재택근무가 줄어들고 출근 횟수가 많아져서 자연스레 이 부분은 해결되리라 생각한다.
2024년에는 밖으로 뻗어나가는 성장보다는 내적인 성장에 집중하면서 좀 더 밀도 있는 사람이 되고 싶다. 기본기를 좀 더 연마하고, 많은 것들을 시도하는 것보다 선택과 집중을 잘해야겠다는 생각이 든다. 마지막으로 작은 목표 몇 가지 남기고 글을 마친다.
- 운전 연습을 많이 해서 아버지 대신 운전하기
- 영어 회화 꾸준하게 연습하기
- 해외여행 (이건 작년에도 설정했던 목표인데 실패해서..)
- 한 달마다 2권씩 책읽기
'회고' 카테고리의 다른 글
[회고] 지식공유자 데뷔전 (2) | 2023.12.05 |
---|---|
[회고] 1년차 개발자의 2022년 회고 (0) | 2023.01.02 |
[회고] 프로그래머스 스터디 후기 - 단순 CRUD는 그만! 웹 백엔드 시스템 구현(Spring Boot) (0) | 2022.11.14 |
[회고] 2022년 상반기 회고 (0) | 2022.07.02 |