분류 전체보기

    [Kafka] 카프카 기본 개념 - 브로커, 토픽, 파티션

    카프카 브로커 브로커란? 카프카 클라이언트와 데이터를 주고받기 위해 사용되는 주체로, 데이터를 분산 저장하여 장애가 발생하더라고 안전하게 사용할 수 있도록 도와주는 애플리케이션. 브로커 서버를 여러대로 구성하여, 클러스터로 묶어서 운영할 수 있다. 카프카 클러스터로 묶인 브로커들은 프로듀서가 보낸 데이터를 안전하게 분산 저장하고 복제하는 역할을 수행한다. 데이터 저장, 전송 프로듀서로부터 데이터를 전달받으면 카프카 브로커는 프로듀셔가 요청한 토픽의 파티션에 데이터를 저장하고 컨슈머가 데이터를 요청하면 파티션에 저장된 데이터를 전달한다. 프로듀서로부터 전달받은 데이터는 파일 시스템에 저장된다. 카프카는 메모리나 데이터베이스에 저장하지 않으며 따로 캐시 메모리를 구현하여 사용하지도 않는다. 일반적으로 파일 ..

    [Kafka] 카프카의 역할과 특징

    카프카의 역할 데이터를 생성하고 적재하기 위해서는 데이터를 생성하는 소스 애플리케이션과 데이터가 최종 적재되는 타깃 애플리케이션을 연결해야 한다. 카프카를 통해 웹 사이트, 애플리케이션 등에서 취합한 데이터 스트림을 한 곳에 모아 처리할 수 있도록 중앙 집중화하고, 실시간으로 관리할 수 있게 됐다. 카프카를 중앙에 배치함으로써 소스 애플리케이션과 타깃 애플리케이션 사이의 의존성을 최소화하여 커플링을 완화하였다. 기존의 1:1 매칭으로 개발하고 운영하던 데이터 파이프라인은 커플링으로 인해 한쪽의 이슈가 다른 한쪽의 애플리케이션에 영향을 미치곤 했지만, 카프카는 이러한 의존성을 타파했다. 빅데이터 파이프라인에서 카프카의 역할 빅데이터로 적재되는 데이터의 종류는 다양하다. 스키마 기반의 정형 데이터 일정한 규..

    [CORS] CORS 정리

    Same-Origin Policy & Cross-Origin Policy HTTP 요청에 대해서 HTML → 기본적으로 Cross-Origin 정책을 따름 link 태그에서 다른 origin의 css 등의 리소스에 접근하는 것이 가능하며, img 태그등에서 다른 리소스에 접근하는 것이 가능 XMLHttpRequest, Fetch API 등 script 태그 내 → 기본적으로 Same-Origin 정책을 따름 기본적으로 다른 Origin에 있는 리소스에 접근할 수 없다. 여기서 Origin이란? 같은 출처 (Origin)이란 URL 구성 요소 중 Scheme, Host, Port 이 동일한 경우 같은 Origin이라고 판단한다. URL이 https://will.seungho.com:443 인경우를 예로 들..

    [대규모 시스템 설계 기초 정리] 알림 시스템 설계

    알림 시스템 설계 고객에게 중요할 만한 정보를 비동기적으로 제공하는 시스템. 모바일 푸쉬 알림, SMS 메시지, 이메일 등 연락처 정보 수집 절차 & 연락처 테이블 구조 알림을 보내려면 모바일 단말 토큰, 전화번호, 이메일 주소 등의 정보가 필요하다. 사용자가 우리 앱을 설치하거나 처음으로 게정을 등록하면 API 서버는 해당 사용자의 정보를 수집하여 데이터베이스에 저장한다. 한 사용자가 여러 단말을 가질 수 있고, 알림은 모든 단말에 전송되어야 한다는 점을 고려. 단일 알림 시스템의 한계 SPOF 알림 서비스에 서버가 하나밖에 없다는 것은, 그 서버에 장애가 생기면 전체 서비스의 장애로 이어진다는 뜻. 규모 확장성 한 대 서비스로 푸쉬 알림에 관계된 모든 것을 처리하므로, 데이터베이스나 캐시 등 중요 컴..

    [대규모 시스템 설계 기초 정리] 분산 시스템 유일 ID 생성기

    요구사항 ID는 유일해야 하며 숫자로만 이루어짐 64비트로 표현 가능해야 하며, 발급 날짜에 따라 정렬이 가능해야 한다 초당 10,000개의 ID를 만들 수 있어야 한다. 분산 시스템에서 유일성이 보장되는 ID를 만드는 방법 다중 마스터 복제 UUID 티켓 서버 트위터 스노플레이크 접근법 다중 마스터 복제 데이터베이스의 auto_increment 기능을 활용하는 것 ID의 값을 1만큼 증가시켜 얻는 것이 아니라, 현재 사용 중인 데이터베이스의 서버의 수인 k만큼 증가시켜 얻는 접근법 어느 정도 규모 확장성 문제를 해결할 수 있는 반면 다음과 같은 한계가 존재한다. 여러 데이터센터에 거쳐 규모를 늘리기 어렵다 ID의 유일성을 보장할 수는 있지만, 시간 흐름에 맞추어 커지도록 보장할 수 없다. 서버를 추가하..