지난해는 한마디로 표현하자면 '프로 봇짐러'의 일상을 보낸 한 해였다.
취준생 때보다 많은 면접을 보았고, 예상치 못한 이직도 여러 번 이루어졌다.
혹시 내 회고를 읽고 모든 개발자의 삶이 이렇다고 오해하지는 않았으면 좋겠다.
결론부터 말하자면, 생각보다 연봉이 많이 올랐고 대규모 프로젝트를 경험하며 문제를 단기적·장기적으로 해결하는 방법을 체득하게 되었다.

회사일적인 부분 회고
첫 번째 이직과 새로운 도전
통합 결제 시스템을 구축하던 중 이직 제안을 받았다. 솔직히 '굳이 가야 하나?'라는 생각에 동료에게 고민을 털어놓기도 했다.
하지만 회사 근처까지 찾아와 이직의 필요성을 설명해 주는 정성에 마음이 움직여 주말 면접을 보게 되었고, 종료 2시간 만에 합격 통보를 받았다. 2년 전만 해도 정말 가고 싶었던 회사였지만, 막상 갈 때가 되니 비슷한 업무를 하게 될까 봐 고민이 컸다. 결정적인 계기는 의료비 지원 여부였다. 당시 나를 포함해 주변 분들이 아픈 상황이 많아 이 복지는 큰 매력으로 다가왔다. 또한 기존 회사에서 새로운 시도를 제안할 때마다 납득하기 어려운 이유로 거절당하며 뒤처지고 있다는 느낌을 받았던 터라 변화가 필요했다.
이후 미래에 대한 고민은 더 커졌다. 규모가 크지 않은 회사에서 성과를 위해 절차를 무시하고 일하는 경우가 잦았고, 프로젝트의 초기 방향성도 잃었다고 느꼈다. 개발부터 기획, 사내 정치에 지쳐가던 중 이직 제안을 수락했다. 마침 함께 일하던 본부장님도 퇴사하시면서 남아야 할 이유가 사라졌다. 조용히 마무리하고 싶었지만 소문이 금방 퍼졌고, 새로 부임한 CTO님과 면담을 가졌다. 그분은 AI에 관심이 많았으나, 당장 CPU 점유율이 튀는 문제나 단순 반복 작업을 수정하는 게 우선이라고 생각했던 나와는 견해차 가 컸다. 결국 초심과 달라진 환경을 확인하며 퇴사를 확정 지었다.
성과급을 반납하고 옮긴 새 직장에서는 입사 3일 차에 대규모 장애를 마주했다. 하필 나만 출근했던 날이라 혼자서 다른 부서의 요청을 응대하며 문제를 해결해야 했다. 네트워크 롤백 및 장애 처리 미흡이 원인이었음을 밝혀내며, 이곳에서의 본격적인 일과가 시작되었음을 실감했다.

기술적 성취와 숨 가쁜 프로젝트들
회사에서 기대하던 신사업과 거대한 레거시 시스템을 동시에 맡게 되었다. 특히 금융권 레거시 시스템은 트래픽 급증을 버티지 못하는 구조였다. 우선 Rate Limiter를 도입하고, 한계치를 넘으면 큐(Queue)나 웹훅으로 던져 후처리하는 방식을 적용했다. 함께 일하던 시니어 개발자가 퇴사하며 아키텍처를 전면 수정할 기회를 얻었고, 클라우드·IDC·보안 부서 담당자들을 설득해 성능 우선의 새로운 구조를 설계했다. Redis를 도입해 성능을 향상시키고 다음 단계의 프로젝트를 준비했다.
신사업은 원래 내 업무가 아니었으나, 슬랙 채널에서 문의에 답변해주다 어느새 담당자로 지목되는 해프닝 끝에 본격적인 '헬게이트'가 열렸다. MVP 모델에서 결제와 포인트 사용이 어긋나는 치명적인 트랜잭션 문제가 있었는데, 이를 해결하기 위해 이틀간 집에 가지 않고 회사에 상주하며 DB 설계와 네트워크 처리 로직을 수정했다. 일주일 만에 모든 문제를 해결하고 디자인팀의 요구사항까지 반영하자, 협업 부서에서 감사의 회식을 제안할 정도로 신뢰를 얻었다.

