Skip to content

12. Daily Wrap Up

hataerin edited this page Nov 25, 2020 · 27 revisions

2020년 10월 13일을 마무리 짓고

오늘의 일정 (2020/10/13 화) 🍰

09:00 - 12:00 / OAuth2.0 강의
13:00 - 18:00 / 개인 개발
21:00 - 22:30 / 협업 툴 선정 및 Jira 지식 공유
22:30 - 23:00 / wrap-up

오늘의 회고 🎈

  • 병선 && 태린
    • Jira의 역할 분담 미흡함으로 정보 공유가 부족했다. 다음부터는 좀 더 세분화된 역할 분담으로 팀원들을 위해 더욱 많이 공부해야겠다.😥
  • 연주
    • ipfs 모듈이 짜증났다. npm install이 되긴 하는데 오래 걸렸다.
    • textEncoder 에러 나는 데 해결해야됨ㅋ
    • 성원이가 Yjs 코드 분석하라고 demo 여러개 줬는데 하,, 어려웠다. 근데 또 여러 demo에 대한 서버가 하나여서 우리 팀에 어케 적용할 지 고민
  • 성원
    • Yjs 프레임워크의 이해가 좀 힘들었다. 시간을 많이 투자해야겠다.
  • 소영
    • spring initializer를 intellij에서 써보지 않아 참고 책과 같은 build.gradle 설정을 하는 것이 힘들었다. 책을 따라가는 것도 좋지만, 스스로 해보는 연습이 필요할 것 같다.

내일의 일정 (2020/10/14 수) 🥨

10:00 - 10:15 / 데일리 스크럼
10:15 - 18:00 / 개인 개발
18:00 - 18:15 / wrap-up



2020년 10월 14일을 마무리 짓고

오늘의 일정 (2020/10/14 수) 🍰

10:00 - 10:15 / 데일리 스크럼
10:15 - 18:00 / 개인 개발
18:00 - 18:15 / wrap-up

오늘의 회고 🎈

  • 병선

    • Jira Software 사용법을 공부하고 문서화 하였다.(블로그 포스팅) 러닝커브가 높을 줄 알았지만 여러 블로그를 참조하다 보니 금방 익힐 수 있었다.
    • 에픽, 스크럼, 유저 스토리, 작업, 백로그에 대한 개념을 확실히 잡을 수 있게 되었다.
  • 연주

    • yjs 모듈에서 지원하는 y-socket-provider를 이해하기 위해서 http와 대조하며 websocket의 기본 개념을 정리해봤다.
    • websocket 개념을 적용해보기 위해 socket.io 모듈을 이용하여 실시간 채팅을 구현해보았다. namespace을 기준으로 채팅방을 만들었는데,, 오늘 공부해서 적용해보는 거라 그런지 헷갈렸다.
    • git rebase, pick을 이용하여 지난 커밋의 메시지를 바꾸어보려고 했다.
  • 성원

    • yjs와 prosemirror를 바인딩해놓은 y-prosemirror의 내부를 봤다. yjs의 내부동작과 prosemirror의 내부동작이 어떻게 돌아가는지 모르는 상태에서 당장 바인딩해놓은 코드를 보니 전혀 이해가 가질 않았다. 에디터와 yjs를 바인딩한 상태에서 추가적인 구현을 해야 하는데 진전이 되지 않아 멘탈이 나갔다. 최후의 대비책으로 firepad를 생각해봐야 할 것 같다.
  • 소영

    • 문서의 CRUD를 구현하며 부트를 활용한 프로젝트의 전반적인 디렉터리 구조를 잡아보았다. 그 과정에서 Entity와 DTO의 차이, 각 layer에 대한 이해 등 헷갈리는 개념과 각 요소의 필요성을 확실히 정리해두어야겠다. 단순히 알고 넘어가는 것보다 귀찮더라도 꼭 기록하자.
    • oauth 2.0 개념을 얼른 정리하자..!
  • 태린

    • 생각보다 지라 문서를 정리하는것이 오래 걸렸다. 알고있는 것을 문서화 시키는 버릇을 들여 시간을 줄여야겠다.
    • 백로그를 등록하기 전 엑셀에 정리하는 것이 필요하다고 느꼈다.
    • 지라는 담당자를 한명만 등록할 수 있는데 같은 기능의 프론트/백을 어떻게 할당할건지 고민해야 겠다.
    • 잡다한 문서를 정리하느라 webRTC공부를 못했는데 자기전에 공부해야겠다.

내일의 일정 (2020/10/15 수) 🥨

10:00 - 10:15 / 데일리 스크럼
10:15 - 11:50 / PPT 작성 && 화면 설계 및 피드백
13:00 - 18:00 / 개인 개발
18:00 - 18:15 / wrap-up



2020년 10월 15일을 마무리 짓고

오늘의 일정 (2020/10/15 목) 🍰

10:00 - 10:15 / 데일리 스크럼
10:15 - 11:50 / PPT 작성 && 화면 설계 및 피드백
13:00 - 18:00 / 개인 개발
18:00 - 18:15 / wrap-up

오늘의 회고 🎈

  • 병선

    • 워크 스페이스 페이지 화면 설계하고 멘토님에게 드릴 중간보고서도 작성했다. 생각보다 시간이 오래 안 걸릴줄 알았는데 오래 걸려서 당황했다.
    • WebRTC 부분을 공부하는데 아직까지는 감이 잘 안온다. 조금 더 심도있는 분석이 필요할 것 같다.
  • 연주

    • 보고서쓰랴 화면설계 확정짓느랴 깃허브 관리하느라 맡은부분을 잘 못했다
    • 체력적으로 너무 힘들었다.. 휴식주세요
  • 소영

    • 할 것이 많지는 않았지만 잡다하게 할 것들이 많아서, 정신이 없었다. 오늘은 꼭 완료를 해야겠다!!
  • 성원

    • 다들 체력적으로 힘들어해서 휴식이 필요하다고 느꼈다. 체력관리도 정말 중요한 것 같다.
    • yjs의 대안으로 firepad를 알아봤는데 생각보다 괜찮은 것 같다.
  • 태린

    • 개인 사정

내일의 일정 (2020/10/16 금) 🥨

10:00 - 10:15 / 데일리 스크럼
10:15 - 15:30 / 필기 시험 준비 및 개인 개발
16:30 - 17:30 / 필기 시험 및 중간보고서 피드백
17:30 - 17:45 / wrap up



2020년 10월 16일을 마무리 짓고

오늘의 일정 (2020/10/16 금) 🍰

10:00 - 10:15 / 데일리 스크럼
10:15 - 15:30 / 필기 시험 준비 및 개인 개발
16:30 - 17:30 / 필기 시험 및 중간보고서 피드백
17:30 - 17:45 / wrap up

오늘의 회고 🎈

  • 병선

    • 중간 보고서 작성
    • WebRTC 분석 ㅠ 다 영어라 좀 힘드넹...ㅎㅎ
  • 연주

    • firepad 시도,,
    • 스키마 설계 및 설명 정리,, 사용자추가 어렵띠^^
  • 소영

    • 테스트 코드 완료
    • 스키마 설계 --> 사용자 초대 및 문서 내용 부분이 어려웠다. RDB와 NoSql 중 고민이 필요한 시점이다..
  • 성원

    • quill demo 예제를 firebase를 이용하여 따로 배포해봤다. y-websocket로 서버를 제공하는 것 같은데 조금 더 확인을 해봐야 알 것 같다.
  • 태린

    • 개인 사정

내일의 일정 (2020/10/17 토) 🥨

09:30 - 12:00 / Topcit 시험
12:15 - 14:00 / Daily Scrum 및 주간 회의 



2020년 10월 17일을 마무리 짓고

오늘의 일정 (2020/10/17 토) 🍰

09:30 - 12:00 / Topcit 시험
12:30 - 13:00 / Daily Scrum
13:00 - 15:00 / 개인 개발
22:00 - 22:15 / wrap up 

오늘의 회고 🎈

  • 병선

  • 연주

    • express와 react 연동 공부,, 이전에 했는데 까먹엇따
    • 데브옵스 파이프라인 개념 이해하면서 구성하는 건 조옴 힘들거 같다 일단 1차로 구성한 다음에 멘토님께 피드백 받아야겠다 풉
    • 서로 다른 git repository 합치긴 하는데,, server/아래에 fetch 받아야 해서 시간이 쪼오옴 많이 걸렸다
    • client 폴더에서 favicon 등 head 정보를 바꾸고 브랜치 release에 조심성없이 commit하고 push했다. 이를 해결하기 위해 1) sparseCheckout, git pull 2)git rebase 3)git reset,checkout 특정브랜치 총 3가지 방법을 시도했다. 2)했을 때 커밋이 다시 되서 reflog로 해결했다ㅋㅋ 휴
  • 소영

    • 테스트 코드 완료 및 로컬 타임 추가
    • 내 레포에 있는 코드를 LiveMD에 합치는 과정에서 git을 몰라 할 수 있는 것이 없었다. git에 대한 전반적인 이해와 git 명령어에 대한 이해가 필요하다! 공부하자~!
    • jenkins을 훑어 보았다. 어떻게 우리 프로젝트에 적용할 수 있는지 예제를 통해 알아보자! https://daddyprogrammer.org/post/2697/springboot2-jenkins-deploy-gittag-rollback/
  • 성원

    • quill demo 예제를 우리 프로젝트에 적용시켜봄. 서버는 demo에서 제공하는 걸로 테스트했는데 따로 서버 구성을 해봐야 할 것 같다.
  • 태린

    • 개인 사정

