Skip to content
mintaek edited this page Dec 1, 2024 · 23 revisions

Web36-QLab

메인 베너


Group 5 Group 6 Group 4 Group 8



문제의식

쉽고 빠르게 쿼리를 연습할 수 없을까? 🤔
Query를 연습하고 싶은데, DB 환경세팅이 너무 어렵고 많은 시간이 소요되네...
  • 조건에 맞는 300만건의 데이터는 어떻게 생성하지? (복잡한 프로시저 작성, js코드 구현하여 작업)
  • 쿼리만 빠르데 실행하고 싶은데 복잡한 DB 환경세팅에 너무 많은 시간이 소요됨
  • 이전에 실행한 쿼리들의 시간을 비교하는게 어려움


핵심 기능

환경세팅 없이 빠르고 편하게 쿼리를 실행해보세요.

클라우드 상에서 사용자에게 DB 환경을 제공하고 관리해요.

  • 쉘 단위로 쿼리를 작성하고 실행해서 결과를 볼 수 있어요.
  • 생성된 테이블은 우측 창에서 정보를 실시간으로 확인할 수 있어요.
main page


테이블 생성/수정 쿼리를 간편하게 만들어보세요.

테이블을 GUI를 통해 조작해 손쉽게 테이블 생성/수정 쿼리를 만들 수 있어요.

erd page erd page


랜덤 레코드를 쉽게 추가해보세요.

레코드 조건을 설정하면, 해당 설정에 맞는 대량의 레코드를 간편하게 추가할 수 있어요.

erd page


예시 쿼리를 추가할 수 있어요.

쿼리를 잘 몰라도, 간편하게 예시 쿼리를 추가할 수 있어요.

erd page


핵심경험 (FE)

FE 프로젝트 핵심 경험 : 상세한 프로젝트 핵심 경험은 해당 링크에서 확인하실 수 있습니다.

핵심 경험 요약

  • 1주차: 서비스 설계, 작업 관리(플래닝 포커), GitHub 협업 전략.
  • 2주차: React Query 도입, API 설계와 모킹(axios-mock-adapter 활용).
  • 3~5주차: Sub-key 활용, 상태 관리 최적화, 비즈니스 로직 커스텀 훅 분리.
  • 6주차: 코드 리팩토링 및 최적화.

주요 트러블슈팅

성급한 추상화 (feat. useCustomMutation)

  • 커스텀 훅(useCustomMutation) 작성 후 범용성과 유연성 부족으로 불편함 발생
  • 추상화는 반복된 코드 속 공통점을 충분히 파악한 뒤 이점이 있는 경우 진행해야한다는 교훈을 얻음

상태는 대체 어디에…

  • 부모에서 포커스 상태를 관리하자 자식 컴포넌트 전체가 리렌더링되어 깜빡이는 현상 발생
  • 상태는 최대한 사용하는 컴포넌트에 두어 불필요한 리렌더링을 방지해야한다는 교훈을 얻음

React의 고유한 key

  • new Date().getTime()으로 생성한 키를 사용해 React의 key 경고 발생.
  • 서버에서 생성된 ID 사용. 서버 ID가 없을 경우, UUID와 객체 문자열 변환을 조합해 고유 키 생성.


핵심경험 (BE)

BE 프로젝트 핵심 경험(성유진)

BE 프로젝트 핵심 경험(오민택)

BE 프로젝트 핵심 경험(장승훈)

주요 기능 구현 방법 및 트러블 슈팅

사용자의 쿼리 실행 환경은 어떻게 관리되나요?

  • 세션을 통한 DB Connection 관리하는 법
  • 응답되는 쿼리 실행 시간 측정 방법

유저의 무한한 데이터삽입은 어떻게 제한시키나요?

  • 한정된 스토리지 속 유저 데이터 삽입 제한 방법
  • Redis pub/sub 이용하기

대용량 랜덤 데이터는 어떻게 삽입되나요?

  • 대용량 데이터를 빠르게 삽입하는 방법

유저에게 더 좋은 쿼리 실행 환경을 제공할 수 있도록 with 부하테스트

  • 제한된 서버 환경에서도 최대한 독립적인 실행 환경을 제공하기 위한 개선 과정


기술 스택

분류 기술 스택
공통
프론트 엔드
백엔드



아키텍처 구조

QLab architecture

팀원소개 (Query Squard)



Clone this wiki locally