데이터 엔지니어링

    [kafka] kafka cluster 구축하기

    데이터 플랫폼 운영업무를 진행하면서 예전 장비가 노후되어 신규 서버가 들어오면서 kafka cluster를 구축하는 일이 생기기도 했고,EOS 문제도 있으며 보안상의 이유로 신규 카프카를 설치해야 하는 경우도 있었습니다. 물론 예전버전의 카프카를 사용하는 경우 rolling upgrade를 진행 할 수도 있습니다. rolling upgrade는 나중에 이야기를 해보려고 합니다. 이번 포스팅에서는 kafka cluster를 구축해보려고 합니다. 각 버전은 다음과 같습니다. zookeeper : 3.6.4 kafka : 3.0.0 monitoring : kafka for ui 현재 업무에서는 예전에 구축했던 버전들을 사용하고 있고, rolling upgrade를 위한 복선으로 위와 같은 버전을 사용하겠습니다..

    [Kafka] kafka 아키텍처와 구성

    MOM(Meesage Oriented Middle ware) 아키텍처 카프카 아키텍처에 대해서 이야기하기 전에 먼저 MOM과 메시지 브로커(Pub/Sub 패턴)을 정리하겠습니다. 메시지 공급자를 이용하여 클라이언트(애플리케이션)들의 메시지를 중간에서 관리해줌 메시지를 보낸(송신) 클라이언트는 응답이 오지 않더라도 다른 작업을 계속 수행할 수 있음(비동기) 메시지 공급자는 수신 클라이언트가 메시지를 소비할 때까지 메시지를 보관 시스템의 개별 구성 요소나 연결이 실패하여도 중단 없이 안정적으로 작동할 수 있는 느슨한 연결을 함 여기서 중요한 것은 MOM은 이론, 개념, 어떤 설계적인 방향성을 제시하고 있고 직접적인 구현체는 아닙니다. 메시지 브로커(Pub/Sub 패턴) 메시지 브로커는 송신자(Publishe..

    [Kafka] Apache kafka 소개와 배경

    현재 업무상 데이터 인프라, 데이터 엔지니어링, 데이터 플랫폼을 운영하고 있습니다. 데이터 엔지니어라는 포지션이 꼭 데이터 엔지니어링만을 다루는 것이 아니라 해당 시스템을 뒷받침하는 인프라적인 요소를 잘 다루어야 한다는 것을 크게 체감하고 있습니다. 데이터 인프라적인 요소 또한 조금씩 포스팅하려고 합니다.. 위에서 이야기한 두가지 요소를 포함하는 것을 데이터 플랫폼이라고 규명하겠습니다. 현재 운영하는 데이터 플랫폼의 첫 시작인 카프카에 대해서 이야기하려고 합니다. Apache Kafka(아파치 카프카) 카프카는 카프카 공식문서를 통하면 더욱 자세하게 알 수 있습니다. 아파치 카프카란? 오픈소스로 확장성이 뛰어난 메시지 브로커 프로젝트입니다. 분산형 데이터 스트리밍 플랫폼이며 대용량의 실시간 데이터를 처리..

    [빅데이터를 지탱하는 기술] 빅데이터의 축적 # 2

    스트리밍 형의 데이터 전송 웹 브라우저, 모바일 앱, 센서 기기등 각종 디바이스에서는 데이터가 바로 생성이 되고 어디에도 저장이 되지 않는 데이터는 바로 전송을 하고 수집을 해야합니다. 이러한 데이터는 벌크 형 도구로 모으는 것은 불가능하기 때문에 스트리밍 형 데이터 전송이 필요합니다. 웹 브라우저나 모바일 앱은 메시지 배송의 통신 프로토콜로 HTTP(S)를 사용합니다. lot 같은 머신 데이터는 MQTT 등의 오버헤드가 작은 프로토콜이 사용되는 경우도 있습니다. 이러한 데이터 전송의 공통점은 다수의 클라이언트에서 작은 데이터들이 전송되는 것입니다. 이러한 데이터 전송 방식을 '메시지 배송(message delivery)'이라고 하며 메시지 배송 시스템은 통신을 위한 오버헤드가 커지기 때문에 이를 처리하..

    [빅데이터를 지탱하는 기술] 빅데이터의 축적 # 1

    객체 스토리지와 데이터 수집 빅데이터의 대부분은 확장성이 높은 '분산 스토리지(distributed storage)'에 저장됩니다. 일반적으로는 파일을 저장하기 위한 '객체 스토리지(object storage)'가 많이 이용됩니다. 대표적으로 Hadoop의 HDFS, Amazon S3가 있습니다. 객체 스토리지의 파일을 읽고 쓰는 과정은 네트워크를 통해서 일어납니다. 데이터는 여러 디스크에 복사되기 때문에 하나의 디스크가 고장이 나도 데이터가 손실되지 않는다는 장점을 가지고 있습니다. 또한 읽고 쓰는 작업을 여러 하드웨어에 분산하기 때문에 데이터의 양이 늘어나도 성능이 떨어지지 않도록 설계되어 있습니다. 하지만 객체 스토리지는 데이터의 양이 많을 때에는 효율적이지만 소량의 데이터인 경우에는 비효율적입니다..

    [빅데이터를 지탱하는 기술] 대규모 분산 처리의 프레임워크 # 5

    데이터 마트의 구축 팩트 테이블(Fact Table) 데이터 분석의 시작은 데이터를 구조화입니다. 많은 정보를 담고 있는 팩트 테이블은 데이터 분석의 많은 부분을 차지하고 있습니다. 팩트 테이블의 크기가 작다면 메모리에 올릴 수 있지만 빅데이터의 경우에는 팩트 테이블의 크기가 커서 열 지향 스토리지에서 데이터를 압축해야 빠른 집계를 할 수 있습니다. 새로운 데이터가 들어왔을 때 팩트 테이블은 추가(append), 치환(replace) 두 가지의 작성방법이 있습니다. 추가(append)는 새로 도착한 데이터만 기존의 데이터에 추가해주는 방식이고 치환(replace)은 과거의 데이터와 새로운 데이터를 포함하여 테이블 전체를 치환하는 방식입니다. 테이블 파티셔닝 효율면에서는 추가(append)가 유리합니다. ..