Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

글또 검색 엔진 베타 버전 정리 #30

Open
dldydtjs2965 opened this issue May 4, 2024 · 3 comments
Open

글또 검색 엔진 베타 버전 정리 #30

dldydtjs2965 opened this issue May 4, 2024 · 3 comments

Comments

@dldydtjs2965
Copy link

dldydtjs2965 commented May 4, 2024

개요

검색엔진 프로젝트에 대해 개발하기 전 진행상황이나 논의되어야 하는 것들을 총괄적으로 정리하기 위한 이슈입니다.

기능적 요구사항

  • 키워드 검색을 통해 제목, 설명, 해시태그, 본문 검색
  • 유저 이름 검색시 해당 유저가 작성한 컨텐츠 검색
  • 카테고리 필터시 해당 게시글로 필터링

비기능적 요구사항

  • 요청값에 대한 정보 로깅
  • 인덱싱 실패시 슬랙 알림
  • ES 관리할 수 있는 키바나 환경 구축
@dldydtjs2965
Copy link
Author

dldydtjs2965 commented May 6, 2024

진행 상황 공유 (2023-05-06)

요약

  • 검색엔진 인프라 환경(Elasticsearch, Kibana) 환경 도커파일 세팅
  • 서버 환경 구축 틱클서버 키바나 접속
  • 게시글 인덱스(데이터베이스 테이블과 비슷함) 설계

검색엔진 인프라 환경 도커파일 세팅

  • 인증 방식 X -> ssl 인증과 로그인 기능 활성화
  • 환경 세팅하기 위한 기술문서 작성중(writerside)

서버 환경 구축

  • 기존 아이디 & 로그인 방식의 ssh 접속 옵션 제거
  • pem 파일을 통해 ssh 접속하도록 변경
  • 서버 환경 도커 세팅
  • tickle.asia 도메인 연동(가비아)
  • vm 웨어에 있는 가상서버를 바라보도록 하는 포트포워딩 세팅

게시글 인덱스 설계

  • 게시글을 저장하기 위한 인덱스 설계 완료
  • 기존에 있던 매핑 구조 대부분 변경
  • 스프레드 시트를 참고하여 인덱스 구조 설계

Must do

  • 게시글 인덱스 생성
  • 노리 토크나이저 다운로드
  • 인덱싱 API 개발(벌크 저장과 일반 저장)

Later

  • 메트릭 비트를 통해 키바나와 엘라스틱서치 모니터링 환경 구축
  • 로그스태시와 파일비츠를 활용하여 로그 수집 및 정형화하여 관리
  • ES 클러스터링
  • 웹 서버 로그 저장

참고 자료

도커 컴포즈 ELK 환경 세팅
tickle project 깃헙
pem 키로 접속하는 세팅 글
ssh 옵션 설정 참고 글
인덱스 설계 공유

@dldydtjs2965
Copy link
Author

dldydtjs2965 commented May 13, 2024

진행 상황 공유 (2023-05-13)

요약

  • 이전에 개발했던 Elasticsearch 세팅을 SSL로 기반 통신 하도록 변경
  • 새로운 스펙에 맞춘 Article 인덱스 설계
  • 이전 사이드 프로젝트 기획에 맞춰 개발했었던 코드, 디벤던시 제거
  • 게시글 인덱싱 API 개발 완료

이전에 개발했던 도커 컴포즈 세팅을 SSL로 기반 통신 하도록 변경

  • Elasticsearch에서 설정한 옵션에 맞춰 ElasticsearchConfiguration 변경

새로운 스펙에 맞춘 Article 인덱스 설계

  • 또봇에 수집하고 있는 스프레드시트에 맞춰 인덱스 구조 변경
  • nori-tokenizer 플러그인 다운로드
  • 변경된 인덱스 구조에 맞춰 엔티티 클래스 수정

이전 사이드 프로젝트 기획에 맞춰 개발했었던 코드, 디벤던시 제거

  • 사용하지 않는 Mysql 드라이버 제거
  • Controller, Service, Entity 클래스 삭제 및 변경
  • Utils 클래스 정리

게시글 인덱싱 API 개발 완료

  • 기존 비지니스 로직 리팩토링
  • Request Dto 클래스 수정
  • 포스트맨을 활용하여 로컬 테스트 완료

Must do

  • 서버 환경에서 배포
  • Swagger 연동을 통해 API 문서 저동화
  • bulk Insert API 개발
  • search API 개발

Later

  • CI/CD 환경 구축
  • 인덱싱 API 테스트 코드 작성
  • 스프링 시큐리티를 통해 토큰 기반의 인증/인가 개발
  • 게시글 저장시 슬랙 알림
  • 세팅 가이드 문서화

참고자료

스프링 부트와 ES8 연동
jpaRepository와 ElasticRepository와의 빈 충돌
SpringDataElasticsearch 공식문서
작업 사항 PR

@dldydtjs2965
Copy link
Author

진행 상황 공유 (2023-06-03)

요약

  • 아티클 벌크 인덱싱 API 개발
  • Swagger 3.0 연동
  • 인덱싱 실패시 Slack webhook 으로 에러 정보 전송되도록 개발
  • Nginx 연동하여 리버스 프록시 서버 구축

아티클 벌크 인덱싱 API 개발

  • @async 어노테이션을 활용하여 비동기로 처리되도록 개발
  • Html Parser Util 클래스 리팩토링
  • DTO 클래스에서 CSV 파일을 읽어서 처리하도록 변경

Swagger 3.0 연동

  • DTO 클래스에 API 스펙 정리
  • Controller에 API 스펙 정리
  • Swagger 2.0에 사용되던 어노테이션과 설정 방법들이 많이 변경됨

인덱싱 실패시 Slack Webhook 으로 에러 정보 전송되도록 개발

  • Slack Web Hook URL 연동
  • Slack Web hook client 클래스 개발
  • Error Message Format 클래스 구현

Nginx 연동하여 리버스 프록시 서버 구축

  • nginx 도커 컴포즈 생성
  • tickle-server 프로젝트 docker 파일 생성
  • 틱클 웹서버 이미지 dockerhub 연동

Must do

  • 로컬 개발용 이미지, 프로덕션 배포용 이미지 스크립트 개발
  • 검색 API 개발
  • 인증/인가 로직 추가 - Oauth?, Token?
  • 실서버에 nginx 환경 배포

Later

  • CI/CD 환경 구축
  • 테스트 코드 작성
  • wirterside를 통해 가이드 문서 작성
  • 로깅 시스템 개발(ELK)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant