전체 글

Jisung Jung의 기술블로그
Backend, Spring

Spring security + Jwt

을 이용해 웹서비스 인가/인증 로직을 구현하는 방법에 대한 정리 및 회고 - 스프링 세션스토리지 vs stateless jwt - 토큰이 탈취당하는 시점 - 그럼에도 jwt를 사용하는 이유 - jwt에 저장할 데이터의 스코프 - 서브젝트와 클레임 활용방안 - Jwt 보안 고도화 Depth1. 요청/응답 헤더의 암호화 Depth2. 접근/갱신 토큰의 분리 Depth3. 갱신토큰은 1회용으로 - user role 컨트롤. Config 중심으로

Kafka

Apache Kafka Record

Recordrecord는 kafka의 데이터 통신을 위한 객체이며 이를 위해 필요한 값들을 저장하고 있다. record는 프로듀서가 메세지를 보낼 때 사용하는 producer-record와 컨슈머가 메세지를 받을 때 사용하는 consumer-record로 나뉜다. Producer Recordtopicrecord가 어느 topic으로 전송되어야하는지를 저장하는 값이며 레코드 생성시 초기화한다.partition record가 어느 partition으로 전송되어야하는지를 저장하는 값이며 레코드 생성시 초기화해 파티션을 명시하거나, partitioner가 round-robin 방식 또는 hash-key를 이용해 목적지 partition데이터를 세팅한다.headersrecord에 부가적인 정보를 담기 위한 부분..

Kafka

Apache Kafka Producer

Kafka Producerkafka 에서 topic에 메세지를 보내는 주체를 producer라고 한다.  producer는 kafka-console-producer를 사용할 수도 있지만 보통 프로듀서 애플리케이션으로 구현해 사용한다. kafka에서 지원하는 공식 언어는 java다. python, javascript, golang 등의 언어를 사용해 애플리케이션을 구축할 수도 있지만 공식 지원 언어가 아니기 때문에 구조적/성능적 이슈가 존재할 수 있으니 주의해야한다.kafka library를 이용해 구현한 프로듀서 애플리케이션은 아래와 같은 구조를  가진다. producer record를 사용해 메세지를 전송하고 직렬화 후 partitioner가 producer record를 어떤 partition으로 보..

Kafka

Apache Kafka Basic

1. 카프카 등장 배경카프카는 Linked-In에서 소스 애플리케이션고 타켓 애플리케이션을 분리하기 위해 만들어졌다. 기존의 데이터 파이프라인은 아래와 같이 각각의 애플리케이션을 직접 연결하는 구조였는데 아래와 같이 타겟 애플리케이션에 장애가 발생하면 소스 애플리케이션에도 치명적인 문제가 발생한다. 또한, 아키텍처가 복잡해짐에따라 애플리케이션의 갯수가 많아지면서 데이터 파이프라인도 기하급수적으로 복잡해졌다. 이러한 문제를 해결하고자 Linked-In에서는 카프카를 만들어냈고 카프카는 애플리케이션을 직접 연결하는 방식이 아니라 중앙에서 데이터를 처리하는 방식으로 모든 애플리케이션이 카프카를 통해 데이터를 수집하고 분배한다.   2. 카프카의 특징1️⃣  높은 처리량카프카도 결국 데이터를 전송하려면 송수신..

Algorithm

[Algorithm] Kruskal - 크루스칼

Kruskal Algorithm Kruskal 알고리즘은 MST(Minimum Spanning Tree)를 구하는 알고리즘이다. Greedy하게 N개의 정점을 N-1개의 간선을 이용해 최소 비용으로 연결한다. Kruskal 알고리즘의 기본 개념은 Greedy이기 때문에 간선 정보를 가중치 기준으로 오름차순 정렬한다. 다음으로, Union-Find 알고리즘을 이용해 모든 N개의 정점을 N-1개의 간선을 통해 최소 비용으로 연결할 수 있다. 따라서, Kruskal 알고리즘은 Greedy + Union-Find 알고리즘의 개념을 합쳐놓은 알고리즘으로 MST를 구하는데 이용된다. [Data Structure] Minimum Spanning Tree - 최소 신장 트리 노드의 갯수가 n개일때, 간선의 갯수가 n-..

Data Structure

[Data Structure] Spanning Tree - 신장 트리

Spanning Tree - 신장 트리 노드의 갯수가 N개일때 모든 노드가 연결되어 있고 간선의 갯수가 N-1개인 트리를 Spanning Tree라고 한다. N개의 모든 노드가 연결되어있고 최소 갯수의 간선(N-1)을 가지기 때문에 Spanning Tree는 트리내에 사이클이 존재하지 않는다. MST (Minimum Spanning Tree) - 최소 신장 트리 MST는 Spanning Tree에서 사용된 간선의 가중치 합이 가장 작은 트리를 의미한다. 모든 노드를 최소한의 간선과 최소한의 비용으로 연결하는것을 말한다. 참고자료 [알고리즘] 최소 신장 트리(MST, Minimum Spanning Tree)란 - Heee's Development Blog Step by step goes a long way..

NBCamp

[최종프로젝트] 실시간 채팅 아키텍처 개선 STOMP+Kafka+MongoDB

데이터 처리 과정 1. 사용자가 Stomp 커넥션 요청 2. 사용자가 Kafka 특정 토픽에 메세지를 발행 3. 해당 메세지를 MongoDB에 저장 4. Kafka를 통해 특정 토픽을 구독중인 모든 서버(2개 이상)에 있는 사용자에게 해당 메세지 전송

Database

[Database] MongoDB

Install MongoDB Community Edition on macOS — MongoDB Manual Docs Home → MongoDB Manual MongoDB AtlasMongoDB Atlas is a hosted MongoDB service option in the cloud which requires no installation overhead and offers a free tier to get started.Use this tutorial to install MongoDB 7.0 Community Edition on macOS using www.mongodb.com Getting Started :: Spring Data MongoDB First, you need to set up a r..

Jisung Jung
Jisung Jung의 기술블로그