이후 사내에 '외부 연동 챕터'를 직접 만들어 MCP 도입을 주도했다. 일주일 만에 프로토타입을 만들어 배포했고, 외부 연동 시스템을 Kotlin에서 Go로 전환하며 성능을 30배 향상시키고 메모리 사용량을 70% 절감하는 성과를 거두었다. 퇴사하시는 팀장님께 뒤를 부탁한다는 인사와 함께 후드 집업을 선물 받기도 했다.
대규모 컨퍼런스와 민생지원금 신청 기간이 맞물렸을 때는 말도 안 되는 트래픽을 경험했다. 서버와 NAT를 증설해도 카드사에서 부하를 견디지 못하는 상황이 발생하자, 전사 최초로 Pulsar를 실무에 도입해 성공적으로 데이터를 처리했다. 또한 1PB 규모의 실시간 DB와 12PB의 백업 DB를 Oracle에서 MySQL로 교체하는 마이그레이션 작업도 수행했다. Kafka, Flink, StarRocks 등을 연동해 데이터 일관성을 확보하고, 모니터링 시스템을 Clickhouse 기반으로 전환하여 관측성을 대폭 개선했다.
가고 싶었던 네임드 기업, 그러나...
쉼 없이 달려온 끝에 평소 꿈꾸던 네임드 기업으로부터 합격 메일을 받았다. 퇴사 의사를 밝히자 임원진이 차례로 면담을 요청해 몇 시간 동안 가야 하는 이유를 토론하기도 했다. 아쉬움이 컸지만 내 결정을 존중해 주셨다. 마지막 프로젝트로 수천 개의 배치를 관리하는 시스템을 개선했다. AI를 활용해 로직을 문서화하고, AWS Step Functions와 Lambda로 재시작 로직을 자동화했다. 슬랙 봇을 통해 에러를 판별하고 담당자에게 알림을 보내는 라인을 구축했으며, Querydsl-sql 도입으로 성능 오버헤드도 줄였다. 퇴사 당일 밤늦게까지 고객센터 데이터 불일치 장애를 해결한 뒤에야 동료들의 축하 속에 회사를 떠날 수 있었다.
야심 차게 옮긴 새 회사의 분위기는 참혹했다. 대외적인 정치 상황과 AI 도입에 따른 부서 축소 등으로 동료들이 일에 집중하기 어려운 환경이었다. 네임드 회사인 만큼 더 많이 배울 것이라 기대하며 사내 프레임워크와 백오피스를 익혔지만, 정작 실무에서는 PR에 리뷰조차 달리지 않았고 나를 제외하면 모두가 손을 놓고 있는 듯한 분위기에 큰 실망을 느꼈다.
성장의 한계를 느끼고 입사 일주일 만에 다시 이직을 결심했다. 원티드 등 모든 플랫폼을 뒤져 100건 이상의 면접을 보았고, 80건의 1차 합격과 30건의 최종 합격이라는 치열한 과정 끝에 현재의 회사에 안착하게 되었다.
현재: 새로운 전장에서의 분투
지금의 회사에 오자마자 새로운 프로젝트가 오픈되었고, 하루에도 몇 번씩 에러가 터지는 상황을 마주했다. 이전 직장들에서 워낙 숨 가쁘게 달려온 탓에 수습 기간만큼은 조용히 쉬고 싶었으나 상황이 허락하지 않았다. 티켓팅 트래픽 폭주에 따른 정산 및 서버 요청 문제, 회사 합병 과정에서의 회원 마이그레이션 오류, 그리고 외부 연동사의 장애로 인해 금융사에 직접 장애 요청을 보내야 하는 굵직한 사건들이 연이어 터졌다.
Kotlin만 쓰다 다시 Java를 쓰게 된 점은 다소 불편했지만, 글로벌 기업 간의 경쟁과 협력이 얽힌 환경은 새로운 자극이 되었다. 특히 UTC와 KST의 시간대 관리가 얼마나 중요한지 절감했고, 잦은 부서 이동 속에서 기존 인프라와 숨겨진 서비스들을 찾아내는 작업에 매진했다. 다행히 팀장님이 이런 모습들을 좋게 봐주셨다.
최근에는 프론트엔드 개편 작업에도 깊숙이 관여하고 있다. 부서마다 제각각인 gRPC, GraphQL, API들을 하나로 합쳐 쓸 수 있도록 TypeScript 기반의 미들웨어를 수정하고 있으며, 자동으로 배포되는 Kubernetes 시스템에서 발생하는 문제들을 해결하며 많은 것을 배우고 있다. 또한 회사 프로젝트 최초로 SSR(Server Side Rendering)을 도입하여 고객 전용 데이터 페이지를 구축했고, 피그마(Figma) 기반의 디자인 시스템을 사내 시스템으로 내재화하는 작업까지 진행하며 의미 있는 성장을 이어가고 있다.
교육에 대한 부분 회고
Spring Security 깊게 파기
Spring Security를 단순히 사용하는 수준을 넘어, 인증(Authentication)과 인가(Authorization)의 내부 메커니즘을 직접 구현하며 동작 원리를 파악했습니다. 기본 지식을 바탕으로 빠르게 프로토타입을 만들며 보안 프레임워크에 대한 자신감을 얻은 시기였습니다.

