ElasticSearch (ELK)/🔍 ElsticSearch
ElasticSearch를 Repository Pattern을 활용하여 구성 (2)
짱구네
2024. 9. 20. 23:53
728x90
반응형
# 생성한 ElasticSearch Index에 실제 로그 데이터를 적재하는 작업
1. 디자인 패턴
ElasticSearch에 최적화된 Repository Pattern을 적용
자세한 설명은 아래 url 참고
https://medium.com/@pererikbergman/repository-design-pattern-e28c0f3e4a30
간단하게 말하면 Repository 패턴은 데이터 액세스 로직을 비즈니스 로직과 분리하여 유지보수성과 테스트 용이성을 높이는 디자인 패턴이다.
이 패턴은 데이터 소스에 대한 추상화를 제공하여 데이터베이스, 파일 시스템, 웹 서비스 등 다양한 데이터 소스와의 상호작용을 단순화한다.
2. 적용
일단 현재까지 작성된 코드의 Flow를 보면 아래와 같다.
- LogGeneratorController: 로그 생성 요청을 처리.
/generate-log
엔드포인트: 로그를 생성하고 저장./generate-error-logs
엔드포인트: 10개의 스레드를 사용하여 에러 로그를 생성하고 저장.
- LogGenerator: 로그를 생성합니다.
generateLog()
: 일반 로그를 생성.generateErrorLog()
: 에러 로그를 생성하고 예외를 발생시킨다.
- LogService: 로그를 저장하고 관리한다.
createLog(String message)
: 로그를 생성하고 저장한다.findAllLogs()
: 모든 로그를 조회한다.deleteLog(String id)
: 로그를 삭제한다.
- LogRepository: Elasticsearch와 상호작용합니다.
ElasticsearchRepository<Log, String>
: 로그를 Elasticsearch에 저장하고 조회한다.
플로우 다이어그램
+-------------------------+
| LogGeneratorController |
| |
| /generate-log |
| /generate-error-logs |
+-----------+-------------+
|
v
+-----------+-------------+
| LogGenerator |
| |
| generateLog() |
| generateErrorLog() |
+-----------+-------------+
|
v
+-----------+-------------+
| LogService |
| |
| createLog(String msg) |
| findAllLogs() |
| deleteLog(String id) |
+-----------+-------------+
|
v
+-----------+-------------+
| LogRepository |
| |
| ElasticsearchRepository|
+-------------------------+
이 다이어그램은 각 클래스와 메서드가 어떻게 상호작용하는지를 나타낸다. LogGeneratorController
는 로그 생성 요청을 받아 LogGenerator
를 통해 로그를 생성하고, LogService
를 통해 로그를 저장한다. LogService
는 LogRepository
를 사용하여 Elasticsearch와 상호작용한다.
3. ElasticSearch에 저장된 Log 데이터를 기반으로 Kibana에서 대시보드 만들기
4. 관련 코드 업로드
아래의 Github에 관련 코드를 업로드 해놓았다.
https://github.com/Nanninggu/RepositoryPattern
5. 다음에 할일
1. 대량 데이터를 다운받아 SpringBoot를 통해 ES에 적재하기
2. 적재된 데이터를 검색가능하게 구성하기
3. UI를 만들고 ES에 적재된 데이터를 검색하고 결과값을 확인하기
...
- 끝 -
728x90
반응형