최신글
-
Spark
[Spark] Structed Streaming/Output Mode/Streaming Winodw/watermark
1. Structed Streaming앞서 살펴 봤듯이 Apache Spark Structured Streaming은 배치(Batch)처리와 실시간 스트리밍 처리를 통합하여 사용할 수 있게 해주는 고수준의 분산 실시간 데이터 스트림 처리 엔진입니다. Structuerd streaming에서는 Micro Batch가 진행되면서 트리거 간격마다 수신되는 모든 input data steam은 input table에 무한히 append됩니다.때문에 structered streaming은 배치 처리가 아닌 테이블 스트림에 계속 추가하여 처리함으로써 (실시간에 가까운) 저지연 처리가 가능해집니다. 2. Streaming output mode결과 테이블이 갱신될 때 외부 저장소에 기록(writeSteam)하는 방식(..
-
Kafka
[kafka] broker - 메시지를 어떻게 저장하고 읽는걸까?
1. Kafaka는 메시지를 어떻게 저장할까?Kafka는 Topic의 각 Partition을 디스크에 파일 형태로 저장합니다.Parition은 하나가 반드시 하나의 파일로 구성되는 것이 아니라 여러개의 Log Segment로 나뉘어 저장됩니다.Log Segment : 메시지를 실제로 저장하는 파일토픽 파일 구성파일명은 해당 Segment의 시작 Offset(Base Offset)을 나타냅니다.예를 들어 00000000000000001000.log파일은 Offset 1000부터 시작하는 세그먼트입니다.kafka는 설정된 파일 크기나 시간 조건 충족시 새로운 Segment를 생성합니다.Topic: user-events │ └── Partition 0 │ ├── Segment ..
-
Kafka
[kafka] 메시지 큐와 카프카의 차이점/이벤트 루프/마이크로배치와 스트리밍의 차이/카프카는 Pub-Sub인가, Streaming인가?
1. 메시지 브로커메시지 브로커는 publisher가 생산한 메시지를 메시지 큐에 저장하고, 저장된 데이터를 consumer가 가져갈 수 있도록 "중간 다리 역할"을 해주는 브로커다. 흔히 S/W 관점에서 "미들웨어"라고 한다.보통 서로 다른 시스템(혹은 소프트웨어/ 이기종간) 사이에서 데이터를 비동기 형태로 처리하기 위해 사용한다.이러한 구조를 보통 pub/sub 구조라고 하며 대표적으로 Rabbit MQ 소프트웨어가 있고 GCP의 pubsub, AWS의 SQS 같은 서비스가 있다.이와 같은 메시지 브로커들은 consumer가 큐에서 데이터를 가져가게 되면 즉시 혹은 짧은 시간 내에 큐에서 데이터가 삭제되는 특징이 있다.2. 이벤트 브로커이벤트 브로커 또한 기본적으로 메시지 브로커의 큐 기능들을 가지..
-
workflow 리팩토링 프로젝트(SpringBoot,JPA,MySQL)
[Srping Security + JWT] JWT 로그인/토큰 재발급 동작 flow
spring security와 jwt 를 이용하여 로그인을 구현하고 토큰 재발급, redis를 활용한 로그아웃, 최신토큰 사용하기 등등 다 구현을 해보았는데요. reids활용한 구현부분은 flow를 정리해놓았는데 jwt를 이용한 로그인와 토급재발급의 동작 flow에 대한 설명이 부족한것 같아서 추가로 포스팅을 작성하려고 합니다. 이 포스팅은 jwt를 이용한 로그인과 토큰 재발급의 동작 흐름에 관한 글이기 때문에 구현방법은 이전포스팅들을 참고해주시기 바랍니다. 들어가기 앞서 OncePerRequestFilter가 아니더라도 일반적인 GenericFilterBean을 상속받아도 무관합니다. (OncePerRequestFilter가 이미 GenericFilterBean를 상속받고 있기 때문.) Filter 작..
-
workflow 리팩토링 프로젝트(SpringBoot,JPA,MySQL)
[SpringBoot]멀티모듈에서 개발 환경별로 DB 분리하기
프로젝트 진행중 loval,dev,test 환경으로 DB를 분리해야 할 일이 생겼습니다. test 코드 수행이 끝난 뒤 모든 데이터가 지워져서 DB가 클린상태가 되어야 하는데 그렇게 되면 API 테스트시 DB의 기존 데이터들이 모두 삭제되는 문제가 발생했습니다. 때문에 TEST용 DB를 따로 분리해주기로 했습니다. aplication.yml을 분리해서 사용할 건데요, aplication.yml이란 무엇일까요? aplication.yml 이란? application.yml은 주로 스프링 부트(Spring Boot) 애플리케이션에서 사용되는 설정 파일입니다. 스프링 부트는 자바 기반의 웹 애플리케이션을 쉽게 개발할 수 있도록 도와주는 프레임워크로, 이를 통해 애플리케이션의 설정을 관리할 수 있습니다. app..