본문 바로가기
반응형

전체 글242

[ES] match vs term [ElasticSearch] match, term 쿼리 제대로 이해하기ElasticSearch 에서 검색을 위한 가장 기본적인 쿼리 DSL 을 작성한다고 하면 대부분 match 쿼리나 term 쿼리를 베이스로 작성합니다. 기본적인 match, term 쿼리의 동작을 자세히 정리해봤습니다.jaeyeong951.medium.com  match 와 term 쿼리 모두 특정 필드의 내용이 질의어와 일치하는 문서를 찾는데 사용합니다. 하지만 일치의 여부를 어떻게 찾는지에 대한 그 세부사항은 굉장히 다릅니다. GET index_for_search/_search{ "query": { "match": { "fieldForSearch": { "query": "this is something" } } }} 질의어인 “th.. 2024. 11. 6.
[공유] 신뢰성 있는 카프카 애플리케이션을 만드는 3가지 방법 (최원영 Cory) [2023.09.14. 제3회 Kakao Tech Meet 발표] 이벤트 드리븐 아키텍처와 스트림 데이터 파이프라인을 만들때 고민해야 하는 부분을 다룹니다. 프로듀서/컨슈머와 같은 카프카 애플리케이션의 전달 신뢰도를 높이기 위해서 적용할 수 있는 기술들에 대해 설명하고 내부적으로 적용했던 경험을 공유합니다.  메시지 전달 신뢰성-> 정확히 한번, 적어도 한번, 최대 한번프로듀서는 브로커에 레코더를 보내고 컨슈머가 브로커를 통해 레코드를 가져간다.신뢰성 있는 카프카를 만드는 3가지 방법 방법1) 멱등성 프로듀서 Idempotence producer프로듀서가 보내는 데이터 중복 적재를 막기 위해 enable.idempotencs 옵션을 제공한다. 3.0부터는 기본값이 true로 설정된다.기본 프로듀서와 달리.. 2024. 11. 2.
Kafka KRaft zookeeper어떤 브로커가 특정 파티션 및 토픽의 리더인지 결정하고 저장하는 역할토픽 추가 or 삭제, 브로커 추가 or 삭제 등 변경 사항이 발생하면 kafka에게 알려준다.단점 : kafka 자체가 아닌 외부에서 관리해야 하기 때문에 kafka 확장에 제한이 된다. (데이터 중복, 브로커와 zookeeper의 메타데이터 불일치, 시스템 복잠성 증가 등)  최신 버전 kafka는 zookeeper를 사용하는 대신 KRaft를 사용할 수 있다.kafka 내부에서 동작하며 kafka의 일부이기 때문에 관리 비용이 줄어든다.zookeeper 사용보다 확장성이 10배 이상 좋아지고, 배포와 운영이 더 쉬워진다고 한다. Controller Quorum의 장점zookeeper의 파티션 상한은 2000000개 .. 2024. 10. 27.
ORM 이란 Object-Relational Mapping코드에 있는 객체와 DB에 있는 데이터를 매칭시켜주는 도구 SQL문을 직접 쓰지 않아도 데이터 핸들링이 가능하게 한다. 장점보통 ORM들은 Mock Object를 지원하기 때문에 실제 DB가 없어도 테스트가 가능하다.단점쿼리가 복잡해지면 그냥 쿼리를 쓰는게 낫다. 지원하지 않는 기능을 어떻게든 해결하려하면 너무 어렵기 때문에.. 2024. 10. 27.
Router와 Switch, Switch와 Hub Router와 Switch Router: IP주소를 바탕으로 서로 다른 네트워크간의 통신을 지원하는 장치router로 데이터 패킷이 수신되면 자체 네트워크용인지 외부 네트워크용인지 IP주소를 검사한다. 외부 네트워크용인 경우 다른 라우터(다른 네트워크)로 보낸다. Gateway라고도 할 수 있다.소규모 사무실에서는 인터넷 엑세스를 위한 라우터가 필요하지만 대부분 스위치는 필요하지 않다. 그러나 다수의 컴퓨터가 있는 대규모 사무실, 데이터센터에서는 스위치가 필요하다.비싸다 Switch: 같은 네트워크 안에서 통신을 지원하는 장치라우터보다 싸다L1(X) : 더미허브, 모두 전송한다.L2(MAC) : 스위칭 허브, 정확한 목적지에만 전송한다.L3(IP) : 다른 네트워크로 패킷 전송 가능하다.L4(TCP/UD.. 2024. 10. 26.
Redis 란? In-Memory Storage라서 저장장치를 쓰는 RDB에 비해 빠르다.다양한 기능을 제공한다. (key-value, 위치 기반 검색, 랭킹, queue-stack, Transaction 지원, TTL 지원) 주요 기능Snapshot - 지속적으로 무중단 저장 장치에 저장 가능하다.Replication - 다른 노드에 복제가 가능하다.Redis Cluster - 여러대의 Redis로 분산 저장 및 처리가 가능하다.Thread Model - Nodejs Thread Model과 유사하다.Redis와 MemcacheD를 비교해봤을 때 Redis 의 사용빈도가 높은 거으로 보인다. Redis ClusterRedis client가 요청하려는 key를 해시 함수를 돌려 나온 값으로 노드를 찾아서 저장한다.데이터.. 2024. 10. 26.
멀티 프로세스 대세는 msamas는 여러 머신에 여러 process가 있는 상태독립적인 기능들을 process로 만들어서 실행한다. process간의 통신방법1. Http+json 은 쉬운데 느리다방법2. Tcp+Custom protocol 은 제공된 통신 라이브러리로 빠르다 process 단위정답은 없다.너무 쪼개면 시스템 복잡도가 상승하고 너무 크게 만들면 쪼갤 때 고생해야 한다.같은 프로세스 기능에 따라 다른 머신으로 분리가 가능하다. 2024. 10. 13.
Blocking Non-Blocking Blocking함수 실행 후 모든 코드가 완료된 후 리턴 Non-Blocking함수 실행 후 코드가 완료되지 않고 리턴 Non-Blocking 함수를 실행하고 완료됨을 아는 방법방법1 Polling - 주기적으로 확인함while(true) { if(isFinish == true) { break; } sleep(1000);}방법2 Event - Event가 발생했을 때 내가 원하는 함수를 호출해줌public async function Task GetString() { ...}string result = await GetString(); // Blocking 방식으로 호출되지만 다른 스레드에서 실행됨Console.Write(result); 2024. 10. 6.
클로저 Clousure 란? 클로저자바스크립트에서 내부 함수가 외부 항수의 스코프에 접근할 수 있게 해주는 특성입니다. 클로저를 사용하는 경우스코프 범위를 제어하고 변수의 접근성을 제한하여 보안성을 높일 수 있습니다.ex) 개인 정보를 보호하는 캡슐화 / private 변수 및 함수 생성 /고차함수에서 콜백함수 예시 코드function createPerson(name) { let _name = name; return { getName: function() { return _name; }, setName: function(name) { _name = name; } };}const person = createPerson('John .. 2024. 9. 21.
728x90
반응형