일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 스프링
- 클린코드
- 읽기쉬운코드
- JPA
- Java
- 엘라스틱서치
- 그리디알고리즘
- 개발자
- 그리디
- 코딩
- Elasticsearch
- Baekjoon
- API
- 자바
- Spring
- ES
- 개발
- 코딩테스트
- database
- spring boot
- 알고리즘
- 백준
- framework
- 프레임워크
- mongoDB
- 애자일프로그래밍
- 코드
- cleancode
- 데이터베이스
- 애자일기법
- Today
- Total
목록분류 전체보기 (182)
튼튼발자 개발 성장기🏋️

1. 프록시엔티티를 조회할 때 연관된 엔티티들이 항상 사용되는 것은 아닐 것이다. 지금 내가 리딩하고 있는 토이프로젝트만 봐도 유저 엔티티에 피드 엔티티, 댓글 엔티티 등 많은 엔티티와 연관관계를 갖는데 항상 사용되지는 않는다. 유저의 정보를 조회할 때 이 사용되지 않는 엔티티까지 조회하는 것은 굉장한 부담이 되고 비효율적일 것이다.JPA는 이런 문제를 해결하고자 엔티티가 실제 사용될 때까지 데이터베이스 조회를 지연하는 방법을 제공하는데 이것을 지연 로딩이라고 한다. 이 지연 로딩을 사용하려면 실제 엔티티 객체 대신에 데이터베이스 조회를 지연할 수 있는 가짜 객체가 필요한데 이 것을 프록시 객체라 부른다.1.1. 프록시 기초 프록시는 JPA가 엔티티의 연관관계를 처리하는 핵심적인 기법 중 하나로, 실제 ..

1. 토픽과 파티션1.1 적정 파티션 개수토픽은 카프카에서 데이터를 관리하는 기본 단위이며, 각 토픽은 여러 개의 파티션으로 구성된다. 파티션은 데이터의 분산을 가능하게 하며, 병렬 처리를 통해 성능을 최적화할 수 있다. 적정 파티션 개수를 결정하는 것은 매우 중요하다. 어떻게 설정하느냐에 따라서 성능을 좌우하기 때문이다. 적절한 파티션 개수는 다음 요소에 따라 결정된다.프로듀서/컨슈머 수: 높은 병렬 처리를 위해 파티션 수를 컨슈머 스레드(혹은 프로세스) 수와 비슷하게 맞추는 것이 이상적이다.데이터 처리량: 파티션 수가 많을수록 병목 현상이 줄어들며, 데이터 처리량이 증가한다.브로커 수: 파티션은 브로커에 분산되므로 브로커의 수에 따라 파티션 수를 조정해야 한다.ISR(In-Sync Replicas)와..
1. 상속 관계 매핑객체 지향 프로그래밍에서 상속은 중요한 개념인 것은 누구나 알고 있는 사실이다. JPA에서는 이러한 상속 관계를 데이터베이스 테이블에 매핑하는 여러 가지 전략을 제공한다.1.1. 조인 전략 (Joined Strategy)조인 전략은 부모 클래스와 자식 클래스 각각에 대한 테이블을 생성하고, 자식 클래스의 테이블은 부모 클래스의 기본 키를 외래 키로 참조하는 방식이다.@Entity@Inheritance(strategy = InheritanceType.JOINED)public abstract class Item { @Id @GeneratedValue private Long id; private String name;}@Entitypublic class Book extend..
단방향 연관관계순수한 객체 연관관계순수한 객체 모델에서는 클래스 간의 연관관계를 필드를 통해 나타낸다. 예를 들어, Member 객체가 Team 객체와 연관관계를 가질 때, Member 클래스는 Team 객체를 참조하는 필드를 가질 수 있다.public class Member { private Long id; private String name; private Team team;}public class Team { private Long id; private String name;}테이블 연관관계관계형 데이터베이스에서는 이러한 연관관계를 외래 키(Foreign Key)를 통해 관리한다. 위의 객체 모델을 데이터베이스에 매핑하면, MEMBER 테이블에는 TEAM_ID라는 외래 키..
Apache Kafka MirrorMaker 2 (MM2)는 클러스터 간 데이터 복제 및 동기화를 위해 사용하는 도구다. 이는 주로 다중 데이터 센터 간의 데이터 복제, 지리적으로 분산된 클러스터 구성 및 고가용성 아키텍처 구현에 사용된다. MirrorMaker 2는 Kafka Connect 프레임워크 위에서 작동하며, 기존 MirrorMaker의 한계를 개선한 버전이다.미러메이커2를 활용한 단방향 토픽 복제단방향 토픽 복제는 데이터가 원본 클러스터에서 복제 클러스터로 한 방향으로만 전송되는 복제 방식이다. 이 방식은 주로 백업, 데이터 이관, 또는 특정 지역의 데이터 처리 요구를 충족시키기 위해 사용된다.구성 방법:원본 Kafka 클러스터와 복제할 Kafka 클러스터를 설정MirrorMaker 2의 s..

