본문 바로가기

BackEnd304

[PharmNav] Kafka vs Redis 성능 비교 분석 이번 글에서는 로컬 환경에서의 Redis와 Kafka 성능을 비교한다. Redis가 로컬에서 실행되고 있기 때문에, 동일한 환경에서 Kafka도 EC2가 아닌 로컬에서 실행하도록 코드를 수정하였다. 또한 Kafka는 배치 처리가 가능하기 때문에, 이전에는 컨슈머가 한 건씩 데이터를 읽었으나, 이번에는 배치 처리가 가능하도록 코드도 함께 수정하였다. 이를 위해 Kafka 및 Redis 관련 코드와 설정 파일을 다음과 같이 수정하였다. 1. docker-compose-local.yml 수정Redis와 Kafka를 모두 로컬 환경에서 실행할 수 있도록 네트워크 설정과 포트 설정을 조정하였다. 수정 전Redis와 Database 컨테이너만 정의됨.수정 후 Kafka, Zookeeper를 추가하여 로컬에서 실행되.. 2024. 9. 24.
[JPA] 도메인 분석 설계(1) 공부 내용을 정리하고 앞으로의 학습에 이해를 돕기 위해 작성합니다. 요구사항 분석기능 목록 회원 기능회원 등록회원 조회상품 기능상품 등록상품 수정상품 조회주문 기능상품 주문주문 내역 조회주문 취소기타 요구사항상품은 재고 관리가 필요하다.상품의 종류는 도서, 음반, 영화가 있다.상품을 카테고리로 구분할 수 있다.상품 주문시 배송 정보를 입력할 수 있다. 도메인 모델과 테이블 설계회원, 주문, 상품의 관계: 회원은 여러 상품을 주문할 수 있으며, 한 번 주문할 때 여러 상품을 선택할 수 있어 주문과 상품은 다대다 관계다. 이런 다대다 관계는 주문상품 엔티티를 추가해 일대다, 다대일 관계로 풀어낸다.상품 분류: 도서, 음반, 영화로 분류되며, 상속 구조로 표현된다. 회원 엔티티 분석회원(Member): 회원은.. 2024. 9. 23.
[PharmNav] kafka를 통한 성능 향상 레디스 기반의 캐싱이 적용된 PharmNav 프로젝트에 카프카를 도입하여 초기 데이터 적재를 개선하는 과정을 설명한다. 카프카는 대규모 데이터 전송과 분산 처리에 강점이 있는 메시징 시스템이지만, 이 프로젝트에서는 실시간 처리보다는 초기 데이터 전송에 활용된다. 사용자는 카프카로 적재된 데이터를 조회하는 기능만 사용하며, 데이터를 처리하는 것은 초기 적재 시에만 수행된다. 1. Kafka 의존성 추가카프카 기능을 사용하기 위해 build.gradle 파일에 spring-kafka 의존성을 추가한다.implementation 'org.springframework.kafka:spring-kafka'이 의존성은 스프링과 카프카의 연동을 쉽게 해 준다. 2. KafkaConfig 클래스 설정KafkaConfig.. 2024. 9. 20.
[BigData] Ch12. Kafka추가 활용 사례 공부 내용을 정리하고 앞으로의 학습에 이해를 돕기 위해 작성합니다. Kafka는 대규모 실시간 데이터 처리에 적합한 분산 스트리밍 플랫폼으로, 다양한 분야에서 활용되고 있다. 이번 장에서는 Kafka의 추가 활용 사례 중 하나인 동적 고객 채팅 시스템에 대해 알아본다. Dynamic Customer Chatting Kafka는 대규모 실시간 데이터 처리에 적합한 분산 스트리밍 플랫폼으로, 다양한 분야에서 활용되고 있다. 그중 하나가 동적 고객 채팅 시스템이다. 이 시스템은 사용자의 문의사항을 실시간으로 상담하는 데 사용되며, Kafka의 특성을 활용하여 구현할 수 있다.동적 고객 채팅 시스템 구성요소채팅방회원상담사채팅 내용의 발신 및 수신설계 시 고려사항채팅방의 수각 채팅방 참여자 수전달할 컨텐츠 특성채.. 2024. 9. 19.
[BigData] Ch12. Kafka StressTest 공부 내용을 정리하고 앞으로의 학습에 이해를 돕기 위해 작성합니다. 이번 포스트에서는 카프카 설정이 실제 운영 환경에서 어떤 부하를 발생시킬지 예측하는 테스트를 진행한 내용을 다룬다. 이를 통해 시스템이 고부하 상태에서 어떻게 동작하는지 파악할 수 있다. 초기 테스트 설정./kafka-producer-perf-test.sh --topic stress-test --num-records 1000 --throughput -1 --producer-props bootstrap.servers="3.39.223.252:9092,43.203.201.212:9092,3.36.122.61:9092" batch.size=10 acks=0 linger.ms=100 --record-size 1000배치 사이즈: 10레코드 크기.. 2024. 9. 19.
[BigData] Ch12. 대량 Kafka Message Join Test 공부 내용을 정리하고 앞으로의 학습에 이해를 돕기 위해 작성합니다. 이번 글에서는 대량의 메시지를 생성하여 Kafka 컨슈머에 넘기는 작업을 다룬다. 주로 Kafka 스트리밍 환경에서 광고와 구매 로그를 처리하고, 이를 이용해 광고 효과를 분석하는 서비스 로직을 구현한다. 이를 위해 다양한 Kafka 설정과 메시지 직렬화, 대량 메시지 생성 로직을 설명한다. Kafka 설정Kafka 스트림과 프로듀서를 설정하는 과정에서, 광고 로그(WatchingAdLog)와 구매 로그(PurchaseLog), 그리고 두 데이터를 조인하여 분석 결과를 전송하는 토픽을 각각 생성하고 설정한다. 각각의 토픽에 맞춰 ProducerFactory와 KafkaTemplate를 설정하여, 여러 종류의 데이터를 효율적으로 처리할 수.. 2024. 9. 19.