[회고록] Exception 처리는 굉장히 중요하다.

ZEDY·2024년 7월 8일
0

회고

목록 보기
3/9

시범적용을 하면서 느낀 점을 정리합니다.

2024. 06. 29 토

안전길찾기 네비게이션 Mobby 시범적용을 진행했습니다.
많은 시사점이 있지만, 이중에서도 Exception 처리에 대하여 이야기 해보고자 합니다.

사용자가 서비스를 이용하기까지의 플로우를 도식화한 유저 플로우가 있습니다.
그리고 그 서비스를 사용자 경험에 집중한 것을 UX라고 합니다.

유저 플로우 (User Flow)

유저 플로우는 사용자가 특정 목표를 달성하기 위해 웹사이트, 애플리케이션 또는 다른 디지털 제품에서 거치는 경로를 나타냅니다. 유저 플로우는 사용자가 어떤 화면을 먼저 보고, 어떤 동작을 취하며, 그 다음에 어떤 화면으로 이동하는지를 순차적으로 시각화합니다. 이는 종종 다이어그램 또는 와이어프레임 형식으로 표현됩니다.

예를 들어, 제가 기획하고 개발한 Mobby의 유저 플로우는 다음과 같습니다.

  1. 어플리케이션 실행
  2. 원하는 장소 검색
  3. 경로 확인
  4. 이동하며 경로 확인
  5. 장소 도착 및 길찾기 완료

사용자 경험 (UX : User Experience)

사용자 경험은 사용자가 제품이나 서비스를 사용할 때 느끼는 전반적인 만족도와 감정, 그리고 사용의 용이성을 의미합니다. UX는 다양한 요소로 구성되며, 사용성(usability), 접근성(accessibility), 디자인(design), 성능(performance) 등이 포함됩니다. 좋은 사용자 경험은 사용자가 제품을 쉽게 이해하고 사용할 수 있도록 하며, 만족감을 느끼게 합니다.

저는 이 프로젝트의 리더로써, 현장에 사용자가 직접 서비스를 사용하는 것을 보았습니다.

기존에 설계했던 플로우와 UX에 맞게 개발을 했지만, 현장에서 실제 사용자가 사용하는 것을 보고 제가 생각하지도 못했던 예외가 발생하는 것을 보았습니다.

예외 처리가 필요했던 부분

장소 검색 기능을 구현할 때 예상보다 많은 예외 상황이 발생했습니다. 기존에 설계한 API는 사용자가 입력한 값을 기반으로 장소를 검색하도록 되어 있었습니다. 그러나 실제 사용자가 맞춤법을 약간 틀리게 입력하거나, 일부 글자만 작성하는 등 다양한 형태의 입력을 제공하면서, 이러한 상황에서 API가 오류를 발생시키는 문제가 있었습니다. 이는 인간이 인식할 수 있는 '이름'에 대해 검색 API가 제대로 작동하지 않는 경우를 의미합니다.

문제점 분석

우선 저희의 타겟 소비자 층은 휠체어를 탑승한 분(주로 장애를 가지신)이라는 특성을 고려해야 합니다.
개발을 위해 사용자 분석과 심층인터뷰를 했지만, 실제 시범적용 당시 이분들의 새로운 특징을 발견할 수 있었습니다.

  1. 손 거동이 자유롭지 못한 분이 많다.
  2. 맞춤법을 잘 모르시는 분이 많다.

실제 사용자의 행동은 예측하기 어려운 부분이 많습니다. 특히 검색 기능에서는 사용자의 입력이 항상 정확할 것이라고 가정할 수 없습니다. 사용자 경험(UX)을 저해하는 주요 문제점은 다음과 같습니다.

  1. 맞춤법 오류 : 사용자가 장소 이름을 입력할 때, 맞춤법을 틀리게 입력하는 경우가 많았습니다. 예를 들어, '남산 타워' 대신 '남산 타우'라고 입력하면 검색 결과가 나오지 않는 문제가 발생했습니다.
  2. 불완전한 입력 : 사용자가 장소 이름의 일부만 입력하거나 줄임말을 사용하는 경우가 있었습니다. 예를 들어, '서울 타워' 대신 '서 타'라고 입력하면 검색이 실패했습니다.
  3. 검색 결과의 민감성 : 검색 API가 입력 값에 대해 지나치게 민감하게 반응하여, 작은 차이에도 검색 결과를 제공하지 못하는 경우가 있었습니다.

놓친 개발 가능성

백엔드 개발자로서, 저는 이러한 문제들을 사전에 예측하고 대응할 수 있는 여러 가지 개발 가능성을 놓쳤습니다. 이를 통해 향후 개선할 수 있는 부분을 다음과 같이 정리할 수 있습니다:

  1. 입력 값 정규화 및 전처리

    • 공백 및 특수 문자 제거 : 입력 값에서 불필요한 공백이나 특수 문자를 제거하여 보다 일관된 검색을 가능하게 했어야 합니다.
    • 유사 단어 처리 : Levenshtein 거리와 같은 알고리즘을 활용하여 철자가 비슷한 단어를 인식하도록 하는 기능을 구현할 수 있었습니다.
  2. 검색 알고리즘 개선

    • 퍼지 검색(Fuzzy Search) : 정확히 일치하는 단어뿐만 아니라 유사한 단어도 검색 결과에 포함시키는 퍼지 검색 알고리즘을 도입했어야 합니다.
    • N-그램 검색 : 단어의 일부만 입력된 경우에도 결과를 찾을 수 있도록 N-그램 기반의 검색을 도입할 수 있었습니다.
  3. 자동 완성 및 추천 기능

    • 사용자가 입력을 시작할 때, 실시간으로 추천 장소 목록을 제공하여 정확한 입력을 유도하는 기능을 구현했어야 합니다. 이를 통해 맞춤법 오류나 불완전한 입력 문제를 줄일 수 있었습니다.
  4. 머신러닝 및 자연어 처리(NLP)

    • 머신러닝 모델을 활용하여 사용자의 입력 의도를 파악하고, 이를 기반으로 검색 결과를 제공하는 기능을 추가할 수 있었습니다. 자연어 처리 기술을 통해 문맥을 이해하고 보다 정확한 결과를 제공할 수 있었습니다.
  5. 캐싱 및 성능 최적화

    • 자주 검색되는 장소에 대한 캐시를 구현하여 성능을 향상시키고, 검색 속도를 최적화할 수 있었습니다. 이를 통해 사용자 경험을 더욱 개선할 수 있었습니다.

결론

장소 검색 기능의 예외 상황을 처리하는 것은 사용자 경험을 향상시키기 위해 필수적입니다. 백엔드 개발자로서 이러한 예외 상황을 사전에 인지하고, 다양한 예외 처리를 고려한 설계를 통해 시스템을 더욱 견고하게 만들 필요가 있습니다. 앞으로는 놓친 개발 가능성을 보완하여 사용자에게 더 나은 서비스를 제공할 수 있도록 노력할 것입니다.

profile
Spring Boot 백엔드 주니어 개발자

0개의 댓글