내일의 일정 (2020/10/18 일) 🥨

10:30 - 11:00 / Daily Scrum 
21:00 - 22:00 / Sprint meeting



2020년 10월 19일을 마무리 짓고

오늘의 일정 (2020/10/19 월) 🍰

09:00 - 12:00 / hands on lab 실습 (eks 클러스터 사용법)
14:00 - 15:30 / Daily Scrum 및 2차 sprint 회의
15:30 - 16:00 / api 설계
16:00 - 18:00 / 개인 개발
18:00 - 18:15 / 마무리 wrap-up

오늘의 회고 🎈

  • 병선

    • Socket을 활용하여 리액트로 Chat을 clone 코딩하면서 분석해보았다.
    • Group Video Chat을 Clone 코딩해보았지만 오류가 발생했다. 오류를 마저 해결해야겠다.
  • 연주

    • git flow 컨벤션을 프로젝트에 적용하기 위해 브랜치명을 바꾸었다. jira 이슈를 github commit에 적용할 수 있도록 git hook과 스마트 커밋 찾아봐야겠다. api 문서를 정리해봤다,,, 학교 다닐때 교수님께서 Rest API 에서 http 메서드는 put, delete 사용은 지양하고 get과 post를 쓰라고 하셨는데,, 왜 좋다하셨는지 잘 기억이 안났다,, 정리해봐야지,, 오늘 스크럼과 스프린트 2차 회의를 오늘 하루에 모두 진행해서 쪼오끔 체력적으로 힘들었다. jira에 하위작업을 생성해서 2차 스프린트 보드에 등록해보았다 재밌었다. WebSocket 설명해주면서 복습했다,, 기억나겠지
  • 소영

    • 스프린트 회의를 하면서, 초기 백로그와 하위 작업을 초반에 설정하는 것의 중요성을 느꼈다. 해야할 것들을 jira를 통해 관리를 잘 해야겠다.
  • 성원

    • jira와 github 연동하는 법과 개발 서버에 대한 개념을 공부했다. 내일 팀원들에게 공유해야겠다.
  • 태린

    • 개발서버의 필요성을 절실히 느꼈다. 로컬서버에서 각자 개발한 후에 합치는 것은 너무 비효율적이다ㅠㅠ aws에 vscode로 접속하는 방법을 알아와야겠다.
    • socketIO와 webRTC를 이용해서 채팅을 구현하고, 장단점을 비교해봐야겠다.

내일의 일정 (2020/10/20 화) 🥨

09:00 - 11:00 / Docker 수업
11:00 - 11:15 / daily scrum
12:00 - 18:00 / 개인 개발
18:00 - 18:15 / daily wrap-up



2020년 10월 20일을 마무리 짓고

오늘의 일정 (2020/10/20 화) 🍰

09:00 - 18:00 / Daily Scrum 및 개인 개발
18:00 - 18:15 / 마무리 wrap-up

오늘의 회고 🎈

  • 병선

    • React Socket Chat 프로젝트를 클론하여 일대일이 아닌 다수가 채팅이 되는 기능을 확인했다.
    • React Group Video Chat 프로젝트를 클론하여 기능들이 잘 동작하는지 확인해봤다. 로컬에서는 잘 동작했지만, AWS ec2를 활용하여 배포한 후에 확인을 해보았을땐 보안 문제 때문에 동작하지 않았다. 이 문제의 해결방법을 고민 해봐야한다.
  • 연주

    • github와 jira integration 설명해주니까 점심시간이 되었다. 그래두 복습되었고 이를 적용해서 커밋, 브랜치 스타일을 재정의하고 모든 팀원들이 개발을 시작할 수 있어서 뿌듯했다.
    • git 문제 생기는 거 해결.. 너무 힘들다 개발을 거의 못했다.
      • github에 필요없는 파일 삭제
      • 원격에 이미 push된 commit에서 특정 폴더 삭제
      • .gitignore 정리
    • 프론트엔드 디렉토리 구조를 인수인계 받았다. 이에 따라 워크스페이스 화면 구현을 시작했다
    • 프론트엔드 react 상태 관리 라이브러리를 정할 필요성을 느껴 제안했다. 내일 기존에 프론트엔드 담당한 팀원과 의논 후에 선정하기로 했다.
      • redux
      • mobx
      • apollo client & graphql
  • 소영

    • build 폴더를 git ignore에 넣는 작업이 매우 힘들었다. 또한 git branch를 생성하고, pull request 후, merge시키는 일련의 과정에 대한 이해가 필요해보인다.
    • 개인문서생성을 모두 수정하고 테스트까지 완료하였다. builder를 사용해서 entity를 생성할 때, 컬럼을 잘못넣어서 시간이 오래 걸렸다.ㅠ 얼른 나머지 RUD 부분을 구현해야겠다.
    • GitKraken을 통해 gui로 git 작업을 할 수 있어 굉장히 편해진 것 같다. 하지만 항상 git을 만질 때는 조심해야 겠다!!
  • 성원

    • AWS EC2에 LiveMD 클라이언트를 nginx로 배포하고 yjs를 배포하여 개발 서버 환경에서 공동 문서 작업 기능이 동작하는 것을 확인하였다. 이제부터 주어진 코드를 이용하여 개발을 시작할 수 있을 것 같다.
  • 태린

    • 소켓IO를 이용해 다자간의 채팅을 구현했다. socket과 io의 차이점을 알긴 알겠는데 자세히 뭔지 몰라서 좀더 공부해봐야겠다ㅠㅠ 클론코딩을 해서 돌아가긴 하는데 왜 이렇게 돌아가는지 분석이 필요해보인다...
    • webRTC를 이용해 다자간의 영상/음성 공유기능을 구현했다. webRTC를 사용해도 맨 처음 사용자끼리 연결해줄 때 소켓을 쓴다는 사실을 알았다. 또한 서로 연결되고 난 후에는 서버를 이용하지 않는다는 점이 신기했다.
    • 이제 두 기능을 합치며 코드에 대한 이해도가 높아질 일만 남아서 살짝 기대가 된다.... 근데..힘들겠찌.....???

내일의 일정 (2020/10/21 수) 🥨

09:00 - 11:00 / Docker 수업
11:00 - 11:15 / daily scrum
12:00 - 18:00 / 개인 개발
18:00 - 18:15 / daily wrap-up



2020년 10월 23일을 마무리 짓고

오늘의 일정 (2020/10/23 금) 🍰

11:00 - 14:00 / 개인개발
14:00 - 14:00 / Jenkins 수업
14:00 - 18:00 / 개인 개발
18:00 - 18:15 / 마무리 wrap-up

오늘의 회고 🎈

  • 병선

    • 반성하자
      • 의도치 않게 지각을 해버렸다. 나로인해 누군가는 큰 스트레스와 피해를 입는다는 것을 깨달았다. 요즘 나태지옥에 빠져서인지 아침에 일어나는 것이 힘들다. 팀원들을 위해서라도 다시 정신차려서 힘내야겠다.
    • LiveMD 프로젝트에 AWS chime API를 적용해보았다.
      • 생각보다 잘 돼서 기분이 좋았다. 한 줄기 희망이 보인다.
    • GraphQL을 더 집중적으로 공부하자
      • 우리 프로젝트에 GraphQL은 필수적이라고 생각한다.
  • 연주

    • aws amplify를 구성하고 해당 서비스에서 제공하는 로그인 ui로 기존 로그인을 대체하였다. 예제보고 따라해서 정확하게 동작방식을 이해하진 못해서 더 공부해야할 것 같다. aws에서 정말 다양한 서비스를 제공하고 있는 것을 알 수 있었다.
    • 우리 프로젝트에 aws appsync와 apollo client를 적용해보려고 했다. apollo에서 제공하는 Rehydrated 컴포넌트가 버전에 따라 달랐다. 그래서 package.json에 apollo 버전을 resolve해주었고 따로 aws 폴더를 만들어 rehydrated 컴포넌트를 만들었다.
    • graphql 기본 문법과 동작방식을 조금 더 명확히 알 수 있도록 공부해야겠다.
  • 소영

    • GraphQL에 대한 공부를 했다. GraphQL의 필요성을 rest와 비교하면서 알 수 있었다. 문법적으로 익숙해지는 시간이 필요할 것 같고, spring boot에 GraphQL서버를 붙여서 간단한 CRUD를 하는 예제를 많이 찾아보고 현재 만들어 놓은 rest CRUD에 GraphQL을 적용해보자.
    • 처음 보는 개념이더라도 모른다고 손 놓지 말고 하나라도 찾아보는 열심을 보이자! - aws amplify, appsync, cognito 등등..ㅎㅎ
  • 성원

    • 오늘 10시까지 사당에서 모이기로 했는데 9시 40분에 일어나서 11시에 도착해 팀에게 민폐를 끼쳤다. 오늘 하루를 반성의 시간으로 삼아 정신차리고 프로젝트에 임해야겠다.
    • 에디터에 마크다운 기능을 추가하는 작업을 했었는데 생각보다 관련 자료가 부족했다. 그래도 codemirror를 이용한 markdown 편집 기능을 찾게 되서 한 번 분석해야겠다.
  • 태린

    • 오늘 늦잠을 자서 온라인으로 회의에 참여했다. 오프라인으로 참여하는 다른 팀원들에게 미안했다. 앞으로 팀워크를 위해 열심히 해야겠다.
    • amplify, appsync, cognito의 개념을 알아보았다. 내가 담당하는 기능인 만큼 나서서 알아보고 구현해야겠다.

