목록분류 전체보기 (77)
엔지니어 블로그

Event Streaming Platform이벤트 스트리밍이란? 이벤트 스트리밍이란 다양한 소스에서 발생하는 실시간 데이터를 이벤스 스트림 형태로 캡쳐하고 저장/처리하는 방법입니다. 증권거래소,은행 등의 결 제 정보 및 금융정보, 물류 산업에서 실시간 추적 및 모니터링과 같이 실시간 데이터 처리가 중요한 작업에 사용됩니다.이벤트 스트리밍의 필요성운영적 측면 : 일상의 많은 서비스가 온라인화 되면서 오프라인 서비스의 즉각적인 반응을 온라인에서도 얻길 원하는 사용자들이 많아지고 있습니다. 이에 따라 온라인에서도 오프라인과 같은 즉각적인 반응을 구현하기 위해 많이 사용됩니다.기술적 측면 : 전통적으로 널리 사용되던 배치처리 시스템은 실시간 반영이 어렵습니다. 예컨데 일단위 배치 처리 시스템이 있다고 가정한다..

DataWarehouse데이터 웨어하우스는 대표적인 데이터 아키텍처입니다. 조직 내 의사결정을 지원하는 정보 관리 시스템을 말하며, 조직 내 여러 데이터를 공통의 형식으로 한데 모아 관리하고 분석 등을 통해 의사결정에 활용합니다.1989년 빌 인먼이 처음 고안했고, '경영진의 의사결정을 지원하는 주제 지향적이고 통합적이며 비휘발성이고 시간 변형적인 데이터 모임' 이라는 정의를 내렸습니다.데이터 웨어하우스는 MPP 시스템이 등장하면서 눈부신 발전을 거듭합니다. SQL을 지원하지만, MPP의 등장으로 대량의 데이터를 병렬스캔할 수 있고 고성능 집계와 통계 계산을 수행할 수 있습니다. 여기에 더하여 대규모 데이터에 대한 쿼리를 위해 행 기반 데이터베이스에서 열 기반 데이터베이스로 전환 되는 추세입니다.ETL은..
멀티스레딩 환경의 Race Condition과 동기화 방법Race Condition이란?멀티스레딩 환경에서는 Race Condition(경쟁 상태)이 발생할 수 있습니다. 이는 여러 프로세스나 스레드가 동시에 같은 데이터를 조작할 때, 접근 순서나 타이밍에 따라 작업의 결과가 달라질 수 있는 현상을 말합니다.동기화(Synchronization)의 개념동기화는 여러 프로세스나 스레드가 동시에 실행되더라도 공유 데이터의 일관성을 유지하기 위한 작업입니다.임계 영역(Critical Section)데이터 일관성을 보장하기 위해 단 하나의 프로세스 또는 스레드만 진입해 실행 가능한 영역을 임계 영역(Critical Section)이라고 합니다. 임계 영역 진입을 위한 상호 배제(Mutual Exclusion)를 ..
운영체제의 동기화를 공부하며 SpinLock,Mutex,Semaphore를 알게 되었고, python에서는 어떻게 구현되는지 궁금하여 직접 구현해봤습니다. 파이썬의 라이브러리를 활용했고, SpinLock은 라이브러리가 없어 mutex,semaphore만 다룰 예정입니다. 또, 각각의 개념에 대해서는 따로 포스팅을 할 것이기 때문에 본 글에서는 소개하지 않습니다.구현 환경Python 3.9.6구현 내용멀티 스레드 환경에서 숫자를 1씩 더해가는 작업을 통해 스레드 작업을 진행 후 결과 값을 비교총 4개의 스레드에서 10000000 번을 1씩 더하는 코드코드import threading#전역변수shared_counter_without_lock = 0 shared_counter_with_lock = 0#lock..

문제내용주어진 문자열 s를 파티션으로 나누면 되는 문제입니다. 여기서 파티션을 구분짓는 기준은 파티션 내 문자들이 각 파티션에서 최대 한번만 노출되어야합니다.풀이각 문자별로 for문을 이용하여 파티션 끝 값을 파악한 후에 해당 파티션 내 문자의 파티션이 가지고있는 파티션 범위가 포함되는지 확인한 후 길이를 반환하는 식으로 풀이했습니다.class Solution: def partitionLabels(self, s: str) -> list[int]: list = [0] * 26 #1.각각의 글자가 마지막으로 출현한 index를 파악한다. for i,char in enumerate(s): list[ord(char) - ord('a')] = i ..
작업 내용Spark에서 MinlO의 csv를 읽음에러 내용java.lang.ClassNotFoundException: Class org.apache.hadoop.fs.s3a.S3AFileSystem not found해결 방법에러 내용을 보니 Spark가 S3A 파일 시스템을 인식할 수 있는 JAR가 없다는 내용이다. 따라서 Spark Container내에 JAR파일을 추가하여 해결할 수 있을 것 같다. 그리고 Spark 세션에 jar 파일들을 config 해주면 해결된다. .config("spark.jars", "/root/metastore/hadoop-aws-3.3.4.jar") \ .config("spark.jars","/root/metastore/aws-java-sdk-bundle-1.1..

데이터 레이크(Data Lake)란?데이터가 폭발적으로 증가하면서, 이를 효율적으로 저장하고 분석하기 위한 새로운 아키텍처가 필요해졌습니다. 그중 대표적인 방법 중 하나가 바로 데이터 레이크(Data Lake)입니다.데이터 레이크는 이름 그대로 "호수"처럼 다양한 형태의 데이터를 한 곳에 담을 수 있는 저장소입니다. 기존 데이터 웨어하우스(DW)가 정형 데이터를 중심으로 정제된 데이터를 저장했다면, 데이터 레이크는 정형, 반정형, 비정형 데이터를 가공하지 않은 원시 형식(raw format) 그대로 저장할 수 있는 유연한 구조입니다.데이터 레이크의 장점1. 스토리지와 컴퓨팅의 분리 (Separation of Storage and Compute)데이터 레이크의 가장 큰 장점 중 하나는 저장소와 컴퓨팅 자원..
1. Elasticsearch에서 Full GC가 자주 발생하는 이유Elasticsearch는 Java 기반 애플리케이션이기 때문에 JVM의 Heap 메모리 관리가 성능에 큰 영향을 미칩니다. 특히 다음과 같은 이유로 Old 영역에 많은 객체가 쌓여 Full GC가 자주 발생할 수 있습니다.대량의 장기 유지 객체(캐시 데이터, Lucene 인덱스 구조 등) 누적잘못된 메모리 설정(과도한 Heap 크기 설정)비효율적인 인덱싱 작업이나 높은 빈도의 검색 요청으로 인한 객체 생성 증가2. 분산 환경에서의 STW(Stop-The-World) 대응 방식ES는 분산 환경에서 운용되므로, 한 노드에서 STW가 발생하더라도 전체 서비스 중단을 방지할 수 있습니다. 이를 가능하게 하는 주요 설계는 다음과 같습니다.샤딩(..