공부32 [React] 참조 동일성 리액트 컴포넌트의 리렌더링이 발생하는 조건은 내가 알기로는 3가지이다. 1. 부모 컴포넌트가 리렌더링 되는 경우, return 부분이 재호출 되면서 자식 컴포넌트로 리렌더링 대상이 된다. - 이 경우 React.Memo로 감싼 컴포넌트는 리렌더링 대상에서 제외된다.2. 부모 컴포넌트에게 전달받은 props이 변하는 경우, 해당 상태값을 전달받은 자식 컴포넌트도 리렌더링 대상이 된다.3. 자신의 상태(State)가 변하는 경우, 리렌더링 대상이 된다. - useMemo, useCallback으로 2-3의 리렌더링 조건에서 내부의 변수, 함수를 제외할 수 있다. - react-query에서 data 값이 변하는 경우 역시 내부 상태가 변하는 것으로 간주한다. 리액트를 공부하면 리렌더링 조건은 항상 강조되는.. 2025. 6. 8. [모니터링] APM & Distributed Tracing 오늘 새벽까지 ELK Stack을 맥북에 설치하고 열심히 갖고 놀아보았다.모니터링 시스템은 올해 초 시스템 분석설계 수업을 들으면서 가장 만들어보고 싶었던 내용 중 하나였다.더 정확하게는 자료흐름도를 공부하며 자료흐름을 추적할 수 있는 시스템이 존재하면 좋겠다고 생각해 왔다. 예를 들어 내가 포트폴리오로 만든 동영상 플랫폼 중 파일 업로드는 아래와 같은 구조를 갖고 있다. 1. 사용자가 웹에서 파일을 업로드한다.2. 백엔드 서버가 사용자의 업로드 요청을 처리한다. 1) 동영상의 ID를 만들어 사용자에게 반환한다. (DB에 해당 ID로 내용을 저장한다.) 2) 동영상을 서버로 수신한다. 3) 임시 위치에 동영상을 저장한다. 4) DB에 파일 업로드 처리를 저장한다. 5) 사용자에게 저장 성공 메시.. 2025. 6. 7. [모니터링] Prometheus + SpringBoot 전 글에서 프로메테우스와 그라파나를 연결해서 모니터링 시스템은 구축해 둔 상태이다.백엔드의 SpringBoot 서버의 메트릭을 수집해서 프로메테우스가 해당 서버에 질의할 수 있게 엔드포인트를 열어줘야 한다. 1. 스프링 부트 Actuator 라이브러리 추가, Prometheus 전용 메트릭으로 변경해서 엔드포인트 노출 라이브러리 추가 // Actuator, Prometheus implementation 'org.springframework.boot:spring-boot-starter-actuator' implementation 'io.micrometer:micrometer-registry-prometheus' 1) Spring Actuator의 health 체크 기능은 LoadBalancer에서도 사용된.. 2025. 6. 6. [모니터링] Prometheus + Grafana 맥북에 프로메테우스와 그라파나를 연동해서 모니터링 시스템을 마련해 두었다. 1. 프로메테우스 (Prometheus)메트릭 수집 및 저장에 특화된 시스템이다. 시스템이나 애플리케이션의 다양한 상태 정보를 주기적으로 수집해서 시계열 데이터(시간에 따른 변화를 기록한 데이터)로 저장하는 역할을 수행한다. 기본적으로 프로메테우스 서버는 대상 시스템으로부터 메트릭을 능동적으로 가져온다.다차원 데이터 모델 형태로 데이터를 저장하여 유연한 데이터 조회가 가능하다고 한다.Alertmanager라는 별도의 컴포넌트와 연동하여 특정 조건에 따라 경고를 발생시키고 다양한 채널로 알림을 보낸다.모니터링 대상을 동적으로 발견하고 설정할 수 있는 기능을 제공한다. 2. 그라파나 (Grafana)수집된 데이터를 시각화하고 대시보.. 2025. 6. 6. [BE] RabbitMQ 장애 - 메시지 중복 처리, 메모리 부족, 디스크 공간 부족 저번 글에서 잠시 다루었지만, RabbitMQ를 쓰다 보면 만날 수 있는 대표적인 장애 시나리오이다. 1. 메시지 중복 처리메시지를 최소 한 번 이상 전달을 하기 위해서는 ack 신호를 메시지 중개인에 전달해야 한다.하지만 메시지를 소비한 이후, 장애가 발생하여 ack 신호를 메시지 브로커에 전달하지 못하는 경우가 있다.이런 경우 메시지 브로커는 큐에서 해당 메시지를 제거하지 않는다.서버는 장애에서 회복된 후, 서버에서 메시지를 새로 꺼내서 소비하게 되고 이런 시나리오에서 중복 처리가 발생할 수 있다. 2. 메모리 부족큐에 쌓이는 메시지가 처리되는 메시지보다 많을 경우, 특히 non-persistent의 경우많은 수의 연결과 채널이 존재하는 경우 메모리 부족 문제가 발생할 수 있다.메시지를 가능한 한 디.. 2025. 6. 5. 이전 1 2 3 4 5 6 7 다음