패스잇
모바일 개발 · 심화

Combine 프레임워크를 사용하여 실시간 데이터 스트림(예: 웹소켓)을 처리할 때, 백프레셔(Backpressure) 문제를 어떻게 해결할 것이며, 스트림 중간에 발생하는 다양한 종류의 에러를 효과적으로 처리하고 복구하는 전략에 대해 설명하시오.

힌트 · Subscriber의 demand 요청을 통해 백프레셔를 제어하고, catch, replaceError, retry 등의 연산자를 활용하여 에러를 복구하거나 적절히 처리합니다.

PublisherSubscriberBackpressureError HandlingRetry

모범답안

Combine 프레임워크에서 실시간 데이터 스트림을 처리할 때 백프레셔와 에러 처리는 중요한 부분입니다.

백프레셔는 Subscriber가 Publisher에게 demand를 요청하는 방식으로 해결합니다. 즉, Subscriber가 처리할 수 있는 만큼만 데이터를 요청하여 Publisher가 과도하게 데이터를 보내는 것을 방지합니다. receive(subscription:)에서 request(.max(n))을 통해 조절할 수 있습니다.

에러 처리는 catch, replaceError, retry와 같은 연산자를 활용합니다. catch는 에러를 잡아서 대체 Publisher를 제공하고, replaceError는 에러를 특정 값으로 대체합니다. retry는 에러 발생 시 스트림을 재시도하여 일시적인 문제 해결에 유용합니다. 예를 들어, 웹소켓 연결이 끊어졌을 때 retry를 사용하여 재연결을 시도할 수 있습니다. 또한, 에러 로깅 및 사용자에게 적절한 피드백을 제공하는 것도 중요합니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 iOS / Swift 면접 질문

← iOS / Swift 면접 질문 전체 보기