기업협업 2주차 - query 공부 / 프로젝트 시작

더미벨·2022년 8월 23일
0

지난 포스팅에서 데이터구조를 여러 번 짜보면서 location이 상위 collection으로 들어가야 할지, 유저/상품에 대한 field값으로 들어가야할지에 대한 고민을 작성했었다.
(기업협업 1주차 - NoSQL과 트리구조 이해하기 👈지난 포스팅 참고)

그 고민에 대해 사수님께서는 query를 공부해보면 답이 나올것이라는 피드백을 주셨다.

쿼리...가 뭔데...ㅠ



쿼리와 트리구조

우선 트리구조로 데이터베이스를 짜는 것의 장점은 렌더링 속도가 매우 빠르고 비용이 적게 든다는 것이다.

당근마켓을 예로 들어보자.
location이라는 상위 collection이 있고 그 하위에 상품정보가 담겨있는 트리구조 형태의 DB구조일 경우, "경기도 성남시 분당구 수내동"에 해당하는 상품 정보를 가져오기 위해서는 해당 collection 아래에 있는 상품정보들만 가져오면 된다. 따라서 모든 상품정보를 읽어올 필요가 없기 때문에 비용이 절감되고, 화면의 렌더링 속도도 빨라진다.

하지만 만약 모든 상품 정보가 하나의 collection 안에 있고 하나의 지역에 해당하는 상품 정보를 불러오기 위해서는 모든 상품 정보 내에서 locaiton: "지역명"에 해당되는 부분을 query문으로 불러와야 한다.

이렇게만 보면 트리구조가 훨씬 더 효율적이어 보이지만, 실제로 개발을 할 때는 데이터의 항목이 계속해서 수정되고 삭제되거나 추가되는 부분이 있기 때문에 처음에는 전부 다 query형태로 DB를 구성한다고 한다. 이후에 더 이상 수정될 사항이 없고 DB의 항목이 확정되었을 경우 최적화하는 과정에서 트리구조로 변경하는 경우가 대부분이다.

또한 모든 데이터베이스가 상하위 관계로 이루어져 있지는 않기 때문에 어느 부분에서 어떤 형태로 DB가 들어가있어야 데이터를 불러올 때 가장 효율적일지를 계속 생각하고, 트리구조와 쿼리를 적재적소에서 사용하는 것이 중요한 것 같다!

우선 내가 이해한 부분은 여기까지..^^


프로젝트 시작

📍 프로젝트 기간: 2022.07.29 ~ 2022.08.05
📍 팀원: 2명
📍 협업 툴: 재플린, 노션, 슬랙
📍 사용한 기술 스택: Next.js, TypeScript, tailwind

1. 개발 기획서 작성

금요일에 우리가 진행할 프로젝트에 대해 처음 전달 받고, 개발 기획서를 작성하기 시작했다. 같이 기업협업을 나간 동기분과 한 페이지를 나누어 개발하게 되었기 때문에 각자 맡은 부분에 대한 기획서를 작성한 뒤 공통적으로 사용해야할 컴포넌트와 함수에 대해 고민했다.

지금까지 학원에서 진행한 프로젝트에서는 기획에 그렇게 큰 공을 들이지 않았는데 이번 프로젝트를 통해 기획의 중요성을 다시한번 느꼈다. 긴 시간 회의를 통해 컴포넌트 관리는 어떻게 할건지, 맨 상위 컴포넌트에서 화면 비율을 어떻게 맞출건지, 공통적으로 사용해야 하는 state와 로직은 어떤 것들이 있는지 등을 충분히 고민하고 기획서를 작성했는데 이 과정 덕분에 이후 merge시 발생하는 오류를 정말 많이 줄일 수 있었다고 생각한다.

2. 일정 산정

우선 next.js와 typescript를 사용해보는 것이 처음이었기 때문에 공부할 시간을 따로 빼둔 후 일정을 짜기 시작했다. 지금까지는 개발할 기능들을 각각 ticket까지만 발행하는 정도였는데 이번에는 기능을 엄청 세분화해서 시간 단위로 일정을 산정했다.

위와 같이 각 기능을 개발하는 데 걸릴 시간을 예상하고 시작일과 완료일을 작성했다. 그 결과, 개발이 끝난 후 예상했던 소요시간과 실제 작업시간을 비교해볼 수 있었다.

3. 비즈니스 로직 작성

비즈니스 로직을 작성해보는 것은 처음이었는데 확실히 머릿속으로 대충 생각하는 것과는 차이가 있었다. 특히 기준일을 변경하는 부분은 로직을 짜면서 여러가지 경우의 수로 나누어 생각해볼 수 있었다. 만약 로직을 먼저 짜지 않고 코드부터 작성했다면 코드를 짜면서 많이 헤맸을 것 같다.

profile
프론트엔드 개발자👩‍💻

0개의 댓글