데이터 모델의 이해모델링의 개념현실세계의 데이터를 약속된 표기법에 따라 도식화한 것데이터베이스 구축 및 업무 형상화(추상화, 가시화, 명세화)를 진행하여 이를 설계, 개발 또는 시스템 관리에 사용모델링의 특징추상화(Abstraction)대상의 주요 특징을 추출하여 일정한 형식으로 표현단순화(Simplification)복잡한 현실세계를 그대로 표현하지 않고 단순하게 표현UML(Unified Modeling Language), ERD(Entity Relationship Diagram)과 같은 약속된 표기법을 사용명확화(Clarity)보는 사람 관점에 따라 다르게 해석되지 않도록 대상을 명확하게 모호하지 않게 표현데이터 모델링일정한 표기법을 사용하여 대상이 되는 데이터를 추상화, 단순화, 명확화 하여 표현주의..
샤딩(Sharding)과 클러스터링(Clustering)은 모두 대규모 데이터와 높은 트래픽을 처리하기 위해 사용되는 데이터 분산 기술입니다.하지만 목적과 구현 방식에서 차이가 있습니다.샤딩(Sharding)정의데이터를 수평적으로 분할하여 여러 데이터베이스 노드에 분산 저장하는 방식각각의 분할된 데이터는 샤드(Shard)라고 불리며, 각 샤드는 독립적으로 작동합니다.특징데이터 분산:전체 데이터셋을 여러 샤드로 나누어 저장샤드 간에는 중복 데이터가 거의 없고, 각 샤드가 고유 데이터만 저장샤드 키(Shard Key):데이터를 분산할 기준이 되는 필드예: 사용자 ID, 주문 ID, 날짜 등수평 확장:샤드를 추가하면 데이터 저장 용량과 처리 능력이 확장장단점대규모 데이터 처리를 효율적으로 분산쓰기 및 읽기 성..
컨버터를 사용하면 엔티티의 데이터를 변환해서 데이터베이스에 저장할 수 있다. 예를 들어 회원의 VIP여부를 데이터베이스에는 "Y", "N"으로 저장하고 엔티티에서는 boolean 타입으로 변환해서 사용할 수 있다. @Entity public class Member { ... @Convert(converter = VipConverter.class) private boolean isVip; } @Converter public class VipConverter implements AttributeConverter { // 엔티티의 데이터를 데이터베이스 컬럼에 저장할 데이터로 변환 @Override public String convertToDatabaseColumn(Boolean attribute) { retu..
ELK란? 데이터 분석 및 저장 기능을 담당하는 Elasticsearch 데이터 수집 기능을 하는 Logstash 이렇게 수집한 데이터를 시각화하는 Kibana 그림처럼 3가지의 앞글자만 딴 Log 및 데이터 분석 도구이다. ELK는 접근성과 용이성이 좋아서 요즘 많이 사용하는 추세다. Elasticsearch Elasticsearch는 Apache Lucene( 아파치 루씬) 기반의 Java 오픈소스 분산 검색 엔진 Elasticsearch를 통해 루씬 라이브러리를 단독으로 사용할 수 있게 되었으며, 방대한 양의 데이터를 신속하게, 거의 실시간( NRT, Near Real Time )으로 저장, 검색, 분석할 수 있다. Logstash 다양한 소스로부터 데이터를 수집하고 곧바로 전환하여 원하는 대상에 ..
Kafka Broker & Zookeeper란? 브로커(broker)는 실행된 Kafka application 서버를 뜻한다. 주키퍼(zookeeper)는 이러한 분산 메세지 큐의 정보를 관리해 주는 역할을 한다. kafka를 띄우기 위해서는 주키퍼가 반드시 실행되어야 한다. 3대 이상의 브로커로 클러스터를 구성한다. 주키퍼와 연동(~2.5.0버전) 주키퍼의 역활 : 메타데이터(브로커id, 컨트롤러id 등) 저장 추후에는 주키퍼와 연동하지 않도록 구성할 예정 → 메타데이터를 브로커 안에 저장 n개 브로커 중 1대는 Controller기능을 수행한다. Controller : 각 브로커에게 담당파티션 할당 수행, 브로커 정상 동작 모니터링 관리 누가 Controller인지는 zookeeper에 저장 Brok..
시스템 간 강결합의 문제 만약 외부 시스템과의 연동으로 서비스를 구축할 경우, 외부 시스템이 정상적으로 작동하지 않을때 트랜잭션 처리로 인한 롤백이 애매해지게 된다. 롤백 처리를 하지 않고 추후에 처리를 할 수 있겠지만 문제가 되는 외부시스템에서 응답 시간이 오래 걸리게 되면 내부 서비스에도 영향을 준다. 그리고 외부 시스템이 내부 시스템 코드에 영향을 주는 문제도 생길 수 있다. 이는 외부 시스템과의 문제뿐만 아니라 내부 시스템간에도 생길수 있는 문제들이다. 이러한 문제는 BOUNDED COUNTEXT 간에 강결합(high coupling) 때문이다. 이러한 문제를 해결하는 방법이 있는데 그것은 바로 이벤트를 사용하는 것이다. 이벤트 관련 구성요소 이벤트 핸들러(handler)는 이벤트 생성 주체가 발..