분류 전체보기 2526

[ELK] Beats 정리

Beats경량 데이터 수집기로 다양한 원격 시스템과 서비스에서 데이터를 수집하여 Elasticsearch 또는 Logstash로 전송하는 역할 수행Elastic Stack의 중요한 구성 요소 중 하나로 다양한 유형의 데이터를 중앙 집중식으로 수집하고 분석 가능하도록 지원역할만을 보면 Elastic Stack의 또 다른 구성요소인 Logstash와 유사해 보일 수 있으나 Logstash는 다양한 플러그인을 포함해 범용성이 높은 만큼 무겁게 움직이는 반면, Beats는 범용성을 포기하고 특정 목적만 수행하도록 가볍게 구성되어 애플리케이션의 성능에 영향을 미치지 않고 필요한 이벤트 수집 가능오픈소스 라이선스를 따르며 립비트(Libbeat)라는 프레임워크를 제공하므로  사용자들이 직접 필요한 각 비트 구현 가능..

Elastic Search 2024.06.25

[ELK] Logstash 정리

LogstashElastic Stack의 중요한 구성 요소 중 하나로 로그 및 이벤트 데이터를 수집, 변환, 저장하는 데이터 처리 파이프라인다양한 소스에서 데이터를 수집하여 Elasticsearch와 같은 저장소로 전송하기 전에 데이터를 필터링 및 변환하는 데 사용다양한 데이터소스를 쉽게 연동할 수 있는 기능 제공Elasticsearch와의 연동이 잘 되어있기 때문에 로그 수집을 해서 분석, 모니터링 하는데까지 용이하게 사용 가능  Logstash 특징 1. 플러그인 기반로그스태시의 파이프라인을 구성하는 각 요소들은 전부 플러그인 형태로 만들어져 있음기본으로 제공되는 플러그인 외에도 수많은 써드 파티 플러그인을 찾을 수 있으며 정말 필요한 경우 비교적 간단한 코드로 전용 플러그인을 작성해 로그스태시의 다..

Elastic Search 2024.06.25

[디자인 패턴] 컴포짓 패턴 (Composite Pattern)

컴포짓 패턴개별 객체와 객체 그룹을 동일하게 다루기 위한 디자인 패턴클라이언트 입장에서는 `전체`나 `부분`이나 모두 동일한 컴포넌트로 인식할 수 있도록 계층 구조를 만듦 (Part-Whole Hierarchy)단, 트리 구조를 사용하여 객체를 구성해야한다는 제약 조건 존재  주요 구성 요소 1. Component공통 인터페이스를 정의Compsite 및 Leaf가 구현해야하는 메서드를 선언 2. Leaf트리의 말단 요소로 실제 작업을 수행Leaf 노드는 자식 노드를 가질 수 없음 3. Composite자식 노드를 가지는 복합 노드자식 노드를 관리하며 Component의 메서드를 구현 컴포짓 패턴 구현 예시 1. Component 인터페이스 정의  2. Leaf 클래스 정의  3. Composite 클래스..

Design Pattern 2024.06.22

[디자인 패턴] 브릿지 패턴 (Bridge Pattern)

브릿지 패턴객체 지향 설계에서 구조적 디자인 패턴 중 하나로, 구현부에서 추상층을 분리하여 둘을 독립적으로 변형할 수 있도록 지원하나의 계층 구조일 때 보다 각기 나누었을 때 독립적인 계층 구조로 발전시킬 수 있음 시스템이 변화하는 요구사항에 유연하게 대처할 수 있도록 해줌 브릿지 패턴의 주된 목적은 추상화와 구현을 분리하여 두 부분이 독립적으로 변화할 수 있도록 하는 것이는 코드의 유지보수성과 확장성을 높이는 데 큰 도움을 줌  주요 구성 요소 1. Abstraction구현의 인터페이스를 정의하는 역할일반적으로 구현 객체에 대한 참조(레퍼런스)를 포함 (컴포지션)구현체에 위임하는 고수준의 작업들을 정의 2. RefinedAbstractionAbstraction의 확장판으로, 세부적인 기능을 추가하거나 ..

Design Pattern 2024.06.22

[디자인 패턴] 어댑터 패턴 (Adapter Pattern)

어댑터 패턴기존 코드를 클라이언트가 사용하는 인터페이스의 구현체로 바꿔주는 패턴서로 다른 인터페이스를 가진 두 클래스가 협업할 수 있도록 중간에 어댑터를 두어 호환성을 제공하는 구조적 디자인 패턴클래스의 인터페이스를 사용자가 기대하는 다른 인터페이스로 변환하여, 호환되지 않는 인터페이스를 가진 클래스들을 함께 동작하도록 지원주로 레거시 코드를 새로운 시스템에서 사용하고자 할 때 유용해외여행 필수품인 플러그 어댑터를 생각하면 이해하기 쉬움  주요 구성 요소 1. Target 인터페이스클라이언트가 사용하려고 하는 인터페이스 2. Adapter타겟 인터페이스를 구현하고 어댑티(Adaptee)의 인터페이스를 호출하여 중간 역할 3. Adaptee변환되어야 할 기존 클래스 4. Client타겟 인터페이스를 사용하..

Design Pattern 2024.06.22

[디자인 패턴] 프로토타입 패턴 (Prototype Pattern)

