사내 개발자 스터디에 대한 고민

사내 개발자 스터디를 작년 11월부터 하고 있지만 1인 스터디화 되고 있다. 내가 발표자료 작성하고 발표영상 녹화해서 공유하고 있다.

개발자 스터디의 템포 낮추기

개발자 스터디의 템포가 조금 빠른 것 같아서 3주마다 한번 하던 것을 1달에 한번으로 바꾸었다. 발표 영상을 비 의무화하였다. 강도를 낮추고 진입난도를 낮추었다.

독서모임 운영, Cheer up

독서모임. 1월의 책은 “상자밖에 있는 사람”이다. 이 책은 스스로를 많이 돌아보게 만들었다. 블로그에 독후감을 남겼다.

링크: 독후감

인수인계, 내가 썼던 코드를 반성하기

나는 신입으로 입사 후 9개월 동안 솔루션의 1인 백엔드 개발자로 일했다. 2025년부터는 다른 팀으로 부서이동이 되었고 다른 분께 인수인계를 하고 있다. 내가 썼던 기존 코드들을 보면서 부끄러움을 느꼈다. 나는 내가 쓴 코드의 문제와 개선할 수 있는 방향을 솔직히 얘기했다. 그리고 나는 인수인계가 끝나서도 내가 썼던 코드를 리팩토링 하고 싶다.

Cuddle Life Project (clp)

배우자와 실제 론칭을 위한 서비스를 개발하고 있다. 속도가 더디지만 쌓아올리고자 한다.

맛보기: HATEOAS

좋은 RESTFul API를 만들기 위해 HATEOAS를 찍먹했다. 아마 clp를 하면서 도입해봐야겠다고 생각했다.

맛보기1: 멀티모듈 프로젝트

많은 사례에서 멀티모튤을 적극적으로 활용하고 있기에 멀티모듈 프로젝트를 clp에 적용했다. 많은 시행착오 끝에 그래도 그럭저럭 멀티모듈 프로젝트를 초기 설정하는 법에 대해서 익힐 수 있었다.

맛보기2: 클린 아키텍쳐와 도메인의 순수성과 JPA

클린 아키텍쳐를 조금 파다보면 순수 도메인 코드를 확보하고 싶어지는데 이것에 대해서 토비님과 최범균님께서 굳이 도메인 엔티티의 JPA 의존성을 지우려고 노력하지 않아도 될 것 같다는 의견이신 것을 알게되었고 내적으로 많은 사고실험 끝에 선현의 말씀에 따르는게 좋다고 판단했다.

맛보기3: 웹소켓 리버스 프록시 사용하기

실시간 데이터 로딩을 위해 웹소켓을 사용해야하는 웹서버가 있는데 이것을 VPC안에 감춰두고 리버스 프록시를 구현한 애플리케이션 서버에서 동시에 인증도 수행해야했다. 스프링 websocket 라이브러리를 사용하여 구현, 통합했다. 같은 url 패턴인데 어떤 것은 단순히 HTTP 주고받아야하고 어떤 것은 웹소켓으로 받아야해서 @RequestMapping(value = “/proxy/**”, headers = “!upgrade”) 와 같이 컨트롤러에는 해더를 통해 구분시켰다. 이후 STOMP에 대해서도 알게 되었고 이것도 나중에 공부해야겠다고 생각했다.

링크: 리버스프록시에 대해

해보기2: Spring Modulith

클린 아키텍쳐를 한마디로 얘기하자면 의존성을 관리하는 것인데 스프링 모듈리스는 싱글 모듈프로젝트임에도 패키지 단위로 가상의 모듈화를 지원하고 이에 대한 검증을 테스트 레벨에서 지원한다. 이런 점이 상당히 유연하다고 생각되었고 테스트 차원에서의 의존성 관리가 문서화되는 장점도 있어서 clp에 이것을 차용해서 사용중이다. 모듈간의 로직이 강결합되는 문제를 해결하기 위한 기술로 도메인 이벤트 드리븐이 대표적으로 소개되어 있다. 또한 각 모듈간의 구조를 잘 설계하고 API를 잘 정의하여 사용하면 정말 “클린”한 아키텍쳐가 되겠다고 생각했다.

해보기: 자바에서 코틀린으로

코틀린을 배우고 싶어 코프링 clp 프로젝트로 시작했다. 지금은 자바로 코드를 떠올리고 그것을 코틀린으로 작성하려고 한다.

프로퍼티 객체화

프로퍼티를 굳이 @Value로 필드에 초기화 하는 방법이 아니라 그래프 탐색을 하고 부모 노드에서 하위 노드 프로퍼티들을 싸잡아 객체화 할 수있다. 바로 @ConfigurationProperties를 사용하는 것이다.

링크: 관련 참고 블로그