Skip to content

1주차

김현욱 edited this page Aug 12, 2024 · 5 revisions

목차

8월 5일 (월)

공동 목표 확립

  • 문제 해결 경험을 쌓고 싶다.
    • 성능적인 문제 해결:
      • 대용량 데이터 처리 이슈
      • 결제 동시성 이슈
      • 정산 정합성 이슈
      • 실시간 트래픽 이슈
    • 아키텍처적인 문제 해결:
      • 유지보수가 용이한 설계 구조
  • 공유하는 문화
    • 발생할 수 있는 문제 상황에 대해 적극적으로 공유
    • 스크럼을 통해 팀원 간 적극적인 피드백
  • 기록하는 문화
    • 개발 과정의 논의 사항, 이슈들을 문서로 남기기
    • 살아있는 문서 관리

팀 컨벤션

  • 코어 시간: 14시 ~ 17시

  • 개발 과정:

    처음부터 너무 완벽한 구현보단, 기본 기능을 단순한 형태로 진행하기

    문제 상황을 같이 고민하고 발전시키는 구조로 진행하기

  • 회의는 정규 시간에 진행하기

  • 팀원 간의 솔직한 피드백 해주기, 단 감정이 상하는 워딩은 지양하기

  • 문제 상황, 발생할 수 있을 것 같은 이슈들은 적극적으로 공유하기

  • 문제 상황에 대해 다같이 고민하는 시간을 갖기

    • 스크럼, 회고 때 활용
    • 개발을 하면서 고민되는 부분들은 Discussion을 적극 활용

관리 문서

  1. 요구사항 정의서
  • 누락된 요구사항은 깃 이슈에 요구사항 작성 및 요구사항 정의서에 갱신
  1. 스크럼 및 회의일지
  2. 문제 상황에 대한 논의는 깃 이슈와 댓글을 적극적으로 활용

문서 관리 방법

  • 개발 관련 → 깃허브 Project
  • 비개발 관련 (프로젝트 전반적인 내용) → 노션 (추후 논의)
  • (깃허브 위주로)

비즈니스 요구사항 도출

기술 스택

백엔드

  • Java 17
  • Spring-Boot 3.x.x
  • JPA

프론트엔드

  • 뷰단 단순 랜더링은 타임리프
  • 필요한 데이터는 rest API + JS

ERD 설계 (브레인 스토밍)

사용자

  • 회원 : 판매자, 구매자 (Role Enum)→ 권한으로 구분 vs 테이블로 분리
    • 판매자 / 구매자 기능이 완전히 분리되어 있으므로, 일단 테이블로 분리하도록 진행
    • 예를들어 판매자는 사업자 정보를 등록할 수도 있어야하고, 정책사항, 매장 ID 등을 갖고있을 수 있다

전시

  • 매장
  • 음식
  • 쿠폰
    • 쿠폰 정책
  • 회원 - 쿠폰 연결 테이블
    • 발급 날짜
    • 사용 여부
  • 결제
    • 회원 ID
    • 주문 ID
    • 결제 상태 (결제요청, 결제중, 결제완료, 결제취소)
      • 하나의 레코드에서 컬럼을 수정하는 방식으로 관리하지 않고, 각각을 레코드로 관리한다고 한다.
      • 결제는 민감한 정보이니, 로그성으로 남기는듯하다.
      • 고민할 부분: 이렇게 설계할 때 인덱싱 적용이 적절할까? (잦은 create)
    • 생성,수정,삭제 날짜
    • 중복 결제 요청을 어떻게 막아야할까
      • 애플리케이션 레벨에서 멱등성 키를 발급하여 관리한다
      • 테이블로 들어갈 값은 아님
  • 주문
    • 회원 ID
    • 매장 ID
    • 상품 ID
    • 개수
    • 고민해야할 부분: 동일 매장의 상품인지 validate

