Skip to content

3주차 멘토링

JIN edited this page Nov 18, 2024 · 1 revision

✔️ 결론 및 To Do

멘토링 이후 결론과 챙길 것을 정리하여 업데이트합니다.

✔️ 멘토링 아젠다

멘토링 24시간 전에 준비하여 멘토에게 공유합니다.

논의 사항 및 질문

멘토의 조언이 필요한 부분을 질문으로 정리합니다.

  • 서비스가 서비스를 의존하는 부분 처리
    • (J119 박진명) 저번에 조언 해주신 부분에 따라 순환 참조를 유의하면서 해보고 있습니다. 이번에 Redis를 구성하는 부분도 common/redis.domain-service.ts 이런 식으로 구성하여 사용해보고 있는데요 이런 식으로 다른 레이어를 생성하고 해당 레이어를 service에서 참조하도록 하면 될까요?
  • SSE, socket 어떤 것이 적합할까요?
  • 주식 장이 열릴 때만 정상적인 코드 작성 및 api/socket 확인이 되어서 어렵습니다.
    • 주말 작업은 당연히 안되고, 평일에도 장이 마감되는 15시 30분 이후에는 소켓 테스트가 어렵습니다. 그런데 장이 열려있는 9시 ~ 15시 30분까지는 데일리 스크럼, 마스터 클래스 등이 잡혀있어서 주어진 시간이 얼마 되지 않더라구요.. (백엔드 클래스는 호눅스님께서 16시까지 수업할 때도 있어서 ㅠㅠㅠㅠ) 이런 한정적인 시간 속에서 어떻게 하면 좀 더 잘해볼 수 있을 지 궁금합니다….
  • 한국투자 API 서비스를 이용해 작업을 하고 있는데, 한투에서 제공해주는 웹소켓의 경우, 계좌당 1세션 + 전체 웹소켓 데이터 41건까지 등록 가능이어서 턱없이 부족하다고 느끼고 있습니다. 이럴 경우에 추가로 계좌를 개설해서 API 신청 후 필요한 웹 소켓마다 다른 세션으로 등록해서 사용해야 할까요? 또 매수/매도 기능과 같은 경우에는 이용자가 살 수 있는 주식의 종류를 생각하면 5세션정도도 부족할 거 같은데 어떤 식으로 보완해서 사용할 수 있을까요?
  • Redis를 사용함에 있어서 랭킹이나 최근 검색 기록 등에 log를 쌓는데 잘 사용할 수 있을 것 같은데 in-memory DB에 저장되어서 서버가 꺼지면 날아갈 수 있다는 게 조금 걱정됩니다. 백업 방법을 찾아보니 많은 분들이 RDB(Redis Database) , 와 AOF을 알려주시는 데 실제로는 어떤 방법이 많이 쓰이나요?
  • 차트를 현재 이 정도까지는 직접 구현을 한 상황입니다. 그런데 이제 이 이상으로 차트를 고도화하고 하려면 시간을 더 뺏길 것 같은데 이정도만 하고 이제 라이브러리를 쓰는게 좋을지 아니면 이대로 시간을 더 투자해서 직접 고도화 작업을 진행할지 고민입니다. (추가할 작업 : 차트 휠 인, 휠 아웃으로 확대-축소 & 마우스 위치에 따른 X축, Y축 선 그리기 등)
  • 요즘 관심 있는 프론트엔드 주제는 무엇인가요?
  • 저희가 더 늦기 전에 한번 만나자는 이야기가 나와서 23일 토요일에 만나기로 했는데 혹시.. 멘토님도 그 때 시간 괜찮으신가요?! 시간 괜찮으시면 한번 꼭!!! 만나뵙고 싶습니다.
  • 프로젝트를 진행하며 취업 활동(이력서 작성, 코테 준비 등)을 하기가 너무 어려운 것 같습니다. 조언 부탁드립니다.
  • 취업시장 현황 좀 냉정하게 분석하면 어떤가요? 진짜로 어려운가요 아니면 그냥 저희가 당사자라서 어려워 보이는 건가요…

진행상황 및 참고 자료

멘토가 일지를 보고 멘토링을 준비할 수 있도록, 팀의 진행상황과 참고 자료를 정리해서 넣어주세요.

✔️ 멘토링 내용

