작성
·
235
0
안녕하세요~ 유익한 강의 정말 감사드립니다.
Backpressure 기법에 대해 강의를 듣던 중 궁금한 게 생겼습니다.
Error, latest, drop, ignore 등의 backpressure 기법은 buffer에 데이터가 다 찼을 때 데이터를 drop 하는 것 같은데 drop되는 data들은 유실 된다고 볼 수 있을까요?
그게 아니라면 re-try하는 과정이 backpressure 이후에 진행되는 건지 궁금합니다.
답변 2
0
안녕하세요? 제가 바빠서 답변이 좀 늦었는데, AI 인턴이 먼저 답을 달아주었네요. ^^
결론부터 말씀 드리자면 drop 되는 데이터는 폐기됩니다.
Backpressure의 여러 전략 중 하나라고 생각해 주시면 되구요.
데이터를 drop 시키느냐 그렇지 않느냐는 요구 사항에 따라서 달라 질수 있다고 생각합니다.
일반적으로 데이터 신뢰성이 중요하기 때문에 데이터가 유실되지 않는 쪽이 바람직하겠지만 실시간 데이터 스트리밍 등의 예에서 빠른 응답을 위해 일부 데이터 유실을 허용할 수도 있으며, 시스템의 가용 리소스를 초과하는 데이터의 흐름이 발생했을 때, 과부하가 걸려서 시스템에 문제가 발생하는 것보다는 일부 데이터를 폐기하지만 시스템의 안정성을 유지하는데 도움이 될거라 생각합니다.
답변이 되셨으면 좋겠네요.
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다.
이진님, 질문하신 Backpressure 전략과 관련된 내용이 포함되어 있는 자료를 찾았습니다.
Backpressure는 특정 조건에서 상류에서 발생하는 데이터의 양이 하류에서 처리할 수 있는 데이터의 양보다 많을 때 발생하는 문제를 처리하기 위한 기법입니다. Reactive 프로그래밍에서는 이 Backpressure 문제를 효과적으로 처리하기 위해 여러 전략을 제공합니다. 대표적으로 Error, Drop, Latest, Ignore (또는 Missing) 전략이 있습니다. 이 중 Drop과 Latest 전략은 상류에서 넘어온 데이터가 하류에서 처리할 수 있는 버퍼의 크기를 초과할 때 일부 데이터를 버리는 방식입니다. Drop전략은 새로운 데이터가 도착했을 때 버퍼의 크기를 초과하면 해당 데이터를 바로 버리지만, Latest 전략은 최신 데이터만을 유지하고 이전 데이터를 버립니다.
질문하신 “drop된 데이터는 유실되는가”와 관련해서, 기본적으로 Drop과 Latest 전략에서 버려진 데이터는 유실됩니다. 대부분의 경우 이러한 데이터 손실을 허용할 수 있는 상황에서 사용됩니다. 하지만 만약 데이터 손실을 원치 않는다면, 데이터 손실 없이 Backpressure 문제를 처리할 수 있는 다른 전략을 사용해야 합니다. 예를 들어, Buffer 전략은 모든 데이터를 버퍼에 저장하여 데이터 손실 없이 처리할 수 있습니다.
Retry 과정에 대해서는, 일반적으로 Backpressure 처리 전략들이 단순히 데이터를 유실시키는 것 외에도, 처리가 끝난 후 특정 조건에서 자동적으로 재시도 하는 로직을 포함할 수 있지만, 이는 전략 설정이나 별도의 로직 구현에 따라 달라질 수 있습니다. 하지만 대부분의 Backpressure 처리 전략은 데이터 처리 능력과 유입되는 데이터 양의 균형을 맞추는 목적으로 설계되었기 때문에, 데이터 손실 방식을 선택한 경우 별도의 재시도(mechanism) 로직을 구현해야 할 수 있습니다.
다음 링크에서는 Drop 전략과 관련된 구체적인 설명 및 예시를 확인하실 수 있습니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.