728x90
반응형
[Apache Kafka] 카프카란 무엇인가?2024-04-02 15:25:17카프카(Kafka)란? 카프카(Kafka)는 파이프라인, 스트리밍 분석, 데이터 통합 및 미션 크리티컬 애플리케이션을 위해 설계된 고성능 분산 이벤트 스트리밍 플랫폼이다. Pub-Sub 모델의 메시지 큐 형태로 동작하며 분산환경에 특화되어 있다. 카프카의 탄생 배경 비즈니스 소셜 네트워크 서비스인 링크드인(linked-in)에서 개발했다. 다음은 카프카 개발 전 링크드인의 데이터 처리 시스템이다. 1. 기존 데이터 시스템의 문제점 각 애플리케이션과 DB가 end to end로 연결되어 있고(각 파이프라인이 파편화 되어있음), 요구사항이 늘어남에 따라 데이터 시스템 복잡도가 높아지면서 다음과 같은 문제가 발생하게 되었다. 1. 시스템 복잡도 증가 (Complexity) 통합된 전송 영역이 없어 데이터 흐름..
RDBMS와 NoSQL이란?2024-04-02 09:54:35RDBMS와 NoSQL? RDBMS란 테이블을 통해 정형화된 데이터를 저장하고, 테이블끼리 관계를 맺을 수 있다. 또한 제약 조건을 통해 데이터의 중복을 피할 수 있다. 테이블끼리 관계를 맺을 수 있으니 경우에 따라 테이블을 나누어 데이터를 관리할 수 있고 데이터를 조회해 올 때 'JOIN'을 사용해 나누어져 있는 테이블의 데이터를 불러올 수 있다. 제약 조건을 통해 데이터 중복을 막을 수 있으며 이는 데이터를 수정해야 할 때 수많은 데이터를 찾아 수정해야 하는 번거로움을 줄여줍니다. NoSQL란 NoSQL은 비관계형 데이터 저장소 역할을 한다. 기존 RDBMS은 scale-up(수직적 확장)을 해야 하는 한계가 있다. NoSQL은 수평적 확장을 손 쉽게 할 수 있어 많은 데이터를 저장하고 분산 처리를 ..
컴퓨터의 구성2024-03-28 22:30:12컴퓨터 시스템은 크게 하드웨어와 소프트웨어로 나누어진다. 하드웨어 : 컴퓨터를 구성하는 기계적 장치 소프트웨어 : 하드웨어의 동작을 지시하고 제어하는 명령어 집합 하드웨어 중앙처리장치(CPU) 기억장치 : RAM, HDD 입출력 장치 : 마우스, 프린터 소프트웨어 시스템 소프트웨어 : 운영체제, 컴파일러 응용 소프트웨어 : 워드프로세서, 스프레드시트 하드웨어에 대해 살펴보자 하드웨어는 중앙처리장치(CPU), 기억장치, 입출력장치로 구성되어 있다. 이들은 시스템 버스로 연결되어 있으며, 시스템 버스는 데이터와 명령 제어 신호를 각 장치로 실어 나르는 역할을 한다. 중앙처리장치(CPU) 인간으로 따지면 두뇌에 해당하는 부분 주기억장치에서 프로그램 명령어와 데이터를 읽어와 처리하고 명령어의 수행 순서를 제어함..
JWT (JSON Web Token) 이해하기2024-03-27 16:50:42JWT 란? JWT(JSON Web Token)은 약자대로 JSON 객체를 이용해서 토큰 자체에 여러 정보를 담을 수 있고 토큰을 이용해 인증 처리할 수 있는 것을 말한다. JWT 구조 JWT 구조는 3가지로 분류할 수 있다. header header는 signature를 해싱하기 위한 알고리즘 정보를 담는 공간이다. payload payload는 서버와 클라이언트가 주고받을 수 있는 정보(시스템에 사용되는 정보)를 담을 수 있는 공간이다. signature signature는 해당 Token의 유효성을 검증하기 위한 정보 공간이다. 이 signature를 통해 해당 Token이 유효한지 체크하게 된다. JWT 검증 방법 이제부터 JWT가 어떻게 해당 토큰이 유효한 것인지 알아보겠다. eyJhbGciOi..
Access Token 과 Refresh Token 이 뭐고 왜 필요한가2024-03-22 10:52:04JWT 토근이 무엇이고 왜 필요한가 JWT 토큰은 유저의 신원이나 권한을 결정하는 정보를 담고 있는 데이터 조각이다. JWT 토큰을 사용해서 클라이언트와 서버는 안전하게 통신한다. 왜냐하면 JWT 토큰 인증방식은 비밀키(개인키 or 대칭키)로 암호화를 하기 때문이다. 하지만 탈취당했을 때 문제가 발생한다. JWT 토큰을 탈취한 사람은 마치 신뢰할 만한 사람인 것처럼 인증을 통과할 수 있기 때문이다.심지어 본 주인인 클라이언트와 탈취한 사람을 서버는 구분할 수 없다. 따라서 유효기간을 두어야하는 것이다. 그런데 유효기간을 짧게 두면 사용자가 로그인을 자주 해야 하므로 사용자 경험적으로 좋지 않고, 유효기간을 길게 두면보안상 탈취 위험에서 벗어날 수 없다. 해결법은 유효기간이 다른 JWT 토큰 2개(Acce..
Elasticsearch에 대하여2024-03-21 15:48:46Elasticsearch는 Apache Lucene 기반의 Java 오픈 소스 분산 검색 엔진이다. Elasticsearch를 통해 방대한 양의 데이터를 신속하게(≒ 실시간) 저장, 검색, 분석을 수행할 수 있다. Elasticsearch는 검색 엔진으로 단독으로 사용되기도 하며, ELK(Elasticsearch / Logstash / Kibana) 스택으로 사용되기도 한다. 이러한 Elasticsearch는 대규모 로그 파일 관리나 실시간 검색 서비스 등과 같이 대용량 데이터를 빠르게 처리해야 하는 경우 유용하게 사용될 수 있다. 데이터 저장 방법(RDBMS와 차이점) RDB는 정규화된 스키마에 따라 데이터를 구조화하지만, Elasticsearch는 JSON 문서 형태로 비정형 데이터도 저장하고 인덱싱..
DB Soft Delete VS Hard Delete2024-03-20 08:52:03Soft Delete 와 Hard Delete 란? 데이터베이스에서 데이터를 삭제하는 방법은 크게 두 가지로 나뉩니다. Hard Delete 우리가 잘 아는 Delete 문을 사용하여 실제 row를 삭제하는 방법 Soft Delete 삭제 표시(deleted_at 필드에 현재 시간을 넣어주는 방법 등)를 해줌으로써 삭제된 필드라는 의미를 부여하는 방법 이 글을 쓴 이유 데이터간 관계있는 경우, join을 계속해서 해야하는 경우 Soft Delete를 이용하는 경우가 종종 있습니다. 다음 내용은 이벤트 티케팅 서비스에서 Soft Delete로 인하여 장애를 겪었던 이야기입니다. 좌석이 결제/예약이 되면 deleted_at으로 예약됨을 표시하고 있는 서비스에서 예약된 좌석을 뽑아내어 다시 재저장하는 DB ..
직렬화(Serialization)란 무엇일까?2024-03-01 11:01:06직렬화라는 용어에 대해서 들어만 보고 공부해본 적이 없기에 이번 기회에 정리하게 되었다.public interface Serializable {}Serializable의 인터페이스를 보면 메소드가 하나도 없는 것을 볼 수 있다. 아무런 구현해야 할 메소드도 없는 이 인터페이스가왜 있는걸까 개발을 하다보면 아래와 같은 경우가 존재한다.생성한 객체를 파일로 저장할 일이 있을 수도 있다.저장한 객체를 읽을 일이 생길 수 있다.다른 서버에서 생성한 객체를 받을 일도 생길 수 있다.이럴 때 꼭 필요한 것이 Serialization 이다. 우리가 만든 클래스가 파일을 읽거나 쓸 수 있도록 하거나, 다른 서버로 보내거나받을 수 있도록 하려면 반드시 이 인터페이스를 구현해야 한다.Serializable 인터페이스를 구..
728x90
반응형