[TIL] 모니터링
·
TIL
모니터링이란 시스템의 성능, 안정성 및 가용성을 실시간으로 관찰하고 측정하는 과정을 의미한다.잠재적인 문제를 신속하게 발견하여 대응할 수 있다.  Spring Boot Actuator Spring Boot  애플리케이션의 상태 및 내부 동작을 모니터링하고 관리하기 위한 기능을 제공한다. # Actuator 엔드포인트를 19090 포트에서 서비스하도록 설정management.server.port=19090#모든 엔드포인트 노출 설정management.endpoints.web.exposure.include=*#헬스 체크 엔드포인트 상세 정보 표시 설정# 이 설정은 /actuator/health 엔드포인트에서 헬스 체크 정보를 항상 상세히 보여주도록 설정합니다. 기본적으로, 헬스 체크 엔드포인트는 요약된 상태..
[TIL] SAGA Pattern
·
TIL
SAGA 패턴이란? 분산 시스템에서의 데이터 일관성을 유지하기 위한 패턴으로 마이크로서비스 아키텍처에서 중요한 역할을 한다.장기 실행되는 트랜잭션을 처리하고, 실패 시 롤백하거나 복구하는 방법을 제공하여 시스템의 신뢰성과 안정성을 높인다.  SAGA: 복잡한 비즈니스 트랜잭션을 여러 개의 작은 트랜잭션으로 나누어 실행. 각 작은 트랜잭션은 독립적으로 수행되며, 전체 트랜잭션이 성공적으로 완료되도록 보장한다.로컬 트랜잭션: 각 작은 트랜잭션은 개별적으로 성공하거나 실패할 수 있으며, 이들은 모두 로컬 트랜잭션으로 처리된다.보상 트랜잭션: 만약 어떤 작은 트랜잭션이 실패하면, 이전에 성공한 트랜잭션들을 보상하기 위해 보상 트랜잭션을 실행한다. 이를 통해 전체 트랜잭션의 일관성을 유지한다.조정자: SAGA 패..
[TIL] Kafka란?
·
TIL
Kafka란? 분산 스트리밍 플랫폼으로 주로 실시간 데이터 피드의 빅 데이터 처리를 목적으로 사용된다.대용량 데이터 스트림을 저장하고 실시간으로 분석하거나 처리한다. 기본 구성 요소메시지(Message) - Kafka를 통해 전달되는 데이터 단위프로듀서(Producer) - 메시지를 생성하고 Kafka에 보내는 역할, 특정 토픽에 메시지를 보낸다.토픽(Topic) - 메시지를 저장하는 장소. 메시지는 토픽에 저장되었다가 소비자에게 전달된다.파티션(Partition) - 토픽을 물리적으로 나눈 단위키(Key) - 메시지를 특정 파티션에 할당하는 데 사용되는 값컨슈머(Consumer) - 토픽에서 메시지를 가져와 처리하는 역할브로커(Broker) - Kafka 클러스터의 각 서버를 의미, 메시지를 저장하고 ..
[TIL] RabbitMQ 이해하기
·
TIL
8/13 진행사항✅ 알고리즘 1문제✅ 대규모 스트림 처리 1-1 ~ 1-8  RabbitMQ란? 메시지 브로커라는 소프트웨어로, 두 시스템 사이에서 메시지를 전달하는 역할을 한다.👉 데이터(메시지)를 송신자(프로듀서)로부터 수신자(컨슈머)에게 전달하는 중단 매개체. 기본 구성 요소Message - 전달하고자 하는 실제 데이터Producer - message를 생성하고 이를 RabbitMQ로 전송하는 역할Queue - message를 임시로 저장하는 장소Consumer - Queue에 있는 메시지를 받아 처리하는 역할Exchange - 프로듀서가 보낸 메시지를 적절한 Queue로 라우팅 하는 역할RabbitMQ는 AMQP 프로토콜을 사용하여 메시지를 관리하는 역할을 한다.AMQP) Advanced Mes..
[TIL] Docker란? | FeignClient DIP | Gateway FeignClient 순환참조
·
TIL
8/12 진행사항✅ 알고리즘 2문제✅ 프로젝트 관리 심화 강의✅ 과제 해설 강의 듣기 + 피드백 반영  Docker란? 애플리케이션을 쉽게 만들고 테스트하고 배포할 수 있게 도와주는 소프트웨어 플랫폼으로애플리케이션을 컨테이너라는 가볍고 이식성 있는 패키지로 실행할 수 있다. 특징컨테이너화 - 하나의 패키지로 묶어 어디서든 실행 가능경량 - 운영체제의 커널을 공유하므로 가상 머신보다 훨씬 빠름이식성 - 어디서든 동일하게 동작확장성 - 여러 개의 컨테이너를 효율적으로 관리하고 쉽게 확장주요 키워드이미지 - 애플리케이션과 모든 실행에 필요한 파일을 포함한 읽기 전용 템플릿, 정적인 템플릿컨테이너 - 이미지를 실행하여 동작하는 애플리케이션 인스턴스, 동적인 환경Dockerfile - 이미지를 생성하기 위한 명령..
[TIL] Spring Boot 로컬과 서버 환경 분리 | 정적 팩토리 메서드
·
TIL
8/9 진행사항✅ 알고르즘 2문제✅ 챕터1 과제수행  로컬과 서버 환경 분리  로컬&개발 환경과 운영환경을 분리하여 local 주소와 배포 주소로 접근하는 것을 목표로 한다. application.ymlspring: profiles: default: dev application: name: product-service jpa: properties: hibernate: show_sql: true format_sql: true use_sql_comments: true highlight_sql: trueserver: port: 19093management: tracing: sampling: probability:..
[TIL] Spring Boot 프로젝트에 캐싱 적용하기
·
TIL
8/9 진행사항✅ 알고리즘 5문제✅ 인메모리 저장소 및 캐싱 전략 1-5 ~ 2-4✅ 챕터1 과제 캐싱 기능 구현  Spring Boot 프로젝트에 캐싱 적용하기 1. build.gradledependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' // 레디스 추가 implementation 'org.springframework.boot:spring-boot-starter-data-redis' implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' ..
[TIL] 양방향 연관관계 매핑 | Feign client Error Decoder
·
TIL
8/7 진행사항✅ 알고리즘 2문제✅ 인메모리 강의 1-4✅ 챕터1 과제 - 기본 api 구성하기 오늘은 강의보다 과제에 더 시간을 많이 쓴 날이다.강의 집중이 잘 안 되어 과제로 눈 돌렸더니 과제에서 빠져나올 수 없었다....🤯 양방향 연관관계 매핑 상품과 주문의 관계는 다대다 관계다.(한 개의 상품이 여러개의 주문에 들어갈 수 있고, 한 개의 주문도 여러개의 상품에 포함될 수 있다.)이때 중간테이블인 주문상품 테이블을 만들면 상품:주문상품 = 1:N주문:주문상품 = 1:N관계로 정리된다. 주문상품 엔티티@NoArgsConstructor@AllArgsConstructor(access = AccessLevel.PROTECTED)@Builder(access = AccessLevel.PRIVATE)@Gett..
[TIL] Zipkin이란? | Redis란?
·
TIL
8/6 진행사항✅ 알고리즘 2문제✅ MSA 프로젝트 실습✅ 인메모리 강의 1-1 ~ 1-3 Zipkin이란? 트레이스 데이터를 수집하고 시각화하는 분산 추적 시스템 도커를 사용하여 Zipkin 서버 실행docker run -d -p 9411:9411 openzipkin/zipkin application.yml에 Zipkin 서버 설정 추가management: zipkin: tracing: endpoint: "http://localhost:9411/api/v2/spans" tracing: sampling: probability: 1.0  Zipkin 대시보드 접속 (http://localhost:9411 ) 서비스 호출을 시각화해서 볼 수 있다.Redis란 Redis는 가장..
[TIL] QueryDsl 사용방법
·
TIL
8/5 진행사항✅ 알고리즘 2문제✅ MSA 강의 1-12 QueryDsl 사용방법 dependencies { // queryDSL implementation "com.querydsl:querydsl-jpa:${querydslVersion}:jakarta" annotationProcessor "com.querydsl:querydsl-apt:${querydslVersion}:jakarta" annotationProcessor "jakarta.annotation:jakarta.annotation-api" annotationProcessor "jakarta.persistence:jakarta.persistence-api" } def querydslSrcDir='src/main/generated'clean{ d..