-
Notifications
You must be signed in to change notification settings - Fork 1
[3주차 트러블 슈팅] 홍성준
SungJun Hong edited this page Dec 11, 2023
·
1 revision
- (트러블은 아니지만) 네트워크 요청 방식이 1회만 발생할 수 있도록 하기
- 기존에는 Combine을 사용하였음
- RxSwift에서는 Single을 이용하면 해결되는데 Combine은 적합한 것을 찾았지만 굳이 이렇게 해야 하는가 하는 생각이 들었음
- async/await 을 활용
- 1회 호출만 필요한 단순한 요청은 async/await을 활용하고 스트림이 필요하면 Combine을 사용하기로 선택
- Task로 감싸서 실행하므로 메인 스레드 이슈를 쉽게 해결하기 위해 Result 타입에 스레드에 대한 코드와 여러 슈가 코드를 추가하였음
- onSuccess/onFailure을 추가하여 가독성을 올림
- on을 추가하여 onSuccess/onFailure 에서 어떠한 스레드에서 동작할 지 추가하여 가독성을 올림
// 적용하기 전
Task { [weak self] in
guard let self else { return }
let result = await dependency.authUseCase
.requestSignUp(userName: userNameSubject.value)
switch result {
case .success(let value):
DispatchQueue.main.async { [weak self] in
self?.listener?.signUpDidComplete()
}
case .failure(let error):
print(error.localizedDescription)
}
// 적용한 후
Task { [weak self] in
guard let self else { return }
await dependency.authUseCase
.requestSignUp(userName: userNameSubject.value)
.onSuccess(on: .main, with: self, { this, token in
this.listener?.signUpDidComplete()
})
.onFailure { error in
print(error.localizedDescription)
}
}
- DB 선택 과정
- TypeORM 선택 이유
- Docker 선택 이유
- Github Action 선택 이유
- DB서버와 서비스 서버를 분리한 이유
- 자동완성을 위한 Trie 구조를 제거하고, naver cloud search로 대체한 이유
- 11월 07일 (화) - 프로젝트 설명
- 11월 16일 (목) - 프로젝트 진행하면서 생긴 고민
- 11월 21일 (화) - 멘토분들 피드백
- 11월 28일 (화) - 트러블 슈팅 피드백
- 12월 05일 (화) - 기술적 도전에 대한 고민
- 12월 12일 (화) - 최종 발표 피드백