불과 하루 전, 다라쓰에 커스텀 ui를 적용할 수 있는 기능이 추가가 되었다.
vs code를 4개를 키고해야하는 개발과 테스트를 완료했다.
그리고 배포를 하고 몇가지 이슈가 있긴 했지만, 기능 자체는 정확하게 동작했었다.
문제는 기존에 다라쓰를 사용하던 블로그에서 발생했다.
커스텀 UI 기능은 다라쓰 script에 data-* 속성을 넣어주면 그에 맞는 쿼리스트링을 넘겨서 댓글모듈을 렌더링하는 방식으로 구현되었었다.
근데, 기존 사용자들은 스크립트를 새로 넣지 않는 이상, 새로추가된 data-* 속성이 없을 것이고 undefined 값으로 들어갔을 것이다.
당시 코드에서는 이렇게 처리하고 있었다.
$darass.dataset.isShowSortOption === "false" ? false : true;
data-*의 값은 string이기 때문에 이렇게 해주었다.
그런데 data-*가 undefined이므로 undefined면 "false"가 아니므로 true가 되는 현상이 발생한 것이다.
아..
기존 사용자들에게 강제로 스크립트를 강제로 업데이트 시키고 싶었지만,
기존 사용자들도 기능 추가에 상관없이 사용할 수 있도록 설계를 했어야 했었다는 후회가 들었다.
그래서 다음과 같은 코드로 수정되었다.
아무것도 선언되어있지 않을때 (undefined일때) 디폴트 값을 true로 줄것과 false로 줄것을 구별하여 하드코딩 해주었다.
dataset값 === undefined ? true : false;
이제 제대로 동작은 하지만, 코드는 더럽다.
그렇다고 코드를 함부로 수정할 수가 없다.
기존 사용자들이 기능 추가전의 인터페이스로 정상적인 기능을 사용할 수 있어야 하기 때문이다.
이제 방법은 3가지이다.
1. 최신 스크립트를 사용하지 않는 사용자들에게 별도의 알림을 노출시킨다.
2. 해당 커스텀 UI 정보를 script의 data-*에 저장하지 않고, DB에 저장하도록 백엔드와 협업하여 api를 몇개 뚫는다.
3. 기존 유저들의 사용에 불편함을 끼치지 않는 선에서 코드의 질은 어느정도 양보하고 최대한 리팩터링한다.
1번은 오바고..
2번은 시간이 좀 걸릴것같다.
그래서 3번을 택했다.
우테코가 끝나고 계속 서비스를 할 예정인데, 그 때 시간이 남게되면 백엔드와 협업하여 2번을 수행해야겠다.
일단 3번으로 가고, 앞으로도 기존 사용자들을 고려한 기능 추가/변경을 해야겠다.
안그러면.. 아래와 같은 수많은 pr들이 쌓이게 될것이기 떄문이다.
좋은 교훈을 얻었다.
https://github.com/woowacourse-teams/2021-darass/pull/763
https://github.com/woowacourse-teams/2021-darass/pull/764
https://github.com/woowacourse-teams/2021-darass/pull/765
https://github.com/woowacourse-teams/2021-darass/pull/769
https://github.com/woowacourse-teams/2021-darass/pull/770
https://github.com/woowacourse-teams/2021-darass/pull/772
'개발 > 개발 리포트' 카테고리의 다른 글
2021/10/25~26 : 나만의 UI 라이브러리 만들기 (feat. Virtual DOM, Web Component) (0) | 2021.10.27 |
---|---|
2021/10/24 : JSX 파서 만들기 (아직 개발중) (0) | 2021.10.25 |
2021/10/22 : 모든 서비스는 결국 고객 중심이다. (0) | 2021.10.23 |
2021/10/21 : textarea의 link부분을 자동으로 하이퍼링크 처리하기, simple-react-query 라이브러리 배포 (1) | 2021.10.22 |
2021/10/20 : 모든 프로젝트에서 react-query 제거 (0) | 2021.10.21 |