전체 글 46

Test Double과 Stub, Mock 그리고 Fake

TDD를 공부하게 되면, Test Double이라는 용어가 나오고, 그 뒤에 Stub, Mock 그리고 Fake가 나온다. 처음 TDD를 접한 사람이라면, 헷갈리는 개념이라고 생각을 한다. 나도 그랬다. 그리고 며칠 전에 Test Double을 알아요? Stub과 Mock에 대해서 알아요?라고 질문을 받았지만, 어렴풋이 알고 확실히 알지 못하여 질문에 대해 답을 하지 못했다. 그래서 요번 블로그 포스팅은 Test Double에 대해서 그리고 Stub, Mock 그리고 Fake에 대해서 설명을 하려고 한다. Test Double Test Double는 테스트 시에 실제 객체가 아닌 가짜 객체를 활용하여 테스트를 할 수 있도록 만들어주는 것을 말한다. 실제 객체가 아닌 가짜 객체를 활용하여 테스트할 경우 도..

TDD 2022.08.10

클러스터(Cluster)와 노드(Node) 구성

Split Brain 문제를 피하기 위해서 마스터 후보 노드 개수는 항상 홀수로 하고 가동을 위한 최소 마스터 후보 노드 설정은 (전체 마스터 후보 노드)/2+1로 설정해야한다.해당 글은 엘라스틱 스택 개발부터 운영까지라는 책 중 7장을 정리하여 쓴 글입니다. 엘라스틱서치의 클러스터 엘라스틱서치에서의 클러스터(Cluster) ? 엘라스틱서치의 클러스터는 노드들로 구성되어 있다. 노드들을 통하여 필요한 작업을 나눠서 수행하는 분산 처리를 지원하여 대량의 데이터를 다룰 수 있다. 컴퓨팅 시스템에서의 클러스터(Cluster) ? 여러 대의 컴퓨터를 병렬로 연결해 하나의 시스템으로 구성한다. 시스템 장애를 대비한 고가용성(high availability)을 높이는 동시에 시스템 성능을 높일 수가 있다. 엘라스틱..

Kotest (코테스트) 는 무엇일까요?

코틀린과 스프링을 같이 쓰게 되면 거의 junit5를 사용을 한다. 하지만, Kotest라는 테스트 프레임워크가 인기가 높아지고 있어 요번에 kotest란 무엇인가부터 시작하여, 명세 스타일, 매처, 익셉션에 대해서 알아보았다. Kotest에 대한 여행을 떠나보자. Kotest 란? 코틀린을 위한 오픈 소스 테스트 프레임워크이다. multi-plaform test framework로 Test-framework, Assertions Library, Property Testing을 독립적으로 사용할 수 있다. Kotest의 명세 스타일 Kotest는 여러 명세 스타일이 있습니다. 이러한 명세 스타일은 Kotest에 대한 부분도 있고, 여러 언어에 맞춘 테스트 스타일도 제공을 해줍니다. Fun Spec Sca..

Kotlin 2022.04.15

elasticsearch function_score(전체 데이터 스코어에 대한 글)

elasticsearch에서 쓰이는 질의어 match / filter / bool / should / must 등 질의 쿼리와 tie_breaker, filter에 ^3 등을 붙이는 부스팅 쿼리(boosting) 가중치를 부여할 수 있다. 이러한 가중치는 검색 결과에 대한 가중치를 말한다. 하지만, 이번에는 검색 결과에 대한 가중치가 아닌, 질의어를 쓰기 전에 특정 필드에 가중치를 우선 주고 시작하는 방법에 대해 포스팅하려고 한다. 왜? 무엇때문에 필요했나? - 전체적인 데이터 중 특정 데이터를 우선적으로 보여주고 싶다. 왜냐면 질의어를 써서 검색을 하면 특정 질의어에 관련된 목록들만 나오기 때문이다. 무엇을 사용했는가? - function_score를 사용하여 전체적인 데이터에 대해서 특정 데이터 필드..

ELK 2022.04.01

