나만의 검색 API : 캐싱의 유효시간 관련, 폴링 시 일부 컬럼만을 ELK에 넣었을 때
안녕하세요. ELK와 Redis를 이용하여 검색 API 숙제를 하는 중 질문이 있습니다.
캐시를 이용하여 검색 결과를 반환할 때, 폴링 등을 통해서 새로운 데이터가 들어온다면 기존의 캐시를 이용하지 못할 것 같은데요,
제 생각으로는 강의중 말씀해주신 정확도를 포기하는 대신 성능을 얻기 위해서 캐시를 일단 TTL 만료 이전까지 사용해야 할 것 같습니다만, 좋은 방법이 무엇일까요?
강의 내에서는 폴링을 통해 테이블 컬럼의 전체가 아닌 일부 컬럼만을 Elasticsearch에 넣으셨었는데 전체를 넣지않는 이유가 있을까요? (데이터가 커져서? Join 데이터를 포함하면 많아질 것 같기는 합니다.)
일부만 넣는 이유가 있다면 게시판 검색을 만든다고 생각하면 제가 생각한 아래의 방식으로도 사용되는 편일까요?
1) ID를 포함하여 검색 결과 목록에 노출될 제목 등을 얻어오는 데에 ELK와 캐시를 이용
2) 상세보기를 클릭했을 때는 DB 인덱스로 사용되는 ID를 이용하여 디비에서 필요한 모든 컬럼을 얻어오기
강의 막바지를 향해 달려가고 있습니다. 좋은 강의 제공해주셔서 감사드립니다.
Câu trả lời 1
2
안녕하세요. 제리제리님
서비스 내부적으로 데이터가 초 단위로 변하지 않을시, Redis를 사용해서 성능을 개선 방법 선호합니다. 더불어 실제 개발환경이 아니라 프로덕션환경에서 Redis에 저장되는 데이터는 TTL을 최소한 1초 정도로만 잡아도 성능개선이 가능합니다.
하지만 Redis를 사용할 경우 보안상의 이슈와 데드락 이슈 등이 발생할 수 있으므로 이점 학습해 보시길 바랍니다.해당 이슈는 서비스의 구성에 따라 달라질 것으로 예상됩니다. 강의에서의 사용법은 간단한 예시를 위해 설명된 방법입니다. 예를 들어 실제 환경에서는 만약 기능(fecthBoard, fecthUser 등)마다 documents를 분리했을 경우 logstash의 성능이 올라감과 동시에 데이터베이스 부하가 발생할 가능성이 있습니다.
반대로 데이터를 한꺼번에 폴링 시, 검색 시 불필요한 데이터로 검색 성능이 저하 될 수 있습니다. 이러한 점을 고려하셔서 해당 프로젝트에 적용해 보시길 바랍니다.
감사합니다.
그래프 ql 문서 사용할때 느낌표 남는거 어떻게 없애나요?
0
80
2
강의 전체 소스 코드를 받고싶습니다.
0
74
2
fontawesome 사용 문의
0
75
2
소스 코드 부탁드립니다~
0
84
2
깃 레포지터리 소스
0
78
2
커리큘럼12.css 정렬 에 나오는 과제 정답알고싶어요
0
71
2
10-01 Entity TypeOrmModule.forRoot 에 entities
0
83
3
강의 버전관련 문의입니다
0
101
2
Ubuntu 설치 관련
0
59
1
schema.gql 질문 드립니다.
0
49
1
서버 재실행시 Many to Many
0
100
3
input 관련 문의
0
89
2
Rest API 보다는 graphql이 주된 내용인데
0
130
2
강의 전체 소스코드 받을수있을까요?
0
153
1
도커볼륨 마운트 관련
0
125
2
findOne 타입스크립트오류
0
107
1
http => htrtps 호출 인증서 신뢰 오류
0
347
1
self-signed certificate in certificate chain 에러 발생
0
408
1
mongoose 설치 오류
0
140
1
특정 API, 특정 IP 허용 (단일경로에 CORS 활성화)
0
279
2
08-06
0
174
3
구조랑 패턴 관련해서 질문
0
121
2
mydocker
0
125
2
coolsms statuscode 2000 인데 전송안돼는 경우 확인.
0
153
1

