BEYOND SW 캠프 15기 13주차 회고

mijuckboon·2025년 4월 20일
post-thumbnail

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

학습 내용

이번주 화요일에는 백엔드 프로젝트에 대한 발표 및 백엔드 교과목에 대한 평가가 진행되었다. 수요일부터는 프론트엔드 교과목에 대한 학습이 시작되어, 아래와 같은 내용을 배웠다.

1. HTML (HyperText Markup Language)

웹페이지를 작성하는 데 사용되는 마크업 언어로, 다양한 태그로 구성되어 있다.

2. CSS (Cascading Style Sheets)

웹 페이지의 스타일과 디자인을 정의하는 스타일시트 언어로, 데이터를 원하는 형태로 보여주기 위해 공간을 할당하고 꾸미는 데에 사용된다.

백엔드 프로젝트

백엔드 프로젝트에 대한 자세한 회고는 별도의 게시글로 작성할 예정이다.하였다. (2024.04.20 수정)
본 주간회고에서는 배운 점 몇 가지만 간략하게 짚어본다.

1. CQRS(Command and Query Responsibility Segregation) 패턴

CQRS 패턴은 데이터의 조회를 담당하는 부분과 변경(삽입, 수정, 삭제)을 담당하는 부분을 분리한 패턴이다. 조회를 담당하는 부분은 MyBatis를 이용하고, 변경을 담당하는 부분은 JPA를 이용하였다. 이때, 모든 조회를 query에 맡기는 것이 아니라 데이터 변경에 필요한 조회는 command에서 처리하여, command와 query의 의존성을 낮추는 것이 핵심이었다.

첫 백엔드 프로젝트를 진행하느라 헤매는 와중, CQRS 패턴에 대해 잘못 이해하여 모든 조회를 MyBatis에 맡기는 바람에 프로젝트에서 맡은 부분의 기능을 구현하는 데 다소 문제가 발생하였다.

  1. JPA는 영속성 컨텍스트를 활용하지만 MyBatis는 실제 DB에서 데이터를 조회해온다.
    모임 테이블에 데이터를 삽입한 후, 그 데이터를 활용해야 하는 경우가 있었는데, JPA에서 save만 하고 flush를 하지 않았더니 영속성 컨텍스트에만 저장되고 실제 DB에는 저장되지 않기 때문에 해당 로직이 작동하지 않았다.
  2. JPA의 장점은 정합성 유지, MyBatis의 장점은 빠른 조회이다.
    위에서 언급한 문제를 극복하기 위해 flush를 하고 MyBatis에서 다시 조회해오는 방식으로 코드를 수정하였다. 그 결과 로직에는 문제가 없었지만, 알고보니 이는 MyBatis의 단점과 JPA의 단점을 모두 안고 가는 좋지 않은 방식이었다.

2. 코딩 컨벤션의 중요성

코딩 컨벤션이 중요한 이유로는 가독성, 코드 리뷰의 편의성 등만을 생각했는데, 이번에 프로젝트를 진행해보니 merge 과정에서 예상치 못한 현상들이 발생하였다.

git은 파일/코드에서 삽입, 수정, 삭제가 일어난 내역을 저장하여 병합할 때 한 줄에서 수정이 일어나면 conflict를 일으키지만, 새로운 줄이 추가된 것은 conflict 없이 자연스럽게 합친다. 이 과정에서 작성한 코드의 중괄호 짝이 맞지 않아서 compile error가 발생하는 경우가 종종 있었다.

즉, 같은 코드라도 어디에서 개행했는지에 따라 병합 과정에서 conflict가 발생하기도 하고 자연스럽게 추가되기도 한다. 둘 중 어떤 방식으로 병합하는 것이 좋은 것인지는 상황에 따라 다를 수 있기 때문에, 코딩 컨벤션을 합의하는 과정에서는 git의 예상 동작 또한 고려하여 협업이 원활하게 진행될 수 있는 방식으로 정해야 한다.

백엔드 단원평가

프로젝트에 대한 발표가 끝나고 마지막 교시에는 백엔드 단원평가가 진행되었다. 결과를 보니 이번 교과목에서 배운 내용을 잘 활용하는 부분에 있어서는 아직 개선이 많이 필요하지만, 그래도 개념은 꽤나 잘 잡고 있구나 싶다.
단원 평가 결과

느낀 점

  1. 첫 백엔드 프로젝트여서 흐름을 파악하는 데에 어려움이 컸고, 이로 인해 유지보수하기 어려운 코드를 작성하는 바람에 다소 아쉬운 결과물을 만들게 되었다. 이번 경험을 통해 배우고 느낀 점들이 있으니, 최종 프로젝트에서는 이와 같은 실수를 반복하지 않도록 처음부터 구조를 잘 잡고 시작해야겠다.
  2. 부트캠프에 지원하게 된 계기에는 개발자라는 직업과 잘 맞는 사람인지를 알아보고 싶었던 게 컸다. 누구든 처음에는 어려워하는 것이 당연하지만 필자가 겪고 있는 어려움이 그 정도의 자연스러운 어려움인지, 아니면 개발자와 맞지 않는 사람이어서 지나치게 어려워하고 있는 것인지에 대해 많이 고민해왔다.
    이번 프로젝트를 진행하며 현재 "수행 능력은 부족하지만 개발 흐름은 어느 정도 잘 파악하고 있는 상태"가 되었다고 생각한다. 첫 프로젝트였던 만큼 당장에 훌륭한 퍼포먼스를 보이기 보다는 흐름에 익숙해지는 것이 중요했다고 생각하며, 앞으로는 경험을 쌓으면서 수행 능력을 기르는 데 집중해보려 한다.
    대학원 재학 당시 조교 근무를 할 때도 처음에 경험이 부족할 때는 많이 헤맸지만, 경험이 쌓인 뒤에는 조교장 역할을 수행하면서 담당 교수님께 일처리가 완벽하다는 칭찬을 받기도 했다. 개발 프로젝트 수행 능력도 마찬가지로, 경험이 쌓이면 잘 해낼 수 있을 것이라고 확신한다. 이번 경험을 통해 얻은 자신감을 바탕으로, 현재의 공부 과정을 즐기며 좋은 개발자가 되기 위한 길을 꾸준히 걸어보려 한다!
profile
곽진웅, 백엔드 개발자 준비 중

6개의 댓글

comment-user-thumbnail
2025년 4월 21일

음 !! 역시 미적분의 아름다움을 아는분은 다르군요! ㅋ

1개의 답글
comment-user-thumbnail
2025년 4월 21일

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

1개의 답글
comment-user-thumbnail
2025년 4월 21일

JPA의 장점은 정합성 유지, MyBatis의 장점은 빠른 조회이다.
위에서 언급한 문제를 극복하기 위해 flush를 하고 MyBatis에서 다시 조회해오는 방식으로 코드를 수정하였다. 그 결과 로직에는 문제가 없었지만, 알고보니 이는 MyBatis의 단점과 JPA의 단점을 모두 안고 가는 좋지 않은 방식이었다

=> 성찰하는 좋은 학습 습관을 가지고 계셔서 개발자가 아닌 다른 일도 잘 하실 거 같은데요 ㅎㅎ
잘 봤습니다!! 큰 도움이 됐어요

1개의 답글