프로토타입 패턴기존 인스턴스를 복제하여 새로운 인스턴스를 만드는 방법기존 객체를 응용해서 새로운 인스턴스를 만들 때 유용특히 기존 인스턴스를 만들 때 DB 조회 혹은 API 호출 같이 비교적 시간이 오래 걸리는 작업이 선행되어야 하는 경우 유용매번 DB 조회 혹은 API 호출을 하면 시간이 오래 걸리기 때문에 이미 해당 작업을 수행해서 완성된 인스턴스를 복제한 후 일부 필드를 변경하는 방식으로 새로운 인스턴스를 만드는 방식객체 생성 비용을 줄이고, 객체 초기화 과정에서 발생하는 복잡성을 간단하게 처리 가능  주요 구성 요소 1. Prototype 인터페이스객체가 자신을 복제할 수 있도록 하는 인터페이스를 정의해당 인터페이스는 보통 clone() 메서드를 포함하며 자바에서 clone() 메서드는 prote..

Design Pattern 2024.06.22

[디자인 패턴] 빌더 패턴 (Builder Pattern)

빌더 패턴동일한 프로세스를 거쳐 다양한 구성의 인스턴스를 만드는 방법복잡한 객체의 생성 과정과 표현 방식을 분리하여 동일한 생성 절차에서 서로 다른 표현 결과를 만들 수 있게 지원특히 생성해야 하는 객체가 복잡하고, 생성 과정이 여러 단계로 나누어져 있을 때 유용복잡한 객체를 만드는 프로세스를 독립적으로 분리할 수 있음  주요 구성 요소 1. Builder 인터페이스객체 생성을 위한 추상 메서드 정의인스턴스를 생성하는 방법들을 단계 별로 만들 수 있도록 메서드 제공 (위 UML에서 buildXXX 메서드들)최종 Product를 받아올 수 있는 메서드 제공 (위 UML에서 getResult 메서드) 2. Concrete BuilderBuilder 인터페이스 구현체특정한 타입의 복잡한 객체 생성을 위한 구체..

Design Pattern 2024.06.21

[Elasticsearch] 검색 정확도와 랭킹

검색 정확도검색 결과의 정확도나 정합성을 나타내는 지표로 주어진 검색어에 대해 얼마나 적합한 결과가 반환되는지를 평가일반적으로 검색 엔진은 사용자가 입력한 검색어와 일치하는 문서를 찾아내기 위해 다양한 알고리즘과 기술을 사용하며 이때 검색 정확도는 검색 엔진이 얼마나 정확하고 적합한 결과를 찾아내는지를 측정하는 척도검색 정확도는 서비스의 신뢰도에 영향을 끼치고 만족도가 떨어질 경우 이탈률 발생시킬 우려가 크기 때문에 매우 중요한 지표 1. 검색 정확도의 요소검색어와 문서 간의 일치도: 검색어와 문서의 일치하는 단어 또는 구절의 유사성 평가문서의 중요도: 문서의 중요도나 신뢰도를 고려하여 결과의 순위 결정검색어의 중요도: 검색어에서 어떤 단어가 중요한지를 판단사용자의 의도 파악: 사용자의 검색 의도를 파악..

Elastic Search 2024.06.19

[Elasticsearch] Fuzzy 쿼리

오타사전적 의미: 타자를 칠 때에 잘못 찍는 일 또는 그 글자영어: typo, typographical error오타는 '검색 결과 없음'의 주요 원인발생하는 이유는 다음과 같이 다양함키보드 타이핑 시 왼손과 오른손의 반응 속도 차이모바일에서 터치 실수 (Fat Finger)정타를 오타로 잘 못 인지하는 경우정타 자체를 인지하지 못하는 경우etc. Fuzzy Matching오타 입력 시 의도한 정타로 검색어를 전환하는 기법이를 지원하면 검색어의 결과가 나오지 않는 문제를 일부 해결 가능UX를 향상 시키는 일검색 서비스에 신뢰하는 요소 Elasticsearch가 오타를 지원하는 방법 1. Levenshtein distance 기반의 알고리즘 Damerau-Lavenshtein두 개의 문자열 A, B가 주어..

Elastic Search 2024.06.19

[디자인 패턴] 추상 팩토리 패턴 (Abstract Factory Pattern)

추상 팩토리 패턴구체적인 클래스의 인스턴스를 생성하는 방법을 캡슐화하여 일관된 방식으로 연관된 객체를 생성할 수 있게 지원하는 패턴Concrete Factory에서 Concrete Instance를 만들어주는 것까지는 팩토리 메서드 패턴과 비슷하지만초점이 팩토리를 사용하는 클라이언트 쪽에 있음목적 자체가 팩토리에서 인스턴스를 만드는 코드를 인터페이스 기반으로 구현할 수 있게끔 지원해 주는 패턴구체적인 클래스에 의존하지 않고 객체를 생성할 수 있기 때문에 클라이언트 코드를 변경하지 않아도 됨  부연 설명팩토리 메서드 패턴에서 Client만 추가되었다고 생각해도 무방 추상 팩토리 패턴 구현 예시앞서 설명했다시피 추상 팩토리 메서드 패턴과 유사하지만 초점이 클라이언트에서 팩토리를 사용하는 방법에 있음 1. F..

Design Pattern 2024.06.18