Nginx 모임 - LINE의 미디어 프록시 최적화
매년 참석하는 Nginx 모임에서 LINE의 미디어 프록시 최적화 사례를 접했습니다. 수많은 프록시 설정의 디테일과, 특히 Nginx 내부에서 여러 프록시 설정을 병렬로 처리하는 구조를 배우며 서버 인프라 튜닝의 깊이를 체감했습니다.


인프런 방문: 거물들과의 만남, 혁신과 본질 사이의 균형
김영한 님, 향로 님과 직접 소통하며 기술적인 인사이트를 나누는 뜻깊은 시간을 보냈습니다. 사실 연초까지만 해도 AI가 생성하는 반복적인 패턴에 한계를 느끼며 다소 회의적인 시각을 가지고 있었습니다. 하지만 현장의 생생한 목소리를 통해 AI가 단순한 도구를 넘어 개발 패러다임을 어떻게 근본적으로 바꾸고 있는지 체감할 수 있었고, 이는 기술을 바라보는 시야를 넓히는 결정적인 계기가 되었습니다.
동시에 《객체지향의 사실과 오해》, 《오브젝트》의 저자 조영호 님과의 만남을 통해 다시 한번 기본을 되새겼습니다. 화려한 기술 트렌드 속에서도 변하지 않는 '코드의 가치'와 '설계의 원칙'에 대해 깊이 고민해 볼 수 있었고, 거물들과의 대화를 통해 개발자로서 나아가야 할 단단한 기초를 다시금 다지는 시간이었습니다.


Kafka 밋업: 데이터의 흐름 속에서 찾은 정합성의 가치
두 차례의 Kafka 밋업에 참여하며 평소 접하기 어려운 데이터 엔지니어분들과 깊이 있게 교류했습니다. 대규모 트래픽 환경에서 데이터의 일관성(Consistency)과 정합성(Integrity)을 어떻게 보장하는지, 그리고 예상치 못한 장애 상황에 대비한 백업 및 복구 전략은 어떻게 수립하는지에 대해 실무적인 고민을 나누었습니다.
단순히 메시지 큐를 사용하는 것을 넘어, 데이터 파이프라인의 신뢰성을 확보하기 위한 엔지니어링적 접근법을 배우며 백엔드 개발자로서 데이터를 다루는 관점을 한 단계 더 높일 수 있었던 소중한 시간이었습니다.


MySQL 30주년: 옵티마이저의 세계
MySQL 30주년 기념 교육 현장에 참여해 최신 기능을 익혔습니다. 특히 핀다(Finda) 개발자분께서 발표하신 옵티마이저 실행 계획과 비율 최적화 세션이 매우 인상적이었으며, DB 성능 고도화에 대한 실질적인 인사이트를 얻었습니다.


Spring Camp: 성장을 확인한 네트워킹
이번 Spring Camp는 기술적 이해도는 물론, 개발자 커뮤니티 내에서의 성장을 확인한 시간이었습니다. Flex 개발자분들을 비롯해 아는 동료들이 많아진 덕분에 네트워킹이 훨씬 즐거웠고, 지식의 깊이가 깊어진 만큼 세션 내용도 온전히 내 것으로 만들 수 있었습니다.



FEConf: 프론트엔드 생태계 엿보기
동료의 권유로 참석한 FEConf에서는 프론트엔드 최신 트렌드를 확인했습니다. 익숙한 개념들이 많아 내용을 수월하게 따라갈 수 있었고, 생각보다 많은 지인을 만나며 개발자 네트워크가 얼마나 확장되었는지 새삼 당황하면서도 즐거웠던 경험이었습니다.


AWS Meetup: AI 프로젝트를 위한 창의적 영감
그동안 큰 관심이 없었던 AWS였지만, 사내 AI 프로젝트 요구사항이 늘어남에 따라 활용 방안을 모색하고자 참여했습니다. 타사 개발자들의 창의적인 클라우드 활용 사례를 보며 인프라를 바라보는 관점이 한층 유연해졌습니다.


