어플리케이션 성능 테스트 - JMeter
·
Backend
어플리케이션 성능 테스트할 때 확인해야 할 지표로 응답 시간과 TPS가 있다. 응답 시간은 클라이언트가 서버에 요청을 보내고, 그 요청에 대한 응답을 받을 때까지 걸린 시간을 의미한다.응답 시간은 처리 시간과 대기 시간으로 나뉜다.처리 시간(Processing Time): 서버가 요청을 처리하는 데 걸린 시간대기 시간(Latency Time): 클라이언트와 서버가 데이터를 주고 받는데 걸린 시간 → 네트워크 지연 시간 TPS는 초당 처리하는 요청의 개수를 의미한다.TPS가 높을 수록 초당 처리할 수 있는 요청의 수가 많다.  JMeter 설치https://jmeter.apache.org/download_jmeter.cgi Apache JMeter - Download Apache JMeterDownload..
RabbitMQ로 SAGA 패턴 구현
·
Backend
SAGA 패턴?MSA에서 분산 트랜잭션 처리를 위해 도입한 패턴이다.각 서비스의 로컬 트랜잭션들이 순차적으로 업데이트를 해나가며,트랜잭션 실패 시 보상 트랜잭션을 수행하여 이전 서비스들의 트랜잭션을 롤백한다. SAGA 아키텍처 구조도 Order와 Product는 Producer이고, Product와 Payment는 Consumer가 된다.즉 Product의 경우 동시에 Producer와 Consumer의 역할을 한다. SAGA 플로우정상 흐름Order application에 클라이언트 요청이 들어오면, Order에서 필요한 로직을 수행하고 exchange에 메시지를 보낸다.exchange가 message를 product.queue로 라우팅한다.product는 product.queue의 메시지를 컨슘하여 ..
Spring Data JPA를 이용한 BaseEntity와 데이터 감사 로그 기능
·
Backend/SpringBoot
데이터 보존과 감사 로그가 필요하다는 요구사항이 있다.데이터 보존: 모든 데이터는 완전 삭제되지 않고 숨김 처리로 관리(숨김과 삭제는 다른 필드에서 동작) → 논리적 삭제데이터 감사 로그: 모든 정보에 생성일, 생성 아이디, 수정일, 수정 아이디, 삭제일, 삭제 아이디를 포함위와 같은 정보들은 모든 엔티티에 공통으로 들어가야 한다.간단하게 엔티티마다 해당 정보들을 컬럼으로 넣어준다. 하지만 이렇게 된다면 코드 중복이 우려된다.그렇다면, 코드 중복을 줄이면서 구현할 방법이 있을까? BaseEntityEntity들이 공통적으로 사용하는 속성을 하나로 묶어 BaseEntity라는 부모 클래스를 생성한다.BaseEntity 클래스를 생성하여 공통 속성을 담고, 엔티티가 상속받을 수 있도록 하면, 공통 속성에 대..
Prometheus & Grafana & Loki 모니터링
·
Backend
모니터링: 시스템을 실시간으로 관찰하고 측정하는 것 모니터링의 중요성💡 모니터링 도구를 사용하여 시스템의 상태를 추적하고, 문제를 감지하고, 성능을 최적화하며, 장애 발생 시 빠르게 대응할 수 있다.  프로메테우스(Prometheus) 연동Prometheus란?Prometheus는 오픈소스 모니터링 툴로 시계열 데이터베이스를 사용하여 메트릭 데이터를 수집하고, 쿼리 및 시각화를 통해 시스템 상태를 모니터링하고 경고를 설정할 수 있다. Prometheus의 주요 구성 요소Prometheus 서버: 메트릭 데이터를 수집하고 저장하는 핵심 컴포넌트로, 각 타겟으로부터 데이터를 주기적으로 스크랩하여 시계열 데이터베이스에 저장한다.시계열 데이터베이스(Time Series Database, TSDB)는 시간에 따..
Kafka 기본 개념 및 연동 실험
·
Backend
Kafka란Kafka는 분산 스트리밍 플랫폼으로, 주로 실시간 데이터 피드의 빅 데이터 처리를 목적으로 사용된다.Kafka는 메시지 큐와 유사하지만, 대용량 데이터 스트림을 저장하고 실시간으로 분석하거나 처리하는 데 중점을 둔다.💡 처리하는 메시지량: kafka >>> RabbitMQ Kafka의 역할실시간 데이터 처리: 대용량 데이터를 실시간으로 처리하고 분석한다.데이터 통합: 다양한 소스에서 데이터를 수집하고 이를 통합하여 분석한다.내결함성: 데이터 손실 없이 안정적으로 데이터를 저장하고 전송한다. Kafka 장단점- -장점- -신뢰성데이터 복제: 데이터를 여러 브로커에 복제하여 저장하므로, 단일 브로커 장애 시에도 데이터 손실을 방지할 수 있다.확인 메커니즘: 데이터가 소비자에게 성공적으로 전달되..
RabbitMQ 기본 개념 및 실습
·
Backend
RabbitMQ란RabbitMQ는 메시지 브로커다.메시지 브로커는 데이터(메시지)를 송신자(프로듀서)로부터 수신자(컨슈머)에게 전달하는 중간 매개체 역할을 한다.RabbitMQ는 메시지를 큐(queue)에 저장하고, 필요할 때 적절한 수신자(컨슈머)에게 전달한다. RabbitMQ의 역할비동기 처리: 데이터를 비동기적으로 처리하여 시스템의 응답성을 높인다.부하 분산: 여러 소비자에게 메시지를 분산시켜 시스템의 부하를 균형 있게 분산한다.내결함성: 메시지를 안전하게 저장하여 시스템 장애 시 데이터 손실을 방지한다. RabbitMQ 장단점---장점---신뢰성메시지 지속성: RabbitMQ는 메시지를 디스크에 저장하여 시스템 장애 발생 시에도 메시지가 손실되지 않도록 한다.확인 메커니즘: 메시지가 성공적으로 소..
대규모 스트림 처리
·
Backend
대규모 시스템 도입인터넷에서는 수백만 명의 사용자가 동시에 접속하고 상호작용할 수 있는 시스템을 구축해야 하는 상황이 자주 발생한다.이러한 시스템은 단순히 많은 사용자를 처리하는 것뿐만 아니라, 안정성과 신뢰성을 유지하면서 고성능을 제공해야 한다.기능에 대한 테스트를 통해 애플리케이션이 정상적으로 동작하는것을 확인하는 것은 당연한 것이다.성능 테스트를 통해 내가 만든 애플리케이션의 성능을 측정하여 애플리케이션이 실제 환경에서 어떻게 동작하는지 미리 검증하고, 신뢰성 있는 시스템을 구축해야 한다. 동시 접속자와 초당 요청량(TPS)시스템을 사용할 사용자 수를 파악하는 것이 중요하다. 시스템 모니터링을 통해 하루에 몇 명의 사용자가 접속하는지 알 수 있다.그러나 단순히 하루 접속량을 파악하는 것만으로는 충분..
조원준입니다
'Backend' 카테고리의 글 목록