현재 제가 진행 중인 보틀노트에는 여러 데이터를 저장하는 서비스가 있습니다.
이때 몇몇 서비스에서는 비속어 검증이 필요하다 판단된 서비스들이 있습니다.
예를 들어 리뷰
, 댓글
등의 컨텐츠가 예시일것 같습니다.
비속어는 사용자에게 불쾌감을 주며, 서비스의 이미지를 떨어뜨릴 수 있습니다.
이런 문제를 해결하기 위해 한국에서 비속어 검증시에는 KISO 이용자 보호 시스템 API 서비스라는 매우 좋은 서비스가 있습니다.
이 포스트에서는 이미 좋은 서비스가 있는대 왜 또 구현해라는 의문을 해소하면서 무엇을 목표로 하는지를 소개하겠습니다.
한국에서 비속어 검증 시에는 KISO 이용자 보호 시스템 API 서비스라는 매우 좋은 서비스가 있습니다.
네이버와 카카오의 많은 욕설 데이터를 기반으로 구성되어 있습니다.
하지만 무료가 아니기 때문에 몇몇 프로젝트에서는 사용하기 부담스러울 수 있습니다.
6만원이라는 비용은 제 개인적인 의견으로는 매우 적절하다고 생각합니다.
다만 현재 제가 진행 중인 보틀노트에는 비용 최적화가 필요합니다.
저만이 아니라 다른 개인 프로젝트를 진행하는 분들 모두 서버 비용만 해도 부담되실 거라 생각합니다.
왜 KISO라는 좋은 서비스를 사용하지 않는지 설명했습니다. 그렇다면 왜 라이브러리나 프로젝트 내부에서 직접 구현하지 않았는지 의문이 들 수 있습니다. 몇 가지 이유가 있습니다:
외부 서비스
와 연동하는 경험을 제공하고 싶었습니다.어떤 비즈니스인지에 따라 다르지만, 비속어 검증 같은 기능은 서비스에서 중요할 수 있습니다. 깨끗한 커뮤니티를 제공하는 서비스를 만들고 싶다면 비속어 검증은 필수적인 요소라고 생각합니다.
저도 그런 서비스를 위해 비속어 검증이 필요했습니다. 솔직히 클라우드 비용도 부담되기 때문에 KISO를 사용하고 싶었지만, 비용이 문제가 되었습니다. 저뿐만 아니라 다른 개발자분들도 이런 무료 서비스가 필요할 것
같아서 만들어보기로 했습니다.
그리고 팀원들에게 외부 API와 연동하는 경험을 제공하고 싶었습니다. 현재 프로젝트는 하나의 모노리스 프로젝트 내에서 진행되다 보니 외부 서비스와 연동하는 경험이 부족했습니다.
이런 이유들로 인해 개인 프로젝트
의 개인 프로젝트
로 비속어 검증 시스템을 만들어보기로 했습니다.
만약 이 서비스에서 KISO로 변경해도 큰 작업이 필요없도록 설계하고 싶었습니다.
응답 코드 또한 KISO의 형태와 비슷하게 만들어서 변경이 쉽도록 만들었습니다.
다만 몇가지 내용은 조금 다르게 구현하였습니다.
예를 들어, Content-Type
을 application/x-www-form-urlencoded
만 받을수 있는 것을
application/json
와 application/x-www-form-urlencoded
모두 처리할 수 변경 하였습니다.
응답의 값중 Array를 List로 변경하는 등의 몇몇 차이점은 존재하니 유의해서 사용해주세요.
사용법은 Github ReadMe에서 확인해주세요.
추후 실제 트레픽을 받으면서 사용량에 따라 최적화하는 방법을 고민하고 있습니다.
실제 많이 검충되는 단어를 캐싱하거나
매우 고가용성 지표를 유지하기 위해 분산 환경을 고려하고 있습니다.
또한, 현재는 단어의 내용만 검증하지만 , 추후 advanced 모드를 만들어서 글 자체의 내용을 검사하는 기능을 고려중입니다.
단어 검증의 경우 빠른 검사를 위해 Aho-Corasick
알고리즘을 사용하고 있습니다. 이 알고리즘은 빠른 검사를 제공하며, 대용량의 데이터를 검사할 때 유용합니다.
다만 advanced 모델은 특정 글에 대해서 부정적인 내용과 키워드등을 분석하기 위한 AI 모델과 연동해 검사를 진행할 예정입니다. (언제 추가 될지는 모르겟지만...)
인프콘 이벤트 참여를 위해 랠릿 허브 링크를 첨부했다.
랠릿은 원티드나 점핏등 여러 플랫폼보다. 이력서가 예쁘고 다른 사람들의 이력서를 확인해볼 수 있어서 너무 좋은것가
잘쓰겠습니다!