카카오 서버 온보딩 후기: TDD, 레거시, AI를 통해 성장하는 개발 여정

by DD
2개월 전
조회수 20

카카오 서버 개발 신입 온보딩 과정을 통해 TDD, OOP 기반의 로또 게임 구현, 레거시 코드 인수 테스트, 리팩터링을 진행하며 실무 역량 강화

로또 게임 구현 미션에서 TDD(Test-Driven Development)를 통해 코드의 품질을 높이고, 객체지향 설계(OOP) 원칙을 적용하여 유지보수 가능한 구조 설계

레거시 코드 인수 테스트를 위해 운영 환경과 동일한 환경 구축(Production Parity)테스트 데이터 격리(Data Isolation) 전략을 통해 안정적인 테스트 환경을 구축

AI를 활용한 리팩터링 과정에서 AI 협업 기준을 설정하고, 변경 범위를 좁혀 검증 가능한 코드 개선을 진행하며 AI 활용 역량을 향상시킴

TDD(Test-Driven Development) 기반 로또 게임 구현

본문에서는 로또 게임 구현 미션을 통해 TDD(Test-Driven Development)의 중요성을 강조한다. TDD를 통해 코드의 동작을 예측 가능하게 만들고, 테스트를 먼저 작성함으로써 설계의 유연성을 확보했다. 특히, 랜덤 로직 테스트를 위해 생성 전략 추상화(Abstraction)를 적용하여 테스트 용이성을 높였다. 또한, 값 객체(Value Object)의 재사용을 통해 객체의 정체성(Identity)과 값의 동일성(Equality)에 대한 깊이 있는 고민을 보여준다. 이러한 과정을 통해 단순히 기능을 구현하는 것을 넘어, 설계의 기준을 세우는 개발자로 성장했음을 강조한다.

레거시 코드 인수 테스트: 안전한 코드 개선을 위한 첫걸음

레거시 코드 인수 테스트는 실제 서비스 수준의 코드에 대한 두려움을 극복하고, 안전하게 코드를 개선하기 위한 핵심 전략으로 제시된다. 사용자의 행동(Action), 시스템의 반환 결과(Response), 외부 상태 변화(State)를 보호하는 테스트를 작성하고, Strong Assertion 전략을 통해 테스트의 신뢰도를 높였다. 또한, Cucumber 기반 BDD(Behavior-Driven Development)를 도입하여 비개발자도 이해할 수 있는 테스트 명세를 구축했다. 운영 환경과 동일한 환경 구축(Production Parity)을 위해 H2 DB에서 PostgreSQL로 변경하고, Docker 기반 컨테이너화를 통해 테스트 환경의 일관성을 확보했다. 테스트 데이터 격리(Data Isolation)를 위한 FK 역순 삭제, TRUNCATE CASCADE 활용, 공통 Cleanup 유틸리티를 통해 테스트 간의 의존성을 제거했다.

레거시 코드 리팩터링: 좋은 판단을 내리는 개발자로 성장

리팩터링 미션은 단순히 코드를 수정하는 것이 아니라, 좋은 판단을 내리는 방법을 배우는 과정으로 정의된다. 구조 변경과 동작 변경의 명확한 분리를 통해 안전한 코드 개선을 위한 기준을 세웠다. AI와의 협업을 통해 리팩터링 효율을 높였지만, 변경 범위를 좁히고 검증 가능한 변경만 허용하는 방식으로 AI 활용 기준을 설정했다. AI가 작성한 코드라도 테스트를 통해 신뢰성을 확보하는 것이 중요함을 강조한다. 이 과정을 통해 개발자는 AI 시대에 필요한 역량을 갖추게 되었음을 보여준다.

AI 협업을 위한 기준 설정

AI를 활용한 리팩터링 과정에서, 신입 크루들은 AI와의 협업 기준을 설정하고, 이를 통해 효율적인 코드 개선을 이루었다. 처음에는 AI에게 광범위한 리팩터링을 요청했지만, 검증의 어려움을 겪었다. 이후, 변경 범위를 좁히고, 명확한 조건을 추가하여 검증 가능한 변경만 허용하는 방식으로 협업 방식을 개선했다. AI에게는 반복적이고 기계적인 작업을 맡기고, 방향 설정과 최종 판단은 사람이 수행하는 역할을 분담했다. AI가 작성한 코드라도 테스트를 통해 신뢰성을 확보하는 것이 중요함을 강조하며, AI 시대의 개발자에게 필요한 역량을 제시한다.

학생에서 개발자로: 로또 구현부터 레거시 개선까지, 서버의 흐름을 배우다