ELK 인덱스 구조와 Data streams
Datastream - 새로운 Elasticsearch 데이터 구조 이해하기 ES 저장 구조 클러스터 > 노드 > 샤드 하나의 인덱스가 여러 샤드에 나뉘어 저장되는 방식 카프카와 비슷하게 샤드를 나누고 replica를 나눠가져서 노드 하나가 다운이 되어도 나머지 노드에서 가지고 있는 샤드로 복원이 가능한 구...
Datastream - 새로운 Elasticsearch 데이터 구조 이해하기 ES 저장 구조 클러스터 > 노드 > 샤드 하나의 인덱스가 여러 샤드에 나뉘어 저장되는 방식 카프카와 비슷하게 샤드를 나누고 replica를 나눠가져서 노드 하나가 다운이 되어도 나머지 노드에서 가지고 있는 샤드로 복원이 가능한 구...
컬럼을 추가할까? 아니면 별도 테이블로 나눌까? 장단이 있는데, 컬럼은 나중에 추가 확장하기 쉽지 않다. 테이블은 트랜잭션을 이용한 정합성을 신경써야 한다. 간단한 원칙 ) 1:1 관계이면 컬럼, 1:n 관계이면 테이블, m:n 관계이면 매핑테이블 사례 ) 카드 발급과 관련된 비용 결제 정보를...
https://martinfowler.com/bliki/CodeOwnership.html Strong code ownership 강력한 코드 오너십은 코드 베이스를 모듈(클래스, 함수, 파일)로 분할하고 각 모듈을 하나의 개발자에게 할당한다. 개발자는 소유한 모듈에만 변경을 가할 수 있다. 다른 사람의 모듈에 대한 변경이 필요한 경우 해당 ...
GlobalScope가 무엇인가? GlobalScope를 쓰는게 적절한 use-case는? Global scope is used to launch top-level coroutines which are operating on the whole application lifetime and are not cancelled prematurely. An...
Dispatcher란? [!info] The coroutine dispatcher can confine coroutine execution to a specific thread, dispatch it to a thread pool, or let it run unconfined. 즉 코루틴이 어떤 thread(thread pool) 위에서 실행될지...
Spring data jdbc에서 save와 insert/update save(Entity)의 기본 동작 id 필드가 비어있을 때 : id가 DB에서 자동으로 채번이 될거라는 가정하에 (AUTO_INCREMENT 같은걸로) id 없이 INSERT 날린다. id 필드가 채워져 있을 때 : 해당 id 기준으로 UPDATE 날린다. 하지만 DB...
ORM @Entity를 Domain Model로 써도 될까? pros and cons 원래 Domain Model은 persistence와 무관하며, Pure해야 한다 Domain이 가장 높은 우선순위를 가지며 설계의 중심이 되는 것이 맞다. ORM을 쓰다가, 걷어내고 단순 쿼리 실행기(e.g., JDBC)로 변경해...
Scope Bean의 이해 (@JobScope, @StepScope) [!info] Scope Bean의 생명 주기와, 글로벌 싱글턴으로 동작하는 일반 Bean의 생명 주기가 달라 처음에는 헷갈릴 수 있다. Job을 생성하는 Bean에는 @JobScope를 붙일 수 없다. 붙이면 No context holder ava...
방안 비교 방안 param return 1 Domain Model Domain Model 2 flatten DTO 3 DTO DTO ...
Delegates.initOnlyOnce 어떤 변수가, 컴파일 타임 초기화 -> 불가능 앱 시작 시점에 초기화 -> 불가능 런타임 중간에 초기화 -> 가능 이면서 딱 한번만 초기화 되어야 하는 경우가 있다. 이런 패턴 적용하는데 적합한건 Delegate인데, standard Delegates 중에 제공되는건 없다. “...