전체 글

단계별로 성장하자!
In-Sync-Replicas(ISR) 리더와 Sync(동기)가 맞고있는(복사가 잘 수행하고 있는) 모든 Replicas의 목록 하나의 브로커에만 Partition Leader들이 몰려있다면 Hot Spot 문제가 발생한다. 따라서, Leader 장애 시 Leader를 선출하는데 사용 replica.lag.max.messages: Follower와 Leader간의 메시지 차이 (follower가 복사를 잘 수행하고 있는지 판단하는 지표) 상위버전에서는 현재 deprecated 라고 한다. Fully-Replicated Commited의 Commit은 Consumer의 Commit과 다름 Follower가 복제했음을 의미 consumer는 hign water mark가 표시된 데이터까지만 읽을 수 있음 r..
나는 이번에 참여하는 프로젝트에서 Micro Service Architecture를 사용하기로 했기에 데이터 동기화 문제를 해결하기 위해 Kafka를 공부하게 되었다. Kafka의 탄생 배경 링크드인이라는 사이트가 급속도로 성장하게 되면서 시스템 유지 문제가 발생하였고 소스 애플리케이션과 데이터가 최종 적재되는 Target 애플리케이션과 연결하는 복잡성이 있었다. 위와 같이 시스템이 복잡해질수록 아래와 같은 End-to-End 시스템의 문제점이 발생한다. 데이터 전송 파이프라인이 기하급수적으로 복잡해짐 Src-to-Target 파이프라인 개수가 많아지면서 소스코드 및 버전 관리 이슈 발생 target app에 문제가 발생할 경우, Source app에도 영향을 줌 (높은 결합도) 다양한 ETL(Extra..
보호되어 있는 글입니다.
1. 테스트에 대해서 공부하게 된 계기 기존에는 테스트를 API 구현 완료 후 Postman으로 구동 확인 위주로 하였다. 테스트코드를 작성하는 방법도 몰랐고 중요성도 크게 몰랐었다. 하지만 이번에는 실제 서비스 해야하는 애플리케이션이고 서비스후에도 계속 수정사항이 발생할 것이기 때문에 테스트코드를 작성해놓지 않는다면 정말 힘들어질 것 같다는 생각이 들었다. 하지만 단위 테스트는 어떻게 하는 것인지? 단위 테스트와 통합 테스트의 차이가 무엇인지? 전혀 몰랐다. 따라서 단위 테스트 라는 책을 읽고 예시 상황을 정리해보며 생각을 정리해봤다. 2. 단위 테스트란? 정의 모듈이나 애플리케이션 내부에 있는 작은 코드 조각이 예상과 똑같이 동작하는지 검증하는 반복적인 행위 속성 - 프로그램의 작은 코드 조각 단위를..
1. 문제 상황 기존 코드 흐름 @Getter public enum ErrorCode { DUPLICATED_LONGIND("0101", 이미 사용중인 아이디(학번) 입니다.)"), ... public DuplicatedLoginIdException extends RuntimeException { public DuplicatedLoginIdException() { } } # SignupService public void signup(LoginReq req) { ... throw new DuplicatedLoginIdException(); } @RestControllerAdvice public class ControllerAdvice { @ResponseStatus(HttpsStatus.CONFLICT) ..
1. 문제 상황 사용자 수가 많지 않지만 배포하려는 물리 서버 컴퓨터의 성능이 그닥 좋지 않기에 혹시나 잘못되면 어떡하나라는 걱정이 계속 있었고 CPU, 메모리, Thread Pool을 계속 모니터링 할 수 있는 방법이 없을까? 라고 생각하여 찾아보다가 Spring Actuator, Micrometer, Prometheus, Grafana와 같은 키워드를 알게되어 공부하고 구축하게 되었다. 2. 문제 해결 ✏️ Spring Actuator Production을 운영환경에 배포할 때 Metric(지표), Trace(추적), Auditing(감사), 모니터링과 같은 필요한 기능을 매우 편리하게 사용할 수 있도록 해주는 라이브러리이다. Micrometer, Prometheus, Grafana를 매우 쉽게 연동..
DevPoong
Poong