본문 바로가기
반응형

전체 글205

[6] 데이터 스트림 로그, 이벤트 및 메트릭과 같은 지속적으로 생성되는 시계열 데이터를 수집하는 경우, 문서의 수가 급격하게 증가하고 이전 문서를 업데이트할 필요가 없는 경우가 있을 때가 있습니다. 데이터 스트림은 타임스탬프 필드가 있는지 확인하고 시계열 데이터에 가장 적합한 설정을 시행합니다. 내부적으로 여러 backing 인덱스로 구성되는데, 검색 요청은 모든 backing 인덱스에 라우팅 되는 반면에 인덱싱 요청은 최신 쓰기 인덱스로 라우팅됩니다. ISM 정책을 사용하면 인덱스 롤오버 또는 삭제를 자동으로 처리할 수 있습니다. :: 인덱스 템플릿 만들기 데이터 스트림을 생성하려면 먼저 인덱스 세트를 데이터 스트림으로 구성하는 인덱스 템플릿을 생성해야 합니다. data_stream 객체는 일반적인 인덱스 템플릿이 아닌 .. 2022. 2. 25.
HTTPS의 통신과정 HTTPS란? HTTPS는 월드 와이드 웹 통신 프로토콜인 HTTP의 보안이 강화된 버전이다. HTTPS는 소켓 통신에서 일반 텍스트를 이용하는 대신에, SSL이나 TLS 프로토콜을 통해 세션 데이터를 암호화하여 데이터의 적절한 보호를 보장한다. 통신 과정 1. 클라이언트에서 서버로 연결을 시도하는 패킷을 전송한다. Client가 사용가능한 Cipher suite 목록이 포함되어있다. 어떤 프로토콜(TLS/SSL)을 사용할지, 인증서 검증 또는 데이터를 어떤 방식으로 암호화할지 등이 표시된다. 2. 클라이언트에게서 받은 패킷에 대해 서버가 응답을 한다. 여기에는 클라이언트에게서 받은 Cipher suite 중 하나를 보낸다. 3. 2번 패킷 외에도 인증서에 대한 패킷을 보낸다. 인증서는 서버가 발급받은 .. 2022. 2. 23.
[5] 인덱스 별칭 (aliases) 별칭은 하나 이상의 인덱스를 가리킬 수 있는 가상 인덱스 이름입니다. 데이터가 여러 인덱스에 분산되어 있는 경우 쿼리할 인덱스를 추적하는 대신 별칭을 만들어 쿼리할 수 있습니다. 에를 들어, 월 단위 로그를 인덱스에 저장하고 이전 2개월 동안 로그를 자주 쿼리하는 경우 'last_2_months'라는 별칭을 만들고 매달 업데이트 할 수 있습니다. 별칭이 가리키는 인덱스는 언제든지 변경할 수 있으므로 별칭을 사용하여 인덱스를 참조하면 다운타임 없이 데이터를 다시 인덱싱할 수 있습니다. :: 별칭 만들기 // 별칭을 만들때 POST 요청을 사용합니다. POST _aliases // 아래는 actions를 사용하여 'alias1'이라는 별칭을 만들고 'index-1'을 이 별칭에 추가하는 요청이다. POST .. 2022. 2. 22.
OSI 7계층 물리 계층 전기적인, 기계적인 신호를 주고 받는 역할을 하는 계층. 네트워크의 기본 네트워크 하드웨어 전송 기술을 이룬다. 비트의 0, 1의 단위로 통신한다. 이 계층에 속하는 대표적인 장비는 통신 케이블, 허브, 리피터 등이 있고, 데이터의 종류나 오류를 제어하지 않는다. 데이터 링크 계층 P2P간의 신뢰성 있는 전송을 보장하기 위한 계층이다. 전송 데이터에 대한 CRC 오류제어와 흐름제어가 필요하다. 네트워크 위의 개체들 간 데이터를 전달하고 물리 계층에서 발생할 수 있는 오류를 찾아내고 수정하는데 필요한 기능적, 절차적 수단을 제공한다. 주소 값은 물리적으로 할당 받는데, 네트워크 카드가 만들어질 때부터 맥 주소가 정해져 있다는 뜻이다. 네트워크 브릿지나, 스위치 등이 이 계층에서 동작하며 직접 이.. 2022. 2. 21.
SOLID (객체 지향 설계) SOLID 원칙들은 소프트웨어 작업에서 프로그래머가 소스 코드가 읽기 쉽고 확장하기 쉽게 될 때까지 소프트웨어 소스 코드를 리팩터링하여 코드 냄새를 제거하기 위해 적용할 수 있는 지침이다. S ( Single responsibility principle ) 단일 책임 원칙 한 클래스는 하나의 책임만 가져야 한다. 그리고 그 책임을 완전히 캡슐화해야 한다. 이것은 클래스를 더욱 튼튼하게 만들기 위함이다. 만약 한 클래스가 여러 책임을 가지고 있다면 수정 과정에서 같은 클래스의 일부 출력 코드가 망가질 위험이 대단히 높다. 클래스는 설계도 도면과 마찬가지이다. 자동차 설계도에서 자동차를 만드는 방법만 가지고 있어야하지 완전히 다른 것을 만드는 방법까지 가지고 있을 필요도 없고 가지고 있어서도 안된다. O (.. 2022. 2. 21.
[4] 인덱스 데이터 OpenSearch에는 인덱스 API와 _bluk API 두 가지가 있다. 새로운 데이터가 점진적으로 ( 소규모 비즈니스의 고객 주문 등 ) 쌓이는 구조의 경우 인덱스 API를 사용하여 개별적으로 문서를 추가할 수 있다. 데이터의 흐름이 더욱 천천히 쌓이는 경우 ( 마케팅 웹사이트에 대한 주간 업데이트 등 ) 파일을 생성하여 _bluk API로 보내는 것이 좋습니다. 많은 수의 문서에 대해 함께 묶어서 _bluk API를 사용하면 우수한 성능을 제공 받을 수 있습니다. 하지만 문서가 그보다 방대하다면 개별적으로 인덱스를 생성하는 것이 좋습니다. 데이터를 검색하려면 먼저 인덱스를 생성해야 합니다. OpenSearch는 고유 ID를 사용하여 각 문서를 식별합니다. // Index API 요청 PUT /_do.. 2022. 2. 18.
[3] 인덱스 생성과 설정 예제 :: Index Naming Restrictions 모든 문자는 소문자만 가능. 인덱스 이름의 시작은 '_'나 '-'로 시작될 수 없음. 인덱스 이름은 다음의 문자열을 포함할 수 없음. ( :, ", *, +, /, \\, |, ?, #, >, or < ) Movie라는 이름을 가진 인덱스의 생성 예시 기본적으로 settings와 mappings라는 key를 가진 JSONObject로 인덱스에 대한 설정 정보를 입력한다. // movie라는 이름을 가진 인덱스의 생성 예 PUT /movie { "settings": { "number_of_shards": 1, "number_of_replicas": 1, "shard": { "check_on_startup": false } }, "mappings": { ".. 2022. 2. 17.
[2] Opensearch와 클러스터 설정 Opensearch 구성은 cluster setting API에서 설정할 수 있다. 특정 부분은 opensearch.yml 파일을 수정하고 다시 시작해야되는 부분이 있는데, 이 특정 부분을 제외하고는 가능하면 cluster setting API를 사용하는 것이 좋다. cluster setting API는 클러스터 내 전체 노드의 설정을 적용하지만 opensearch.yml파일을 수정하는 것은 각각의 노드 설정을 변경하는 것이 된다. opensearch.yml 파일을 수정해야되는 특정부분은 네트워킹, 클러스터 구성, 로컬 파일 시스템에 대한 수정 작업이 이루어질 때이다. Opensearch에서 데이터를 검색 및 집계하기 전에 클러스터 생성부터 이루어져야 한다. 단일 노드 또는 다중 노드 클러스터로 작동할 .. 2022. 2. 14.
[1] OpenSearch란? Opensearch와 일반 RDB 비교 1. OpenSearch란? Elastic NV는 소프트웨어 라이선스 전략을 변경하는 바, 퍼미시브 ALv2 라이선스 하에서 Elasticsearch 및 Kibana의 새로운 버전을 더 이상 릴리스하지 않는다고 발표함으로써, AWS에서 마지막 ALv2 버전의 Elasticsearch 및 Kibana에서 갈래를 생성하고 유지 관리하기로 한 것을 Opensearch라고 지칭하였다. 2. OpenSearch와 일반 RDB 비교 일반 RDB 엘라스틱서치(Opensearch) 비고 Database, table index , type 일반 RDB는 하나의 Database 내에 여러개의 table을 가질수 있으나, 엘라스틱서치 6 (?)부터는 index당 오직 하나의 type 만 가질수 있습니다. 엘라스틱서치 7 에.. 2022. 2. 12.
경기지역화폐 사용처 확인 방법 알아보기! 비용문제로 인해 서비스를 내리게 되었습니다 (_ _) 카카오톡에서 편하게 경기지역화폐 사용처를 찾을 수 있는 지도를 만들었습니다. 아직 경기도 전역 검색은 안되는데 금방금방 업데이트하고 있어요! 아직 안나오는 지역들도 금방 추가할 예정입니다. 카톡채널 '경기지역화폐 사용처'라고 검색하면 나오고 한 눈에 위치를 볼 수 있어 좋고, 느리지도 않아서 빠르게 찾아 볼 수 있습니다. 또한 카테고리별로 찾을 수 있고, 상호명으로도 빠르게 찾을 수 있어서 좋아요. 친구 추가 하시고 채팅방에서 아래 사용 방법버튼 누르시고 사용처보기 버튼 누르시면 바로 찾아 보실 수 있습니다! 아래 링크 남겨드릴게요~! 경기지역화폐 사용처 카카오톡 채널 링크 : http://pf.kakao.com/_mSdxaxb 경기지역화폐 사용처 경.. 2020. 4. 16.
[Spring] JPA Specification Example Spring JPA Specification Simple Example 스프링 JPA Specification 예제 - Extended 'JpaSpecificationExecuter' class Repository 인터페이스에 JpaSpecificationExecutor 클래스를 extend 시켜주었다. public interface UserRepository extends CrudRepository, JpaSpecificationExecutor { } - Created methods for criteria API Specification 객체를 리턴하는 메소드를 따로 구현하였다. userId가 인자로 받은 id인 경우와 name이 인자로 받은 name인 경우(동등비교 equal)이다. public st.. 2019. 4. 2.
[ES 6] 모듈이란? 1. ES6 새로운 모듈 구현 방법 ES6 모듈은 ES6부터 신설된 모듈 시스템이고 자바스크립트 언어 자체에 내장된 표준 모듈이다. 비교적 구문이 간결하고 성능이 우수하며 많은 최신 API가 ES6 모듈로 패키징되고 있다. A. 모듈 Export - ES6 모듈은 변수, 함수, 클래스, 기타 엔티티를 익스포트할 수 있다. 모듈에서 익스포트 시 사용하는 export 구문은 아래와 같은 형식들이 있다. export {a}; // 1 export {a, b}; // 2 export {a as variableA}; // 3 export {a as default}; // 4 export default function () {}; // 5 export {c, d} from "myAnotherModule"; // 6.. 2017. 9. 19.
[ES 6] Class 구문과 상속 1. class 구문 ES6의 클래스는 기존 모델에 단지 새롭게 추가된 구문일 뿐, 새로운 객체 지향 모델은 아니다. 단순히 생성자와 상속을 좀 더 간단하고 명확한 구문으로 다룰 수 있게 해주는 구문이다. 클래스는 사실은 함수이며 생성자로 사용한 함수를 생성하는 새로운 구문의 일원이다. 다음은 클래스를 선언하는 방법이다. class User { constructor(name, age) { this._name = name; } } let user = new User("유저"); console.log(user._name); User클래스를 생성 후 그 안에 constructor 메소드를 정의했다. 그리고 클래스의 새 인스턴스, 즉 name 프로퍼티가 있는 객체를 생성했다. 클래스 바디 안의 모든 코드는 기본.. 2017. 9. 19.
[ES 8] async/await 2017/09/15 - [Javascript/ECMAScript 2015 (ES6)] - [ES 6] Promise 비동기 요청 1. async/await Promise 패턴의 then 체이닝도 복잡하다! 더욱 간단한 방법이 async/await입니다. async/await은 프로미스 객체를 아래 예제처럼 다양한 함수식에서 쓰일 수 있습니다. async function getUser(userIdx) { try { let user = await Database.query(`query`); return user; } catch(e) { console.log(e.message); } } let getUser = async function (userIdx) { let user = await Database.qu.. 2017. 9. 15.
[ES 6] Promise 패턴을 사용한 http request 요청 Promise 패턴은 이벤트/콜백 패턴의 골칫거리(콜백헬)를 해소하고 비동기 코드를 마치 동기 코드처럼 표현하는 것을 말한다. 1. Promise 생성자 Promise 생성자는 Promise 인스턴스를 생성한다. 이 때 비동기 작업에 해당하는 실행자 콜백을 넘기는데, 실행자는 귀결(resolve)콜백과, 버림(reject)콜백 두 파라미터를 가진다. 작업이 성공하면 resolve, 실패하면 reject콜백이 실행된다. 아래 예제를 보자. function httpRequest(url, method) { return new Promise((resolve, reject) => { let request = new XMLHttpRequest(); request.open(method, url); request.ad.. 2017. 9. 15.
반응형