DDD(Domain Design Driven)세레나데 교육 #1


첫번째 수업 2020.02.06

아주 운좋게 Next Step에서 하는 DDD 세레나데 오프라인 교육에 참석하게 되었다. 교육일정은 다음과 같다.

NEXT STEP은 워낙 유명해서, 자바지기(박재성)님이 운영하는 교육 단체이다. 지금은 우아한 형제들쪽에서 교육 관련된 부분을 맡아서 진행하는 걸로 알고 있다. 참고로 자바지기 박재성님 TDD, 클린 코드는 강의는 오픈과 동시에 1~2분만에 신청이 끝난다고 한다. 얼마나 현업에서 개발자들이 갈증을 느끼고 Clean하고 구조적으로 좋은 코드를 작성하기 위해서 노력하는 지 짐작할 수 있다.

돌아오는 2월 19일 오전10시에 박재성님 강의가 열린다고 한다. 관심있는 분들은 꼭 등록하길 바란다. 백엔드 주니어들의 상향평준화를 위하여🍻 전체 내용을 상세하게 공유할 수는 없지만, 어쨌든 내가 배웠던 부분에 대한 리뷰는 필요할 것 같아서 글을 쓰게 되었다.

참여하는 마음 가짐

처음에는 전체적인 로드맵을 설명 들었다. 의식적인 노력, 매일 1~2시간의 시간을 확보할 것과 같은 기본적인 마음 가짐 자세에 대해서 배웠다.여러분을 믿지말라는 명언을 남기고 자바지기님은 사라 졌다. 환경을 만드는게 가장 중요하다고 하셨다. 아무래도 회사 일을 하면서 끝나고 특별히 시간을 만들어야 하기 때문에 그 부분에 대해서 환경을 강조 하셨던 것 같다. 아무래도 이 수업을 듣는 사람들은 업무를 보다가 과연 DDD를 어떻게 현업에 적용(?)시킬지 혹은 DDD라는 것이 적용된 실제 코드를 보고 싶어하기 때문에 열의는 다들 충분하다고 판단한다.

PR, 꼼꼼한 리뷰

예전에 해커톤을 참석하게 된 적이 있었는데, 오픈 소스 협회에 걸 맞게 각자 자신이 맡은 부분을 할당 받아서 소스 코드를 작성하고 풀리퀘스트를 날리게 되면, committer가 소스 코드를 보고 반영할 지 말지를 결정 한다. 말인 즉슨, 오픈소스에서 어떻게 코드를 기여하고 반영하는 지 얼추 알았다. 하지만 예전에는 PR에 대한 공격적인 리뷰를 직접 받지는 못했다. 하지만 Next Step에서 제공하는 강의는 리뷰어를 두어서 리뷰를 매우 꼼꼼하게 진행하는 것이 정말 좋은 것 같다. 진짜 우리와 같은 주니어 개발자에게 리뷰는 정말 생명과도 같은 존재다! 새로운 시선과 시야를 가질 수 있게 되기 때문이다.

리뷰를 많이 받아 보지 못해서 어느 정도 까지 가늠할 수 없었는데, 내가 받았던 리뷰 뿐만 아니라 다른 사람이 작성한 코드에 대해서 기웃기웃 거리다가 거기에 남긴 리뷰어들의 코멘트가 사실 많이 도움되었다.

사실 이런 질문들은 이펙티브자바 클린코드 리팩토링 이런 책에 언급되는 개념이지만 내가 직접 작성한 코드를 통해서 리뷰를 받게 되면 한 층 더 생각하게 되는 것 같다.

요구 사항 분석

2번째 미션은 미리 작성된 레거시 코드를 기반으로, 실제 요구사항을 README 파일에 작성한다. 처음에는 단순한 CRUD의 반복이라고 생각했다. 메뉴를 만든다. 메뉴의 구성은 가격과 이름으로 구성된다. 등 비교적 쉽게 접근했지만, 어느 순간 문장 자체가 쉽게 나오질 않았다. 그리고 무엇보다도 요구 사항은 개발자외에 다른 기획자, 디자이너와 같은 다양한 사람들이 보기 때문에 그들의 언어에 맞춰서 쉽게 평서문으로 작성해야 했다. 이런것도 당연히 리뷰를 받은 내용이었다.

테스트 코드 작성

3번째 마지막 미션은 기존에 작성된 레거시 코드를 테스트하는 테스트 코드를 작성하는 것이다. Junit5를 사용하는 것과 @ParameterizedTest @ValueSource 라는 것에 대해서 알게 됐다. 파라미터를 다양하게 넘겨서 테스트 하는 경우에 @Test보다는 @ParameterizedTest 이것을 통해서 파라미터 값을 셋팅하고, 테스트 메서드 함수에 넘겨서 테스트 하면 파라미터의 각 경우마다 테스트 케이스가 발생한다.

또한, 반복적인 작업은 Fixture를 통해서 따로 관리하는 것이 중복도 줄이고 관리하기도 훨씬 수월했다.

정말 이번에 크게 배웠던 것은 Mockito vs BDDMockito 가 다른 package에 있는 것이라는 였다. 흔히 테스트 케이스를 작성할때 given, when, then으로 나눠서 작성하는데 Mockito에는 when().thenReturn() 이 메서드가 given에 해당하는 것이고, BDDMocktio는 진짜 given().willReturn() 이 메서드가 given에 해당하는 부분이다. 이 부분을 확실히 개념 정리 하지 않아서 헷갈렸는데 덕분에 말끔하게 알게 됐다.

정리

매 회차 마다 배웠던 것들과 간략한 리뷰를 작성하려고 한다.

Buy me a coffeeBuy me a coffee

👍광고

이 글이 아주 조금 도움이 되었다면 구글 광고 클릭 부탁드립니다.🙆‍♂️

🏅연관된 포스팅