성능이 그렇게 중요한가? 요즘 드는 생각이다. 도발적인 질문일수도 있겠다.
TL,DR;
사이트의 성능을 측정할 수 있는 툴들이 있다. 대표적으로 lighthouse이란 구글 크롬에서 제공하는 툴인데.
이 툴은 성능 뿐만 아니라 SEO, 접근성, PWA등에 있어서 여러가지 지표들을 측정해준다.
이걸 100점 맞는 것을 목표로 하는 사람들이 꽤 많고 물론 개발자라면 높은 점수를 목표로 하는 것이 중요하다.
하지만 문제는 맹신하는 것은 좋지 않다는 것이다. 성능이 최우선이야! 이런 태도 말이다.
나는 성능보단 1. 안전성 (보안) 2. 유저 편의성 3. 성능 이렇게 순위가내려간다. 물론 이게 각각 완전히 다른 항목은 아니다. 성능과 유저편의성은 어느정도 공통분모를 가지고 있을수도 있을 것 같다.
성능은 가로축을 성능. 세로축을 유저가 느끼는 만족감이라고 봤을때 성능이 일정지점 이하에서는 유저의 효용이 많이 감소하지만, 그 지점을 넘어가게 되면 만족감은 거의 높아지지 않는다. (내 개인적인 경험에 따른 뇌피셜. 반박금지)
3초룰. 즉 어떤 사이트를 열었을때 3초 안에 화면이 나타나지 않으면 (렌더링) 유저의 이탈률이 급격히 높아지는 그 구간을 일정지점이라고 생각할 수 있겠다.
프론트엔드 개발자들은 성능을 높이기 위해 lazy-loading, 메모이제이션 등을 사용하고 React에서는 memo, callback등을 사용할 수 있다.
하지만 불필요한 리렌더링을 무조건 제거해야한다. 매우 좋지 않은 방법이다! 이렇게 말하는 것은 나는 공감하지 못한다. 병적으로 집착하는것은 옳지 못하다.
우리가 어떤 프로젝트에 투입되었을때 이를 할 수 있는 시간은 한정되어 있고, 여러 개발 과제들이 산적해 있다. 개발도 잘하고, 보안도 잡고 유저 편의성도 잡고 하면 정말 좋겠지만 어느 하나 완벽하게 다 할 수는 없을 것이다. 즉 선택을 해야한다.
그렇다면 나는
- 사이트를 이용하는 유저들의 보안성을 강화하고,
- 유저 편의성을 증대하고. (UI)
- 알아보기 쉽도록 코드를 짜는 (컴포넌트 세분화, 유지보수 편의) 그 다음에 성능을 대할 것이다.
기술자들이 간과하는 것들이 있는데 우리가 얼마나 고도의 기술을 사용했는지 어떻게 초기 렌더링을 0.05초를 더 빠르게 했는지, 초기 렌더링 파일을 얼마나 적게 사용했는지 등등은 그 콘텐츠를 이용하는 유저들은 전~혀 관심이 없다.
보통 유저들은 자신의 목적 달성을 위해 사이트에 접근한다. 목적은 여러가지가 있을 것이다. 대부분은 정보를 얻거나 상품을 사는 등 특별한 목적이 있을 것이다.
우리는 이 유저들이 원하는 목적을 달성할 수 있도록 만드는게 최종 비즈니스 문제 해결이다.
즉. 이때 너무 과도한 데이터를 다운받게 한다거나, 속도가 너무 느려 페이지를 볼 수 없다던가의 문제는 없어야 하는 것이다. 하지만 그 이외의 시간은 보기 좋은 코드나 리팩토링을 하는 편이 나는 좋다고 생각한다.
그러면 유지보수나 코드 리팩토링을 할때 성능이 느려지는 것을 걱정할 필요가 없는가?
리팩토링의 저자 마틴 파울러는 이런 이슈에 대해서 이렇게 말을 한다. 리팩토링을 적용하면 소프트웨어가 느려질 수도 있는 것은 사실이다. 하지만 리팩토링을 하면 후에 기능을 추가하거나 튜닝하기 쉬워진다. 튜닝이 쉬워지면 그 만큼 후에 성능을 개선시킬 수 있는 작업이 더 빨라진다.
이렇게 내 생각을 주저리주저리 정리해봤다