본문 바로가기

자바 심화

(27)
SAGA 패턴 개요MSA 프로젝트에서 데이터의 일관성을 유지하기 위한 방법 중 하나인 SAGA 패턴에 대해 배우고 간단하게 적용해 볼 것이다. SAGA Pattern?분산 시스템에서 데이터의 일관성을 유지하기 위해 사용되는 설계 패턴으로, 하나의 분산 트랜잭션을 여러 개의 작은 로컬 트랜잭션으로 나누어 처리한다.이 패턴은 각 서비스가 독립적으로 동작할 수 있도록 설계되었으며, 분산 트랜잭션의 어려움을 해결하기 위한 방법 중 하나. SAGA 패턴 작동 방식Choreography 방식각 서비스가 자신의 작업을 완료한 후 다음 작업을 수행할 서비스를 호출하거나 이벤트를 발행한다.이벤트 기반으로 동작하며, 중앙 집중식 관리가 없다.서비스들이 서로 느슨하게 결합되어 있어 확장이 쉽다.단점: 서비스 간의 의존성이 높아질 수 있으..
Kafka - 기초 개요MSA 통신을 위해 사용되는 메시지 브로커인 Kafka, RabbitMQ 중 Kafka에 대해 배워볼 것이다. Kafka(Apache Kafka)분산 스트리밍 플랫폼, 주로 실시간 데이터 스트리밍 처리 및 메시지 브로커 역할.대규모의 데이터 스트림을 처리하고 저장하며, 다양한 소비자가 데이터를 실시간으로 구독할 수 있도록 설계. 주요 특징 및 기능 분산 시스템Kafka는 여러 노드에 걸쳐 데이터와 작업을 분산하여 높은 처리량과 내구성을 제공한다.내구성 및 확장성데이터는 디스크에 저장되며, 복제를 통해 장애가 발생해도 데이터 유실을 방지한다.수평 확장이 가능하여 데이터와 트래픽 증가에 대응할 수 있다.실시간 처리데이터를 실시간으로 생산(Producer)하고 소비(Consumer)할 수 있어 빠른 응답이..
Rabbit MQ 개요MSA 통신을 위해 사용되는 메시지 브로커인 Kafka, RabbitMQ 중 RabbitMQ에 대해 배워볼 것이다. RabbitMQ오픈 소스 메시지 브로커 소프트웨어로 애플리케이션이나 시스템 간에 메시지를 교환하고 처리할 수 있도록 설계된  AMQP(Advanced Message Queuing Protocol) 기반의 도구. 주요 특징메시지 큐 기능:생산자(Producer)가 보낸 메시지를 큐에 저장하고, 소비자(Consumer)가 이를 가져가서 처리한다.메시지는 대기열(FIFO 방식)로 관리된다.확장성과 분산 처리:여러 소비자가 메시지를 동시에 처리하도록 분산 환경을 지원하며, 대규모 트래픽에도 대응할 수 있다.유연한 라우팅:메시지를 큐로 전달하는 방식을 다양한 패턴(Direct, Fanout, T..
대규모 스트림 처리 개요MSA 프로젝트를 진행하기에 앞서 대규모 시스템 설계에 필요한 사항들에 대해 알아볼 것이다. 대규모 시스템(Large-Scale System)?대량의 데이터를 처리하고, 높은 트래픽을 감당하며, 분산 환경에서 확장 가능한 설계를 통해 신뢰성과 성능을 보장하는 시스템 특징 확장성 (Scalability): 사용량이 증가함에 따라 시스템 성능을 유지하기 위해 수평적/수직적 확장이 가능.고가용성 (High Availability): 장애가 발생하더라도 시스템이 지속적으로 작동할 수 있도록 설계.분산 처리 (Distributed Processing): 데이터를 여러 서버에 분산 저장 및 처리하여 부하 분산.신뢰성 (Reliability): 데이터 손실 방지와 일관성 보장을 위해 장애 복구 메커니즘 활용.주요..
Redis - Cache 개요MSA 프로젝트에 사용할 Redis를 활용한 캐시 기능에 대해 배워볼 것이다. 캐시(Cache)?데이터 임시 저장소로, 자주 사용하는 데이터나 계산 결과를 저장하여 데이터 접근 속도를 높이고 시스템 부하를 줄이는 기술, 주로 메모리(RAM)에 저장되며, 디스크 I/O 또는 네트워크 요청을 줄여 성능을 개선함. 캐싱(Caching)데이터를 캐시에 저장하고 활용하는 프로세스.주요 목적은 반복적인 데이터 요청을 줄이고 응답 시간을 단축하는 것.캐싱은 시스템 성능 최적화, 비용 절감 , 네트워크 부하 감소에 기여.캐싱 전략캐시를 효율적으로 사용하기 위해 데이터를 어떻게 캐시에 저장하고 관리할지를 정의하는 방법.1. 캐시 적중 정책Write-Through: 데이터를 캐시와 저장소(원본 데이터베이스)에 동시에 ..
Redis - Redis Template 개요프로젝트를 MSA로 구성할 때 RDB만 사용하는 것보다 NoSQL DB나 InMemory DB도 같이 사용하는 것이 성능 상으로 더 좋을 것이라고 생각되기 때문에 대표적인 Redis의 RedisTemplate에 대해 정리해 볼 것이다. Redis? RedisRedis란? dictionary 구조(key-value) 형태로 데이터를 저장하고 관리하는 서버 핵심 기능 Redis는 데이터베이스, 캐시, 메시지 브로커 및 스트리밍 엔진으로 사용되는 오픈 소스(BSD 라이선스), 인메모리eleunadeu.tistory.comRedis에 대한 간단한 정리는 예전에 했기 때문에 이번에는 Redis의 사용 방법에 대해서만 정리할 것이다. Redis 사용 준비컴퓨터 저장 용량을 고려해 로컬 환경에 Redis를 설치하..
Docker - 기본 사용 및 Cl / CD 개요Docker를 통한 CI/CD 방법 중 GitLab를 통한 CI/CD 방법에 대해 배워본다. CI/CD 개념 CI / CD개요팀 프로젝트를 하면서 애플리케이션 자동 배포 및 여러 이점으로 CI/CD를 도입해 사용했고 편리했던 경험이 있었다.CI/CD를 직접 설정해보지 않았기 때문에 CI/CD에 대해 공부하고 프로젝트에eleunadeu.tistory.com GitHub Actions를 통한 CI/CD CI/CD 2개요GiHub Actions에 대해 학습하고, GitHub Actions를 사용한 CI/CD 과정과 프로젝트에서 사용한 Docker 설정 파일에 대해 분석을 해 볼 것이다. GitHub Actions 깃허브 액션은 깃허브에서 제공하는 CI/CD 플랫eleunadeu.tistory.com Doc..
MSA - 기초 5 MSA - 기초 4MSA - 기초 3MSA 기초 MSA - 기초 2MSA MSA - 기초 1개요추후 MSA를 사용한 프로젝트를 진행하기 앞서 MSA가 무엇이고 어떻게 사용하는지에 대해 배워보려고 한다.다만, MSA에 대한 이론부터 완벽하게 익eleunadeu.tistory.com 개요Spring Cloud의 분산 추적(Spring Cloud Sleuth, Zipkin)과 스트림(Stream)에 대해 간단하게 정리하고 사용법을 배워볼 것이다. 분산 추적(distributed tracing)Spring Cloud의 분산 추적은 마이크로서비스 아키텍처에서 서비스 간의 요청 흐름을 추적하고 모니터링하는 기능을 제공.여러 서비스가 협력하여 처리하는 요청의 흐름과 성능 데이터를 수집하여 문제 디버깅과 성능 최적화에..