전체 글 (62) 썸네일형 리스트형 [KMP] KMP용 네이버 지도 Compose 라이브러리 제작 및 트러블슈팅 Kotlin Multiplatform(KMP) 환경에서 플랫폼별 네이티브 SDK를 공통 UI 프레임워크인 Compose Multiplatform으로 래핑하는 과정은 단순히 인터페이스를 맞추는 것 이상의 기술적 고민을 필요로 합니다. 특히 한국 시장에서 필수적인 네이버 지도 SDK를 활용하여 Android와 iOS에서 동일한 선언적 개발 경험을 제공하기 위해 라이브러리를 구축하며 겪은 도전 과제와 트러블슈팅 사례를 정리합니다.1. 개발 배경 및 첫 오픈소스 라이브러리 도전기존의 네이버 지도 SDK는 각 플랫폼의 네이티브 뷰 시스템에 강하게 결합되어 있습니다. Android는 View, iOS는 UIKit 기반의 명령형 API를 사용하므로, KMP 프로젝트의 commonMain에서 이를 직접 제어하기에는 구.. [Android] 일회성 이벤트 처리를 위한 SharedFlow 전략" 1. 시작하며: 상태(State)와 이벤트(Event)는 다르다안드로이드 개발을 하다 보면 데이터를 UI로 전달하는 수많은 상황을 마주합니다. 보통 StateFlow를 사용하여 '현재 상태'를 유지하지만, 때로는 "특정 시점에 단 한 번 발생하는 이벤트"를 처리해야 할 때가 있습니다.예를 들어, 토스트 메시지 출력, 화면 이동, 혹은 특정 데이터 수신 알림 등이 그렇습니다. 이러한 일회성 이벤트를 가장 효율적으로 다루기 위해 제가 선택한 SharedFlow 전략을 공유합니다.2. MutableSharedFlow의 전략적 설계프로젝트에서 사용한 이벤트 전달 파이프라인의 핵심 코드입니다. private val _eventFlow = MutableSharedFlow( replay = 1, .. 그림일기장: 하루를 그려서 기록한 5개월의 실험기 프롤로그 그림일기장 - Google Play 앱하루를 그림과 함께 기록해 보세요! 나만의 감성을 담은 그림일기장play.google.com 회사 일에만 집중해 오던 나에게 Kotlin Multiplatform(KMP) 은 완전히 새로운 세상이었다. Android와 iOS를 하나의 Kotlin 언어로 동시에 개발할 수 있고, 필요하다면 각 플랫폼에 특화된 코드도 자유롭게 섞어 쓸 수 있다는 점이 큰 매력으로 다가왔다. “이건 꼭 써봐야 해!”라는 설렘으로 사이드 프로젝트를 시작했다.프로젝트 주제로 그림일기장을 고른 이유도 분명했다. 배포까지의 전 과정을 직접 겪어 보고 싶었고, 혼자서 진행해도 부담스럽지 않은 규모를 원했다. 실제 앱에 KMP를 적용하다 보면 예상치 못한 난관이 분명 나타날 텐데, 적당히 .. 지수 백오프(4): 『코틀린 코루틴』 책의 retryBackoff 활용법 소개 앞선 글들에서는 지수 백오프(Exponential Backoff)의 개념과 이를 Jetpack Compose 앱에서 어떻게 활용할 수 있는지에 대해 살펴보았습니다.이번 4편에서는 《코틀린 코루틴: 마르친 모스카와》 책의 저자가 소개한 retryBackoff 구현을 살펴보고, 이 함수가 어떻게 구성되었으며, 저자가 왜 이렇게 설계했는지 그 의도를 분석해보려 합니다.또한, 이 구현이 실제 프로젝트에서 어떻게 응용될 수 있는지, 즉 네트워크 실패 복구, 서버 부하 분산, UX 최적화 등 다양한 측면에서 어떻게 활용될 수 있는지도 함께 정리해보겠습니다.Flow 기반 확장 함수 형태의 retryBackoff 구현『코틀린 코루틴』 책에서는 순차 재시도를 위한 버전을 소개했지만, 실무에서는 Flow 스트림에 적용할 .. 지수 백오프(3): Compose 앱에서 지수 백오프 적용하기 앞선 (1)편에서는 지수 백오프의 개념을, (2)편에서는 Kotlin Flow 환경에서의 재사용 가능한 확장 함수 구현을 다뤘습니다. 이번 (3)편에서는 이 로직을 실제 Jetpack Compose 앱에 어떻게 적용할 수 있는지를 보여드릴게요. 지수 백오프(2): Kotlin Flow에 지수 백오프 입히기《코틀린 코루틴: 마르친 모스카와》 책을 읽으면서 '지수 백오프(Exponential Backoff)'라는 알고리즘을 처음 알게 되었고, 단순하지만 매우 실용적인 실패 대응 전략이라는 점에서 깊은 인상을 받았hiwhwnsgh.tistory.com목표네트워크 요청 실패 시 자동 재시도 처리재시도 시 UI에 로딩 상태 표시 및 오류 메시지 처리지수 백오프 + 지터(jitter) 적용예제 시나리오서버 API를.. 지수 백오프(2): Kotlin Flow에 지수 백오프 입히기 《코틀린 코루틴: 마르친 모스카와》 책을 읽으면서 '지수 백오프(Exponential Backoff)'라는 알고리즘을 처음 알게 되었고, 단순하지만 매우 실용적인 실패 대응 전략이라는 점에서 깊은 인상을 받았습니다. 특히 네트워크나 API 요청이 많은 현대 애플리케이션 환경에서는 필수적으로 알아야 할 개념이라 생각되어, 지난 글에서는 개념을 정리했고, 이번 글에서는 Kotlin Flow 환경에 실제로 적용해보는 방법을 정리했습니다. 지수 백오프(1): Exponential Backoff 개념 이해하기코틀린 코루틴 : 마르친모스카와의 책을 읽게 되면서 지수 백오프라는 알고리즘에 대해서 알게 되었고 유용하면서도 실용적인 알고리즘이라는 걸 알게 되고 해당 알고리즘에 대해서 공부하고hiwhwnsgh.tistor.. 지수 백오프(1): Exponential Backoff 개념 이해하기 계기《코틀린 코루틴: 마르친 모스카와》 책을 읽으면서 지수 백오프라는 알고리즘에 대해 처음 알게 되었고, 유용하면서도 실용적인 재시도 전략이라는 점에서 인상 깊었습니다. 해당 알고리즘을 더 잘 이해하고자 글로 정리하게 되었습니다. 일단 개념부터 파악해보았습니다. 🔢 지수 백오프란?지수 백오프(exponential back-off)는 실패한 작업을 다시 시도할 때마다 대기(Delay) 시간을 기하급수적으로 늘려 시스템 과부하·충돌(예: 네트워크 재전송 폭주, DB Lock경쟁)을 완화하는 재시도(Retry) 전략입니다.시도 횟수지수 백오프 기본 지연 공식(예시)실제 지연 예시 (초)1100 ms × 2^(1-1) = 2^00.12100 ms × 2^(2-1) = 2^10.23100 ms × 2^(2-1).. SQS를 이용하여 S3에 업로드 하기 서론최근 회사에서 AWS 사용을 시작하면서, 제가 담당하게 된 여러 서비스를 사용하고 배포하는 과정에서 흥미로운 서비스 조합이 떠올랐습니다. 특히, SQS와 S3를 활용한 작업 프로세스 자동화에 대해 고민하게 되었고, 이를 실제로 구성해보면서 오랜만에 기록으로 남겨보고자 합니다. 아키텍처 구성 이번 프로젝트는 AWS의 SQS, Lambda, S3를 조합하여 파일을 업로드하는 프로세스를 자동화하는 것입니다. 아키텍처는 다음과 같이 구성됩니다:Client: 클라이언트가 파일 업로드 요청을 보냅니다. 요청에는 업로드할 파일에 대한 메타데이터가 포함됩니다.SQS (Simple Queue Service): 클라이언트의 요청은 SQS 큐에 메시지로 전달됩니다. 이 메시지는 파일 업로드 프로세스를 트리거하기 위한 역.. 이전 1 2 3 4 ··· 8 다음