내일의 일정 (2020/10/24 토) 🥨

09:00 - 11:00 / 한정헌 멘토님의 스키마 특강
14:00 - 18:00 / 최병욱 멘토님과의 멘토링
18:00 - 18:15 / daily wrap-up



2020년 10월 26일을 마무리 짓고

오늘의 일정 (2020/10/26 월) 🍰

09:30 - 10:00 / 스프린트 회고 및 Daily scrum
10:00 - 19:00 / 개인 개발
18:00 - 23:00 / 개인 개발
23:00 - 23:30 / wrap up

오늘의 회고 🎈

  • 병선

    • node.js 서버를 AWS ec2에 배포했다. 배포는 성공했지만 HTTP로 배포가 되어 Video Chat의 기능에 문제가 생긴다. HTTP-> HTTPS로 바꾸고 서버만 배포해야한다.
  • 연주

    • 멘토링 때 프로세스가 엉성하다는 지적을 받아 팀 관리 프로세스를 정립하였다.
    • 개인 및 팀 워크스페이스 UI를 다시 구성하였고 팀생성 UI를 구체화하였다.
  • 소영

    • mysql db 연결이 안되었던 이유를 찾았다. 그 이유는 test폴더에 resources가 모두 있었기 때문이었다. 황당하지만 그래도 db 연결의 옵션과 코드의 이해도가 높아져 그것은 만족한다.
    • ec2에 인스턴스를 올리고 그곳에 배포하는 것을 진행중인데, test에서 에러가 났다. 이유를 더 찾아봐야 할 것 같다.
  • 성원

    • codemirror의 텍스트 값을 가져오는 방법은 찾았고 현재 텍스트의 상태 관리를 처리하는데 어려움을 겪고 있다. 내일까지는 해결할 것 같다.
  • 태린

    • 개발서버를 올려서 IAM 계정을 만들어서 팀원들에게 나눠주었다.
    • 개발서버에 도메인을 연결하였다 (live-md.com)
    • ssl인증서 발급 및 nginx설정을 하였다.
    • webRTC 1:1 통신을 구현하였다.

내일의 일정 (2020/10/27 월) 🥨

10:00 - 10:15 / daily scrum
10:15 - 18:00 / 개인 개발
18:00 - 18:15 / daily wrap-up



2020년 10월 27일을 마무리 짓고

오늘의 일정 (2020/10/27) 🍰

09:30 - 10:00 / 
10:00 - 19:00 / 개인 개발
18:00 - 23:00 / 개인 개발
23:00 - 23:30 / wrap up

오늘의 회고 🎈

  • 병선

    • WebRTC 유투브 강의를 들으며 참고할만한 코드를 clone해서 기능을 구현해 보았다. 기존 로컬에서는 잘 작동하지만 우리 develop브랜치에 있는 코드와 병합하여 동작을 확인하려 하니 오류가 발생하였다. 오류의 원인은 쓸데없이 똑같은 media의 반복적인 접근으로 파악했다.
  • 연주

    • workspace ui를 만들면서 css에 집착해서 진도가 나가지 않아 workspace에 필요한 기능의 컴포넌트를 style을 적용하지 않고 일단 넣어두었다. react hooks 복습을 했다. custom hooks로 useFetch를 만들어보았다. store 파일을 두어 useReducer()로 상태관리를 할 수 있는 것을 알게 되어 팀원에게 공유하였다.
  • 소영

    • 기존 문서관리를 h2와 연결했었는데, 그것을 mysql과 연동하려고 했었다. 생각지도 못한 부분에서 오류가 나서 한동안 못잡아서 계속 고생을 했다. 문제원인은 application.properties를 main이 아닌 test에 있었기 때문이었다. 억울하지만 해결해서 다행이다.
  • 성원

    • yjs 에서 어떻게 문서 텍스트 데이터를 가져오는지 분석 중에 있다. 시간을 좀 더 써야할 것 같다.
  • 태린

    • multi peer 통신 구현을 완료했다. 클라이언트와 쓰는 라이브러리가 다르긴 한데 크게 다른것 같지않아서 조금만 고치면 될거같다. webRTC를 구현하는데 MSA라서 클라이언트와 서버를 분리시켰더니 둘다 ssl인증이 필요했다. 서브도메인 연결은 했지만 인증서는 다시 받아야겠다. 생각보다 인증이 많이 필요해서 도커나 쉘스크립트로 말아놓는게 좋을 것 같다.

내일의 일정 (2020/10/28 월) 🥨

10:00 - 10:15 / daily scrum
10:15 - 18:00 / 개인 개발
18:00 - 18:15 / daily wrap-up



2020년 10월 28일을 마무리 짓고

오늘의 일정 (2020/10/28 수) 🍰

09:30 - 10:00 / 스프린트 회고 및 Daily scrum
10:00 - 19:00 / 개인 개발
18:00 - 23:00 / 개인 개발
23:00 - 23:30 / wrap up

오늘의 회고 🎈

  • 병선

    • 오늘은 개인 사정으로 인하여 개발을 많이 못하였다. 그래도 develop 브랜치와의 오류는 해결하였다. 하지만 이 해결한 방법이 맘에 들지 않는다. 기존에 있던 코드와의 문제가 발생한 것 같긴한데 다시 찾아봐야 한다.
  • 연주

    • 앞으로 개발해야할 서비스와 남은기간을 고려하여 나는 workspace ui 구현을 중단하고 인증 및 사용자관리, 팀관리 서비스 개발을 하기로 했다. gitbook을 통해 api 문서를 정리하여 bbzzkk github에 공유하였다.
    • develop 브랜치에 .idea 같은 쓸데없는 파일들이 있어서 삭제하였고 이전 커밋에서 있던 쓸데없는 파일도 삭제하였다.
      git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch server/**/.idea' --prune-empty --tag-name-filter cat -- --all 
      git push origin develop --force
      
  • 소영

    • ec2에 배포를 하는 과정에서 test코드에서 에러가 나서 build failed가 떴다. 왜 로컬에서는 잘 돌아가던 테스트가 ec2에 올리려고 하는지 이해가 안됐다. 하지만, test를 exclude하는 코드를 통해 테스트 자체를 배제할 수 있엇다. build ./gradlew --exclude -task test 의 코드로 빌드를 하였다. 역시 구글링을 하면 답이 나온다!
  • 성원

    • 현재 y-websocket 서버에서 로컬로 문서 데이터를 관리하고 있는 것을 파악했다. 문서 데이터를 저장하기 위한 DB를 고려해야할 것 같다.
  • 태린

    • be group chat with liveMD브랜치에 기능별로 나눠져있던 video 코드와 원래 있던 LiveMD코드를 합치면 생기는 에러를 해결했다. 원인은 Dom의 라이프사이클에 맞지 않게 코딩을 한것이 문제였는데 방어코드를 작성하고 원래 주어져야 했을 값을 넘기니 해결이 되었다.

내일의 일정 (2020/10/29 월) 🥨

10:00 - 10:15 / daily scrum
10:15 - 18:00 / 개인 개발
18:00 - 18:15 / daily wrap-up



2020년 10월 29일을 마무리 짓고

오늘의 일정 (2020/10/29 목) 🍰

09:30 - 10:00 / 스프린트 회고 및 Daily scrum
10:00 - 19:00 / 개인 개발
18:00 - 23:00 / 개인 개발
23:00 - 23:30 / wrap up

오늘의 회고 🎈

  • 병선

    • WebRTC Server.js를 ec2에 올려서 잘 동작하는지 확인했다. 예상대로 잘 동작했다. 하지만 WebRTC의 관건은 https에서 동작하는 것이다. 그래야 상대방의 모습을 확인할 수 있다. 서버도 올리고 나중에 client 부분도 SSL을 붙여서 https 도메인을 받는 방법을 고민해봐야겠다.
  • 연주

    • gitbook에 api정리한 것을 바탕으로 팀 관리 서비스 개발을 시작하였다. 팀 프로필 사진을 등록을 위해 client에서 받은 데이터를 특정 폴더에 업로드하는 것과 aws s3에 업로드하는 것을 시도해보았다.
    • dotenv 라이브러리를 활용하여 mongodb의 사용자, 비밀번호와 aws api key를 .env파일에 등록해서 보안이 필요한 정보 관리를 할 수 있는 것을 알 수 있었다.
  • 소영

    • git book에다가 api를 정리하였던 것을 기준으로 기존 문서관리 api를 수정하였다. path variable로 받던 request를 query string으로 받게 수정되었는데, 그 차이를 알 수 있는 기회였다. best practice를 적용하기 위한 노력이 있었다.
  • 성원

    • 임의로 room 을 3개로 나누어서 문서 편집을 테스트해보았다. 일단 정상적으로 작동하는 것은 확인했다. 단순히 websocket에서 room 으로 나눠서 구현해도 문제가 없는지 좀 더 알아봐야 할 것 같다.
  • 태린

    • 로컬에서 기능들은 잘 돌아가는데 nginx에 https를 달아서 서버에 올려놓은 client와 server가 서로 통신을 하게 했는데 server코드를 찾지 못하는 에러가 발생했다. 어디서 문제가 발생하는지 조금 더 알아봐야겠다.



