모든 로그를 JSON으로 파싱하면 안 될까???
·
Android
안드로이드 개발을 하면서 로그캣을 통해 네트워크 로깅은 필수 입니다. 하지만 있는 그대로 JSON을 출력해보면 가독성이 매우 좋지 않죠..때문에 네트워크 통신 로그를 가독성 좋게 파악하고 싶어서 HttpLoggingInterceptor에 JSON Pretty Print 기능을 추가했었습니다. 개발 생산성은 확실히 좋아졌지만 문득 "이거 성능상 문제 없을까?"라는 의문이 들었습니다.이번 글에서는 작은 의문에서 시작해 성능을 95% 개선하기까지의 과정을 공유합니다.뭔가..뭔가 불편함…처음 작성한 로깅 코드는 이렇습니다.// NetworkModule.ktHttpLoggingInterceptor { message -> val log = runCatching { val jsonElement = ..
OkHttp Authenticator에서 runBlocking 없이 토큰 갱신하기
·
Android
안드로이드 개발에서 멀티플랫폼을 사용하지 않는 이상, 대부분의 네트워크 통신은 Retrofit을 기반으로 합니다. 저도 예외는 아닌데요ㅎㅎ 잘 아시다시피 Retrofit은 내부적으로 OkHttp 위에서 동작하고, 토큰 기반 인증 로직을 구현하려면 결국 OkHttp의 특성을 직접 다루게 됩니다.특히 리프레시 토큰을 이용한 토큰 재발급 과정은 단순히 “새 토큰 받아오기”가 아니라 여러 요청이 동시에 들어오는 상황에서의 동시성 문제까지 함께 고민해야 해서 생각보다 까다로운데요... 동시성은 어느 언어든 개발자를 괴롭히네요... 😅이 글은 제가 OkHttp + Retrofit + Coroutines 조합을 사용하면서, Authenticator 안에 runBlocking을 섞어 쓰던 구조를 어떻게 리팩토링했는지..