생각해봐야할 부분

  1. 옵션같은 비정규형 데이터를 RDB 정규화로 관리하는게 좋을까?
  • 일반적으로 옵션은 사장 마음대로 커스터마이징할 수 있음
  • 음식 옵션 선택 → RDB 정규화로 관리하기 까다로울 수 있겠다.
  • 방법1. 옵션 컬럼 + JSON
  • 방법2. NoSQL
  1. 쿠폰 선착순 문제
  • 발급 기준으로 할 것인가?
  • 결제 기준으로 할 것인가?
  1. 정산 테이블
  • 일반적인 커머스 플랫폼은 모든 수익을 가져가고, 정산일에 정산한다고 함. → 정산 테이블

개인 미션, 팀 미션 일정 분배 (이번주만)

  • 오전: 팀 프로젝트 얘기
  • 오후: 개인 프로젝트
  • 유동적
  • 회의는 정규 시간에 진행

8월 6일 (화)

  • 현수님 개발 꿀팁 공유! - Code Rabbit
  • 오늘까지는 개인 미션에 집중하기 (수요일 마감이라)

현수님

  • 상품 - 옵션의 개수는 없고, 하나 선택 / 다중 선택만 있다.
  • 비즈니스를 단순화하면 NoSQL 안써도 될 듯
  • 적립은 0.5%로 해도 괜찮을 것 같다
  • 테스트 데이터 - 어떤 규모에서 장애가 발생하는지는 안나와 있었다. 대략적으로 파악해야할 듯
  • 배민 장애를 파악하면 면접에 도움이 되겠다.
  • 문제를 발생시켜서 도입을 하고, CS 레벨에서 어떤식으로 접근이 있었는지 해결하면 좋겠다.
  • 스스로 공부한 것, 고민한 것들을 적극적으로 공유하고 소통하는 모습을 대외적으로 보여줄 수 있으면 좋겠다.
    • 블라블라의 공유는 고민ING 가 아닌, 고민END + 우리 팀이 어떻게 해결했는지 공유하면 좋겠다.
    • 깃 디스커션

현욱님

  • 배민 서비스를 진행하는게 양날의 검이지만, 오히려 준비를 잘 하면 도움이 될 수 있겠다.
  • 테스트 데이터의 개수는 못찾음 → 납득가능한 수준으로 넣고, 말만 잘하면 될듯
  • 메뉴 옵션은 현재는 비즈니스적으로 해결하여 MySQL을 사용하고, 나중에 기회가 된다면 NoSQL 마이그레이션 과정이 도움이 될듯

준기님

  • 기능 요구사항 정리할 겸 유저스토리 만들어봤습니다.
  • 테스트 데이터는 현욱님과 동일
  • 메뉴 옵션도 현욱님과 동일
  • 댓글 빨리 끝내자

동훤님

  • 기간안에 못끝낼 수도 있겠다. 일단 기능을 돌아가게 만드는 것이 중요하겠다.
  • 시간 관계상 step4도 제외해야할 것 같다.
  • 기분 나쁘지 않다!

8월 7일 (수)

고동훤

  • 기분 쏘쏘
  • 요구사항 정리를 위해 오늘 얘기를 많이 해보면 좋겠다.
  • 레포같은 것도 다 정리하면 좋겠다.

김준기

  • 기분은 나쁘지 않고, 수면도 낫밷
  • 마무리 지었으면 하는 것:
    • 요구사항 정리해서 우리만의 언어로 문서화
      • 100% 완벽하긴 힘드니, 개발하면서 살아있는 문서를 위해 노력하면 좋겠다.
    • 일정 계획 수립
    • 레포까지 정리

김현수

  • 기분 좋다!
    • 북악산 갔다 왔습니다!
  • INNER JOIN → LEFT JOIN 10배 감소
  • 커버링 인덱스 → 4배 감소
  • 근데 왜 Inner Join이랑 Left Join 실행계획이 달랐는데, 같아졌지?