2020년 10월 30일을 마무리 짓고

오늘의 일정 (2020/10/30 금) 🍰

09:30 - 10:00 / 스프린트 회고 및 Daily scrum
10:00 - 19:00 / 개인 개발
18:00 - 23:00 / 그라운드 룰 설정
23:00 - 23:30 / wrap up

오늘의 회고 🎈

  • 병선

    • chat client 부분을 기존에 있던 develop 브랜치와 병합하였다. 서버는 기존에 있던 ec2 서버와 연동하였다. 예상대로 잘 되었다.
    • develop 브랜치와 병합하는 과정에서 문제가 발생하였다. 기존 develop 브랜치에서 따로 빠져나온 feature 브랜치에서 작업중에 기존에 있는 develop 브랜치가 update되었다면 나의 feature 브랜치에서 update된 develop 브랜치를 먼저 pull 받고 다시 develop과 merge 시키는 방법을 생각했었는데, git flow는 그렇지 않았다. 충돌을 해결해야 하는것도 develop에서 해야했다. 아직까지는 잘 이해가 되진 않지만 그래도 문제를 잘 해결해서 다행이다.
  • 연주

    • msa에서 oauth2로 각각의 서비스에서 사용자 인증요청을 할 경우에 네트워크 병목현상으로 토큰방식을 추천하는 것을 알게 되었다. 인증 서버에서 jwt를 발급한 다음 각 서버에서 secret key로 이를 확인할 수 있다는 것을 알게되었다. 하지만 아직 인증서버에서 jwt가 만료되었을 때 어떻게 되는지 등 정확히 파악하지는 못했다. 이를 추가적으로 조사하여 보완하기로 하였다.
    • 현재 모든 팀원이 각자 맡은 기능을 각각의 aws ec2에 올려 작업하고 있는 상황을 반영하여 아키텍처를 그렸다. 여기에 jwt방식, api gateway를 추가하여팀원들에게 설명하였다.
    • 팀원이 메일을 통해 팀초대링크를 받아 이에 들어가면 수락하는 것으로 간주해 팀원이 수락여부를 pending에서 active로 바꾸어주려고 했다. member와 invitation schema를 따로 구성하여 정보를 기록하고자 했다. 이를 확인하기 위해서 client부분이 필요하여 현재 구현한 로직이 괜찮은지 강훈기멘토님께 여쭤보아야겠다.
  • 소영

    • 문서 관리에서 전체적으로 해야할 일들과 세부적으로 해야할 일을 정리할 수 있었다.
      1. 기본 문서 CRUD완성
      1. sorting, paging, searching 기능 추가
      1. request header에 발급된 JWT를 가지고 왔을 때 이것을 secret key로 확인하기
      1. 파일 export할 수 있는 기능 추가하기
      1. Jenkins과 k8s 공부 후, 적용하기
      1. 추후에 문서이력 부분 구현하기
  • 성원

    • yjs에서 levelDB를 이용하여 문서 데이터를 저장하는 것을 확인하였다. levelDB 를 사용할지 아니면 다른 DB를 사용해야할지 찾아봐야할 것 같다.
    • chat, webRTC 쪽에서 빌드 및 배포 과정에서 문제가 있어 같이 파악하였다. webRTC에서 err_ssl_protocol_error가 발생하는데 조금 더 찾아봐야 할 것 같다.
  • 태린

    • 에러 고치기

      • chat/monolithic

        • ip주소로 들어갔을땐 실행되지만 domain으로 들어갔을 때는 invalid host header 에러 발생
        • nginx: 빌드된 리액트와 서버 코드 연결 불가
      • RTC/MSA

        • nginx client:443->80->3000, server:443->80->8000 포트포워딩 방법 알아보기
    • 개념 알아보기

      • client->gateway->server JWT통신 api 붙이기
      • gateway에서 socket.io통신 방법
    • client/app.js <=> server.js 통신하는 폴더 빼기




2020년 11월 02일을 마무리 짓고

오늘의 일정 (2020/11/02) 🍰

10:00 - 10:15 / daily scrum
10:15 - 15:30 / 개인 개발
15:30 - 15:45 / 중간 점검
15:45 - 18:30 / 개인 개발
18:30 - 18:45 / wrap up

오늘의 회고 🎈

  • 병선

    • react 안에서 여러 개의 proxy를 활용하여 각각 개별 서버가 잘 동작하는지 확인하고 싶었다. 방법은 react 라이브러리중 하나인 HTTP-proxy-middleware를 사용하여 해결할 방법이 존재하는 것 같아서 적용해봤다. 하지만 target url이 client부분을 보여주는 것이 아닌 직접적으로 서버로 접근하여 보여준다. 나의 접근 방식이 잘못된 것인지 아니면 이해를 잘 못하고 적용하려고 하는 것인지는 모르겠으나 조금 더 고민해봐야할 것 같다.
  • 연주

    • 팀관리 crud 테스트를 했는데 postman에서 post했을 때 empty body가 넘어왔다. body-parser를 install하고 header에 application/json을 지정해주니 되었다.
    • 팀원관리 crud는 2가지를 해결하면 된다. 첫 번째, nodemailer에서 mail이 오지 않는다. 설정을 확인해보아야겠다. 두 번째, 팀원 권한이 총 4개가 있는데 이를 어떻게 적용할지 고민했다.
  • 소영

    • 논리적인 오류가 있었던 document CRUD는 끝났다. 하지만 추가적으로 기능을 넣고, 인증 문제와 관련하여 문서 서버가 해결해야 할 부분이 남았다.
  • 성원

    • yjs 서버에 mongoDB를 적용하려면 여러가지 고려사항이 필요하다. 우선 DB를 적용하기 위해선 어떠한 것들이 고려해야하는지를 정리하고 yjs에서 levelDB를 어떻게 적용시켰나 확인해봐야겠다.
  • 태린

    • https간 통신을 알아보다가 안풀리는 문제를 계속 잡고있는것 보다는 얼른 필요한 기능을 구현하는게 나을것 같아서 socket으로 넘어갔다.
    • socket.io의 코드가 너무 간단해서 어떻게 api로 작성할지에 대한 고민을 해야겠다. 또한 chat/video서버가 각각 분리되어있는데 겹치는 부분이 너무 많아서 어떻게 api로 해야할지ㅜㅜㅜ



2020년 11월 03일을 마무리 짓고

오늘의 일정 (2020/11/03) 🍰

10:00 - 10:15 / daily scrum
10:15 - 15:30 / 개인 개발
15:30 - 15:45 / 중간 점검
15:45 - 18:30 / 개인 개발
18:30 - 18:45 / wrap up

오늘의 회고 🎈

  • 병선

    • 오늘 Chat 과 WebRTC client 부분을 한 페이지에 나타내는 작업중에 있었다. 운이 좋으면 오늘 하루 내에 완료할 수 있겠다라고 생각을 했지만 역시 운이 좋지 않았다. 좀 더 어떤 식으로 병합할지를 고민해봐야겠다.
  • 연주

    • 팀원초대시 이메일 받는 부분을 고쳤다. 로컬에서 팀관리 및 팀초대관련 api 테스트를 진행하고 체크했다. 현재 모든 로직을 routes 폴더에 속한 파일에 다 담겨져 있어서 express 폴더 구조를 나누어 코드를 분리해야겠다. 그리고 jest 또는 mocha로 test code를 작성하고 ci 도구인 travis를 적용해보아야겠다.
  • 소영

    • sorting과 paging을 마무리 했다. jpaRepository를 사용하니까 생각보다 쉽게 할 수 있었다. 변수명이 created_at을 할 때는 안되던 것이 createdDate라고 바꾸니 sorting 기능이 적용됐다. 앞으로 _쓰는 것을 지양해야겠다.
  • 성원

    • yjs에서 levelDB를 어떻게 연동했는지 확인했다. 문서 내용이 바뀔때마다 계속 db에 저장해주고 있었다. levelDB로 데이터를 저장할 때 확장성이 있는지 파악하여 mongoDB로 바꿀지 levelDB를 계속 쓸 지 판단해야한다.
  • 태린

    • chat/video의 서버를 어떻게 api로 구현할지 찾아보았다. 둘다 socket.io로 통신을 하기 때문에 api로 만드는것이 부적절하다고 판단했다. 얼른 JWT붙이는 것 까지 마무리하고 document부분으로 넘어가야겠다.

내일의 일정 (2020/11/04 수) 🥨

10:00 - 10:15 / daily scrum
10:15 - 18:00 / 개인 개발
18:00 - 18:15 / daily wrap-up



2020년 11월 04일을 마무리 짓고

오늘의 일정 (2020/11/04) 🍰

