-
Notifications
You must be signed in to change notification settings - Fork 0
5주차 멘토링 회의록
cdj2073 edited this page Dec 12, 2023
·
1 revision
-
공통
- 멘토님들은 개발하실 때 문서화를 하시는 기준이랑 문서화를 어떤 식으로 하시는 지 궁금합니다.
-
Android
- 이미지 저장 기능을 구현할 때 버전마다 다르게 구현을 했습니다. 상위 버전은 MediaStore를 사용해서 구현하고, 하위 버전은 DownloadManager를 사용합니다. 사용하는 것이 다르다보니 조금씩 지원하는 기준이 달라서 버전마다 다운로드 기능이 살짝 다릅니다. 예로, 하위버전은 다운로드 클릭 시 포그라운드에 다운로드 현황이 나오는 대신 토스트 메시지로 다운로드 시작만 알려주고 끝을 알려주지는 않습니다. 반대로 상위 버전은 포그라운드를 지원하지 않는 대신 토스트 메시지로 끝을 알려줍니다. 이렇게 버전마다 조금씩 다르게 기능을 제공해도 되나요??
- FCM으로 서버에서 알림을 받을 때, 알림 기록에 관한 내용을 로컬에서 저장하려고 했는데, 기기를 변경했을 때 알림 기록이 남아 있어야 할 것 같아서 서버에 알림 기록을 저장하고 받는 것으로 정했습니다. 이럴 경우 알림을 삭제했을 때 마다 네트워크 통신을 해야하고, 네트워크 연결이 없으면 알림을 지울 수도 없는 상태인데, 알림 기록 같은 경우 어떻게 관리하는 것이 좋을 까요?
- 알림의 개수를 UI에 표시하려고 하는데 서버에서 알림을 저장하면 개수 계산은 어떤 방식으로, 읽음 처리는 어떤 방식으로 하는 게 좋을까요?
- 서버에 변화가 있을 때 클라이언트에 즉각적으로 반영하기 위해서는 보통 어떤 방식을 사용하나요?
-
Backend
- 쿼리의 성능 측정과 최적화는 어떤 식으로 하면 좋을까요
- 멘토님께서는 로깅을 어느정도까지 하는지 궁금합니다!
멘토링 시간에 나눈 이야기를 기록해보세요.
- 문서화 기준
- 클라
- 클라이언트 문서화에서는 문서보단 코드로서 기록하려고 한다.
- 말해야 하는 부분은 코드 주석으로 남긴다
- 딥링크를 통해 문서화 + db 마이그레이션 이력 같이 공유하면 좋을 정보
- 릴리즈 노트 남긴다
- 서버
- 비슷하다!
- 문서화 안하고 개발하는 방향으로 간다..
- 기본적인 db에 대한 구조 인프라 세팅 등을 남겨두면 좋당
- 세부적인 api 문서같은 건 swagger같은 거로 연결해서 해결하고 있다면 별다른 문서화는 필요 없다.
- 추가적으로 외부와 소통이 필요한 경우에 문서화로 남긴다.
- 클라
- 개인적인 트러블 슈팅이나 학습 관련 문서화 하나요..?
- 디버깅 하거나 익힐 때 메모하는 걸 노트에 그냥 남긴당
- 이슈가 있었고 어떻게 해결했는 지만 간단하게 남긴다.
- 코딩할 때 노래
- 집에서 할 때만 듣는다.
- 페어 프로그래밍
- 많이 안한다. 감사합니당
- 버전 별로 달라도 되나?
- 사용자 경험을 완전히 충족하려면 똑같이 하는 게 좋다
- 적정선에서 타협해야 한다.
- firebase를 통해 버전 별 사용하는 사람 확인해본다.(너무 적은 수의 사람을 위해 분기문 처리 하는 건 좋지 않을 수도)
- fcm 알림 관련
- fcm 받아서 로컬에 저장하는 건 많은 문제가 생긴다.
- 즉시 저장하지 않고 유실될수도 있어 서버에서 보낸 게 모두 도착했다는 것을 보장할 수 없음
- 로스가 생길 수 있다.
- 서버에 추가 삭제 할때마다 하는 게 맞나?
- 동기화를 구현해야 한다.
- 이벤트 소싱으로 한번에 받을 수 있다.
- 유저한테 먼저 보여준 후 나중에 처리할 수도 있다.
- 어느 선까지 동기화할 지 정해서 보여준다.
- 읽음 개수 처리
- 읽었을 때 api 쏴서 처리하는 방법
- 보낸 다음에 하루이틀 후에 읽음으로 바꿔버리는 경우도
- 클라에서 가지고 있다가 하루에 한번씩 쏠 수도 있다.
- 이 경우 읽었는데 안읽음 처리 될 수도 있음
- fcm 받아서 로컬에 저장하는 건 많은 문제가 생긴다.
- 서버의 변화를 클라에 즉각 반영하는 법
- fcm으로 하는 경우가 많다. 거의 다 실시간으로 받을 수 있다.
- 더 정밀하게 해야 하는 곳은 포그라운드 시에 소켓을 열어두고 실시간으로 소통
- 백그라운드에 있을 때는? 어렵다..
- 폴링 → 클라이언트에서 일정 시간마다 서버 요청한다. 부하가 가장 크다..
- 조건을 정해놓고 서버를 테스트 해보는 것이 좋을듯..
- 페어 프로그래밍
- 지위고하를 막론하고 할만하면 한다.
- 코딩할때 듣는 노래
- 잔잔한 걸 듣는다.
- 쿼리 속도 측정과 최적화
- 보통은 db 쿼리 실행시간을 위주로 측정을 많이 한다. 그렇지만 전체적인 api 실행시간을 측정해도 괜찮을 것 같다.
- 특정한 상황에 대해 테스트 데이터를 만들어두고 조회, 추가, 삭제 등 해보면서 성능 측정 및 비교
- db에서 쿼리 실행 시간 측정
- 로깅은 자세할수록 좋다. 테스트 코드가 없을 때에는 로그를 더 상세하게 남기면 좋음
- Week1 - Day01
- Week1 - Day02
- Week1 - Day03
- Week1 - Day04
- Week2 - Day01
- Week2 - Day02
- Week2 - Day03
- Week2 - Day04
- Week3 - Day01
- Week3 - Day02
- Week3 - Day03
- Week3 - Day04
- Week4 - Day01
- Week4 - Day02
- Week4 - Day03
- Week4 - Day04
- Week4 - Day05
- Week5 - Day01
- Week5 - Day02
- Week5 - Day03
- Week5 - Day04
- Week6 - Day01
- Week6 - Day02