
부트캠프 13주차 회고를 적어본다. 벌써 부트캠프 일정의 절반 정도가 지나갔다.

이번주 화요일에는 백엔드 프로젝트에 대한 발표 및 백엔드 교과목에 대한 평가가 진행되었다. 수요일부터는 프론트엔드 교과목에 대한 학습이 시작되어, 아래와 같은 내용을 배웠다.
웹페이지를 작성하는 데 사용되는 마크업 언어로, 다양한 태그로 구성되어 있다.
웹 페이지의 스타일과 디자인을 정의하는 스타일시트 언어로, 데이터를 원하는 형태로 보여주기 위해 공간을 할당하고 꾸미는 데에 사용된다.
백엔드 프로젝트에 대한 자세한 회고는 별도의 게시글로 작성할 예정이다.하였다. (2024.04.20 수정)
본 주간회고에서는 배운 점 몇 가지만 간략하게 짚어본다.
CQRS 패턴은 데이터의 조회를 담당하는 부분과 변경(삽입, 수정, 삭제)을 담당하는 부분을 분리한 패턴이다. 조회를 담당하는 부분은 MyBatis를 이용하고, 변경을 담당하는 부분은 JPA를 이용하였다. 이때, 모든 조회를 query에 맡기는 것이 아니라 데이터 변경에 필요한 조회는 command에서 처리하여, command와 query의 의존성을 낮추는 것이 핵심이었다.
첫 백엔드 프로젝트를 진행하느라 헤매는 와중, CQRS 패턴에 대해 잘못 이해하여 모든 조회를 MyBatis에 맡기는 바람에 프로젝트에서 맡은 부분의 기능을 구현하는 데 다소 문제가 발생하였다.
save만 하고 flush를 하지 않았더니 영속성 컨텍스트에만 저장되고 실제 DB에는 저장되지 않기 때문에 해당 로직이 작동하지 않았다.flush를 하고 MyBatis에서 다시 조회해오는 방식으로 코드를 수정하였다. 그 결과 로직에는 문제가 없었지만, 알고보니 이는 MyBatis의 단점과 JPA의 단점을 모두 안고 가는 좋지 않은 방식이었다.코딩 컨벤션이 중요한 이유로는 가독성, 코드 리뷰의 편의성 등만을 생각했는데, 이번에 프로젝트를 진행해보니 merge 과정에서 예상치 못한 현상들이 발생하였다.
git은 파일/코드에서 삽입, 수정, 삭제가 일어난 내역을 저장하여 병합할 때 한 줄에서 수정이 일어나면 conflict를 일으키지만, 새로운 줄이 추가된 것은 conflict 없이 자연스럽게 합친다. 이 과정에서 작성한 코드의 중괄호 짝이 맞지 않아서 compile error가 발생하는 경우가 종종 있었다.
즉, 같은 코드라도 어디에서 개행했는지에 따라 병합 과정에서 conflict가 발생하기도 하고 자연스럽게 추가되기도 한다. 둘 중 어떤 방식으로 병합하는 것이 좋은 것인지는 상황에 따라 다를 수 있기 때문에, 코딩 컨벤션을 합의하는 과정에서는 git의 예상 동작 또한 고려하여 협업이 원활하게 진행될 수 있는 방식으로 정해야 한다.
프로젝트에 대한 발표가 끝나고 마지막 교시에는 백엔드 단원평가가 진행되었다. 결과를 보니 이번 교과목에서 배운 내용을 잘 활용하는 부분에 있어서는 아직 개선이 많이 필요하지만, 그래도 개념은 꽤나 잘 잡고 있구나 싶다.

지각, 조퇴, 외출, 결석 모두 0!! 진짜 진웅님 본받아서 저도 열심히 해야겠습니다! 백엔드 프로젝트 하시느라 수고 많으셨고, 앞으로 남은 프로젝트도 화이팅입니다~!
음 !! 역시 미적분의 아름다움을 아는분은 다르군요! ㅋ