10:00 - 10:15 / daily scrum
10:15 - 15:30 / 개인 개발
15:30 - 15:45 / 중간 점검
15:45 - 18:30 / 개인 개발
18:30 - 18:45 / wrap up

오늘의 회고 🎈

  • 병선

    • Chat과 WebRTC(Video) client 부분을 합치는 것까진 성공했다. 이제 남은 이슈는 Video, MIC on/off 버튼 구현과 CSS작업, 기존 develop과 merge후 발생하는 오류를 해결하는 것이다. 금요일까지 모든 작업을 완료하는 것이 목표다. 최대한 해봐야겠다.
  • 연주

    • 팀원초대시 이메일 받는 부분을 고쳤다. 로컬에서 팀관리 및 팀초대관련 api 테스트를 진행하고 체크했다. 현재 모든 로직을 routes 폴더에 속한 파일에 다 담겨져 있어서 express 폴더 구조를 나누어 코드를 분리해야겠다. 그리고 jest 또는 mocha로 test code를 작성하고 ci 도구인 travis를 적용해보아야겠다.
  • 소영

    • 검색 기능을 마무리했다. 또한 post로 문서를 등록할 때 default 값으로 Untitled가 될 수 있도록 jpa @Column에 설정을 하는 방법이 있었는데 왜인지는 모르겠지만 적용이 안된다. ㅠㅜ.. 일단 필수적인 것은 아니니 넘어가고 exception 처리와 validation check에 집중해보아야 겠다.
  • 성원

    • DB는 우선 levelDB가 적용되어 있으니 나중에 생각하고 yjs를 사용한 프로젝트를 찾아봤는데 그 중에서 cattaz.io 사이트가 우리가 원하는 기능들을 간단하게 구현해 놓은거 같아서 사이트를 분석하고 우리한테 필요한 것들을 가져올 수 있게 하는 중이다.
  • 태린

    • 드디어 ssl문서정리를 완료했다. 이미 다 알고있는 내용인데도 문서로 정리하려니까 생각보다 시간이 오래걸렸다. 도메인 연결하는법, nginx설정하는 방법, https간 통신 방법도 빨리 올려야겠다.
    • 다른 도메인 간 통신을 위해 cors연결 및 리버스 프록시를 달아놨다. 원래는 api짜는게 재밌었는데 요즘은 nginx설정이 더 재밌다.

내일의 일정 (2020/11/05 목) 🥨

10:00 - 10:15 / daily scrum
10:15 - 18:00 / 개인 개발
18:00 - 18:15 / daily wrap-up



2020년 11월 05일을 마무리 짓고

오늘의 일정 (2020/11/05) 🍰

10:00 - 10:15 / daily scrum
10:15 - 15:30 / 개인 개발
15:30 - 15:45 / 중간 점검
15:45 - 18:30 / 개인 개발
18:30 - 18:45 / wrap up

오늘의 회고 🎈

  • 병선

    • 오늘은 걱정을 많이했던 Video client 부분의 Mic on/off 기능을 완수했다. Video on/off 기능도 어느 정도는 완성했으나 조금 더 손을 봐야한다. 이번 주내로 실시간 의사소통 부분의 기능적인 부분은 완성하고 가능하면 뷰까지 해보고 싶다. 장담은 못하지만 할 수 있을 것 같다.
  • 연주

    • 어제 express 폴더를 routes, controllers, services, middleware, utils로 구조화한 것을 팀원들에게 공유했다. 하나의 코드에서 분해했더니 res, req가 없는데 호출하는 부분이 있어 이를 수정해야하는 것을 알았다. 내일 수정해야겠다.
    • 오늘도 github repo를 정리했다. 소영이 컴퓨터에서 develop 브랜치를 git pull 했을 때 conflict가 났는데 develop 브랜치가 또 바꼈다고 해서 pull을 했다고 한다. git은 똑똑한지 이전 헤드에 대한 정보를 백업해뒀는데 이 백업파일로 인해 conflict가 계속 해결이 안되서 다 지우고 git clone 받았다.
    • spring boot로 oauth2+jwt를 구현해보려고 하였으나 최대한 빨리 개발하자는 팀원들의 의견에 따라 조금 더 익숙한 express로 개발을 진행하기로 하였다. passport-jwt, passport-google 모듈을 활용하여 인증 서비스 개발을 시작하였다. 화이팅하자
    • CI는 보통 github repo 하나에 적용하여 git push 시 테스트 후 docker image로 빌드하여 hub에 push한다고 한다. 하지만 현재 우리는 하나의 repo에서 client와 여러 server을 작업하고 있다. 하나의 repo에서 쉘스크립트로 따로 docker image를 빌드할 수 있는지 알아보자고 제안했다.
  • 소영

    • return을 할 때 상태를 넘겨 주는 것을 계속 찾아보고 적용했는데 적용이 되지 않았다.. 오늘 밤을 새서라도 꼭 할 것이다. 별로 어려워보이지 않았는데 흑흑..
  • 성원

    • 병선이형과 짝 프로그래밍을 했다. 같이 webRTC의 마이크 on/off 기능을 구현했다. 내일은 video on/off 기능을 구현할 것이다.
  • 태린

    • ec2환경에서 https간 통신방법을 문서로 정리했다. 직접 코드를 만지는 것 보다는 nginx설정을 다루거나 하는 부분이 많아서 커밋내역이 남지 않기 때문에 문서로 정리하는 습관을 들이는 것이 좋은 것 같다.
    • aws gateway대신 쿠버네티스를 사용하기로 했다. nginx나 인프라 구성하는데 재미가 생겨서 내가 담당하기로 했다. 얼른 인프라 완성을 해서 팀원들에게 조금더 편한 CI/CD환경을 제공해야겠다.

내일의 일정 (2020/11/06 금) 🥨

10:00 - 10:15 / daily scrum
10:15 - 18:00 / 개인 개발
18:00 - 18:30 / 멘토님께 말씀 드릴 것 정리
18:30 - 18:45 / wrap-up

2020년 11월 09일을 마무리 짓고

오늘의 일정 (2020/11/09) 🍰

10:00 - 10:15 / daily scrum
10:15 - 15:30 / 개인 개발
15:30 - 15:45 / 중간 점검
15:45 - 18:30 / 개인 개발
18:30 - 18:45 / wrap up 및 멘토님께 보고사항 정리

오늘의 회고 🎈

  • 병선

    • 오늘은 자소서 작성과 Jira에 할 일들을 생각하면서 정리해 보았다.
    • CSS 작업을 마저 완료해야한다. 그리고 몇 가지 생기는 오류 이슈들을 정리해서 마저 해결해야한다.
  • 연주

    • ssafy 자소서 작성을 완료하느라 개발을 거의 하지 못했다.. 워크스페이스 이동/문서생성/문서내용작성/문서제목변경/문서저장과 관련된 시퀀스 다이어그램 그렸다. MSA로 service들을 분리하다보니 client와 service간의 request response가 생각보다 복잡해서 최대한 도식화하여 개발 시 이 다이어그램이 도움이 됐으면 했다.
  • 소영

    • ssafy 자소서 작성만 했다.. exception handling은 못하더라도 sequence diagram은 꼭 해야겠다. exception handling은 언니한테 물어볼 것이다.
  • 성원

    • cattaz 의 기능들을 LiveMD에 적용하는 과정에서 발생한 버그들이 서버쪽 문제라는 것을 확인했다. cattaz 기능에서 프론트 쪽은 잘 적용했고 이제 서버관련해서 분석 및 적용해야한다.
  • 태린

    • ssafy 자소서 작성을 했다.
    • 도커로 이미지를 만들어놓았는데 다른 서버에서 다운로드받아서 실행해보는것을 아직 안해봤다. 얼른 쿠버네티스로 넘어가야겠다

내일의 일정 (2020/11/09 월) 🥨

10:00 - 10:15 / daily scrum
10:15 - 18:00 / 개인 개발
18:00 - 18:30 / 멘토님께 말씀 드릴 것 정리
18:30 - 18:45 / wrap-up

2020년 11월 10일을 마무리 짓고

오늘의 일정 (2020/11/10) 🍰

10:00 - 10:15 / daily scrum
10:15 - 15:30 / 개인 개발
15:30 - 15:45 / 중간 점검
15:45 - 18:30 / 개인 개발
18:30 - 18:45 / wrap up

