메가테라 8주차 주간회고
이번 주는 Spring Boot으로 웹 어플리케이션 서버를 만들어보았다.
heroku정책 변경으로 11월 이후에는 접속할 수 있을 지 모르겠지만 배포까지 했다!
https://makaoletter-heyjyu.herokuapp.com/
https://todolist-heyjyu.herokuapp.com/
https://makaobank-heyjyu.herokuapp.com/
위 링크에서 확인할 수 있다.
html파일도 자바로 작성해서 css는 정말 최소한만 적용되어 있다.
확실히 Spring Boot 없이 웹 어플리케이션 서버를 만들었던 저번 주보다 더 재밌었고,
더욱 집중해야 될 부분(비즈니스 로직)에 집중해서 프로그래밍할 수 있었다.
Spring Boot가 없었다면 의존성 주입을 하나하나 직접 관리해줘야 됐을 텐데
Spring Boot 덕분에 의존성 주입을 직접 관리하지 않아도 돼서 좋았다.
이번 주에는 과제를 할 때 layered architecture와 관심사 분리를 이전 주차보다는 더 잘 적용해보려고 노력했다.
Repository에서는 저장, 조회, 삭제 등을 수행하고,
Service에서는 Use Case들을 정의하고,
Model에서 도메인 로직을 다뤘다.
그리고 TDD로 프로그램을 작성하는 것까지는 할 수 있을 것 같은데 리팩토링도 TDD로 하려니 너무 어려웠는데,
리팩토링할 객체와 해당 테스트를 복사해서 프로그램이 돌아가는 것에 영향을 주지 않도록 해두고,
복사된 테스트를 수정하고 객체도 수정해서 정상 동작을 확인하고 나서 교체해주는 방식으로 작업하면 된다는 것을 알게 되었다.
이번 주에는 아샬님의 클린 아키텍처 금요지식회도 들었다.
그 중 내가 느끼기에 가장 중요했던 부분은 안쪽 레이어는 바깥쪽 레이어가 바뀌는 것에 영향을 받으면 안된다는 점이었다.
즉, 안쪽에서는 바깥이 뭔지 드러나면 안된다.
바깥이 뭔지 안쪽에 드러나있다면 바깥을 변경했을 때 안쪽도 변경해줘야하는데, 이는 유지보수를 어렵게 만들기 때문이다.
이를 고려해서 코드를 짜려고 노력해봤지만 코드를 짜면서 어떤 계층에 넣어줘야 되는지 애매한 부분이 많았다.
이번 주는 어디에 어떤 코드를 넣어야 될 지 판단하는 것이 가장 어려웠던 것 같다.
다음 주부터는 어떻게 하면 유지보수가 더 쉬워질지에 초점을 맞추고 일단 코드를 짜고 홀맨님께 더 좋은 방법을 여쭤봐야겠다.