1차 스프린트 회고

Ariul·2022년 9월 4일
1
post-thumbnail

6주 동안 실전 프로젝트를 진행하면서 학습한 내용을 기록하고, 팀의 리더로서 프로젝트 매니징 경험을 기록하는 시리즈입니다.


팀원들과 일주일 돌아보기

Keep

  • 밝은 분위기를 유지하는 것
  • 건의를 하면 항상 열린 마음으로 받아주는 것
  • 도움이 필요할 때 선뜻 나서서 도와주는 것

Problem

  1. 소통 문제
    • 슬랙 확인이 너무 느려 소통이 원활하지 않다.
    • 개인 일정 이후 복귀 유무를 알 수 없다.
    • 게더에 모여 있는 시간이 제각각이라 소통이 원활하지 않다.
  2. 시간 약속 문제
    • 매일 오전 11시에 모이기로 했던 규칙이 지켜지지 않아 진행 상황 공유에 어려움이 있다.
  3. 역할 분담의 필요성
    • 리더가 각종 문서 작업, 회의록 기록, 일정 관리 등 모든 역할을 맡고 있다.
  4. 생산성 문제
    • PR 확인이 느리고 Merge도 느리다. 그때까지 작업이 진행되지 못하고 기다려야 한다.

Try

  1. 소통
    • 슬랙 메시지 알림이 오지 않을 때가 있다. 단체카톡방을 만들어 소통한다.
    • 개인 일정이 끝나면 복귀 유무를 공유하여 원활한 소통이 가능한 상태임을 알린다.
    • 2시부터 7시까지 게더에 다같이 모여 집중 코딩을 한다.
  2. 시간 약속
    • 약속시간을 오후 2시로 정한다.
    • 만나서 깃헙에 올라온 PR을 같이 리뷰하고 머지한다.
    • 이후 15~30분 동안 스크럼을 진행한다.
    • 7시까지 집중 코딩을 한다.
  3. 역할 분담
    • 주차별로 돌아가며 역할을 맡는다.
    • 회의록 작성: 깃허브 위키에 작성
    • 모든 스케줄 관리 및 알림: 특강 공지나 멘토링 시간 등 공지하고 해야 할 일정 관리
    • 기술 멘토링 사전 노트 작성: 다음 주는 목요일, 다다음 주부터는 쭉 금요일 16:00-18:00에 다같이 작성

1차 기술 멘토링

Q & A

Q1. DB 테이블 설계에 대한 질문

방법 1) 게시글 테이블에 태그 리스트, 재료 리스트 칼럼을 넣습니다. 리스트에 input 값을 한 번에 넣고, 프론트에서 전달하는 그대로 DB에 저장하고 출력합니다.
방법 2) 태그와 리스트 테이블을 따로 설계하여 게시글 테이블과 매핑합니다.

현재 방법 1을 사용하고 있는데 적절한 방법이 맞을까요?

A1. DB 테이블 설계에 대한 답변

테이블 설계의 경우, 방법 2가 더 적절하다고 생각합니다.

Q2. 데이터 생성 전략에 대한 질문

총 3가지 방법으로 데이터 생성합니다.

  • 방법 1) 크롤링 → DB 저장 (대략 15만 개)
  • 방법 2) 더미 데이터 생성 (주력)
  • 방법 3) 서비스 내 게시글 등록으로 자체 생성 (미미한 숫자)
    적절한 방법이 맞을까요?

A2. 데이터 생성 전략에 대한 답변

데이터 크기는 7500만 개 적합합니다.
그런데 이걸 모두 더미 데이터로 만드는 것은 적합하지 않다고 봅니다.
(더미 데이터는 테스트할 때만 사용)
데이터를 모으는 방법이 있나요?
데이터 업데이트 주기는 어떻게 되나요?
크롤링을 집중적으로 하여, 데이터를 모으는 기술을 익혀야 할 것 같습니다.
효용성 있는 데이터, 실 데이터를 수집하는 것이 어떨까요?

피드백

1. MySQL RDB는 빅데이터에 적합하지 않다.

  • 검색 시스템: 데이터를 가져오고, 이 데이터를 저장소에 저장해놓고 필요한 것만 찾아서 보여주는 것! 그러면 빠르게 보여줘야 하는데, RDB 구조는 적합하지 않다.
  • 엘라스틱 서치를 선택해야 하는 이유는 검색 서비스 개발에 특화된 솔루션이기 때문이다. 속도가 더 빠르고, 많은 데이터를 다룰 수 있으며, 데이터 저장 및 관리에 용이하다. 그래서 검색의 품질을 높일 수 있다. 설사 데이터가 적어도 검색 시스템이 중점이기 때문에 엘라스틱 서치를 쓰는 게 맞다.

2. 전체적인 로직을 다시 짜야 한다.

어떤 서비스를 하고 싶은지? 실시간 정보를 보여주고 주기적으로 업데이트되는 프로세스로 갈 것인지, 단순 덤프 데이터를 보여주기만 할 것인지?

스프링 실습팀에 들어온 의도와 맞으려면 ETL 이란 작업을 해서 가야 하는 게 맞다고 생각한다.

3. ETL 단계

  • 1단계: 데이터 수집기가 필요하다.
    데이터 수집기: 사이트에서 스크래핑한 데이터를 가져오고 1차 가공(전처리) 해서 DB(엘라스틱)에 밀어 넣음
  • 2단계: 엘라스틱서치에서 데이터를 정제한다.
    ⇒ 순수 데이터 검색을 위한 정제, 전처리 과정은 데이터 수집기에서 거쳐야 한다.
  • 3단계) 저장되어 있는 데이터를 검색 API로 개발한다.
  • 4단계) 검색 API를 사용하는 화면 UI를 만든다.