멘토링을 진행하며 나눈 이야기가 휘발되지 않게 기록해보세요.

  • 서비스가 서비스를 의존하는 부분 처리는 지금 Redis 구성하는 것처럼 만들어서 처리하면 되는 걸까요?
    • 이대로 진행하면 될 것 같다! (domain-service 굿굿)
    • 순환 참조라는 건 혼자서만 신경써서 안되는 건 아니고, 모두가 유념해두고 있어야 한다.
      • 지금이야 서비스가 몇개 없어서 괜찮아보이지만, 어디서 어떤 서비스를 부르게 될 지 모르니 나도 모르는 사이에 순환 참조가 생길 수도 있으니! 최대한 그런 상황을 만들지 않은 것이 좋다.
  • SSE(Server Sent Event), socket 어떤 것이 적합할까요?
    • SSE → nest에서 데코레이터 지원
    • 현재 상황에서는 양방향으로 통신할 일이 없어서 SSE도 괜찮을 것 같긴 하다.
      • 어느 정도 개발이 진행이 됐으니, SSE 바꾸는데 오래 걸릴 것 같다? 그러면 바꾸지말고, 뭐 하루면 충분하다~ 이런거면 바꿔도 괜찮을 것 같다.

        ⇒ 장단점을 비교했을 때는 합리적인 선택이 될 수도 있을 것 같다. 더 늦기 전에 바꾸던가, 나중에 리팩터링할 때 바꾸던가.. 등등

      • 프로젝트 초기에 기술 조사를 좀 더 잘했으면 SSE를 바로 선택해서 할 수도 있었으니 살짝 아쉬움이 있다.

  • 주식 장이 열리는 한정적인 시간 속에서 어떻게 하면 잘해볼 수 있을까요?
    • 테스트 API를 찾아보거나, 데이터를 직접 만들어야 할 것 같다.
      • 프론트 서버 테스트는 alpha 서버에서 장 외 시간에는 테스트 데이터를 보내는 형식으로 확인하면 될 것 같다.
      • 백엔드와 한국투자 웹소켓이 잘 연결되었는지 확인하는건.. 사실 장 시간 이외에 못하는건 어쩔 수 없다.
        • health check가 일단 적절할 것 같음 ⇒ 얘도 크론탭 같은거 써서 health check하고 에러가 나면 슬랙에 알람 보내주는 형식으로 짜면 될듯
  • 웹소켓 데이터 41건까지 등록 가능, 계좌를 여러 개 개설한다고 하더라도 부족할 거 같은데 어떤 식으로 관리하는 것이 좋을까요?
    • 소켓 관리하는 게 좋은 경험이 될 것 같다. (힘들어요)
      • 여러 세션을 만들어서 할 순 있지만, 다양한 최적화와 구조 변경을 해서 효율을 끌어내야 한다.
      • 우리가 지금 하는 것처럼 구독했다가 취소했다가 하면서 진행을 해봐야 할 듯하다….
      • 라운드 로빈 같은 스케줄링 방식 이용해서 timeout한다거나 그러면서 1세션을 최대한 활용해보는게 좋을 것 같다.
      • 일단은 터트려보자. 진짜 터지면 그때 고쳐보고, 고쳐서 해결됐다하면 더 부하를 가해보고… 이러면서 점점점 고쳐나가보는게 좋을 것 같다.
        • 진짜 너무너무너무 택도 없다 싶을 때 계좌를 만들어서 세션 늘려보고 하는 방식으로 진행해보자.
  • 현업에서의 Redis 백업 방법은 무엇인가요?
    • 비휘발성 메모리(날라가면 안되는 데이터)는 Redis 쓰면 안됨. 최근 검색 기록은 써도 괜찮다.
      • 최근 검색 기록은 레디스 쓰는 것보다 그냥 로컬 스토리지에 다 저장해도 괜찮을 듯
    • 스케줄러 돌려서 랭킹 주기 별로 계산되게 하는게 좋을 것 같다. 따로 DB에 저장하는게 좋을 듯.
    • (보통 게임들이 새벽 시간대에 랭킹이 업데이트 되더라구영. 한 새벽 한두시, 사람 없을 것 같은 시간대에 하는 거 같아요)
  • 지금 기본적인 차트가 구현된 상태에서 고도화 작업을 진행하려고 할 때, 지금부터 라이브러리를 쓰는 게 나을까요?
    • (FE) 다른 주식하는 팀이 라이브러리 쓰는 걸 봐서, 라이브러리 자체는 지원이 잘 되는 편이다.
    • 업비트가 라이브러리 써서 차트 그리다니 실망스럽다!
    • 직접 구현해본 소감? → 생각보다는 재미있게 했다! Canvas API의 동작 방식 이해했다.
      • 직접 만들면서, 실제 운영되는 서비스가서 열심히 비교하고 이런거 너무 좋다!
    • 이거 직접 구현해서 손해볼 게 없다고 생각이 된다! 이거 하나때문에 기능이 너무 밀리면 라이브러리를 쓰는게 맞지만~ 지금보니까 잘 만들고 있고, 일정에 맞게 잘 흘러가고 있다면 직접 개발해도 괜찮을 것 같다.
      • 현업에서 라이브러리 쓰는 이유도 이런걸 직접 개발할 시간이 없어서이다.
      • 만들다가 이슈가 생기는 부분은 잘 기록해두자.
    • ♥️ 멘토님께서 우리 FE분들이 직접 만든 차트를 자랑했다니 제가 더 기분 좋네요. ♥️
  • 요즘 관심 있는 프론트엔드 주제는 무엇인가요?
    • 설계 / 디자인 패턴 같은 느낌!

    • 디자인 시스템 병행해서 개발 중이다. (컴포넌트 설계)

      • 공통 컴포넌트를 시스템화 하는 작업
    • 훅도 만들고 있다!

      • 상태 관리할 때 클래스형 컴포넌트 써보면 상태를 객체로 선언해야 한다. (지금은 useState가 있지만 이 시절에는 없었으니…) 이런 객체 상태를 관리하려면 mergeState라는, 원하는 값 하나 넣어서 변환할 수 있는 그런 함수를 만들었다. 근데 이걸 컴포넌트마다 선언해서 써야해서 이런걸 훅으로 관리하면 좋지 않을까? 하는 마음에 해보았다.
      • Partial 키워드
        • 값이 nullable하게 되는 문제점이 있음. 그래서 멘토님은 제네릭 써가면서 해보았다.

      typescript - 유틸리티 타입 (Partial, Omit, Pick)

    • Toss usefunnel

      토스ㅣSLASH 23 - 퍼널: 쏟아지는 페이지 한 방에 관리하기

      • funnel은 깔대기라는 뜻!
      • 단계가 있는 페이지를 편하게 관리하기 위해서 사용하는 훅
  • 취업시장 현황을 냉정하게 분석하면 어떤가요?
    • (ㅠㅠ) 어려운 것도 맞고, 지금 좀 운이 없다고 생각해도 괜찮다.
    • 내가 아무리 열심히 해도 아무데서도 채용 안하면 못들어가는 건 사실이니까, 멘탈 관리가 중요할 것 같다.
    • 내 갈 길 가면서~ 경쟁력이 있어지도록 노력하는게 중요할 것 같다.
    • 생각보다 다양한 회사가 많으니까 눈을 넓혀서 찾아보는 것도 방법이 될 수도 있다.
      • 대기업 가고 그러면 당연히 좋지만 상황에 맞게 하는 것이 좋을 거다.
  • 프로젝트를 진행하며 취업 활동(이력서 작성, 코테 준비 등)이 어려운데 어떻게 준비해야 할까요?
    • 진짜 어려운 것이 맞다. 어려운 와중에도 준비할 수 있는 거는 지금처럼 프로젝트 하면서 나오는 이슈들(직접 터트려보기, 차트 직접 구현해보기)이 도움이 될 거다.
    • 이력서 자체는 끝나고 해도 괜찮다.
    • 코테, CS 지식은 조금이라도 시간 될 때마다 해보려는 노력을 해보자!
      • 아침 먹고 하나, 점심 먹고 하나, 이런 식으로…! 너무 많이 하면 부담스러우니 조금씩이라도 챙겨보자.
    • 그룹원끼리 하루에 하나씩 주제를 정해서 간단히 개념을 익히는 정도로 해서 병행하면 좋다.
  • 멘토님 혹시 23일 토요일에 시간 괜찮으신가요?
    • 서울이면 다 괜찮고! 뭐 서울 벗어나도 Ok 정해서 알려주세요~
  • 백로그
    • 현업에서는 지라 이런거 많이 쓰니까.. 이런 엑셀 파일로 관리는 잘 안하지만~ 경험해보면 좋다! 일정 계속 잘 지키면서 하면 좋고, 일정 벗어날 거 같으면 라이브러리 쓴다거나 하면서 조절해보면 좋을 거 같다.
  • 개별 멘토링 일정
    • 다른 멘토링과의 병행으로 시간이 좀 빠듯. 나중에 정리해서 이야기해드리겠습니다!
    • 부득이하게 안된다면, 이번 주 주말을 써도 괜찮다.
  • 소켓 자꾸 꺼지는 이슈
    • 스케쥴러로 헬스 체크하면서 끊기면 알아서 연결할 수 있게 하는 도구가 필요할 것 같다.
    • 끊는 건 말한 것처럼 일부러 끊는 게 맞을 것 같다.
    • 트러블 슈팅 기록

✔️ 체크리스트

3주차 멘토링에서 이야기 나누면 좋을 주제입니다. 우리 팀의 상황은 어떤가요? 팀원 및 멘토와 함께 셀프 체크하고, 그 이유를 작성해보세요. 추가하고 싶은 항목이 있다면 직접 추가해도 좋습니다.

  • 2주차에 계획한 기능 구현을 모두 완료했다.
  • 팀의 목표를 달성하기 위해 우선순위를 정하고 전체 목표의 40% 이상 구현하고 있다.
  • 첫 주차부터 지금까지의 문제 해결 과정이 누구나 이해할 수 있도록 문서화되어 누적되어 있다.
  • 문제를 해결하는 과정에서 작성한 코드나 구현 과정을 근거 있게 설명할 수 있다.
  • 태스크와 역할이 적절하게 분배되어 있으며, 서로가 하는 있는 일을 다른 사람에게 설명할 수 있다.

📜 개발 일지

⚠️ 트러블 슈팅

❗ 규칙

🗒️ 기록

기획
회의록
데일리스크럼
그룹 멘토링
그룹 회고

😲 개별 멘토링

고동우
김진
서산
이시은
박진명
Clone this wiki locally