오늘의 회고 🎈

  • 병선

    • disconnect 이슈는 해결했지만 또 다른 이슈가 발생했다.
      • Video on/off 혹은 Mic on/off 시 useEffect가 두 번 불린다. 아직 파악 못함
      • 채팅을 치면 peer가 무한 증식된다. 아마 같은 파일 안에 두 컴포넌트가 존재해서 그런듯하다. 즉, 똑같은 useEffect가 동시에 변해서 그런듯 하다. (●) - 해결완료 컴포넌트 분리하니 해결됨.
      • 처음에 창을 여러 개 띄어놓을때는 잘 되는데, 다시 그 창을 닫고 다시 할 때는 한명이 이상하게 추가된다;;;
  • 연주

    • google-token-oauth 모듈을 사용해서 로그인 이슈 문제를 해결했다. 다소 의문스러운 것은 버전 업이 된 google-token-oauth2를 사용하면 또 안되는 것이었다. 찾아보았지만 답을 얻진 못했다.
    • 가장 우선적으로 google 로그인만 했다. link되어있는 google 계정을 unlink한 것은 회원탈퇴를 한 것과 같은 의미이기 때문에 home으로 redirect시키고 싶었으나 계속 실패했다.
    • 3주차에 하기로 한 circleCI를 머리 식힐 겸 찾아서 예제를 따라 해보았다. 새로운 개념을 배우는 것은 항상 흥미롭다 ㅎㅎㅎ
  • 소영

    • sequence diagram을 모두 작성하였다. sequence diagram을 작성하면서 전체적인 서버들의 흐름을 알 수 있었다.
  • 성원

    • 문서 생성 및 삭제 기능을 임시로 구현해놓았다. 아직 유저 목록 표시 기능은 구현 못했지만 내일 우선 webRTC와 합치는 것을 1순위로 해야할 것 같다. 그리고 팀 관리쪽이랑 합치는 것도 매우 어러울 것 같다.. 😱
  • 태린

    • 도커 허브에 각각 이미지를 만들어서 푸시해놓았다. 한 레포지토리 안에서 여러개의 이미지를 관리하고싶은데 일반적으로는 한개의 이미지만 관리하는듯하다 조금 더 찾아봐야겠다.
    • 쿠버네티스 유투브 강의들을 찾아봤는데 도커 먼저 공부해야 이해하기 쉬울 것 같다 ㅠㅠㅠ

내일의 일정 (2020/11/11 화) 🥨

10:00 - 10:15 / daily scrum
10:15 - 15:30 / 개인 개발
15:30 - 15:45 / 중간 점검
15:45 - 18:30 / 개인 개발
18:30 - 18:45 / wrap up

2020년 11월 11일을 마무리 짓고

오늘의 일정 (2020/11/11) 🍰

10:00 - 10:15 / daily scrum
10:15 - 15:30 / 개인 개발
15:30 - 15:45 / 중간 점검
15:45 - 18:30 / 개인 개발
18:30 - 18:45 / wrap up

오늘의 회고 🎈

  • 병선

    • 아직 WebRTC 렌더링 오류 이슈는 해결 못했다. 아까 연주랑 같이 알아보면서 힌트를 좀 얻었다. 마저 해야겠다.
    • 중간발표 준비를 해야된다.
    • 성원이랑 develop에 WebRTC와 Editor 페이지를 merge해야된다.(오후 9시 21분 성공! 이제 css 작업만 마무리하고 WebRTC 이슈만 해결하면 됨!)
  • 연주

    • express-team에서 하나의 파일에서 작성한 코드를 여러 파일로 분리하면서 async-await관련 이슈로 개발이 늦어졌다. Promise와 async-await 개념이 약하다는 것을 알고 공부해보고자 찾아보았다. 역시나 예전이나 지금이나 어려웠다ㅎ MemberService에 정의한 함수는 동기함수이다. 그렇기 때문에 그 함수를 호출하는 controller에서 await를 앞에 작성하여 해당 service함수가 실행되어 특정 값을 return할 때까지 기다려주어야 한다. 그렇지 않으면 해당 함수에 쓰인 mongoose 함수 정의가 할당되는 불상사가 생긴다 ^-^ middleware/validation/checkmember에서 발생한 이슈를 해결하지 못했다..
    • mongoose-hidden 을 사용하여 mongoose 함수 findOne, findMany를 사용해서 특정 데이터를 가져올 때 특정 key에 대한 value는 보이지 않도록 하였다.
    • 병선오빠와 WebRTC 오류를 같이 고민하면서 useEffect 동작방식을 복습할 수 있었다.
  • 소영

    • ec2에 document server를 올려서 public ip로 접근하여 postman으로 테스트하였다. 팀서버와 연결하면 된다~!
  • 성원

    • editor 기능을 develop 에 merge 시켰다. 그리고 webRTC와 editor 기능을 한 페이지로 합쳐서 나오게 했다. 내일은 yjs서버를 develop에 올리는 것을 1순위로 해야겠다.
  • 태린

    • 하루종일 쿠버네티스 강의를 들었다. 머리로 이해가 가는것 같긴 한데 중간 도커를 그냥 건너뛰어서인지 가짜로 이해한 느낌이 든다. k8s적용 실패의 경우를 대비하여 도커 컴포즈에 대해서도 알아보아야겠다. 그냥 무작정 따라하기만 하면 될줄 알았는데 너무 k8s를 얕봤나보다ㅠㅠ 열심히하자 하태린!!

내일의 일정 (2020/11/12 수) 🥨

10:00 - 10:15 / daily scrum
10:15 - 15:30 / 개인 개발
15:30 - 15:45 / 중간 점검
15:45 - 18:30 / 개인 개발
18:30 - 18:45 / wrap up

2020년 11월 12일을 마무리 짓고

오늘의 일정 (2020/11/12) 🍰

10:00 - 10:15 / daily scrum
10:15 - 15:30 / 개인 개발
15:30 - 15:45 / 중간 점검
15:45 - 18:30 / 개인 개발
18:30 - 18:45 / wrap up

오늘의 회고 🎈

  • 병선

    • WebRTC peers의 중복 렌더링 이슈 해결했다. 해결방법은 2가지였지만 근본적인 해결방법은 peers 배열의 깊은 복사였다. (Slice)
        1. peersRef.current 배열을 돌면은 된다. 하지만 이건 뇌피셜적인 해결방법이라 근본적인 해결 방안은 아니다.
        1. user left 함수안에서 peers 배열이 얕은 복사로 인해서 제대로 filter가 되지 않았다. 그래서 Slice()를 통하여 깊은 복사를 해서 메모리를 따로 참조하게끔 만들었다. 그래서 근본적인 중복 렌더링 이슈를 해결했다.
  • 연주

    • javascript 용 api 문서를 생성할 수 있는 jsdoc을 알게 되었다. 바로 적용해보려고 하였으나 조금 더 찾아보아야 겠다.
    • role based access control을 할 수 있는 accesscontrol 모듈을 찾았다. 이를 적용해볼 예정이다.
    • member가 추가되면 초대메일을 보내주는데, 이때 초대 코드를 db에 저장한다. 이와 관련된 이슈를 해결하고자 했다
      • expires를 통한 invitation 데이터 auto delete
      • express-validator에서 custom함수는 async 함수이다. 그 안에서는 InvitationService와 MemberService의 함수를 사용하여 email과 member를 체크하기 때문에 map 함수 또한 async함수이다. service 함수를 통해 이미 데이터가 있을 때 Promise.reject("Already invited")이 return되도록 하였다. 하지만 return 된 promise 객체는 바로 밖에 있는 async함수에 반환되기 때문에 controller에서 validationError.throw()가 실행되지 못하는 상황이었다. → map, filter 등 함수 인자로 콜백함수는 async 키워드를 써도 제대로 작동하지 않는다!는 걸 알게 되었다. middleware/checkMembers에 Promise와 map, filter을 섞어 asyncFilter를 만들어 이슈를 해결했다.
  • 소영

    • 오늘 하루종일 unit test code를 작성했다. TestRestTemplate의 delete, postForEntity, getForEntity 메소드에 대해서 알 수 있었다.
    • controller의 unit test와 repository의 unit test를 둘 다 해야할 수도 있지만, 일단 controller 쪽 test만 작성하기로 하였다. 얼른 circleci도 공부하고, 리액트와 문서서버를 연결하고 싶다..😢
  • 성원

    • yjs 서버코드를 LMD-158 브랜치에 올렸다. 그리고 하루종일 webRTC의 peers 버그를 병선이형과 고쳤다. peersRef와 peers 변수의 얕은 복사 관련 문제였다. 다시 한 번 정확한 원인을 찾아봐야 할 것 같다.
  • 태린

    • client: nginx에 build파일을 포함시켜 이미지를 생성했다.
    • server: nginx와 node를 함께 이미지로 만들 수 없어서 nginx/video/chat 이렇게 세개의 이미지를 생성했다.
    • ssl적용을 어떻게 시킬지는 조금 더 고민해봐야겠다.
    • 집에가서는 docker compose로 서비스를 만들어서 중간 발표때 도메인으로 요청이 들어올 수 있도록 만들어야겠다.

내일의 일정 (2020/11/13 금) 🥨

10:00 - 10:15 / daily scrum
10:15 - 15:30 / 개인 개발
15:30 - 15:45 / 중간 점검
15:45 - 18:30 / 개인 개발
18:30 - 18:45 / wrap up

2020년 11월 16일을 마무리 짓고

오늘의 일정 (2020/11/16) 🍰

10:00 - 10:15 / daily scrum
10:15 - 15:30 / 개인 개발
15:30 - 15:45 / 멘토링 피드백 정리
15:45 - 18:30 / 개인 개발
18:30 - 18:45 / wrap up

