[서비스 운영 회고 1탄] 에러 로그의 중요성

D uuu·2024년 9월 9일
0

Next.js14 프로젝트

목록 보기
10/17
post-thumbnail

처음 사용자와 만나다

개발을 처음 시작했을 때, 가장 인상 깊었던 순간은 hello world 를 화면에 출력하고, 로컬 환경에서 localhost:3000 으로 웹사이트를 띄웠던 경험이었다. 내가 작성한 코드가 눈앞에서 구현되는 것만으로도 큰 성취감을 느꼈고, 그 과정 자체가 너무 신기하게 느껴졌다.

하지만 로컬 환경에서의 결과물은 나만 볼 수 있는 사이트일 뿐, 개발의 진정한 목적을 달성할 수는 없었다. 개발의 목적은 세상의 문제를 해결하고, 그것을 사용해줄 유저들이 있어야 비로소 완성된다고 생각한다.

그렇게 처음으로 '배포'라는 과정을 경험하게 되었다. 당시 React를 사용해 간단한 프로젝트를 진행하며 공부하자는 목표로 시작한 프로젝트였기 때문에, 완성도도 낮고 도메인적으로도 일반 사용자들이 필요로 하는 사이트는 아니었기에 "배포를 해봤다"는 경험으로만 남아있다.

하지만 두 번째 프로젝트는 달랐는데, 유저 친화적인 맛집 기반 커뮤니티 사이트를 개발했고, 이를 주변 지인들에게 사용해 달라고 부탁했을 때, 예상보다 많은 친구들이 적극적으로 피드백을 주었고, 덕분에 프로젝트는 더 발전할 수 있었다. 처음 hello world 를 출력했을 때와는 또 다른 차원의 즐거움이 있었는데 실시간으로 사용자가 내 사이트에 접속하고, 그들의 행동이 데이터로 기록되는 과정을 경험하는 것은 매우 흥미롭고 보람찼다😆

하지만 즐거움도 잠시, 다양한 이슈들을 마주하게 되었는데...

먹기록 : https://omuk-beta.vercel.app/

크로스 브라우징 이슈

한 친구로부터 사이트에 접속이 되지 않는다는 연락을 받았다. 새로고침을 해도, 기다려도 로딩만 돌고 사이트가 열리지 않는다고 했다. 너무 당황한 나머지 바로 문제를 해결하려고 했지만, 당시 에러 로깅 작업을 하지 않았기 때문에 문제를 파악할 수 있는 방법이 전혀 없었다...

어쩔 수 없이 전화와 카톡 등을 함께 사용하면서 어렵게 어렵게 문제의 원인을 파악해나갔다. 친구는 개발자가 아닌 일반 사용자로 개발자 도구나 디버깅 과정을 모르는 것이 당연했기에 캡쳐해서 사진을 보내주는 등 오랜 시간 정말 도움을 많이 주었다😭

결국 문제의 원인을 파악할 수 있었는데, 친구는 Safari 브라우저(버전 13.1.2)에서 접속하고 있었다. 나 역시 Safari로 사이트에 접속해 봤지만, 잘 작동했기에 버전 문제인가? 하는 의심이 들었고 그래서 브라우저 테스트 툴을 사용해 다양한 Safari 버전을 테스트해보니 Safari 13 버전 이하에서는 사이트가 제대로 작동하지 않는다는 걸 알게됐다.

크로스 브라우징 관련 이슈와 구체적인 해결 방법은 별도의 블로그 글로 다룰 예정으로 여기서는 다루지 않겠지만, 이번 경험을 통해 많은 것을 배우게 되었다.

에러 로깅의 필요성을 절감하다

위와 같은 상황에서 친구였기에 하나하나 물어가며 문제를 파악할 수 있었지만, 일반 사용자였다면..?
사용자와 직접 전화하며 확인할 수도 없고, 사용자가 불편함을 느끼고도 문제를 알리지 않은 채 사이트를 떠났다면, 그 문제를 발견하기까지 굉장히 오랜 시간이 걸렸을 것이다. 막상 사용자가 문제를 제보했다고 해도 문제를 재현하고 원인을 찾는데 많은 시간이 필요했을거란 생각이 들었다. 이러한 경험을 통해 에러 로깅의 중요성을 절실히 깨달았다..!

배포된 사이트는 내 손을 떠난 상태이며, 사용자 환경에서 발생하는 다양한 에러를 직접 확인하기는 어렵다. 이러한 상황에서 에러 로깅 시스템이 제대로 구축되어 있었다면, 어떤 사용자가 어떤 환경에서 문제를 겪었는지 그리고 어떤 에러가 발생했는지를 바로 확인할 수 있을테고 신속한 대응으로 이어질 수 있었을 것이다. 이번 문제는 그런 시스템이 구현이 되어 있지 않아 전혀 파악이 되지 않았다는 점에서 비롯되었다.

개선 방향

자체적으로 테스트할 때와는 또 다른 여러 상황에서 여러 에러가 발생할 수 있음을 알게 되었고 그럴 때마다 의존할 수 있는 것은 내가 얼마나 에러 핸들링을 잘 해놓았느냐에 있다. 에러 상황에서 기록을 남기고, 유저에게 최대한 에러임을 인지하지 못하거나 부정적인 인식이 들지 않도록 하는 것이 중요하다.

이번에 그런 부분에서 놓친 점이 있었다는 걸 알게 되었고, 에러 로깅 시스템의 필요성과 중요성을 절감하게 되었다.

추가 (+이후 프로젝트에 에러 로깅 시스템 도입)

Nodemailer 를 이용한 에러 로깅 시스템 도입기

profile
배우고 느낀 걸 기록하는 공간

0개의 댓글

관련 채용 정보