본문 바로가기

전체 글

(227)
[Elasticsearch] 회고 및 리뷰 성과 Spring 서버 연동 및 API 생성 및 인프라 구축 - spring data elasticsearch와 native search query를 사용한 API 서버 구축. - elasticsearch, kibana, logstash를 사용할 수 있는 서버 환경 구축. ES 버전은 7.11.2를 사용하였다. 유사도 비즈니스 로직 구현 1. 입력 검색어에 대한 오탈자 보정 후 유사 검색 결과 반환 및 비즈니스 로직 제공 API 요청 당시 가장 큰 요구사항은 '오탈자'에 대한 올바른 검색 결과를 제공하는 것이었다. 따라서 숙소, 관광지, 음식점의 데이터셋을 분석기와 커스텀 필터를 통해 인덱스에 저장하였다. 이후 ngram과 fuzzy 방식을 융합하여 사용자의 요청에 따라 가장 유사한 검색 결과를 반환할 ..
[Logstash] 로그스태시로 로그 뽑아서 저장하기 경로 맞추기 내 스프링부트 컨테이너 내부 경로와 외부 마운팅할 파일 경로를 맞춰줘야 한다. sudo docker exec -it elastic-container /bin/bash 를 통해 접속한 결과 이런 식으로 기본 루트 디렉토리가 /app임을 확인할 수 있다. 이는 당연한데, 도커파일이 다음과 같이 정의되었기 때문이다. 따라서 나는 경로를 /app/log/logfiles.log로 저장하고자 한다. # 기본 이미지로 Java 11을 사용합니다.. FROM openjdk:11-jre-slim # 작업 디렉토리를 설정합니다. WORKDIR /app # 이 폴더를 외부 볼륨 마운팅 하는 폴더로 설정합니다. VOLUME ["/app/logs"] # 호스트 머신에서 JAR 파일을 복사합니다. COPY build..
[GIT] 대용량 파일을 점진적으로 받아올 때. (--depth) https://eunjinii.tistory.com/128 RPC failed; curl 18 transfer closed with outstanding read data remaining 문제해결 방법 문제상황 git clone을 받으려고 하는데 "RPC failed; curl 18 transfer closed with outstanding read data remaining" 라는 문구가 뜨면서 클론이 안 되고 있다. 원인 규모가 큰 레포지토리를 클론하려고 하는데 로컬에 eunjinii.tistory.com 해당 블로깅을 참고하였다. 문제 상황 최종 파일을 정리하고, 발표 대본과 데이터를 넣던 도중 팀원이 최종 브랜치에 많은 양의 대용량 데이터를 넣는 일이 있었다. 이 이후 pull이나 파일을 받아오..
AOP의 개념과 적용하기 개요 https://csg1353.tistory.com/90 위의 포스팅처럼 elasticsearch의 logstash 로그를 수집하기 위해 AOP의 개념을 사용해 로그를 수집해보려 한다. 이를 위해서는 먼저 AOP에 대한 개념을 학습해야 할 것이다. AOP란 (Aspect-Oriented Programming) 정의 공통 기능(예: 로깅, 보안)을 핵심 비즈니스 로직에서 분리하고, 이러한 공통 기능을 필요한 위치에 적용 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화 한 것. AOP는 기존 OOP의 객체 지향적인 프로그래밍이 아닌, Aspect(관점)을 기준으로 프로그래밍하는 기법이다. 공통 기능의 관심 사항과 핵심 관심 사항 등, 객체지향으로는 분..
[LogBack]API 요청 로그 수집하기 개요 API 요청에 따라 springboot에서 로그를 수집하고, 발생하는 로그를 ES의 인덱스에 추가하려고 한다. 전체적인 로직은 다음 포스팅들을 참고하였다. https://prohannah.tistory.com/182 Spring Logging (1) : HTTP Request/Response 로그 남기기 서비스를 운영하면서 서버가 받는 HTTP 요청과 서버가 제공하는 응답을 로그로 남긴다면, 추후 무슨 일이 생겼을 때 추적이 용이하다. 이번 포스팅은 Spring Boot을 사용하여 로그 남기기 시리즈 중 prohannah.tistory.com https://devbksheen.tistory.com/entry/ELK-Filebeat%EB%A1%9C-%EC%8B%A4%EC%8B%9C%EA%B0%84-%..
[Kibana] Kibana 데이터시각화 구현 https://www.elastic.co/guide/en/kibana/7.11/index-patterns.html Create an index pattern | Kibana Guide [7.11] | Elastic If you don’t set a default time field, you will not be able to use global time filters on your dashboards. This is useful if you have multiple time fields and want to create dashboards that combine visualizations based on different timestamps. www.elastic.co 1. 인덱스 패턴 생성 Stack ..
[Elasticsearch] 네트워크 오버헤드 효율 비교 및 개선(쿼리 변경) 개요 기존 프로젝트에서 우리는 오타를 보정하기 위해 검색어와 가장 유사한 검색어들을 차등적으로 리스트의 형태로 제공했다. 이 과정에서 Ngram과 Fuzzy의 분석 결과를 요청하고, 이를 다시 합산하여 가장 스코어가 높은 순서대로 유사하다는 결론을 내렸다. //통합 제목 검색 : 제목 일치 or (Fuzzy + ngram) @GetMapping("/title/aggregate-search") public List searchTitleComprehensive(@RequestParam("title") String title, @RequestParam("maxResults") int maxResults, @RequestParam("fuzziness") int fuzziness, @RequestParam("fu..
[2주차 스터디 노트] 쓰레드, 멀티 프로세스/쓰레딩, 프로세스 상태 변화 프로세스 상태 프로세스의 수행 상태 변화는 운영 체제의 프로세스 관리의 중요한 부분이다. 운영 체제는 프로세스의 생명 주기 동안 여러 가지 상태를 가지며, 프로세스의 현재 상황과 다음에 수행해야 할 작업을 나타낸다. OS에서는 이 상태를 PCB를 통해 인식하고 관리한다. 새로 생성된 상태 (New) 프로세스가 생성되고 초기화되는 단계이다. 프로세스는 프로세스에 필요한 초기 리소스와 설정을 할당받있지만, 아직 실행 준비가 완전히 되지 않은 상태. -> 프로세스가 필요한 모든 리소스를 할당받고, 실행을 위한 준비가 완료되면 "준비 상태"로 전환된다. 여기서 할당받을 리소스들은 다음과 같다. - 프로세스 식별자 (PID): - 프로세스 제어 블록 (PCB): - 프로세스 실행을 위한 최소한의 메모리 공간 - ..