6주차 팀회고 - boostcampwm2023/iOS05-Village GitHub Wiki
프로젝트 진행 상황
공통
최종 발표자료 만들기
멘토링
ReadMe 수정
GitHub Wiki 수정
iOS
홈 화면 개편
요청 / 대여 게시글 목록 분리
새로고침 필요한 경우에만 이루어지도록 개선
숨긴 게시글 관리
채팅방 마무리
검색화면
프로필 수정 로직 수정
게시글 숨기기 수정
탈퇴 화면 관리
새로고침에 숨김 추가
게시글 상세화면
서버에서 403 응답올 시 로그인 화면으로 이동 구현
PHPicker에서 UIImage로 불러올 수 없는 이미지 포맷 불러오기
게시글 상세화면 이미지 디테일뷰 구현
홈 화면 페이지네이션 개선
리팩토링
BE
chat/unread API 구현
신고하기 API 구현
BlockUser 기본 이미지 처리
채팅방 읽음 처리 수정PHPicker에서 UIImage로 불러올 수 없는 이미지 포맷 불러오기
게시글 상세화면 이미지 디테일뷰 구현
홈 화면 페이지네이션 개선
리팩토링
vpc 서버로 배포
차단, 신고 API 수정
협업 중 어려움과 해결방안
공통
서버 바꿨는데 배포주소를 바꾸지 않아 찾는데 한참 걸림
Docker 로 말아서 실행시키니가 한국시간과 맞춰지지 않는 문제가 생겨 iOS에서 시간이 맞지 않는 문제가 생김
Docker 서버시간을 한국시간으로 맞추는 것으로 해결
발표 피드백
웹소켓은 기능을 확장해나가면서 내부 구현을 자주 변경하게 되는 것 같아요.
현재 프로젝트는 URLSessionWebsocketTask 로 구현이 되어있고 WebSocket 객체와 구현방식의 결합도가 높은 상황이에요.
구현체(URLSessionWebsocketTask) 와 객체의 결합도를 낮출 수 있는 방향을 고민해보면 좋을 것 같아요.
이를 Starscream 으로 바꾼다면? Network 를 이용해 직접 구현하도록 변경한다면? 이를 안전하게 스위칭을 어떻게 할 수 있지?
위와 같은 고민들이 도움이 될 것 같아요
URLSessionWebsocketTask에서 Starscream 대비 어떤 장단점이 있을까요?
메모리에 연결된 소켓을 유저 단위로 저장했을 때 접속자가 많아지면 서버의 메모리 부하가 발생할 수 있을 것 같은데 이 부분에서 어떻게 처리를 하셨고 동시 접속 인원을 몇명까지 고려하셨는지 궁금합니다.
채팅과 웹소켓 관련 처리에서 조금 더 깊게 고민할 수 있는 좋은 과제였다고 생각합니다. 읽음 처리에 관한 경우는 클라이언트가 서버에 last readMessage 의 timestamp를 저장하도록 변경하면 조금 효율적이었을 것 같다는 생각이 듭니다.
또한, 오전 발표한 모든 iOS 프로젝트를 진행하시는 캠퍼분들, 앱 소개에 대한 readme.md는 잘 설명되어있지만, 해당 프로젝트를 개발자 모드에서 개발환경을 구축할 수 있도록 설명된 부분은 찾지 못했습니다. 모든 캠퍼가 각자의 개발환경에 맞게 셋팅되고 그것을 변경해야 할 필요성을 느끼지 못했기 때문인데, 그만큼 다른 캠퍼의 git에 접근해볼 기회가 없었다고 생각합니다. git에 공개로 기록해놓고 그것을 개발 코드까지 공개되었다면 해당 프로젝트를 개발 환경에서 돌릴 수 있도록 설정하는 가이드도 있으면 좋겠다고 생각합니다.
사소하지만, 게시글을 등록할 때, 대여 시작, 종료 입력 단계에서 왜 기본 date picker를 사용하지 않고, 커스텀 picker를 사용했나요?
로그를 모두 기록하는 방식으로 디버깅을 하셨는데, 저희도 공감이 되었습니다.
그런데 저희 같은 경우 대량의 요청이 발생하면 로깅만으로도 상당히 오버헤드가 발생하였지만 아직 해결하지 못하였는데요.
혹시 이 부분에 대해서 고민하신 부분이 있는지 궁금합니다.