카프카 커넥트(Kafka Connect)는 Apache Kafka의 데이터 통합 프레임워크로, 다양한 데이터 소스와 싱크를 Kafka로 연결하여 실시간으로 데이터를 전송하고 처리할 수 있도록 도와준다. 카프카 커넥트는 소스 시스템(데이터베이스, 파일 시스템, 메시지 큐 등)으로부터 데이터를 Kafka 토픽으로 가져오거나, Kafka 토픽에서 데이터를 추출하여 타겟 시스템(데이터베이스, Elasticsearch, HDFS 등)으로 보낼 수 있다. 카프카 커넥트는 확장 가능하고 유연한 아키텍처를 가지고 있으며, 단일 노드부터 클러스터 환경까지 지원한다. 커넥터와 태스크(Connector and Task)카프카 커넥트에서 커넥터(Connector)는 데이터 통합 작업을 구성하는 기본 단위다. 각 커넥터는 특정..

영속성 관리는 엔티티(Entity) 객체를 데이터베이스와 매핑하고, 엔티티의 생명주기를 관리하며, 영속성 컨텍스트(Persistence Context)를 통해 엔티티의 상태를 제어하는 데 사용된다. 이 글에서는 엔티티 매니저 팩토리와 엔티티 매니저, 영속성 컨텍스트, 엔티티 생명주기, 플러시, 준영속 상태와 같은 주요 개념을 포스팅한다. 1. 엔티티 매니저 팩토리와 엔티티 매니저엔티티 매니저 팩토리(EntityManagerFactory)는 JPA에서 엔티티 매니저(EntityManager)를 생성하는 역할을 한다. 이는 애플리케이션이 시작될 때 한 번 생성되며, 애플리케이션이 종료될 때까지 유지된다.엔티티 매니저 팩토리의 생성은 비용이 많이 들어가기 때문에 공유해서 사용하며 엔티티 매니저는 connect..

1. 카프카 스트림즈란? 카프카 스트림즈(Kafka Streams)는 카프카에서 스트리밍 데이터를 실시간으로 처리하고 분석하기 위한 자바 라이브러리다. 기존의 데이터 처리 시스템과는 달리, 카프카 스트림즈는 데이터가 들어오는 즉시 이를 처리하고 결과를 다시 카프카 토픽에 기록할 수 있다. 카프카 스트림즈는 MSA 아키텍처에 적합하며, 높은 처리량과 확장성을 제공한다. 스트림즈 애플리케이션은 스레드를 1개 이상 생성할 수 있으며, 스레드는 1개 이상의 태스크(Task)를 갖는다.이 태스크의 수는 파티션의 수와 일치하도록 한다. 기본적으로 라이브환경에서는 안정적으로 운영할 수 있도록 2개 이상의 서버로 구성하여 스트림즈 애플리케이션을 운영한다.1.1 KStreamsKStreams는 카프카 스트림즈에서 가장 ..