본문 바로가기

분류 전체보기56

2. 시작하기 2. 시작하기 용어정리 인덱싱(색인) : 데이터를 검색될 수 있는 구조로 변경하기 위해 원본(소스)을 검색어 토큰들로 변환하여 저장하는 과정 인덱스: 색인된 데이터가 저장되는 저장소. 도큐먼트의 논리적 집합의 단위 검색: 인덱스에서 검색어 토큰들을 포함하고 있는 문서들을 찾아가는 과정 질의: 문서를 찾거나 집계하기 위한 검색어와 검색 조건 환경설정 노드들의 역할을 나누거나 클러스터의 속성을 결정한다. ~./config 경로 아래의 파일을 변경하거나 엘라스틱서치 실행 시 옵션으로 설정할 수 있다. ~/.config/jvm.options : JVM 힙 메모리 설정한다. 시스템 메모리 절반은 루신파일 캐시을 위해 남겨두어야 한다. ~/.config/elasticsearch.yml : 엘라스틱서치와 관련된 대부.. 2021. 8. 31.
1. 서문 1.서문 Elasticsearch는 전문검색뿐 아니라 보안, 로그 분석 등 다양하게 이용된다. Elasticsearch는 주로 ELK 스택, Elasticsearch, Logstash, Kibana와 함께 쓰이며 경량 데이터 수집기인 Beats와도 같이 쓰인다. 모니터링, 클라우드, 머신러닝 서비스도 제공한다. Elasticsearch 데이터를 색인하고, 저장하고, 검색 및 집계 기능 등을 수행한다. 뛰어난 검색 능력과 대규모 분산시스템 기능을 제공한다. 사용법은 간단하다. 실시간으로 인덱싱하자마자 검색 및 집계가 가능하다. Full Text (전문) 검색 및 다양한 점수 기반의 다양한 정확도 알고리즘을 사용할 수 있다. 내부적으로 Inverted File Index 구조를 사용한다. 사용자 관점으로는 .. 2021. 8. 31.
Part 3 - 함수 정의와 호출 Ch.3 함수 정의와 호출 3.1 코틀린에서 컬렉션 만들기 val set = hashSetOf(1,7,53) val list = arrayListOf(1,7,53) val map = hashMapOf(1 to "one", ...) val strings = listOf("first", ...) val numbers = setOf(...) val last = strings.last() val max = numbers.max() 코틀린은 자체 컬렉션을 제공하지 않고 자바 컬렉션에 의존한다. 코틀린의 메서드 익스텐션을 이용해서 자바 컬렉션보다 더 쉽게 컬렉션을 사용할 수 있다. 3.2 함수를 호출하기 쉽게 만들기 3.2.2 디폴트 파라미터값 fun joinToString( collection: Collectio.. 2021. 8. 29.
Part 2 - 코틀린 기초 Ch2. 코틀린 기초 2.1 기본 요소 : 함수와 변수 2.1.1 Hello World fun main(args: Array) { println("Hello World!") } 함수를 선언할 때는 fun 키워드를 사용한다. 변수명 뒤에 타입을 선언한다. 함수를 최상위 수준에 정의할 수 있다. 배열 문법이 따로 존재하지 않는다. 간결성을 위해 자바 메서드를 감싼 Wrapper 메서드가 있다. 세미콜론으르 생략 가능하다. 2.1.2 함수 fun max(a: Int, b: Int): Int = if(a>b) a else b 식(Expression): 값으로 치환될 수 있는 코드 문장(statement): 실행될 수 있는 코드 단위, 값을 만들어내지 않는다. 코틀린은 루프를 제외한 모든 제어 구조가 식이다.->.. 2021. 8. 20.
Part 1 - 코틀린 소개 코틀린이란? 자바 플랫폼(JVM)에서 돌아가는 새로운 프로그래밍 언어이다. 코틀린은 1. 간결하고 2. 실용적이며 3. 상호운용성을 중시하며 4. 안전하다. 코틀린은 범용 프로그래밍 언어로써, 서버 개발, 안드로이드 앱 개발 뿐만 아니라 다양한 분야에서 사용할 수 있다. 코틀인은 정적 타입 지정 언어이다. 객체의 타입을 컴파일 시점에 지정해서 컴파일 타임에 타입 오류를 검증할 수 있다. 정적 타입은 안전하지만 컴파일러에게 더 많은 정보를 제공해줘야하기 때문에 생산성이 떨어진다. 코틀린은 "var x = 1" 처럼 타입 추론 기능을 지원하기 때문에 안전성과 생산성의 트레이드 오프 관계를 벗어난다. 코틀린은 함수형 프로그래밍과 객체지향 프로그래밍을 동시에 지원한다. 코틀린에서 함수는 일반 객체이다. 함수형 .. 2021. 8. 1.
컴파일과 빌드의 차이 IDE에 익숙해진 초보 프로그래머들에게는 컴파일과 빌드의 차이는 애매모호하다. 잡지를 만드는 과정을 예로 들어 이해해보자. 어느날 PanGyo는 마음에 드는 잡지를 발견했다. 다만 아쉬운 점은 그 잡지가 영어로된 잡지여서 친구들과 같이 읽을 수 없다는 점이었다. 그래서 PanGyo는 영어로된 잡지를 한글로 번역해 출판하기로 마음먹었다. 출판하는 과정을 하나씩 살펴보자. 잡지는 영어로된 여러 기사들로 이루어져 있고, 각 기사에는 잡지내 다른 기사를 참조하는 경우가 잦다. 첫번째로 할 일은 각 기사를 한글로 번역하는 일이다. 기사를 영어에서 한글로 번역하면 친구들과 같이 읽을 수 있다. 두번째로 할 일은 원래 기사와 번역된 기사를 연결짓는 일이다. 예를 들어 "영문기사 A"가 번역되어 "한글기사 가"가 된 .. 2021. 7. 23.
로깅을 어떻게 해야할까? AOP를 공부하다보면 대표적인 Cross cutting concern의 예시로 로깅이 언급된다. 컨트롤러 어노테이션을 달고 다니는 오브젝트의 메서드들을 프록시로 감싸서 실행시간을 측정하는 것이 대표적인 로깅의 예시인데, 별로 마음에 들지 않는다. 아래 예시를 보자. 예제 수준의 로깅 코드다. 로깅 메세지를 보면 "-----(대충몇개)----> Respons : {} ~" 식으로 되어 있다. 그러면 거대한 시스템의 경우 초당 수십만개의 로그가 쌓이는데, 저렇게 로깅을 해도 될까? 유튜브 채널 EO에 우아한형제들 전 CTO, 현 CEO인 분이 나와서 얘기하시기를, 평시 리퀘스트는 초당 만개, 이벤트 시에는 200만개가 넘게 들어온다고 한다. 그러면 저런 문자열이 리퀘스트 *2 개만큼 생기고, 컨트롤러 로깅뿐.. 2021. 7. 15.