오늘의 회고 🎈

  • 병선

    • ㅠㅠ Editor page CSS 작업중에 있다. 이게 chat과 Video 버튼을 클릭해서 Slide 기능을 넣고 싶은데 Video쪽에서 또 렌더링 문제가 발생한다. ㅠㅠ 여러 가지 코드를 보면서 좀 더 찾아봐야 될 것 같다.
  • 연주

    • 1차부터 4차까지 아키텍처 작성해서 github wiki에 올렸다.
    • flux패턴에 따라 useReducer로 상태 관리 vs mobx-state-tree로 상태 관리 자료를 더 찾아보고 고민했다. 프로젝트 기간이 3주조차 안 남아서 조금 더 러닝커브가 낮을 것 같은mobx-state-tree를 선택하고 예제를 보며 공부했다. 참고하는 자료가 tdd라 jest로 테스트 코드 짜면서 배우니 재밌다.
  • 소영

    • jwt 유효성 검사하는 코드를 추가했다. 내가 참고한 모든 코드는 하나의 서버에서 jwt를 발급하고 검증하였지만, 나는 클라이언트에서 받아오기 때문에 제대로 실행되는지 확인할 수 없다. test code에서라도 jwt를 발급하는 코드를 넣어 테스트 해보아야겠다.
    • secret key를 내가 임의로 설정할 수도 있지만 byte[]의 타입으로 generate 할 수도 있다는 것을 알게 되었다.
  • 성원

    • 서버가 여러 컨테이너에서 실행될 때 로컬 데이터 처리하는 것을 고려해야 할 것 같다. 그리고 DB는 사용자가 첫 입장했을때와 마지막으로 퇴장했을 때 관련해서 처리해주면 될 것 같다. 하지만 장애 발생 시 데이터 처리를 어떻게 해야할 지 조금 더 생각해봐야 한다.
  • 태린

    • ec2의 스케일링에 대해 알아보았다. 우리 서비스에서 express서버에 nginx가 필요한 이유는 ssl때문인데 ami로 같은 환경으로 스케일링을 한다고 해도 주소가 달라지기 때문에 새로운 ec2에 '서브도메인+ssl'작업을 수동 또는 쉘스크립트로 처리해줘야한다. 반면 도커를 사용하는 경우에는 nginx가 한개만 필요하다 (nginx컨테이너 띄우고 ssl컨테이너 띄우면 자동으로 완성될 뿐더러 pem키를 호스트os저장해놓고 스케일링 할때마다 가져다쓰면 되기때문) 때문에 왜 도커가 2세대 아키텍쳐인지 알것 같다. 이부분에 대해서는 api gateway에서 nginx설정을 통해 단순화시킬수있는지 찾아봐야겠다.
    • 위와 같은 이유로 내일은 아키텍처 수정 및 컴포즈 구현을 완료해야겠다.

내일의 일정 (2020/11/17 화) 🥨

10:00 - 10:15 / daily scrum
10:15 - 15:30 / 개인 개발
15:30 - 15:45 / 중간 점검
15:45 - 18:30 / 개인 개발
18:30 - 18:45 / wrap up

2020년 11월 17일을 마무리 짓고

오늘의 일정 (2020/11/17) 🍰

10:00 - 10:15 / daily scrum
10:15 - 15:30 / 개인 개발
15:30 - 15:45 / 멘토링 피드백 정리
15:45 - 18:30 / 개인 개발
18:30 - 18:45 / wrap up

오늘의 회고 🎈

  • 병선

    • Editor CSS 마무리 작업중에 있다. Video와 Chat의 hide and show 기능은 잘 구현했지만 show를 했을 때 마크다운 프리뷰 페이지가 짤려서 보인다. 반응형으로 움직일수 있도록 구현작업만 하면 기본적인 Editor page의 CSS는 끝난다.
    • 소영이 JwtException 문제를 같이 문제를 해결하고자 노력했다. 의욕이 생겼다니 다행이다.
  • 연주

  • 소영

    • token 생성하는 코드까지 작성해서 unit test에서 token을 발급하고 유효성 검사하는 코드를 test해보려고 시도했다. 하지만 request header에 어떻게 발급한 token을 넘겨줘야 하는지 몰라서 일단 jwt.io에서 생성한 token을 postman의 header에 넘겨주려고 시도했다. 하지만 token 검증 메소드에서 계속 Exception이 나는데 무슨 Exception인지 파악을 못했다. 그냥 JwtException인 것만 파악했다. 어떻게 하위 Exception을 볼 수 있는지 알아봐야겠다.
    • 성원오빠와 병선오빠와 함께한 live share로 같이 코드를 보며 찍어보았다. 함께 하니 더 의욕이 생겨서 좋다~~^^
  • 성원

    • text 데이터를 파일로 저장할 지 아니면 db 테이블의 column 으로 저장할 지 고민했다. 찾아보니 mysql에 longtext라는 타입이 있는데 4gb까지 텍스트를 저장할 수 있어서 문서 저장을 mongoDB로 따로 빼야할 지 아니면 그냥 기존 mysql의 document 테이블에다 저장할 지 내일 팀원들과 상의해봐야겠다.
    • 소영쓰, 병선이형과 서버에서 jwt로 인증하는 것을 같이 봤다. 결국 처리는 못했지만 내일 시간을 좀 더 투자하면 해결가능할 것 같다.
  • 태린

    • docker nginx 컨테이너에서 다른 컨테이너로의 리버스 프록싱을 적용했다. 적용은 잘 된것 같은데 소켓 연결이 안돼서 조금 더 찾아봐야 할 것 같다.
    • 갑자기 해결했던 cors에러가 다시 나타났다. 아무래도 ec2와 컨테이너 환경이 달라서 생기는 것 같은데 내일 오프라인 강의때 강사님의 도움을 받아봐야겠다ㅜㅜ

내일의 일정 (2020/11/18 수) 🥨

10:00 - 10:15 / daily scrum
10:15 - 15:30 / 개인 개발
15:30 - 15:45 / 중간 점검
15:45 - 18:30 / 개인 개발
18:30 - 18:45 / wrap up

https://live-md.com/page/ghgh

https://live-md.com/page/1234

2020년 11월 18일을 마무리 짓고

오늘의 일정 (2020/11/18) 🍰

10:00 - 10:15 / daily scrum
10:15 - 15:30 / 개인 개발
15:30 - 15:45 / 중간 점검
15:45 - 18:30 / 개인 개발
18:30 - 18:45 / wrap up

오늘의 회고 🎈

  • 병선

    • Main page의 header 부분을 작업을 어느정도 완료했다. CSS도 쉽지 않다는 것을 깨달았다. 호다닥 완료해야겠다.
  • 연주

  • 소영

    • JWT 검증 코드를 완료하고 postman test까지 완료하였다. 어제 해결되지 않았던 이유는 secretKey를 .getByte()를 하지 않았기 때문이다. getByte()는 String type의 secret key를 byte[]형태로 인코딩해주는 메소드이다. 하지만 참고한 코드 중에 secretKey를 인코딩하지 않는 코드가 있어서 헷갈렸다. 왜 인코딩을 하지 않은 것은 코드가 돌아가는지 분석해보아야겠다.
  • 성원

    • text 데이터를 파일로 저장할 지 아니면 db 테이블의 column 으로 저장할 지 고민했다. 찾아보니 mysql에 longtext라는 타입이 있는데 4gb까지 텍스트를 저장할 수 있어서 문서 저장을 mongoDB로 따로 빼야할 지 아니면 그냥 기존 mysql의 document 테이블에다 저장할 지 내일 팀원들과 상의해봐야겠다.
    • 소영쓰, 병선이형과 서버에서 jwt로 인증하는 것을 같이 봤다. 결국 처리는 못했지만 내일 시간을 좀 더 투자하면 해결가능할 것 같다.
  • 태린

    • client와 server의 통신이 이뤄지지 않는 에러를 해결했다. nginx의 프록시는 제대로 달려있었는데 도커 컨테이너의 네트워크에 대한 이해가 부족해서 생긴 에러였다. 컨테이너의 ip와 host의 ip는 다른데 도메인의 주소는 host의 주소를 가지고있어서 요청을 할 때 client의 local주소말고 host의 주소를 요청하게 했다.
    • cors또한 잘못된 주소로 요청을 하고있는 중이라 생긴 에러였고 cors가 달려있는 서버로 정상적으로 요청을 하니 사라졌다.
    • 집에가서는 document DB 분리 및 EBS연결을 해봐야겠다.

내일의 일정 (2020/11/19 목) 🥨

10:00 - 10:15 / daily scrum
10:15 - 15:30 / 개인 개발
15:30 - 15:45 / 중간 점검
15:45 - 18:30 / 개인 개발
18:30 - 18:45 / wrap up

2020년 11월 19일을 마무리 짓고

오늘의 일정 (2020/11/19) 🍰

10:00 - 10:15 / daily scrum
10:15 - 15:30 / 개인 개발
15:30 - 15:45 / 중간 점검
15:45 - 18:30 / 개인 개발
18:30 - 18:45 / wrap up

