-
Notifications
You must be signed in to change notification settings - Fork 1
[4주차 트러블 슈팅] 홍성준
SungJun Hong edited this page Dec 11, 2023
·
1 revision
- 인증 토큰이 올바르지 않을 때에 대한 처리
- 별 다른 처리를 하지 않았지만 로그아웃 시키면 되겠다 생각을 했음
- 싱글톤을 사용해야 하나? 생각이 들었고 테스트 가능하게 하려면 어떠한 방식으로 해야할 까 고민을 하였음
- NetworkProvider에 싱글톤을 주입시키자
- 로그아웃 서비스에 대한 싱글톤 객체를 생성자로 의존성 주입시켰음
- 로그아웃 서비스 기능을 나누자
- 어떠한 곳은 로그아웃을 요청할 수 있는 기능이 필요하고 다른 곳은 로그아웃에 대한 결과만 받으면 되었음
- 서비스를 프로토콜로 잘게 쪼개어 그 기능이 필요한 곳에 해당 프로토콜을 가지고 있도록 하여 특정 기능만 사용하도록 제한하였음
public protocol SignOutServiceInterface: AnyObject {
var signOutCompleted: AnyPublisher<Bool, Never> { get }
}
public protocol SignOutRequestServiceInterface: AnyObject {
func signOut()
func signOut(type: AlertType)
}
public final class SignoutService: SignOutServiceInterface, SignOutRequestServiceInterface {
public static let shared = SignoutService()
public var signOutCompleted: AnyPublisher<Bool, Never> {
return signOutCompletedSubject.eraseToAnyPublisher()
}
private var signOutCompletedSubject = PassthroughSubject<Bool, Never>()
private init() {}
public func signOut() {
SecretManager.remove(type: .accessToken)
signOutCompletedSubject.send(true)
}
public func signOut(type: AlertType) {
presentAlert(type: type) { [weak self] in
self?.signOut()
}
}
}
- DB 선택 과정
- TypeORM 선택 이유
- Docker 선택 이유
- Github Action 선택 이유
- DB서버와 서비스 서버를 분리한 이유
- 자동완성을 위한 Trie 구조를 제거하고, naver cloud search로 대체한 이유
- 11월 07일 (화) - 프로젝트 설명
- 11월 16일 (목) - 프로젝트 진행하면서 생긴 고민
- 11월 21일 (화) - 멘토분들 피드백
- 11월 28일 (화) - 트러블 슈팅 피드백
- 12월 05일 (화) - 기술적 도전에 대한 고민
- 12월 12일 (화) - 최종 발표 피드백