낙관적 업데이트

Woody·2025년 8월 8일
0

매일메일

목록 보기
4/13

오늘의 질문

낙관적 업데이트에 관하여 설명해주세요

내 답변

최근 업데이트가 되기도 한 낙관적업데이트 방식은 가장 많이 예시로 드는것이 좋아요 시나리오다.

좋아요를 유저가 누르고, 해당 값에 대해 서버에서 판정 후 변경되는걸 기다리기에는 사용자가 보기에 꽤 오랜 시간이 걸리는 느낌이고 실제로도 바로 움직이지 않는 느낌이 든다. 이 위화감을 줄이기 위해서 클라이언트단에서 미리 true 로 업데이트를 하고 서버에서 true 가 오면 유지 그게 아니면 다시 false 로 오는 방식이다

내가 경험한 서비스에서는 좋아요 버튼보다는 시스템의 기능 on off 가 더 자주 있었는데 해당 커멘드 또한 실제 기기까지 도달 후 완료 사인을 받아야만 하기 때문에 즉시 동작하지는 못한다.

이를 해결하기 위해서 먼저 off->on 으로 가는 동작을 진행시켜주고 api 의 값이 오면 그때 한번 더 확인하여 정상 동작하였는지를 고려하는 낙관적 업데이트를 적용하였다.

실제답변

낙관적 업데이트는 성공적인 상태 업데이트가 이뤄질 거라는 가정 하에 서버 응답 이전에 UI 를 미리 업데이트 하는 방법이다. 사용자 요청을 서버가 성공적으로 처리할 거라고 미리 예상하고 UI 를 즉각적으로 변경하는 방식으로 사용자에게 빠른 반응을 보여주는것.

대표적인 예시로 좋아요 기능을 들 수 있다. 사용자가 좋아요 버튼을 클릭하면 서버 응답을 기다리지 않고, 화면에 바로 좋아요 클릭에 대한 상태를 보여주는것이다. 서버에서 응답이 성공적으로 돌아오면 그대로 두고, 실패시 UI 에서 좋아요를 다시 해제하거나 오류 메세지를 보여주는 방식이다.

장점은 서버 응답 속도와 관계 없이 즉각적인 피드백을 제공해서 사용자들이 시스템을 빠르게 쓸 수 있다는 점이다. 특히 네트워크 상태가 좋지 않거나 응답 시간이 길어도 사용자 경험에 영향을 덜 미치게 된다.

다만, 서버에서 오류가 발생하면 잠시동안 화면에 잘못된 정보가 표시 될 수 있다. 이 경우를 대비한 오류 핸들링(롤백) 로직을 같이 설계해야 하는 주의점이 있다.

또한 항상 적용하는것이 좋은건 아니다. 요청이 성공할 가능성이 높고, 사용자 경험을 즉시 개선하는 데 큰 장점이 있을 때 사용하는게 적합하다.

결제나 거래 내역과 같이 중요 데이터를 다루는 경우에는 사용자 경험을 저해할 수 있다. 민감도 높은 정보가 순간적으로 잘못 표시 되면 사용자 경험이 크게 저해될 수 있기 때문이다.

네트워크 환경이 불안정한 경우에도 실패율이 높아지기 때문에 잦은 롤백이 발생할 수 있다. 이 경우에도 서버 응답을 기다리는 것이 더 나은 판단일 수 있다.

배운점

유저를 위한 기능에 대해서, 과연 이 기술이 적용되었을때 더 나은 경험이 되는지를 다각도로 판단해야한다. 좋은 기술 새로운 기술이라 넣는것이 아닌 네트워크 상태 혹은 해당 인프라의 상태에 따라서 잘 고민해서 도입해야지만 의미있고 좋은 기술이 될 수 있을 것 같다.

profile
프론트엔드 개발자로 살아가기

0개의 댓글