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 Design Pattern

The repository pattern is one of the more popular patterns at the moment. I for one like it, it follows the solid principles and done right…

medium.com

간단하게 말하면 Repository 패턴은 데이터 액세스 로직을 비즈니스 로직과 분리하여 유지보수성과 테스트 용이성을 높이는 디자인 패턴이다.

이 패턴은 데이터 소스에 대한 추상화를 제공하여 데이터베이스, 파일 시스템, 웹 서비스 등 다양한 데이터 소스와의 상호작용을 단순화한다.

2. 적용

일단 현재까지 작성된 코드의 Flow를 보면 아래와 같다.

  1. LogGeneratorController: 로그 생성 요청을 처리.
    • /generate-log 엔드포인트: 로그를 생성하고 저장.
    • /generate-error-logs 엔드포인트: 10개의 스레드를 사용하여 에러 로그를 생성하고 저장.
  2. LogGenerator: 로그를 생성합니다.
    • generateLog(): 일반 로그를 생성.
    • generateErrorLog(): 에러 로그를 생성하고 예외를 발생시킨다.
  3. LogService: 로그를 저장하고 관리한다.
    • createLog(String message): 로그를 생성하고 저장한다.
    • findAllLogs(): 모든 로그를 조회한다.
    • deleteLog(String id): 로그를 삭제한다.
  4. 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를 통해 로그를 저장한다. LogServiceLogRepository를 사용하여 Elasticsearch와 상호작용한다.

3. ElasticSearch에 저장된 Log 데이터를 기반으로 Kibana에서 대시보드 만들기

4. 관련 코드 업로드

아래의 Github에 관련 코드를 업로드 해놓았다.

https://github.com/Nanninggu/RepositoryPattern

 

GitHub - Nanninggu/RepositoryPattern: RepositoryPattern for ElasticSearch

RepositoryPattern for ElasticSearch. Contribute to Nanninggu/RepositoryPattern development by creating an account on GitHub.

github.com

5. 다음에 할일

1. 대량 데이터를 다운받아 SpringBoot를 통해 ES에 적재하기

2. 적재된 데이터를 검색가능하게 구성하기

3. UI를 만들고 ES에 적재된 데이터를 검색하고 결과값을 확인하기

...

 

- 끝 -

728x90
반응형