어느 날 우연히 본 광고에서, 한 소녀가 수십 장의 설계도를 바탕으로 멋진 발명품을 만들어내는 장면을 보았습니다. 그 장면은 저에게 ‘창조’의 매력을 각인시켰고, 저도 무언가를 직접 만들고 싶다는 열망을 갖게 되었습니다.
제가 가장 좋아했던 것은 게임이었습니다. 그래서 게임을 직접 만들어보자는 목표로 C와 C++, 자료구조, 알고리즘을 학습하며 실력을 쌓아갔습니다. 그렇게 시작한 프로젝트가 바로 ‘Enter the Gungeon’을 모작한 게임 개발이었습니다. 물론 과정은 쉽지 않았습니다. C++는 언매니지드 언어라 메모리를 직접 관리해야 했고, 그로 인해 빈번히 메모리 누수 문제가 발생했습니다. 이를 해결하기 위해 스마트 포인터를 도입하고, 메모리 해제를 자동화하는 구조를 설계해 문제를 해결할 수 있었습니다. 또한, 프로젝트 규모가 커지면서 객체 관리와 코드 유지보수에 한계를 느꼈고, 이는 제가 객체지향적 사고가 부족하다는 것을 뜻한다고 판단했습니다. 이에 책 ‘오브젝트’와 ‘객체지향의 사실과 오해’를 읽으며 객체지향 설계 원칙을 다시 공부했고, 이를 바탕으로 코드 전반을 리팩토링하여 유지보수성과 확장성을 크게 개선할 수 있었습니다. 이 과정에서 팩토리 패턴과 전략 패턴 등 다양한 디자인 패턴을 적용하여 반복적인 코드 구조를 유연하게 개선하고, 코드 중복을 줄이는 동시에 생산성을 높이는 경험도 할 수 있었습니다.
이러한 개발 경험을 통해 사용자에게 보이지 않지만, 전체 시스템의 핵심을 구성하고 안정성과 효율성을 책임지는 백엔드 영역에 흥미를 갖게 되었습니다. 단순한 화면 구현보다는, 데이터 흐름, 서버 아키텍처, 성능 개선, 확장성 있는 설계 등 시스템을 근본부터 설계하고 최적화하는 일에 더욱 매력을 느꼈습니다. 이후 Java와 Spring을 활용해 RESTful API 설계, DB 모델링, 인증 처리 등을 학습했고, 간단한 웹 서비스를 직접 구현하며 클라이언트-서버 간 데이터 흐름을 설계해본 경험도 쌓았습니다.
이처럼 저는 창조의 즐거움에서 시작해, 문제 해결을 통해 구조를 개선하고 성능을 최적화하는 개발의 매력에 깊이 빠졌습니다. 그리고 그 중심에 있는 백엔드 개발자로서, 사용자에게 보이지 않는 가치를 만드는 사람으로 성장하고 싶습니다.
저는 꾸준함과 지속적인 성장을 삶의 중요한 가치로 삼고 있습니다. 턱걸이 하나도 하지 못하던 시절부터 하루 1~2회씩 반복한 끝에 10개 이상을 할 수 있게 되었고, 현재는 3km 이상 구보를 즐길 정도로 체력과 끈기를 기르게 되었습니다. 이 경험을 통해 작은 반복이 결국 큰 성과로 이어진다는 것을 몸소 깨달았습니다.
개발에서도 같은 원칙이 적용됐습니다. 처음에는 낯선 개념과 잦은 에러로 자주 막혔지만, 매일 학습하고 직접 구현해보는 과정을 반복하며 꾸준히 성장했습니다. 그 결과, 팀 프로젝트 하이코딩 그룹웨어에서는 답글/대댓글 기능의 전반적인 설계를 맡아 프론트엔드와 백엔드를 연동하고, 상태 관리 및 비동기 처리까지 주도적으로 구현했습니다. 복잡한 흐름을 구조화하고 끝까지 파고드는 경험은 제게 큰 자신감을 주었고, 실전 문제 해결 능력을 키우는 데 큰 도움이 되었습니다.
한 가지 저의 단점은 낯선 상황이나 사람들 앞에서 말할 때 긴장을 많이 한다는 점이었습니다. 개발자로서 협업과 소통이 중요하다는 것을 깨닫고, 이 약점을 극복하고자 일부러 연기학원에 등록했습니다. 대사를 외우고 사람들 앞에서 발표하는 과정은 처음엔 많이 어색하고 두려웠지만, 반복적인 훈련을 통해 점차 자신감을 얻을 수 있었습니다. 이 경험은 단순히 발표력을 키우는 데 그치지 않고, 새로운 도전을 두려워하지 않는 태도를 기르는 데도 큰 도움이 되었습니다. 지금은 발표나 회의 자리에서도 침착하게 제 생각을 전달할 수 있게 되었습니다.
반복을 통한 성장과 두려움을 넘어선 경험은 제가 개발자로서 어떤 문제든 끝까지 파고들고, 팀에 안정감을 주는 구성원이 될 수 있는 밑바탕이 되었습니다. 꾸준함과 개선 중심의 태도로, 함께 일하는 사람들에게 실질적인 도움이 되는 개발자가 되고자 합니다.
개인 프로젝트를 통해 실서비스 수준의 인증 보안과 무중단 배포 환경을 직접 구축한 경험이 있습니다.
JWT 기반 인증 시스템을 Spring Security로 구현하고, Refresh Token은 Redis에 저장했습니다. Access Token의 유효기간을 짧게 설정한 대신 Redis를 활용해 빠른 응답 속도로 인증 서버의 부하를 줄일 수 있었고, 빈번한 DB 접근으로 발생할 수 있는 성능 저하도 방지했습니다. 또한, 로그아웃된 토큰의 재사용을 차단하기 위해 Blacklist 기능을 Redis에 도입했습니다. 이를 통해 탈취된 토큰이나 이미 만료된 토큰의 오남용을 방지하고, 인증 시스템의 보안성을 강화할 수 있었습니다.
배포 측면에서는 GitHub Actions를 이용한 CI/CD 파이프라인을 구성하고, Nginx와 로드 밸런서를 활용해 무중단 배포 환경을 구축했습니다. 두 개 이상의 인스턴스에 트래픽을 분산시켜 하나의 인스턴스를 업데이트하는 동안에도 다른 인스턴스가 서비스를 지속적으로 제공할 수 있도록 구성했고, Blue-Green Deployment 전략으로 배포 안정성도 확보했습니다.
이 프로젝트를 통해 기능 구현을 넘어서, 보안, 성능, 배포 자동화까지 고려한 전체 백엔드 아키텍처 설계 경험을 쌓을 수 있었습니다. 앞으로도 사용자 경험을 해치지 않으면서 안정적이고 신뢰할 수 있는 시스템을 만드는 데 기여하고자 합니다.
최근 여러 산업 분야에서 디지털 전환이 가속화되면서, 기술을 기반으로 현실적인 문제를 해결하는 기업들의 역할이 점점 더 중요해지고 있습니다. 그 속에서 개발자는 단순한 구현자에 머무르지 않고, 서비스와 비즈니스의 흐름을 이해하며 문제 해결에 적극적으로 참여하는 역할이 요구된다고 생각합니다.
특히 귀사처럼 실제 서비스 운영 경험이나 다양한 프로젝트 경험을 갖춘 기업에서 일하는 것은 개발자로서 현실적인 문제 해결 능력과 실무 역량을 키울 수 있는 좋은 기회라고 생각합니다. 비즈니스와 기술이 만나는 지점을 이해하고, 다양한 팀과 협업하며 개발하는 과정은 제가 성장하기를 바라는 방향과도 잘 맞습니다.
입사 후에는 맡은 업무에 책임감을 갖고, 기존 시스템을 빠르게 이해해 안정적인 운영과 개선에 기여하는 것을 목표로 하겠습니다. 기술적 역량을 꾸준히 키워나가면서도, 단순히 주어진 일을 처리하는 데 그치지 않고, 더 나은 구조와 방법을 고민하는 개발자가 되고 싶습니다. 장기적으로는 기술과 비즈니스의 연결고리를 이해하고, 프로젝트 전체를 책임질 수 있는 주도적인 개발자로 성장해 팀과 회사에 실질적인 가치를 더하겠습니다.