전체 글(78)
-
Kafka의 분산처리
성능 개선: Kafka 기반 채팅 서비스 아키텍처 최적화 사례 1. 문제 상황기존의 채팅 서비스에서는 모든 채팅방의 메시지가 하나의 Kafka 토픽과 하나의 파티션에서 처리되었습니다. 초기 구현에서는 단일 채널로도 정상적으로 동작했지만, 채팅방 수가 증가하면서 다음과 같은 문제가 발생했습니다:처리 병목현상: 단일 파티션으로 인해 모든 메시지가 순차적으로 처리되어 동시 처리 능력이 제한되었습니다.시스템 리소스 불균형: 메모리 및 CPU 사용이 특정 시점에 집중되면서 성능 저하와 응답 시간 증가가 발생했습니다.스케일링 어려움: 새로운 채팅방이 추가될수록 기존 토픽의 부담이 커져 확장성이 떨어졌습니다. 2. 기존 구조와 한계처리 방식: 하나의 토픽, 하나의 파티션에서 모든 채팅방을 처리.동시성 제한: 메시지가..
2024.11.24 -
kafka
Kafka란?Apache Kafka는 고성능, 내구성, 그리고 확장 가능한 분산 스트리밍 플랫폼이다. Kafka는 데이터 파이프라인을 구축하고 실시간 데이터 스트리밍을 처리하는 데 매우 적합하다.프로듀서(Producer): 메시지를 생성하여 Kafka 토픽으로 전송하는 역할을 한다.컨슈머(Consumer): Kafka 토픽에서 메시지를 읽어오는 역할을 한다.브로커(Broker): Kafka 서버로, 토픽과 메시지를 저장하고 관리한다.토픽(Topic): 메시지가 게시되는 논리적 채널이다.Kafka는 다음과 같은 경우에 많이 사용된다:실시간 데이터 처리: 실시간 로그, 이벤트 스트리밍 처리데이터 파이프라인: 서로 다른 시스템 간의 데이터 전송분산 시스템: 여러 마이크로서비스 간의 메시지 교환데이터 통합: 다..
2024.08.04 -
Hibernate Naming Strategies
혼자 공부할겸 프로젝트를 진행하다가 예상치못한 오류에 막혀서 많은 시간을 소요하였다.데이터베이스의 테이블에서 값을 전혀 불러오지 못하는 문제였다.아무리 찾아봐도 문제를 찾지 못하다가 혹시나 하는 마음에 모든 테이블을 조회해보았고 생성한 적 없는 테이블이 만들어져있는 것을 봤다.기존에 만든 테이블은 orderItems인데 새로 생성된 테이블은 order_items가 있었다.분명 엔티티에서 table(name="orderItems")로 작성해서 orderItems테이블과 매핑이 되어있을 것이라고 생각했는데 order_items테이블이 새로 생기며 여기와 매핑을 하고 있던 것이다. 이는 바로 Hibernate Naming Strategies의 Physical Naming Strategy의한 것이다. Hibe..
2024.06.26 -
[AWS] EC2와 RDS 설정 및 프로젝트 배포
AWS EC2와 RDS 인스턴스를 설정하고, GitHub에서 프로젝트를 클론하여 빌드하고 배포하는 방법을 단계별로 안내하고자 한다.또한, S3를 이용한 빌드 및 배포 방법도 소개할 것이다.1. AWS EC2 인스턴스 설정1.1. EC2 인스턴스 생성AWS 콘솔에 로그인하고 EC2 대시보드로 이동한다.인스턴스 시작 버튼을 클릭한다.**Amazon Machine Image (AMI)**에서 원하는 OS를 선택한다. (예: Amazon Linux 2)인스턴스 유형을 선택한다. (예: t2.micro)인스턴스 세부 정보 구성, 스토리지 추가 및 태그 추가 단계를 기본값으로 둔다.보안 그룹 구성 단계에서, 새로운 보안 그룹을 생성하고 HTTP(80) 및 SSH(22) 포트를 허용한다.검토 및 시작 버튼을 클릭한 ..
2024.06.12 -
관계 매핑 전략(@OneToMany, @ManyToOne, @OneToOne, @ManyToMany), 상속 매핑 전략 (SINGLE_TABLE, JOINED, TABLE_PER_CLASS)
Java Persistence API (JPA)는 객체 관계 매핑(ORM) 기술을 통해 객체 지향 프로그래밍 언어의 객체를 관계형 데이터베이스의 테이블에 매핑한다. JPA에서는 다양한 엔티티 간의 관계를 정의할 수 있다. 본 글에서는 JPA에서의 @OneToMany, @ManyToOne, @OneToOne, @ManyToMany에 대해 설명하고, 각각의 관계에서 데이터를 저장, 수정, 삭제하는 예시를 다룰 것이다. 또한 JPA의 상속 매핑 전략에 대해서도 자세히 살펴보자.엔티티 간의 관계@OneToMany와 @ManyToOne@OneToMany와 @ManyToOne 관계는 가장 흔히 사용되는 관계 중 하나로, 하나의 엔티티가 여러 엔티티와 관계를 맺는 경우이다.예시: 국가와 도시의 관계Country: 여..
2024.05.30 -
로깅(SLF4J)
소프트웨어 개발에서 로깅은 디버깅과 모니터링에 필수적인 요소이다. 자바 환경에서는 다양한 로깅 프레임워크가 존재하지만, 이러한 프레임워크를 통합적으로 관리하기 위해 SLF4J(Simple Logging Facade for Java)가 등장했다. 이 글에서는 SLF4J의 개념, 장점, 사용법, 그리고 실제 코드 예제를 통해 SLF4J에 대해 알아보자. SLF4J란?SLF4J는 자바에서 다양한 로깅 프레임워크에 대한 추상화된 인터페이스를 제공하는 통합 로깅 API이다. SLF4J는 로깅 프레임워크의 구현체에 의존하지 않고, 애플리케이션 코드에서 일관된 로깅 인터페이스를 사용할 수 있게 해준다. 대표적인 로깅 프레임워크로는 Logback, Log4j, Java Util Logging 등이 있다. 주요 특징통합..
2024.05.30