1월에 개인적으로 정리할 일도 있고 취업 준비도 하고 꽤 바빴다. 그래서 3주 동안 뭘 했고 무엇을 봤는지 적어보려한다.
스프링 게시판 프로젝트
게시판 프로젝트를 12월 말에 시작하여 1월 중에 끝냈다. 게시판은 JSP로 깡통만 해서 1시간만 있으면 뚝딱 만들 수 있지만 스프링으로 만들어본 것은 처음이라 시간이 더 걸렸다. 아무런 예외 처리나 유효성 검사 없는 깡통은 2일이면 금방 만들지만 오래 걸린 이유는 내가 이 게시판 프로젝트를 혼자 만들면서 기대하는 것들이 있었다.
- Test(JUnit5, Mock)에 대한 익숙함: 예전 JSP 웹 프로젝트를 했을 때는 테스트에 대한 이해와 이유를 몰랐다. 이후 스프링 강의를 들으면서 테스트의 중요성에 대해 알았는데, 여기서는 사용하는 것에 익숙해지려 했다. Mock이라는 것과 테스트 환경에 대해서 공부하기도하고 테스트 코드 작성법이나 기초를 공부하느라 시간이 많이 갔다. 다른 사람의 테스트 코드를 읽는 것에도 시간을 많이 들였는데 깔끔한 코드 스타일에 대해 많이 도움 되었다. 한 가지 아쉬운 점은 단위 테스트를 하지 못했다는 것이다.
Service와 Repository의 테스트가 현재 의존되어있고 분리를 해야하는데 아직 방법을 찾지 못해서 공부를 더 해야된다.
테스트 코드의 이유도 이번 프로젝트에서 많이 느꼈다. 엔티티 필드가 바뀌면 테스트에서 많이 오류를 찾았다. 이젠 습관적으로 테스트를 돌리게 된다. - DDD(도메인): 도메인이라는 것도 스프링 공부하면서 더 명확해졌다. 도메인 주도 설계라 해서 도메인 안에 비즈니스 로직도 넣고 엔티티와 DTO도 따로 분리하여 만들었다. 사실 이 부분에서 가장 시간이 많이 걸렸다. 자료를 찾아보고 책도 찾아보고 했고 여러 도메인 코드를 본 것을 종합하여 내 프로젝트에 맞게 작성했다. 아직은 도메인 2개밖에 없는 간단한 프로젝트이지만 도메인의 역할과 어떤 스타일인지에 대해선 파악한 것에 만족했다.
아직 궁금한 것은 DDD를 사용한 실무 프로젝트는 어떤 형식으로 되어있는지 너무 궁금해졌다는 것이다. 가장 고민이 setter를 열지 않고 어떻게 객체를 설정하고 수정할지였고 Builder 패턴을 통해 해결은 했다. 정말 내가 사용하는 패턴이 맞는지 아님 더 효과적인 방법이 있는지 확인해보고 싶다. - 관심 분리와 의존: 영한님 강의에서 관심을 분리해야 한다는 말을 많이 들었고 SOLID에서 SRP를 지키는 것의 예로 Controller, Service, Repository의 로직 분리를 어떻게 해야 할지 고민을 했다. 또한 파라미터를 기본 타입으로 넘길지 DTO를 한 번에 넘길지도 고민이었다. 게시판이라 그런지 그렇게 로직이 복잡하거나 하지 않아서 그다지 많이 느낀 게 없지만 한번 금융 관련이나 주문 관련 프로젝트를 해보고 싶은 마음이 들었다.
- 예외 처리: 학원에서 진행한 JSP 웹 프로젝트에선 자세한 예외 처리를 하지 않았다. 우린 예외가 나는 상황을 js로 메시지로만 나타냈을 뿐이었다. 스프링으로 와서 깊게 예외 처리에 대해서 공부해야 된다는 것을 처음 알았다. 그래서 예외에 대해서 익숙해지는 것과 예외를 처리하는 방법들에 익숙해지려 했다. 블로그에 이와 관련된 글도 몇 가지 썼고 예외 처리 느낌은 체득했다고 생각한다.
현재는 Security를 공부해서 security + JWT 사용으로 여기에 적용시키려한다.
첫 Pull Request
Security를 ref Doc을 보며 공부하고 있던 찰나 몇몇 링크와 오타가 있어서 문서가 깨지거나 연결되지 않은 곳을 발견했다. 아직 승인은 되지 않았지만, 된다면 첫 Pull Request와 기여가 Spring Security가 되는 것이다. 덕분에 Pull Request하는 법과 오픈 소스 기여에 대해서 아는 좋은 기회였다. 링크
프로그래머스(주문 관리 API 개발) 과제 테스트
코딩 테스트도 조금씩 준비하고 있는 중에 과제 테스트도 있다고 해서 냅다 시작했다. API 응답 처리, Interceptor를 구현하거나 페이징 관련, 주문 관련되는 로직을 통째로 만들고 하는 부분이 있었다. 게시판을 하는 중이라 쉽게 쉽게 넘어 갔는데 꽤 어려운 부분도 많았다. 굉장히 좋은 코드와 내가 몰랐던 처리 방법도 있었고 배울 게 많았다. 그래서 하다가 어느 정도 완성되는 느낌이라 그만두고 내 게시판 프로젝트와 비교하면서 코드 분석을 했다.
내 프로젝트는 현재 응답 처리가 어느 정도 일관성을 갖췄지만, 정상과 에러 응답은 달랐다. 이 과제에서 구현한 것들은 정말 깔끔했다. 또한 예외 처리 같은 부분도 깔끔하게 되어있고 API를 받는 클라이언트 쪽에서는 까보기만 하면 파악할 수 있는 구조로 되어있다. 많이 반성하고 내 프로젝트도 리팩토링 하려한다. 또한 도메인 로직, 검증하는 로직에 대해 배울 것도 많았다. 다시 코드를 볼 수 있다고 해서 security가 끝나면 제대로 분석해보려 한다.
토비의 스프링 부트 강의
페이스북으로 토비님께서 인프런에서 스프링 부트 강의를 열었다는 것을 봤다. 얼른 보고 싶은 마음은 굴뚝 같지만 이 security와 게시판 프로젝트의 추가적인 기능들만 완성되면 시작하려고 한다. 사실 영한님도 스프링 부트가 어느정도 완성되었다는 글을 올리신 걸 보고 두 분이서 어떻게 스프링 부트를 설명을 하실지 기대가 된다. 시간이 문제다...
새해
새해 목표를 매년 알라딘 책 장바구니를 정리하면서 공부할 책들을 샀지만, 개발을 시작하고 나서는 올해 무엇을 공부할까하며 인터넷에 글을 모으고 있다.
작년엔 온전히 개발에 집중해서 해서 학원에 버스로 왔다갔다하는 3시간만 책을 읽었다. 그마저도 노트북 키고 개발 관련된 것을 하는 게 많았는데 올해는 더 많이 읽고 싶다.
댓글