Prometheus & Grafana모니터링에 대한 부분을 다시 정리해 보려고 한다.서비스를 운영하며 어디에 어떤 문제가 발생했는지 사전 대응하고, 실제 문제 발생 시에도 원인을 빠르게 파악하고 대처하기 위해애플리케이션의 CPU, Memory, Connection, Request 같은 수많은 지표들을 확인하는 것이 필요Spring Actuator애플리케이션이 살아있는지, 로그 정보는 정상 설정 되었는지, 커넥션 풀은 얼마나 사용되고 있는지 등 확인Production-ready Features지표(metric): CPU 사용량추적(trace): 이슈 코드 추적감사(auditing): 고객 로그인, 로그아웃 이력 추적모니터링: 시스템 상태Dependencyimplementation 'org.springfra..
📊 동시성 제어 방식 비교SeriesJava Concurrency ControlDatabase Concurrency ControlRedis Concurrency ControlKafka Concurrency ControlCompare Concurrency Control⚠️ 로컬에서 테스트한 결과이고,서버 환경과 여러 요인들에 의해 결과가 달라질 수 있고, 정확하지 않을 수 있습니다.Case 01한정수량 : 50,000Total User : 296Processes : 8Threads : 37(DB Named 방식은 제외).시간 내에 모든 트래픽을 성공적으로 처리한 방식DB PessimisticRedis IncrKafka + Redis.일부 성공을 하긴 하였지만, 트래픽을 버티지 못하고 성능 문제가 발생한 ..
🎯 Kafka Concurrency ControlRace Condition경쟁상태는 두 개 이상의 스레드가 공유 데이터에 액세스 할 수 있고, 동시에 변경을 하려고 할 때 발생하는 문제Race Condition 으로 동시에 들어오는 요청들이 갱신 전 값을 읽고, 수정하면서실제 갱신이 누락되는 현상이 발생SeriesJava Concurrency ControlDatabase Concurrency ControlRedis Concurrency ControlKafka Concurrency ControlCompare Concurrency Control🏹 Kafka분산 스트리밍 플랫폼으로, 주로 대규모 실시간 데이터 처리와 메시징에 사용리더 선출(Leader Election) 또는 협조적 소비자 패턴(Cooper..
🎯 Redis Concurrency ControlRace Condition경쟁상태는 두 개 이상의 스레드가 공유 데이터에 액세스 할 수 있고, 동시에 변경을 하려고 할 때 발생하는 문제Race Condition 으로 동시에 들어오는 요청들이 갱신 전 값을 읽고, 수정하면서실제 갱신이 누락되는 현상이 발생SeriesJava Concurrency ControlDatabase Concurrency ControlRedis Concurrency ControlKafka Concurrency ControlCompare Concurrency Control🏹 Redis incrRedis의 INCR 명령을 이용하여 특정 키의 값을 원자적으로 증가시키면서카운터나 임계값 제어 등의 작업에 사용하는 방법정의.Redis는 빠..
🎯 DataBase Concurrency ControllRace Condition경쟁상태는 두 개 이상의 스레드가 공유 데이터에 액세스 할 수 있고, 동시에 변경을 하려고 할 때 발생하는 문제Race Condition 으로 동시에 들어오는 요청들이 갱신 전 값을 읽고, 수정하면서실제 갱신이 누락되는 현상이 발생SeriesJava Concurrency ControlDatabase Concurrency ControlRedis Concurrency ControlKafka Concurrency ControlCompare Concurrency ControlDatabase Lock데이터베이스 락의 종류데이터베이스 락(Lock)의 종류와 역할공유 락(Shared Lock, Read Lock)데이터를 변경하지 않는 ..
🎯 Java Concurrency ControlRace Condition경쟁상태는 두 개 이상의 스레드가 공유 데이터에 액세스 할 수 있고, 동시에 변경을 하려고 할 때 발생하는 문제Race Condition 으로 동시에 들어오는 요청들이 갱신 전 값을 읽고, 수정하면서실제 갱신이 누락되는 현상이 발생SeriesJava Concurrency ControlDatabase Concurrency ControlRedis Concurrency ControlKafka Concurrency ControlCompare Concurrency Control🏹 Java Asynchronous동시에 들어오는 요청들이 갱신 전 값을 읽고, 수정하면서 실제 갱신이 누락before: 100, after: 99 // 갱신 전 값..
Transaction Propagation스프링 트랜잭션을 다시 공부하며 영한님의 스프링 DB 2편 - 데이터 접근 활용 기술 강의 내용을 요약해 보았습니다.트랜잭션 전파Spring Transaction Propagation Use transaction twice[출처: https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-db-2]로그를 보면 트랜잭션1, 2가 같은 conn0 커넥션을 사용 중인데, 이것은 커넥션 풀 때문트랜잭션1은 conn0을 모두 사용 후 커넥션 풀에 반납하고, 이후 트랜잭션2가 conn0을 커넥션 풀에서 획득히카리(HikariCP) 커넥션 풀에서 커넥션을 획득하면 실제 커넥션을 그대로 반환하는 것이 아니라 내부 관리를 위해히카리..
Spring Transaction스프링 트랜잭션을 다시 공부하며 영한님의 스프링 DB 2편 - 데이터 접근 활용 기술 강의 내용을 요약해 보았습니다.추상화org.springframework.transaction.PlatformTransactionManager 인터페이스를 통해 트랜잭션 추상화package org.springframework.transaction;public interface PlatformTransactionManager extends TransactionManager { TransactionStatus getTransaction(@Nullable TransactionDefinition definition) throws TransactionException; void commi..