김현욱

  • 기분은 맹하다. 좋지도 않고 나쁘지도 않다. 집중해야겠다!

  • 요구사항 큰 틀 잡아놓으면 좋겠다.

  • 민석님 문제상황 공유

    문제상황:

    WAR 파일 빌드 → 컨테이너 안에서 실행하는 구조였다. → 데이터소스의 [Localhost](http://Localhost) → 호스트 인스턴스가 아니라 컨테이너를 찾게돼서 발생한 문제

8월 8일 (목)

고동훤

기분(☀️)

  • 푹 자서 기분이 쨍쨍하다.

어제 한 일

  • 푹 쉬었다.

오늘 할 일

  • 요구사항 정의 완료!

김준기

기분(☁️)

  • 댓글을 마무리해야해서 심리적 구름입니다.

어제 한 일

  • 어제 방을 한 번 확인해보고, 이사를 결정했습니다!
    • 곰팡이가 없으니까 공기가 다르다!
    • 책상이 넓어져서 너무 좋습니다!
    • 비가 올 때 창가에 물방울 맺히는 이슈가 있지만, 그럼에도 좋습니다.

오늘 할 일

  • 요구사항 마무리를 해야하고, 대략적인 일정을 정했으면 좋겠습니다.
  • 업무시간 끝나면, 댓글 마무리

김현수

기분(☀️)

  • 어제 일찍 잤습니다.(🌙)

어제 한 일

  • 집 천장에 누런 부분 발견..

오늘 할 일

  • 요구사항 다 정리 했음 좋겠습니다!
  • VPC 설정

김현욱

기분(🌤️)

  • 잠을 푹 자서 기분이 좋지만 출근길에 버스를 2개 놓쳐서 쏘쏘합니다.

어제 한 일

  • 현수님이 추천해주신 책인 스마트 브레비티 를 조금 읽었습니다.
  • 컨디션 조절을 위해 잠을 푹 잤습니다.

오늘 할 일

  • 요구사항 정리를 끝마치고 개발할 준비를 마치기
  • VPC 설정
  • 여유시간에 이전 미션 배포하기
  • 여유시간에 이력서 수정하기
  • 여유시간에 토요일 자격증 시험 공부하기

코드리뷰에 대한 이야기

  • 말하기 무섭거나 자신없는 팀원 사례
  • 하는 사람만 하는 사례
  • PR이 너무 커지면, 코드 리뷰가 심리적으로 부담스러운 사례
  • PR이 너무 작아지면, 개발 지연시간
  • 1차 마일스톤은 큰 단위로, 2차 마일스톤은 작은 단위로하면 좋겠다.

마일스톤에 대한 이야기

  • 제품 백로그

  • 스프린트 백로그

    • 위키 작성할 때 재구성하는 코스트가 필요할 것 같다.
  • 대목표를 마일스톤으로 할지 ✅

    i.g) 1차 MVP 프로토타입 개발, 기능 고도화

  • 유저스토리를 마일스톤으로 할지

    i.g) 유저스토리별로 마일스톤

금요일까지 마무리해야할 것

  • 패키지 구조 컨벤션
  • API 설계
  • 도메인 모델링
  • 백로그 업무 분배
  • 인프라 구축

8월 9일 (금)

고동훤

기분(☀️)

  • 무소식이 희소식

어제 한 일

  • 한번 기본적인 프로젝트 짜봄
    • 생각보다 도메인과 할 일이 많은 것 같다.

오늘 할 일

  • 프로젝트 기본 구조 세팅 완료
  • API 명세
  • 역할 분담

김준기

기분(⛅)

  • 늦어서 죄송합니다 ㅜㅜ
  • 미션은 끝냈고, 패키지 구조 얘기하고 있는데 아주 양질의 대화가 오가고있어서 기분이 좋습니다.

어제 한 일

  • 어제 현수님이랑 같이 야근했고, 집가서 04시반까지 댓글 작업 / 캐싱 등을 도입해봤습니다.

오늘 할 일

  • 동훤님과 이하동문

김현수

기분(☀️ )

  • 🌧️ 컨디션 안 좋습니다. (편도염) ㅠㅠ

어제 한 일

  • 코딩 테스트 공부하고 리눅스 좀 보다가, HTTP

오늘 할 일

  • 위와 같습니다.

김현욱

기분(☀️)

금요일이라 그런지 행복합니다 :0

어제 한 일

도메인 구성 고민, 토요일 자격증 시험 공부 조금

오늘 할 일

  • 프로젝트 기본 구조 세팅 완료
  • API 명세
  • 역할 분담
Clone this wiki locally