-
Notifications
You must be signed in to change notification settings - Fork 1
[개인회고] ‐ 3주차
- CRDT 기능 구현 (공통)
- AI 카테고리 페이지 (개인) - 구현중
- 로그인 페이지 (개인) - 구현중
감기 이슈로 인해 이번주 스프린트에 온전한 정신으로 임하는게 쉽지 않았습니다 그래도 이전보다는 프로젝트 구조에 대해 이해도 높아졌고, 어떻게 내 포지션을 잡아가야할지 감이 오기 시작했습니다.
-
⚙️ CRDT 알고리즘 이해
- 원리에 대해서 이해했으나 코드로 구현되었을 때 어떻게 동작하는지 제대로 파악이 안됨
-
🏷️ 로그인 이후에 rootViewController 교체
- 프로젝트 구조상 router가 view의 생성주기를 담당했는데, 로그인 이후 rootViewController가 변했어야했습니다
-
⚙️ CRDT 알고리즘 이해
- 주말을 이용해서 논문과 코드를 다시 한 번 잘 읽어보고 사용해보아야겠습니다
-
🏷️ 로그인 이후에 rootViewController 교체
- AppRouter에 프로토콜을 만들어서 showTabView() showLoginView() 메서드를 두고 로그인 이후에 router.showTabView()로 하도록 했습니다
- 지난주에 비해 몸은 안좋았으나 확실히 더 어떻게 해야할지 감이 잡혔습니다
- 다음 주 부터는 온전한 몸과 정신으로 달려야겠습니다
iOS 멘토님이 속도가 느리다고 했다. 우린 왜 속도가 왜 느린가 흠
우린 같은 것을 학습하고 한 몸처럼 움직였다. 그래서 자연스럽게 속도가 안 나온것 같다.
ios팀은 너무 착해 서로 배려하고 의견을 양보한다. 우리가 무엇을 해야할 지 방향을 잡고 있을 사람이 필요할 것 같다.
다음주엔 뷰를 전부 그려야한다. 그전에 유즈케이스와 레포지토리를 설계하고 뷰를 구현해야지
- 한주간 정신없이 살았고 구현에 급급한 부분이 있었다.
- 마음에 여유를(..?) 갖고 앞으로 남은 일정 잘 소화해야겠다.
- CRDT란 무엇인가?
- ID를 어떻게 부여하는가?
- ID로 어떻게 위치를 탐색하는가?
- 구현에 있어서 어떤 것이 어려운가?
- Socket 응답을 받기 위해 재귀 호출을 하게 되는데 어떻게 데이터를 전달할 것인가?
문제 상황
- Socket 응답을 받기 위해서 재귀적으로 receive를 호출하고 있는 상황
- 재귀 함수를 호출해서 사용할 때 하위 레이어에 데이터를 전달하는데 어려움이 있음
문제 해결
시도 1 : Async/Await
Async/Await에서 재귀 호출을 하기 위해서는 **AsyncThrowingStream
**를 사용해야 함
이 과정에서 Timer를 돌려줘야 함
Timer 사이에 오는 데이터의 유실 가능성이 있음
시도 2 : Delegate
Delegate로 데이터를 넘기면 하위 레이어에 계속 Delegate로 데이터를 넘겨줘야 함
Delegate Chain이 생김
시도 3 : ViewController에서 WebSocket 호출
기존 아키텍쳐의 일관성에 어긋남.
하지만 간단한 방법
결론
ViewController에서 WebSocket 호출하는 방법 채택
아키텍쳐는 유연하게 바뀔 수 있으며 항상 일관된 방법일 수는 없다.
- 소통이 원활하게 이루어지고 있다.
- iOS에서 crdt를 빠르게 구현해 착착 진행되고 있다
- 하루만에 양동석 캠퍼와 함께 ci/cd를 세팅했다.
- vpc, subnet, acg, nat gateway
- github actions 와 docker container registry를 통한 CI/CD
- nginx를 통한 로드밸런싱
- log interceptor는 잘못된 요청은 찍지 못한다.
- 배포 환경을 구축하느라 api 개발에 많은 시간을 투자하지 못했다.
- 클로바 closed beta 신청을 늦게 해 다음 주 바로 api 개발에 들어가지 못할 것 같다...
- 주말동안 apple oauth 로그인 api 구현 완
- 다음주 순조로운 인공지능 api 사용
- 배스쳔호스트 서버를 통한 서버 보안 구축
- ncloud에서 vcp 구조를 이용해 퍼블릭 서버에 nest Server, 프라이빗 서버에 postgres DB를 적용했다.
- github actions와 도커를 이용해 CI/CD를 구축했다.
- nginx를 이용해 https를 적용했다.
- 소캣 통신을 구현했다.
- 이번주는 진짜 많은 것을 했다.
- 특히 이번주에 한 것은 거의 다 처음 하는 일들이라 매우 힘들었다.
- 하지만 성공적으로 구현해서 너무 뿌듯하다.
- [ADR] 아키텍처 의사 결정 기록: iOS 애플리케이션 아키텍처 채택하기
- [ADR] 아키텍처 의사 결정 기록: SwiftLint 채택
- [ADR] 아키텍처 의사 결정 기록: UI 영역에서 Combine 사용 결정
- [ADR] 아키텍처 의사 결정 기록: Presentation영역의 ViewModel에서 Input Output 패턴 도입 결정
- [ADR] 아키텍처 의사 결정 기록: 코디네이터 패턴 도입 결정
- [ADR] 아키텍처 의사 결정 기록: 로컬 스토리지로 코어 데이터 사용 결정
- [ADR] 아키텍처 의사 결정 기록: Custom Network Foundation 라이브러리 구현 및 모듈화 결정
- [ADR] 아키텍처 의사 결정 기록: 이미지캐셔 라이브러리 구현 및 모듈화 결정