2024년 회고입니다.
회고는 편한 말투로 작성하겠습니다.
1. 4년차 개발자
2024년이 마무리되면서 4년차 개발자가 됐다. 이제 회사에 입사한 지 만 3년이 지난 것인데 세월이 참 빠르다는 생각을 한다.
카카오에서는 근속년수 3년마다 1달을 통째로 쉴 수 있는 리프레시 휴가가 나오는데 나도 3년이 지나서 리프레시 휴가를 받게 됐다. 회사에 처음 들어올 때만 해도 언제 3년이 지나나 걱정했는데 지금에 와서는 정말 빠르게 지나간 것 같다. 아직 리프레시 휴가를 어디에 쓸지 정하지는 못했는데 다른 분들처럼 여행을 가거나 휴양을 하는 데 사용하게 될 거 같다.
개발한 지 만 3년이 되면서 느낀 점은 코드를 설계하고 좋은 구조를 만드는 능력은 좋아진 거 같은데 반대로 빠르게 구현하는 능력은 조금 부족하다고 느낀다. 어느 정도 트레이드 오프를 생각하면서 코드를 작성해야 하는데 아직까지는 적당한 지점을 찾지 못한 느낌이다.
앞으로 이 점에 대해서 고민하면서 일을 해야겠다.
2. 올해 한 일
올해는 거의 한 가지 일에만 집중해서 일했다. 오래된 레거시 코드를 최신 Java, Spring Boot를 이용해서 개편하는 작업을 진행했다. 개편 전 코드는 내가 있는 그룹의 핵심 기능이지만 10년 이상된 코드로 꽤 많은 변경 사항이 누적돼 있었다. 이 프로젝트를 개편하는 데 올해를 거의 다 사용했다.
해당 프로젝트의 문제점은 오래되고 복잡한 코드로 구성돼서 유지보수성과 개발편의성이 낮고 확장성이 부족한 상태였다. 적절하게 클래스와 메소드가 분리되지 않아서 가독성이 좋지 않았고 테스트 코드도 부족했다. 정확하게는 테스트 코드는 많았지만 관리되지 않고 있어서 깨진 테스트들이 존재하는 상태로 방치돼 있었다. 깨진 테스트들 대부분은 개발용 DB를 직접 호출하는 코드들이었다.
개편을 진행하면서 기존 프로젝트가 가지고 있는 문제점을 해결하려고 했다.
- Java 21과 Spring Boot 3으로 변경
- 거대한 Service 클래스를 기능 단위의 Service 클래스와 Domain 클래스로 분리
- 모든 Service, Domain 클래스에 단위 테스트 추가
- Testcontainers를 이용한 통합 테스트 추가
- 테스트를 지속적으로 관리하기 위해서 CI에 테스트 실행 추가
- 개발 환경에 자동 배포할 수 있는 파이프라인 추가
- 확장성 개선을 위해 Ehcache에서 Redis Cache로 변경
최신 버전의 Java와 Spring Boot로 변경하면서 개선된 변경 사항을 반영해서 코드를 작성했다. Record와 패턴 매칭을 지원하는 Switch 문을 이용해서 코드의 가독성을 좋게 변경했고 너무 커서 읽기 힘들었던 Service 클래스를 작게 분리했다.
그리고 분리한 모든 Service, Domain 클래스에 테스트를 추가했다. 추가한 테스트는 단위 테스트도 있고 Testcontainers를 이용한 통합 테스트도 있었다. 기존 프로젝트에서는 개발용 DB를 호출해서 제대로 동작하는 지 확인하는 테스트가 존재했는데 이런 테스트는 실행 때마다 성공을 장담할 수 없는 테스트이기 때문에 좋지 않았다. 때문에 이를 해결하기 위해서 Testcontainers를 도입했다. Testcontainers는 테스트 실행 때 Docker로 테스트용 DB 컨테이너를 띄워서 테스트 때 사용할 수 있게 도와주는 라이브러리다. Testcontainers를 이용해서 테스트 시 DB 의존성을 제거했다.
테스트를 지속적으로 관리하기 위해서 CI 단계에서 테스트가 실패하면 알림을 보내는 기능도 추가했다. 추가로 develop 브랜치에 머지되면 개발환경에 자동으로 배포하는 파이프라인도 만들었다. 사실 develop 머지 이후에 자동 배포하는 기능은 크게 중요한 기능은 아니지만 가끔씩 까먹는 경우가 있기 때문에 추가했다.
기존 프로젝트는 서버 별로 Ehcache를 이용해서 DB 데이터를 캐시했는데 이 때문에 캐시가 지워질 때마다 서버 별로 DB에 부하가 갔다. 현재는 Redis를 이용한 글로벌 캐시로 변경해서 한 서버에서 갱신된 내용은 Redis를 캐시하도록 변경해서 DB 부하를 줄였다.
올해 초부터 지금까지 하고 있는 일인데 지금은 거의 마무리 단계로 내년이 되면 서비스 환경에 배포 예정이다. 개편을 하면서 힘들기도 했지만 새로운 코드로 바꾸는 일이 정말 재밌어서 올해는 정말 재밌게 일했던 거 같다.
3. 읽은 책
작년에 이어서 올해도 개발 관련된 책을 꾸준히 읽었다. 올해는 하루에 1시간 씩 책을 읽었다. 중요한 것은 하루도 빠짐없이 읽는 것인데 올해도 이 루틴은 지킬 수 있었다. 다만 30분은 개발 관련 서적을 읽었고 나머지 30분은 일과 관련 없는 책을 읽는 데 사용했는데 집에 오래 묵혀뒀던 책을 모두 읽을 수 있어서 좋았다.
올해 읽은 개발 관련 책 목록은 다음과 같다.
- 헤드퍼스트 디자인 패턴
- 자바 ORM 표준 JPA 프로그래밍
- 구글 목표를 달성하는 방식 OKR
- Release의 모든 것
- 켄트 벡의 Tidy First?
- 쏙쏙 들어오는 함수형 코딩
- 실전 레디스
- 개발자를 위한 레디스
- 팀 개발을 위한 Git, Github 시작하기
- 요즘 우아한 개발
- 데이터 중심 어플리케이션 설계
- 혼자 공부하는 컴퓨터 구조 + 운영체제
- 내 코드가 그렇게 이상한가요?
- 레거시 코드 활용 전략
이 중에서 좋은 책도 있었고 별로인 책도 있었지만 다른 사람에게 추천해 줄 만한 책은 '내 코드가 그렇게 이상한가요?'라는 책이다. 이 책은 쉽게 읽을 수 있게 쓰인 책인데 공감이 가는 예시가 많아서 고개를 끄덕이면서 읽었다. 저자가 일본 사람이고 게임에 비유해서 좋은 코드와 나쁜 코드를 설명해 주는데 게임을 좋아해서 그런지 예시가 재밌었다. 대부분은 이미 알고 있는 내용이었지만 다시 상기시킨다는 느낌으로 읽기 좋았다. 나쁜 코드의 의미를 예시를 통해 쉽게 가르쳐주기 때문에 개발을 배우는 초기에 읽어도 좋을 거 같다고 생각했다. 그리고 더 공부하고 싶다면 읽어야 하는 책을 후반부에 소개한 부분이 있는데 이 책에서 추천해 준 책을 읽어볼 예정이다.
4. 내년에 할 일
내년에는 올해 계획 했던 일중에 올해 하지 못했던 일들 위주로 하려고 한다.
- 영어 공부하기
- 사이드 프로젝트 하기
- 운동 하기
- 블로그 글 쓰기
이 목표들은 올해 계획만 하고 아예 하지 않거나 일부만 했다. 작년 회고에 작성한 내용과 거의 같은 목표인데 제대로 하지 못해서 민망하다. 내년 회고에는 자랑스럽게 이 목표들을 달성했다고 작성하고 싶다.
5. 마치면서
올해는 기존에 한 일을 유지하는 데 힘을 쓴 거 같아서 조금 아쉽다. 내년에는 조금 더 노력해서 새로운 목표를 달성해 봐야겠다.
2024년 회고 끝~~!

'후기 및 회고' 카테고리의 다른 글
2023년 회고 (1) | 2023.12.31 |
---|---|
2022년 회고 (2) | 2022.12.31 |
2021년 회고 (24) | 2021.12.31 |
개발자가 되기까지(사실 인생 회고) (8) | 2021.12.30 |
2022 카카오 블라인드 채용 최종 합격 후기 (55) | 2021.11.19 |
댓글