회원가입 기능 (일반 / 구글)
회원가입 기능은 일반 회원가입과 구글 계정을 이용한 간편 회원가입을 지원합니다. 사용자는 회원 정보를 입력한 후 휴대폰 인증을 거쳐 회원가입을 완료할 수 있습니다.
•
휴대폰 인증 (SOLAPI): 회원 정보 입력 후, SOLAPI를 통해 휴대폰 인증을 거칩니다. 인증이 완료되면 회원가입이 완료됩니다.
•
구글 로그인 연동: 구글 로그인 시, 사용자가 처음 로그인하는 경우 회원가입 창으로 넘어가며, 이후 일반 회원가입 절차를 진행합니다.
로그인 기능 (일반 / 구글)
로그인 기능은 일반 로그인과 구글 로그인을 지원합니다. 사용자는 로그인 정보를 입력하고, 로그인을 클릭하여 메인 페이지로 이동할 수 있습니다.
•
일반 로그인: 사용자 정보 입력 후 로그인 버튼을 클릭하면 로그인 절차가 완료됩니다.
•
구글 로그인: 구글 로그인 버튼을 클릭하면, 구글 로그인 창으로 넘어가서 로그인이 완료된 후 메인 페이지로 이동합니다.
회원가입 및 로그인 기능 구현 과정에서의 트러블슈팅 사례
구글 로그인 시 기존 계정과 중복 문제
문제 : 구글 로그인을 통해 회원가입을 시도할 때, 기존에 같은 이메일로 가입된 계정이 이미 존재하는 경우, 가입을 진행할 수 없는 문제.
해결 :
•
이메일 중복 체크 로직 추가
◦
구글 로그인 시, 사용자의 이메일을 데이터베이스에서 검색하여, 이미 존재하는 경우 중복 계정이 생성되지 않도록 로직을 추가 했습니다.
•
기존 계정 연결
◦
만약 기존에 동일한 이메일로 가입된 계정이 있는 경우, 그계정과 구글 계정을 연동하여 기존계정으로 로그인할 수 있도록 개선했습니다.
추가 구현 사항 :
•
기존 계정을 구글 계정과 연동하기 전에, 해당 이메일로 추가 인증을 수행합니다 실제로 해당 이메일 계정의 소유자인지를 확인할 수 있습니다.
◦
구현 방법 :
▪
구글 로그인을 시도할 때, 사용자가 기존 계정과 동일한 이메일을 사용한 경우, 해당 이메일로 인증 코드를 전송합니다.
▪
사용자는 이메일로 받은 인증 코드를 입력하여 계정 연동을 승인합니다.
문제: 로그인 시 보안 문제
•
로그인 실패 횟수에 대한 제한이 현재 존재하지 않으며 동일한 기기에서 반복적으로 로그인 시도를 하여 보안에 위협이 될 수 있는 상황이 발생할 수 있을 것으로 예상됨.
◦
구현 방안 :
▪
동일 IP에서 일정 횟수 이상 로그인 시도가 실패하면, 해당 IP에서의 추가 로그인 시도를 일정 시간 동안 차단하는 기능을 추가 할수있습니다.
▪
일정횟수 이상 실패한 경우, 사용자의 이메일로 알림을 보내고, 추가적인 인증절차(CAPTCHA) 를 사용하여 신원을 확인할수있습니다.
문제 1: 검색 결과의 정확도와 성능 최적화
문제 설명
Elastic Search를 사용하여 검색을 수행할 때, 검색 결과가 예상보다 많은 결과를 반환하거나, 반대로 원하는 결과가 충분히 반영되지 않는 문제가 발생했습니다. 특히, fuzziness, minimum_should_match와 같은 파라미터들이 제대로 튜닝되지 않았을 때 이러한 문제가 두드러졌습니다.
해결 과정
1.
Minimum Should Match 조정:
•
검색 결과의 유연성을 높이기 위해 minimum_should_match 값을 조정했습니다. 이를 통해 조금 더 넓은 범위의 검색 결과를 얻을 수 있었습니다.
2.
Fuzziness 튜닝:
•
fuzziness 값을 2로 설정하여, 사용자가 오타를 입력하거나 철자가 약간 다른 경우에도 유연하게 검색 결과를 제공할 수 있도록 했습니다. 그러나 fuzziness를 너무 높게 설정하면 너무 많은 결과가 반환되는 문제가 발생할 수 있어, 적절한 값을 찾기 위해 반복적인 테스트를 진행했습니다.
3.
필드 가중치 조정:
•
검색의 우선순위를 개선하기 위해 title, teacher, description 필드에 가중치를 부여했습니다. 초기에는 title 필드에 높은 가중치(^3)를 주고, description 필드에는 상대적으로 낮은 가중치(^1)를 설정했습니다. 그러나 실제 검색 결과를 분석한 결과, description 필드가 검색에서 더 중요한 역할을 해야 한다는 것을 발견했고, 가중치를 ^2로 조정하여 더 정확한 검색 결과를 도출할 수 있었습니다.
문제 2: 검색어 오타 처리 및 유사어 검색
문제 설명
사용자가 검색어를 입력할 때 오타가 발생하거나 유사한 단어를 사용할 경우, 검색 결과가 제대로 나오지 않는 문제가 있었습니다. 예를 들어, "은퇴"를 "은타"로 잘못 입력했을 때 검색 결과가 전혀 반환되지 않는 상황이 발생했습니다.
해결 과정
1.
Fuzziness 설정:
•
오타가 포함된 검색어에 대해 유사한 결과를 반환할 수 있도록 fuzziness를 2로 설정했습니다. 이 설정을 통해 사용자 입력의 작은 오류에도 불구하고 원하는 결과를 얻을 수 있었습니다.
2.
Prefix Length 제한:
•
fuzziness를 높게 설정하면 너무 많은 오타를 허용하게 되어 검색 결과의 정확도가 떨어질 수 있습니다. 이를 보완하기 위해 prefix_length를 1로 설정하여, 검색어의 처음 몇 글자가 정확히 일치해야만 결과가 반환되도록 제한을 두었습니다. 이를 통해 검색 정확도를 유지하면서도 유연한 검색 결과를 제공할 수 있었습니다.