이거 막 이렇게 실시간으로 바뀌게 개발못해요?

주니어 기획자의 이해를 돕기위한 비유설명법

by 도그냥

*본 시리즈는 우리 주니어들에게 제가 설명하는 방식들을 정리한 내용으로, 기획자가 딱 일할 수 있을 정도로만 문과적 비유를 들어 설명합니다.



집에서 스마트폰을 안갖고 오면,
다시 가지러 가잖아요?
근데 그걸 하려면 안갖고 왔다는 사실을 깨닫고 다시 집으로 가는 액션을 하잖아요.
마찬가지에요.
페이지도 데이터를 가져오는 시점이 있어야
다시 새로운 데이터를 가져올 수 있어요.
그걸 '트리거'라고 표현해요,



프론트 페이지를 볼 때, 종종 이야기되는 방식이 있다. '요렇게 누르고 저렇게 누르면 콘텐츠가 팍 바뀌게 해 달라'는 그런 방식이다. 그 다음에 붙는 말도 꼭 있다. 넘나 고객입장에서 편하고 당연하지 않냐고 말이다.

그래, 진짜 필요한지 조사해오진 않았어도 이용자의 상황에서는 말은 된다.

그런데 이게 갑자기 요렇게 개발되긴 어렵다. 처음부터 데이터를 갱신하는 시점에 대한 설계가 있어야한다. 특히 복잡도가 높은 화면일수록 더더욱 그렇다.


이런 적이 있다.

상품의 재고를 나타내는 부분이 있다. 현업 욕심상 상품의 현재 시점의 재고를 계속 생생하게 알려주면 좋겠다고 생각해서 실시간 재고가 계속 반영되는 UI를 넣어달라고 요청이 들어왔다.

아주 너그러운 기획자인 나를 만났기에 미간을 찌푸리고 물어본다.


"재고 갱신 주기는 어떻게 되면 좋겠는데요?"

"실제로 재고가 빠지면 숫자를 바꿔 주세요^^"


대답을 듣고 인류애가 사라진다. 속으로 한번 심호흡을 하고 어디부터 설명해야하나 고민한다. 그리고 트리거에 대한 설명을 한다. 언제 다시 체크하라는 명령을 미리 정해놓지 않으면 화면이 알아서 변경재고를 인식하지 못한다고 말해준다.

너도 지금 집에서 나올때 계란 10개 있었는데 누가 집에서 계란 먹고 안알려주면 모르지 않냐고, 근데 브라우저는 가만히 전화를 받을 수도 없어서 집에 전화해서 계란 몇 개 남았냐고 물어봐야된다고 설명한다.

약간 깨달음을 얻은 듯한 요청자가 '그럼 10초?'이런다. 일단 상품상세에서 고객이 몇초나 머무는지 이런 부분까지 고려하지 않더라도 나는 우리 개발자가 뭐라고 할 지 완전 짐작이 가능하다.


"안돼요!!!! 아니 그 화면이 트래픽이 젤 높은데 10초마다 재고 갱신을 하라고요??이거 아예 한판으로 되어 있어서 재고만도 못 바꿔요~! 부하도 장난 아닐거고,, 재고 수량에 따라서 화면 예외처리사항도 많은데 갱신했는데 품절이면요?"

"아, 저도 알아요. 제가 설명 잘해서 이 요건은 자를 거긴 한데, 현재 재고 부분만 갱신 못하는 구조에요? 수동 재고 갱신 버튼 넣는 것은 어떨까요? "


10초마다 화면을 API로 데이터 쿼리를 계속 바꾸면서 자동 갱신은 사실상 미친 소리에 가깝다.

10초마다 집에 냉장고 계란수를 물어보려고 전화하는 것도 미친 짓이지만, 동시에 누구는 햄의 재고 누구는 우유의 재고를 물어보려고 계속 집에 전화한다고 생각해보자. 그게 데이터 조회의 부하가 발생되는 이유다.

실시간도, 10초단위 준 실시간도 미친소리같으니까 고객이 필요시에 갱신하는 버튼을 넣는 수동 트리거를 제안해본다. 역시나 표정이 썩는다. 내가 생각해도 재고가 갑자기 0으로 왔을 때 예외처리를 감당하기 어렵다.

여튼 데이터를 갱신하기 위해서는 자동이든 수동이든 데이터 갱신에 대한 트리거가 필요하다.


"이거 웹페이지라서 전체 리로드 될 걸요!"


심지어 웹이면 에이젝스 방식으로 영역의 데이터만 갱신하는 구조로 설계되지 않았으면 페이지 전체를 리로드 해야할 수도 있단다. 흠.. 10초마다 껌뻑껌뻑 난리도 아닐것 같다.

데이터를 부분적으로 리로딩해오는 것은 모바일 환경에서 더 많이 기획되는데, 웹보다는 네이티브 앱에서 더 자연스럽다. 네이티브 앱에서는 영역이 모두 모듈화되서 계층적으로 쌓여 있는 구조라 모듈 단위로 데이터 변경 호출이 쉽다.

웹페이지가 어쨌든 하나의 긴 글을 그려놓은 거라면 앱은 레고블럭처럼 쪼개져있고 각각 데이터를 리로드 해올 수 있기 때문인데, 이건 앱에 대해서 개발자에게 착 붙어서 공부해보길 추천한다.


개발자의 예상되는 멘트들을 머리속에 떠올리며 현업에게 그건 무리니까 최대한 이 화면에서 벗어난 '실시간 재고 보기 팝업'이라도 만들어주면 어떠냐고 제안한다. 현업담당자는 그럼 그걸 누가 보겠냐며 또 툴툴댄다.

나는 이게 앱화면이면 어떻게든 해줄라고 하는데 여기가 웹으로 개발된 거라서 생각보다 고객경험이 훨씬 좋지 않을거고 화면 전체가 뻔쩍뻔쩍하면서 갱신되면서 고객이 로딩 되는거보다가 암걸릴 거라고 설명한다.

볼이 퉁퉁부은 현업이 돌아간다. 기획에서 안해줬다고 위에다 이르겠지.


- 라고, 스토리를 통해 데이터 변경에 대한 트리거에 대해서 설명해 보았다.


매거진의 이전글왜 같은 페이지를 동시에 수정하면 오류가 날까?