[220915 - TIL] 기술면접 스터디, 원티드 프리온보딩 프로젝트

Dongwoo Kim·2022년 9월 15일
0

TIL / WIL

목록 보기
55/113

1. 기술면접 스터디

질문


  1. RDB와 NoSQL은 무엇인가요? 차이점 또는 장단점 위주로 설명해주세요.
  2. Join의 뜻은 무엇인가요? Inner Join과 Left (Outer) Join에 대한 차이점을 설명해주세요.

준비 답변


  1. RDB는 관계형 데이터 베이스로 정해진 스키마에 따라 데이터를 테이블화 시켜서 저장하고 외래키를 통해 각각의 데이터들간의 관계를 나타냅니다. 때문에 명확한 데이터 구조를 보장할 수 있고 데이터의 중복을 방지할 수 도 있으면서 테이블간의 Join을 할 수 있는 장점이 있지만 반대로 join을 통해서 쿼리가 복잡해지거나, 데이터 유연성이 부족해 개발단계에서 스키마 변경하기 힘들들 수 있습니다.
    NoSQL은 관계형 데이터베이스가 아닌 데이터베이스를 뜻하며 데이터의 스키마가 정해져있지 않습니다. 때문에 데이터간의 관계를 표현할 수 없고, Join도 할 수 없지만 데이터의 유연성으로 데이터 필드를 추가/확장하는데 장점이 있습니다. 하지만 명확한 데이터 구조를 보장할 수 없고, 데이터의 중복될 수 있다는 단점이 있습니다.
  2. Join은 RDB에서 서로 관계를 맺고있는 두개 이상의 테이블을 매칭 시켜 데이터를 검색할 때 사용합니다. Inner Join은 모든 테이블에서 값이 유효한 데이터만 나타내게 되고 left Join은 한쪽 테이블의 모든 데이터를 나타내되 유효하지 않은 값은 null로 표현하게됩니다.

2. 원티드 프리온보딩 - 프로젝트 기획

Investment_service - [1] 기획

참여기업

디셈버앤컴퍼니 - 핀트

기업과제

주어진 고객 투자 데이터를 응답하는 REST API 개발

Investment_service


투자 조회 및 입금 서비스

MVP


  • 데이터 조회 : 투자화면, 투자상세 화면, 투자종목 화면
  • 투자금 입금
    • Phase1 : 입금 거래 정보를 서버에 등록
    • Phase2 : phase1 에서 등록한 거래정보 검증 후 실제 고객의 자산을 업데이트

과제 해석


1. 고객 관리

고객은 본인의 투자(계좌)종목을 조회할 수 있다.

  • 고객 정보
    • 고객명
    • 패스워드
  • 주요 기능
    • 로그인

2. 투자 관리

투자(계좌)고객에 의해 조회될 수 있다.

  • 투자(계좌) 정보
    • 고객 - FK
    • 증권사 - FK
    • 계좌명
    • 계좌번호
    • 투자원금
    • 계좌 총 자산
  • 주요 기능
    • 투자 조회
    • 투자 상세 조회

3. 종목 관리

종목은 하나의 투자(계좌)에 여러개가 등록될 수 있다. (ManyToMany 관계)

  • 종목 정보
    • 자산그룹 - FK
    • 종목 이름
    • 현재가
    • ISIN
  • 투자종목 정보
    • 종목 - FK
    • 투자(계좌) - FK
    • 보유 수량
  • 주요기능
    • 보유종목 조회

4. 투자금 입금 관리

입금은 서버에 등록된 입금거래정보를 의미하며 고객투자(계좌)정보를 포함한다. 투

  • '투자금 입금 Phase 1'에서 서버 등록시 DB에 생성된다.
  • '투자금 입금 Phase 2'에서 검증 실패시 DB에서 삭제된다.
  • 입금 정보
    • 고객 - FK
    • 투자(계좌) - FK
    • 거래 금액
    • 거래정보 식별자

고려항목

1. 고객관리 - 로그인

요구사항에는 포함되어있지 않지만 투자 조회 시 고객이 본인의 투자를 조회한다고 가정하고 JWT를 통한 로그인 기능을 구현하고 고객인증을 통해 본인의 투자(계좌)만을 조회할 수 있도록 계획

2. 고객 - 투자(계좌) 관계

제공된 데이터셋에는 1명의 고객에 1개의 투자(계좌)로만 구성되었지만 구조적으로 1개 이상의 투자(계좌)를 가질 수 있다고 가정하고 FK로 계획, 따라서 투자 조회시 본인이 가진 투자(계좌)를 리스트로 조회할 수 있다.

  • 투자 조회 정리
    (고객 로그인)
    -> 고객 본인의 투자(계좌) 리스트 조회
    -> 그중에 하나 선택 시 해당 투자(계좌)에 대한 상세 조회
    -> 보유 종목 선택시 해당 투자(계좌)의 종목 리스트 조회

기타 추가사항

1. Batch

제공되는 데이터셋을 매일 최신 데이터로 갱신할 수 있어야함 오류 데이터 구분해야 함

2. 적절한 오류/예외 처리

3. 원본 데이터와 응답 값에 일관성(Consistency) 이 유지

투자금 입금 기능에서 고객의 총 자산을 업데이트할 때 일관성이 유지되도록 구현해야함

ERD

profile
kimphysicsman

0개의 댓글