오늘의 회고 🎈

  • 병선

    • Main page 작업 중에 iphone 12 pro 사이트를 보고 반해버렸다. 최대한 이 사이트와 관련된 FE 오픈소스를 좀 더 찾아봐야겠다.
  • 연주

    • mobx state tree을 학습하기 위해 따로 진행하던 demo를 마무리하였다.
      • 멀티캠퍼스는 보안이 삼엄하여 방화벽이 있다. 따라서 서버를 aws에 올렸는데 멀티캠퍼스 와이파이에 연결하면 외부 aws 서버에 접근하지 못한다. json-server 라이브러리로 서버를 직접 구현하지 않고도 로컬에서 json형식으로 데이터를 전달받을 수 있다는 것이 신기했다.
      • 클라이언트에서 서버로 여러 번 같은 요청을 했을 때 이전 요청을 취소하고 가장 최신의 요청만 처리할 수 있다는 것을 알았다. axios 기반으로 demo를 진행했는데 cancelToken을 추가하여 짧은 시간 같은 요청을 보냈지만 abort가 잘 되지 않았다. 우선은 fetch api를 사용해서 처리를 해두었다. 이렇게 두 가지 혼종으로 써도되는지 잘모르겠다,,
      • dexie.js로 브라우저의 indexed db에 데이터를 저장할 수 있다는 것을 알았다. 이미 mobx state tree를 사용하여 상태를 관리하는데 사람들이 indexed db를 쓰는 이유가 무엇인지 궁금했다. 복잡하고 용량이 큰 데이터를 저장할 수 있다고 한다. indexed db와 실질적 server와의 sync를 어떻게 맞출 수 있는지 궁금했다. 공식 문서를 봤는데 어려워서 잘 이해가 되지 않았다. 또륵
  • 소영

    • 어제 @Value로 application.properties의 값을 불러지 못한 이유를 해결했다. 변수를 static으로 할당할 경우 @Value를 바로 불러오지 못하고 setter메소드에 붙여줘야 한다는 것을 알았다. 이것을 구현하면서 외부 설정 파일의 우선순위를 알 수 있었고, 자바의 기본 개념이 부족함을 느꼈다.
    • Jenkins 공부를 시작했다. CI의 개념에 대해서 인지했지만, 정확히 어떤 방식으로 구현을 해야하는지는 tutorial을 해보아야 알 것 같고 github repo를 폴더별로 적용할 수 있는지도 알아보아야겠다.
  • 성원

    • text 데이터를 파일로 저장할 지 아니면 db 테이블의 column 으로 저장할 지 고민했다. 찾아보니 mysql에 longtext라는 타입이 있는데 4gb까지 텍스트를 저장할 수 있어서 문서 저장을 mongoDB로 따로 빼야할 지 아니면 그냥 기존 mysql의 document 테이블에다 저장할 지 내일 팀원들과 상의해봐야겠다.
    • 소영쓰, 병선이형과 서버에서 jwt로 인증하는 것을 같이 봤다. 결국 처리는 못했지만 내일 시간을 좀 더 투자하면 해결가능할 것 같다.
  • 태린

    • docker에 yjs서버를 올리려고 했는데 chat/video 때와는 조금 다른것 같다. socket.io와 websocket의 차이점 때문인지 아닌지 잘 모르겠는데 reverse proxy, nginx, ssl등 개념을 확실히 잡아서 트러블슈팅을 잘 해봐야겠다.
    • 토요일에 있을 K8s특강을 확실히 이해하기 위해 강인호 멘토님이 주신 핸즈온과 강의를 마저 들어야겠다.

내일의 일정 (2020/11/20 금) 🥨

10:00 - 10:15 / daily scrum
10:15 - 15:30 / 개인 개발
15:30 - 15:45 / 중간 점검
15:45 - 18:30 / 개인 개발
18:30 - 18:45 / wrap up

2020년 11월 20일을 마무리 짓고

오늘의 일정 (2020/11/20) 🍰

10:00 - 10:15 / daily scrum
10:15 - 15:30 / 개인 개발
15:30 - 15:45 / 중간 점검
15:45 - 18:30 / 개인 개발
18:30 - 18:45 / wrap up

오늘의 회고 🎈

  • 병선

    • iphone 12 pro 사이트를 보고 반해버렸다. 그래서 최대한 비슷하게 연출해보고자 관련있는 라이브러리는 찾아봤다. react-reveal이 있었다. 이것을 활용하여 이제 main page를 다시 구성하면 될 것 같다.
  • 연주

    • mobx state tree을 학습하기 위해 따로 진행하던 demo를 마무리하였다.
      • 멀티캠퍼스는 보안이 삼엄하여 방화벽이 있다. 따라서 서버를 aws에 올렸는데 멀티캠퍼스 와이파이에 연결하면 외부 aws 서버에 접근하지 못한다. json-server 라이브러리로 서버를 직접 구현하지 않고도 로컬에서 json형식으로 데이터를 전달받을 수 있다는 것이 신기했다.
      • 클라이언트에서 서버로 여러 번 같은 요청을 했을 때 이전 요청을 취소하고 가장 최신의 요청만 처리할 수 있다는 것을 알았다. axios 기반으로 demo를 진행했는데 cancelToken을 추가하여 짧은 시간 같은 요청을 보냈지만 abort가 잘 되지 않았다. 우선은 fetch api를 사용해서 처리를 해두었다. 이렇게 두 가지 혼종으로 써도되는지 잘모르겠다,,
      • dexie.js로 브라우저의 indexed db에 데이터를 저장할 수 있다는 것을 알았다. 이미 mobx state tree를 사용하여 상태를 관리하는데 사람들이 indexed db를 쓰는 이유가 무엇인지 궁금했다. 복잡하고 용량이 큰 데이터를 저장할 수 있다고 한다. indexed db와 실질적 server와의 sync를 어떻게 맞출 수 있는지 궁금했다. 공식 문서를 봤는데 어려워서 잘 이해가 되지 않았다. 또륵
  • 소영

    • 오늘 내가 건드려 놓고 develop에 병합하지 못한 브랜치 2개를 손 보았다. jwt의 exception handling은 그냥 하위 exception을 넣지 않기로 하고 status code 403을 주어 forbbiden으로 처리하도록 하였따.
  • 성원

    • text 데이터를 파일로 저장할 지 아니면 db 테이블의 column 으로 저장할 지 고민했다. 찾아보니 mysql에 longtext라는 타입이 있는데 4gb까지 텍스트를 저장할 수 있어서 문서 저장을 mongoDB로 따로 빼야할 지 아니면 그냥 기존 mysql의 document 테이블에다 저장할 지 내일 팀원들과 상의해봐야겠다.
    • 소영쓰, 병선이형과 서버에서 jwt로 인증하는 것을 같이 봤다. 결국 처리는 못했지만 내일 시간을 좀 더 투자하면 해결가능할 것 같다.
  • 태린

    • docker에 yjs서버를 올리려고 했는데 chat/video 때와는 조금 다른것 같다. socket.io와 websocket의 차이점 때문인지 아닌지 잘 모르겠는데 reverse proxy, nginx, ssl등 개념을 확실히 잡아서 트러블슈팅을 잘 해봐야겠다.
    • 토요일에 있을 K8s특강을 확실히 이해하기 위해 강인호 멘토님이 주신 핸즈온과 강의를 마저 들어야겠다.

내일의 일정 (2020/11/21 토) 🥨

10:00 - 18:20 / 멘토링



2020년 11월 23일을 마무리 짓고

오늘의 회고 🎈

  • 병선

    • Main page 작업 중 block2까지 마무리 현재 block4 작업 중이다. Footer까지 남은 하루 내에 빠르게 마무리 해야겠다.
  • 연주

    • react에서
  • 소영

    • workspace에서 css를 작업중이다. header에 색을 입히고, profile의 위치를 살짝 바꾸었다. 하지만, 왜 화면이 꽉차있을 때는 side bar가 커져서 가려져있는지 모르겠다.
    • material ui를 가져다 써서 tab을 갖다 놓기는 했는데 이것을 어떻게 customizing해야할지 고민이다. 폴더 구조 자체를 완벽히 이해하지 못했다.
  • 성원

  • 태린

    • 스프린트 회의를 하며 할일을 정리했다. 목요일까지 k8s ingress + nginx를 얼른 적용해야겠다.
    • 강인호멘토님의 강의를 들으며 핸즈온 연습을 했따 너무졸리다 집가서 마저 해야겠다

내일의 일정 (2020/11/24 화) 🥨

10:00 - 10:15 / daily scrum
10:15 - 18:00 / 개인 개발
18:00 - 18:15 / daily wrap-up



2020년 11월 24일을 마무리 짓고

오늘의 회고 🎈

  • 병선

    • 오늘 워크스페이스 View쪽의 폴더 구조를 파악하고 소영이와 구성 계획을 짰다. 이제부터는 밤샘 코딩뿐이다.
  • 연주

  • 소영

    • 병선 오빠와 역할 분담을 하고 tab을 customizing 해보았다. css에 적응하는 것이 조금 어렵다. ㅠㅜ 얼른 진도를 정말 나가고 싶다!!! 내게 맡겨진 몫을 제대로 끝내보자!!
  • 성원

  • 태린

    • k8s는 desired state를 찾아가는 과정이라는것을 배웠다.
    • 클러스터를 만드는것은 성공했는데 배포가 안돼서 다시 핸즈온 기본 이미지로 연습을 해본다음에 시도해봐야겠다.ㅠㅠ

내일의 일정 (2020/11/25 수) 🥨

10:00 - 10:15 / daily scrum
10:15 - 18:00 / 개인 개발
18:00 - 18:15 / daily wrap-up
Clone this wiki locally