오픈소스 컨트리뷰션: Spring AI와 KMP
Spring AI 행사에서 이슈와 PR을 활발히 올리던 컨트리뷰터들을 직접 만나 교류했습니다. 또한 KMP(Kotlin Multiplatform) 밋업에도 참여했는데, 플랫폼은 달라도 'Kotlin'이라는 공통 언어로 안드로이드 개발자들과 깊이 있게 소통할 수 있어 즐거웠습니다.


빅데이터와 친해지기: Airflow & ClickHouse
꾸준히 공부하던 Airflow 모임에서 디스코드 너머의 사람들을 직접 만나 네트워킹의 즐거움을 느꼈습니다. 특히 한국 내 커뮤니티 활동이 드물었던 ClickHouse 모임이 새로 생겨 참여하게 되었는데, 데이터 엔지니어링의 새로운 즐거움을 발견한 시간이었습니다.


TypeScript Backend: 신선한 자극
Spring에 비해 상대적으로 규모가 작은 TypeScript 백엔드 모임을 시작했습니다. 초급 개발자분들의 열정과 신선한 관점을 접하며 지식을 공유했고, 새로운 기술 스택을 바라보는 유연한 태도를 가질 수 있었습니다.


서로 다른 두 세계: 기술과 인문학의 교차점
자바카페에서 진행한 『가상 면접 사례로 배우는 대규모 시스템 설계 기초』 스터디를 통해서는 백엔드 개발자로서 갖춰야 할 설계 역량을 다졌습니다. 단순히 책을 읽는 것에 그치지 않고, 복잡한 시스템의 구조를 어떻게 효율적으로 설계할지 동료 개발자들과 치열하게 논의하며 실무적인 아키텍처 관점을 정립할 수 있었습니다.
반면, 독서 모임 커뮤니티 트레바리에서는 인문학적 북스터디에 참여했습니다. 개발자라는 울타리를 벗어나 다양한 직업군을 가진 사람들과 만나며, 같은 텍스트를 두고도 각자의 삶의 궤적에 따라 얼마나 다르게 해석할 수 있는지 경험했습니다. 서로 다른 분야의 사람들과 나눈 대화는 제 내성적인 성격을 극복하는 데 도움을 주었을 뿐만 아니라, 기술 너머의 '사람'과 '세상'을 이해하는 유연한 사고방식을 선물해 주었습니다.


맺음말: 봇짐 속에 채워 넣은 '진짜' 개발자의 근육
지난 1년은 단순히 직장을 옮겨 다닌 시간이 아니라, 어떤 낯선 환경에서도 즉시 문제를 해결할 수 있는 '현장형 전문가'로 거듭나는 과정이었습니다. '프로 봇짐러'라는 수식어 뒤에는 대규모 트래픽을 견뎌내고, 거대한 레거시를 현대화하며, 복잡한 이해관계를 기술로 풀어낸 치열한 분투가 녹아있습니다.
예상치 못한 장애와 열악한 팀 분위기 속에서도 제가 집중한 것은 언제나 '본질'이었습니다. 금융권의 복잡한 트랜잭션 문제부터 대규모 마이그레이션까지, 상황에 맞는 기술을 과감히 도입하며 비즈니스의 연속성을 지켜냈습니다. 이러한 경험은 이제 저에게 어떤 도구나 환경이 주어져도 성과를 낼 수 있다는 강력한 자신감이 되었습니다.
혼자서만 달렸다면 쉽게 지쳤을지도 모릅니다. 하지만 Spring Camp, Nginx 모임, 각종 기술 밋업을 통해 동료들과 교류하며 매너리즘에 빠지지 않는 자극을 얻었습니다. 백엔드라는 뿌리를 단단히 내리되, AI와 프론트엔드라는 가지를 뻗어 나가며 기술을 바라보는 관점을 확장했습니다.
'일상' 카테고리의 다른 글
| 2024년 회고록 (3) | 2025.07.25 |
|---|---|
| 제로베이스 백엔드 스쿨 6달 후기 (5) | 2022.09.30 |
| nextstep - 인프라 공방 1주차 (0) | 2022.09.06 |
| 제로베이스 백엔드 부트캠프 5달 회고록 (1) | 2022.08.31 |
| NEXTSTEP ATDD 1주차 회고 (0) | 2022.08.22 |