비트(beat)

해당 글은 엘라스틱 스택 개발부터 운영까지라는 책 중 7장을 정리하여 쓴 글입니다. 비트 가볍고 사용하기 쉬운 데이터 수집기이다. 고 프로그래밍 언어로 작성된 경량 프로그램이기 때문에 시스템에 큰 부담을 주지 않으며 로그스태시, 엘라스틱서치와 연계해 다양한 시스템의 이벤트를 수집할 수 있게 도와준다. 비트는 수집한 데이터를 엘라스틱으로 실어 나르기 위한 최전방에 위치한 소프트웨어이다. 비트와 로그스태시와 유사해 보일 수 있으나 차이점이 있다. 로그스태시는 다양한 플러그인을 포함해 범용성이 높은 만큼 무겁게 움직인다. 비트는 범용성을 포기하고 특정 목적만 수행하도록 가볍게 구성되어 애플리케이션의 성능에 영향을 미치지 않고 필요한 이벤트를 수집할 수 있다. 하지만, 비트와 로그스태시를 따로 사용하지는 않는다..

Logstash config directory 위치(brew 설치 시)

엘라스틱 스택 개발부터 운영까지에 대한 책에서 Logstash에 대한 실습은 윈도우 환경에서 하게 된다. 맥 사용자는 혼동이 일어날 수가 있다. 저 같은 경우에는 brew로 Logstash를 설치하는 바람에, config directory 위치를 못찾아서 헤맸습니다. brew로 설치 된 Logstash 위치 logstash --help를 통하여 logstash 설치 위치를 알 수 있다. 이 위치에 대해서 차근차근 들어가면 libexec 안에 config 폴더가 있다. 하지만 이 config 폴더는 /usr/local/etc/logstash에 적용되어 있다. 정확한 위치를 알았으니 다음에는 /usr/local/etc/logstash을 통하여 config directory를 수정하면 된다.

로그스태시(LogStash)

해당 글은 엘라스틱 스택 개발부터 운영까지라는 책 중 6장을 정리하여 쓴 글입니다. 로그스태시란? 일단 로그는 성능, 오류, 도작 과정 등의 중요한 정보를 담고 있다. 이러한 로그는 일반적으로 시스템 동작의 모든 행위나 이벤트를 기록해야 한다. 그리고 이 로그는 빅데이터에서는 로그 정보를 데이터 분석에 활용하기도 한다. 많은 어플리케이션에 대한 로그를 하나로 모은다고 했을때 로그는 반정형데이터라서 어플리케이션마다 설정하지 않으면 다르게 찍히게 된다. 로그 스태시는 1) 이러한 로그들을 수집, 정제하여 한눈에 보기 좋도록 만들어준다. 추가로 장애 대응 로직이나 성능 저하 요인을 쉽게 파악할 수 있는 모니터링 API, 간단한 조정으로 성능을 튜닝할 수 있는 파라미터들도 제공한다. 2) 로그스태시는 비츠, 로..

살려줘!! HyperLogLog

엘라스틱서치 스터디를 하던 중 HyperLogLog에 대한 이야기가 나왔다. HyperLogLog에 대해 이야기하기 전에 일단 왜 HyperLogLog가 나왔는지에 대해서부터 알아야 한다. 엘라스틱서치에서는 집계 쿼리를 이용하여 통계 데이터를 만든다. 이러한 통계 데이터를 만드는 종류 중에 필드의 유니크한 수를 만들기 위한 데이터를 만들 수가 있다. 그런데, 내가 써놓고서도 필드의 유니크한 수가 뭔지 모르겠다. 필드의 유니크한 수....??? 필드의 유니크한 수.. 필드의 유니크한 수는 바로 중복된 값을 제외한 데이터의 수를 말한다. 예를 들어, 필드에 월/화/수/목/금/월/화/수/목/금/토/일 데이터가 있다면 여기서 중복된 값을 제외하면 월/화/수/목/금/토/일이 나오게 된다. 원래 12개의 필드가 중..