corou : 아키텍처
아키텍처
아키텍처 패턴으로는 MVC를 채택하기로 했으며, 유지보수성을 고려하여 DRY와 KISS를 원칙들을 항시 고려하며 개발할 예정이다. 이러한 패턴과 원칙들이 있다는 것을 지난 프로젝트 할 때는 알지 못했기 떄문에 이번에는 가장 널리 사용되는 것들을 적용할 것이다.
여기에 추가적으로, 클린 아키텍처와 같은 다른 구조도 시간이 나면 별도로 공부를 해보고 본 프로젝트의 요구사항에 더 적합하다고 판단될 시 아예 뜯어고칠 의향도 있다.
기술 스택
채용 공고들을 보다보면 강타입 언어(Java, TypeScript)의 활용 능력을 거의 필수적으로 보는 듯 하며, RDBMS도 기본적으로 사용할 줄 알아야 하는 경우가 99%였던 것 같다.
시장에서 필요로 하는 사람이 되기 위해 기존에 사용했던 node-express와 정글 이후 이론적으로 공부한 typescript와 SQL을 백엔드 기술 스택으로 선정했으며, 프론트엔드도 보조하는 개념으로 React도 다룰 예정이라 처음으로 사용해보는 기술들이 많다. 꼭 알아야 할 것들이라고 생각하여 이번 기회에 실전처럼 사용하며 익히고 싶다.
Motion Beat에서의 백엔드 코드 작성은 내가 맡아 했지만, 로드밸런서 사용, AWS배포 대부분은 다른 백엔드 팀원이 담당하였기에, 해당 부분에서 약하다고 생각한다. 이러한 부족한 부분들을 매꾸는 것이 이번 프로젝트의 가장 큰 목적 중 하나이기 때문에 배포 또한 필수적으로 할 것이다.
데이터베이스 설계
어제의 포스트에서 언급한 데이터베이스 설계를 오늘 진행했다.
처음으로 데이터 모델링을 하는 것이기 때문에 노션으로 내가 필요한 엔터티와 속성들, 그리고 각 엔터티의 식별자와 외래키들을 생각해보고 정리했다.
개인적으로 종이와 펜으로 해야 더 몰입도 잘 되는 옛날형(?) 사람이라고 생각하는데, 이번 태스크는 종이로 하니까 어지럽고 헷갈렸다
여튼, 노션으로 정리한 것을 스터디 멤버이자 정글 백엔드 고수 만석님에게 보여주며 이렇게 만들게 된 내 논리들을 말씀드리며 천천히 ERD를 그려갔다. 만석님이 추천해준 사이트 ERDCloud를 사용하여 만들어봤는데 생각보다 편했고, 내가 SQLD 준비하며 공부했던 내용들을 실제로 적용하여 만들다보니 복습도 되고 일석이조였다.
쇼핑몰에서 사용하는 데이터 관계를 참고하여 사용자, 주소, 주문, 주문상세 등의 엔터티를 먼저 만들고, 이후 우리 서비스만의 차별점이라고 할 수 있는 루틴 엔터티를 만들었다. 루틴과 상품에 대한 리뷰는 하나의 엔터티에서 관리하되, 이에 대해 상호배타적 관계로 만들어 review_type 속성으로 상품에 대한 리뷰인지, 루틴에 대한 리뷰인지 판별할 수 있도록 하였다.
다 끝내고 나니 꽤나 복잡해 보이지만 열심히 설계한 것 같아서 뿌듯한 느낌이 든다!
Next
내일부턴 실제 코딩에 들어갈 예정이다.