4. 6주 동안 가져가면 좋을 것들

  • 큰 데이터를 수집해서 특정한 저장소에 저장을 해봤다.
  • 그 데이터를 가공해봤다.
  • 품질과 성능이 좋아지게 검색 기능을 만들어봤다.
  • 크롤링을 해봤다. (부가적 요소)

느낀 점

매니저님과 멘토님이 생각하시는 스프링 실습 팀의 목표는 동일한데, 수단과 과정에 대한 생각이 다른 것 같아 혼란스럽다.

  1. 데이터 효용성에 대한 생각
    우리 팀이 데이터 생성 주력 전략으로 더미 데이터를 택한 이유는 매니저님께서 Faker Library를 알려주셨기 때문이다. 공개 피드백 시간에 "내일 당장 천만 건의 데이터를 모아 오라고 하면 할 수 있겠는가?"라는 질문과 함께 더미 데이터의 활용성에 대해 알려주셨고, 우리 팀은 이를 "데이터양만 많으면 된다!"라는 것으로 해석했다. 그래서 더미 데이터를 주력 전략으로 잡은 건데..!?
    멘토님의 피드백을 듣고 눈앞이 깜깜해졌다.
    효용성 있는 실 데이터를 모으라니.. 실 데이터로 레시피 7500만 건을 모을 수 있는가?
    그렇다면 기획 변경은 불가피한 것이 아닌가?
    어제 멘토링이 끝나고 오후 4시부터 오늘 새벽 4시까지 논스톱 회의를 했다.
    근데 결론이 나지 않아서 저녁에도 회의를.. 곧 회의 시작...😹

  2. Elasticsearch에 대한 생각
    매니저님은 엘라스틱 서치는 엄청난 데이터가 있을 때 사용하는 것으로, 작은 데이터양으로 엘라스틱 서치를 사용하는 건 엘라스틱 서치에 대한 이해가 부족한 것이라고 말씀하셨다.
    그래서 우리는 데이터 크기가 작을 때는 RDB를 쓰다가 유의미한 값의 데이터가 쌓이면 엘라스틱으로 옮겨가자!라는 전략을 세웠다.
    하지만 멘토님은 반대 순서로 공부하는 게 좋을 것 같다고 하셨다.
    엘라스틱 서치를 먼저 사용해 보고 'RDB에서 엘라스틱처럼 구현하려면 어떻게 해야 하지?'를 고민하는 방향으로...
    나 너 무 혼 란 스 러 워 억


일주일 동안 배우고 느낀 점

  • 이번 프로젝트를 통해 실력 상승은 물론, 인간관계와 리더십에 대한 배움도 깊어질 것 같다. 일주일 새 2번의 소통 문제를 겪고 해결했다니...
    협업 3일 차에 갈등 발생!?
    YOU NEVER WALK ALONE 혼자 짊어지려 하지 말고 함께 가자.
    팀원 분께서 나 혼자 고군분투하는 것 같아 미안하고 안쓰럽다고 말씀하셨다.
    마음 써주셔서 감사한 마음이 드는 동시에 살짝 억울했다.
    사실 혼자 다 챙기기 너무 힘들어서 절실하게 역할 분담하고 싶었는데..😭
    '모두가 자율적으로 정한 그라운드 룰도 제대로 지켜지지 않는데 중요한 역할까지 분담해버리면 팀이 어떻게 될까..?'라는 걱정이 가득했기 때문이다.
    이런 생각을 솔직하게 공유하고, 안 그래도 회고 시간에 역할 분담에 대해 건의드리려고 했었다고 말씀드렸다.
    그런데 리더인 내가 이런 말을 하는 것보다 팀원인 자신이 건의하는 게 좋을 것 같다고 말씀해 주셨고, 실제로 회고 시간에 먼저 이야기를 꺼내주신 덕분에 팀원들과 역할 분담에 대한 솔직한 생각을 나눌 수 있었다.

  • 이번 주 팀 프로젝트와 리더십에 대한 결론적인 생각은..
    혼자 다 하려고 하지 말자. 이건 진정한 리더십이 아니다.
    구성원 모두가 조직에 대한 오너십을 갖도록 하자.
    우린 항상 함께 하고 있고, 힘든 일은 언제든 털어놓을 수 있고, 도움을 요청했을 땐 누구든 도와줄 것이라는 심리적 안정감이 들도록 팀 분위기 구성하자.
    이런저런 생각이 많이 들었던 일주일...😶‍🌫️

  • 스프린트를 잘못 알고 있었다.
    지금도 잘 모르는 것 같은데!?
    지금 이 글의 제목에 스프린트를 적어도 되는지도 모르겠다.
    배움이 깊어지고 부끄러움이 커지면 수정하러 와야지
    스프린트는 특정 기간 동안 전력 질주하는 게 절대 아니라고 한다.
    애자일은 빠르게 나아가는 게 아니라, 우리가 얼마나 망했는지를 최대한 빨리 알기 위해서 전체 프로젝트를 쪼개고 쪼개는 것이라고 한다..!
    평균 1~2주의 기간 동안 개발팀이 충분히 해낼 수 있을 정도의 업무를 진행하는 게 목적!
    참고: 애자일을 대충 알고 있는 당신을 위하여

  • 어랏 WIL과 프로젝트 시리즈를 어떻게 분리하지..? 쓰다 보니 WIL이 되어버렸네?🤔

profile
정성과 진심을 담아 흔적을 기록하자💡

0개의 댓글