Spring 3로 구성되어있는 Koin 서비스를 SpringBoot로 마이그레이션하기 시작하기로 했다.
이 과정에서 마이그레이션이 정상적으로 완료 되었는지 확인하기 위해 ATDD 방식을 적용하고자한다.
인수테스트 작성, SpringBoot, 협업 방식, 코드컨벤션 등 프로젝트 초기 구성 과정에서 구성원들의 이해를 맞추기 위해 몹 프로그래밍 방식이 유용하다고 생각했다.
초기에 간단한 도메인을 목표로 잡고 몹프로그래밍을 진행하며 구성원의 이해도를 동일하게 맞춰가는 과정을 진행하려고한다.
마이그레이션 이유에 대한 자세한 이야기는 BCSDLab - 레거시 이야기 참고
프로젝트를 시작하기 전 사전에 다음과 같은 내용들을 고려하면 좋겠다고 생각하여 정리해본다.
초기 몹프로그래밍을 완료한 뒤 구성원들과 논의하여 도출할 예정
나를 포함한 BackEnd Regular 인원 4명이 마이그레이션 프로젝트에 참여했다.
프로젝트 시작 및 구성원의 이해과정을 동기화 하기 위해 몹 프로그래밍으로 SpringBoot 프로젝트 생성부터 진행했다.
마이그레이션을 진행하기 위해 인수테스트를 도입했다.
기존 API와 동일하게 동작하는지 확인하기위한 최소한의 안전장치라고 생각하여 도입했다.
초기에는 다소 어색하고 테스트짜는것이 불편할 수도 있겠지만 무수히 많은 API를 손으로 일일히 테스트하는것 보다는 훨씬 더 나을 것이라고 팀원들을 설득했다.
도구는 가장 익숙한 RestAssured를 사용하기로 했다.
4명이서 몹프로그래밍을 진행하며 수행한 작업내용을 정리해두고자 한다.
향후 다른 작업을 수행할 때 어떤 작업을 고려해야할 것인가에 대한 지표가 될 수 있을 것 같다는 생각이다.
브라운의 ATDD 강의를 참고하며 팀원들에게 인수테스트의 중요성을 설득했다.
가장 간단한 API를 우선적으로 구현하며 팀원들과 컨벤션, 코드스타일, 인수테스트 작성방식 등 다양한 정보에 대해 이해를 맞춰가는 시간을 가졌다.
BCSDLab의 트랙 정보를 나타내는 /tracks
와 /tracks/{id}
API에 대한 인수테스트 작성 및 구현을 몹프로그래밍으로 진행했다.
약 3일에 거쳐 간단한 API 몹프로그래밍을 완료했다.
하루에 2시간씩 약 6시간 이상을 투자한 것 같다.
다른 팀원들을 학교에, 나는 서울에 있어 임시 레포를 통해 코드를 옮겨가며 작업을 진행했다.
다들 처음 해보는 몹프로그래밍에 다소 뚝딱거리는 면도 있었지만 2일차부터 익숙해지며 이야기를 나누며 작업하는 모습이 나름 효과적이였다고 생각한다.
이제 본격적으로 해야할 것들이 눈앞에 보이기 시작한다.
약간 아찔하긴 한데 조금은 장기적으로 보되 템포는 빠르게 진행하고자 한다.
몹프로그래밍을 진행하며 다양한 질문들이 나왔는데 해당하는 키워드들에 대해서 간략하게 정리해두고 마무리하려고한다.
몹 프로그래밍, 드라이버, 네비게이터, 그라운드 룰
WAR, Jar, 스프링 부트 설정, Lombok, Flyway, Bean Validation, Swagger, .gitignore, DS_STORE, yaml, gradle, RestAssured, Instant와 LocalDateTime, Bean Validation과 JPA, CRUD Repository
차후 다른 레귤러들의 온보딩 과정에 해당 키워드를 학습하도록 유도해야겠다는 생각이 든다.
다음은 repository를 init하는 부분부터 이어나가볼 예정이다.
앞으로도 화이팅이다!