Max 6주차: 23-04-10 ~ 23-04-14
Max 7주차: 23-04-17 ~ 23-04-21
Max 8주차: 23-04-24 ~ 23-04-28
- 4단계: 로그인, 로그아웃 기능
- 5단계: 게시글 권한 부여(게시글 작성, 수정)
- 6단계: 댓글 추가, 삭제 기능
3주동안 전반적으로 사소한 실수로 인해 트러블 슈팅하는 시간이 많았다.
예를 들면 SqlParameterSource
를 사용하는데 쿼리 내 변수를 수정/추가하면서 :
를 변수 앞에 빠트렸다던지...
특히 View에서 넘어온 데이터(HTML 코드 내 변수), 도메인, DTO, 쿼리 사이에서 매핑 이슈가 많이 발생했는데,
Spring이 워낙 추상화가 되어 있으니 디버깅을 해도 안보이는 부분이 꽤 있어서 고생을 많이 했다.
(물론 내가 디버깅을 잘 못해서 일 수도 있다.)
Java에서 자주봤던 에러들, 예를 들면 IndexOutOfBoundsException
, NullPointerException
이 아닌
익숙하지 않은 에러들을 많이 많나서 더 헤맨 것 같다.
그래도 이런 저런 에러들을 많이 겪어 보는게 좋다고 생각한다.
(당시에는 스트레스 엄청 받았지만... 원래 과거는 아름다운 법)
실제로 겪으면서 점점 이슈를 잡아내는 속도가 빨라졌다.
지금 겪어서 오히려 다행이다.
미션 요구사항으로 인해 DB를 H2
에서 MySQL
로 마이그레이션 했다.
왜 이런 요구사항이 있었던 것인지, 각 DB의 특징은 무엇인지 학습하고 싶었지만,
마이그레이션을 하며 트러블 슈팅에 시간을 많이 써 기술 부채에 살포시 넣어두었다...
(빚쟁이다.)
마이그레이션 과정 및 트러블 슈팅 과정은 블로그에 상세히 적어두었다.
객체지향, 스프링에 대해 공부하면 할수록 인터페이스의 장점에 대해 눈이 닳도록 봤지만,
유지보수가 없는 새로운 미션만 계속 진행하다보니 장점에 대해 체감은 하지 못했다.
맨 처음 JCF로 데이터 저장하던 것을 언젠가 DB 연동을 할 것이라는 것을 어느정도 예상했기에
인터페이스로 만들어두었던게 이렇게 편할 줄이야,,
DB 마이레이션할 때 의존성 관련 세팅한 것 제외하고 DAO 코드를 건들인건 하나도 없었다.
이번에 미션을 진행하면서 DB 마이그레이션도 했고, AWS에 배포도 했다.
리눅스고, 우분투고 MySQL이고 처음할 때는 진짜 어려웠고, 아직도 아무것도 모르는 수준이지만
그래도 코쿼 CS 기간이랑 미션 1~3단계에서 한번 경험해보고 다시 해보니 많이 도움이 되었다.
공식문서를 보는게 중요하다는 것은 알고 있었는데, 그동안 영어로 되어있어 알면서도 보는 것을 기피했다.
그런데 스프링 프로젝트를 진행하면서 오류 해결을 위해 많은 시간을 투자했는데,
공식 문서를 보니 금방 해결된 문제들이 꽤 있었다.
스프링은 특히 추상화가 많이 되어있어 스프링 부트 알아서 처리해주는 부분이 무엇인지 알지 못하면 디버깅이나 에러 메시지만으로 파악하기 힘들 때가 있다.
그렇기에 공식 문서를 들여다 보고 사용하고 있는 어노테이션이나 메서드를 파악하는 것이 중요하다고 느꼈다.
이번 회고가 마음에 들지 않는다.
스스로 만족하지 못할만큼의 퀄리티로 작성했다.
시간은 한정되어 있고,
처음 접하는 스프링으로 기능 구현을 하는 것도 벅차서
모든 것을 완벽하게 할 수 없다는 것을 알기에 어쩔 수 없이 블로깅 가중치를 덜고 미션에 더 집중할 수밖에 없었다.
그럼에도 불구하고 회고하는 것은 중요하기에
이번에는 저번처럼 세세한 것을 회고하기보다는 큼직만한 주제로 회고를 해보았다.