본문 바로가기

전체 글42

[MSA] Saga 패턴을 통한 분산DB 트랜잭션 출처 크리스 리차드슨이 저술한 'Microservices Patterns with Examples in Java' 의 번역본인 '마이크로서비스 패턴' 책을 정리한 내용입니다. (https://product.kyobobook.co.kr/detail/S000001834349) 마이크로서비스 패턴 | 크리스 리처드슨 - 교보문고 마이크로서비스 패턴 | 모놀리식 애플리케이션을 마이크로서비스 아키텍처로 성공적으로 전환하는 방법!마이크로서비스 아키텍처 기반의 애플리케이션을 성공적으로 구축하려면 새로운 아키 product.kyobobook.co.kr 주요내용 · 왜 분산 트랜잭션이 최신 애플리케이션에 적합하지 않은지 이해하기 · 마이크로서비스 아키텍처에서 사가(Saga) 패턴 이용하여 데이터 정합성을 유지하기 · 코.. 2022. 9. 27.
[Redis] Bitmap 구조 활용하기 특정 유저군을 타겟팅하는 과정에서 Redis의 SET 구조 대신 Bitmap 구조를 이용하여 어떻게 메모리를 절약할 수 있었는지에 대해 이야기하려고 합니다. 인게임에선 이벤트 조건에 맞는 유저를 타겟팅하여 응답을 수집하고, 참여한 유저에겐 소정의 리워드를 지급하고 있습니다. 특정 유저에게 맞는 이벤트만을 제공하기 위하여 내부의 타겟 시스템을 이용해 이벤트마다 참여할 수 있는 유저의 고유 ID를 보관하고 있습니다. 이 과정에서 Redis에는 이벤트에 참여할 수 있는 유저 ID 목록을 SET 구조로 저장하였는데요, 보관해야 하는 유저의 수에 비해서 Redis에서 차지하는 메모리 크기가 지나치게 비대한 문제가 있었습니다. 쿠폰 이벤트에서는 Redis를 이렇게 사용합니다. 이벤트 운영을 위한 사내 어드민 페이지.. 2022. 9. 25.
[Kafka] 성능 최적화 2 - Throughput 시작하며... 이번에는 4개의 성능 목표 중 첫번째로 Throughput에 대해서 어떤 파라미터를 튜닝하는지 알아보겠습니다. 프로듀서와 컨슈머의 option 중 어떤 option이 Throughput에 영향을 주는지 알아보며 어떻게 이 옵션의 파라미터가 영향을 주며, 어떻게 설정해야하는지를 보도록 하겠습니다. Throughput : 처리량으로 불리우며, 카프카가 얼마나 많은 데이터를 처리할 수 있는지에 대한 메트릭이다. 1. Producer를 통한 Throughput 최대화 Partition Throughput를 최적화하는 방법은 Partition 수를 증가시키는 방법이 대표적입니다. Partition의 수를 증가시키면, 분산효과를 가져오며 분산처리를 하면 할 수 록 더 많은 데이터를 처리할 수 있어 T.. 2022. 9. 21.
[Kafka] 성능 최적화 1 - 파라미터 정리 성능 목표 4가지 성능 목표는 4가지로 정리할 수 있습니다. Throughput : 처리량으로 불리우며, 카프카가 얼마나 많은 데이터를 처리할 수 있는지에 대한 메트릭이다. Latency : 지연 시간으로 불리우며, 카프카가 얼마나 빠르게 하나의 메시지를 빠르게 전달하는지의 메트릭이다. Durability : 내구성, 영속성있는 등으로 불리우며, 카프카가 얼마나 메시지의 유실을 최소화하는지의 메트릭이다. Availability : 가용성으로 불리우며, 카프카가 얼마나 서버의 다운에 대해서 최소화하는지의 메트릭이다. 이제 각 성능 목표는 4가지로 정리했습니다. 모든 성능 목표를 최적화 할 수 있다면 매우 좋은 방법이겠지만 그렇지 못합니다. 목표별 trade-off 관계가 되는 것이 있는데, Throughp.. 2022. 9. 18.
[Kafka] 스트림즈, 커넥트, 미러메이커2 출처 : 아파치 카프카 애플리케이션 프로그래밍 with 자바 책을 읽고 정리하였습니다. 카프카 스트림즈 카프카 스트림즈는 토픽에 적재된 데이터를 실시간으로 변환하여 다른 토픽에 적재하는 라이브러리입니다. 보통 빅데이터 처리에 필수적이라고 판단되었던 분산 시스템이나 스케줄링 프로그램들은 스트림즈를 운영하는 데에는 불필요합니다. 자바 라이브러리로 구현하는 스트림즈 애플리케이션은 JVM 위에서 하나의 프로세스로 실행되기 때문입니다. 프로듀서 -> 카프카 클러스터 -> 컨슈머 ↕ 스트림즈 애플리케이션 cf) 프로듀서와 컨슈머를 조합해서 사용하지 않고 스트림즈를 사용해야 하는 이유 스트림 데이터 처리에 있어 필요한 다양한 기능을 스트림즈DSL로 제공하며 필요하다면 프로세서 API를 사용하여 기능을 확장할 수 있기.. 2022. 9. 15.
[Git] SSL certificate problem : self signed certificate 에러 SSL 보안서버 인증서를 구매하여 사용하지 않고, Open SSL 인증서를 사용한 경우 git push시 SSL에러가 발생한다. 이를 해결하기 위해 CA에서 인증하는 절차를 무시하는 방법이 있다. window 사용자는 cmd mac 사용자는 terminal에서 git config --global http.sslVerify false 명령어를 사용하여 global값을 설정한다. 2022. 9. 14.