[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..
[TIL] 인증과 인가 | 컨피그 서버 (Spring Cloud Config)
·
TIL
8/2 진행사항✅ 알고리즘 3문제✅ MSA강의 1-8 ~ 1-11 MSA 강의에서 JWT인증 실습이 진행되었는데 내용이 좀 부족한 거 같아스프링 강의의 인증과 인가 내용을 정리해보려 한다. 인증과 인가 인증(Authentication)-해당 유저가 실제 유저인지 확인 및 인증하는 행위ex) 로그인 인가(Authorization)-해당 유저가 특정 리소스에 접근이 가능한지 허가를 확인하는 개념ex) 회원/비회원 여부에 따른 권한, 관리자페이지-관리자 권한 웹 애플리케이션 인증의 특수성 1. 서버-클라이언트 구조, 실제로 두 요소가 아주 멀리 떨어져 있다.2. HTTP 프로토콜을 이용하여 통신한다.HTTP는 비연결성 무상태로 이루어진다.비연결성(Connectionless)란? 서버와 클라이언트가 연결되어 있..
[TIL] Java 형변환 | Integer.parseInt와 Integer.valueOf의 차이 | Math.sqrt()와 Math.pow() | 클라이언트 사이드 로드 밸런싱 | 서킷 브레이커 (Resilience4j) | Spring Cloud Gateway
·
TIL
8/1 진행사항✅ 알고리즘 4문제✅ MSA 강의 1-4 ~ 1-7  오늘 코드카타에서 형변환과 반환타입을 잘 확인해야 되는 문제들을 풀었다.(풀었던 문제도 그냥 초기화해서 다시 풀어보고있다.)프로그래머스 문제를 풀다 보면 형변환 때문에 실패를 받는 경우가 종종 있다.그래서 아래와 같이 정리한다. Java 형변환 자바에서는 작은 타입에서 큰 타입으로의 자동 형 변환이 이루어진다.public class Main { public static void main(String[] args) { int x = 1; long num = x; // int 값이 long 타입으로 자동 형 변환됨 System.out.println(num); // 1 }}int ..