목록글공부 (7)
엔지니어 블로그
ETL에서는 데이터 수집 및 처리 주기(빈도)가 매우 중요합니다. 수집 주기에 따라 어떤 처리 방식을 선택할지 달라지며, 대표적으로는 다음과 같은 세 가지 방식이 있습니다.BatchStreamingMicroBatch이번 글에서는 각 방식의 개념과 적절한 사용 사례를 정리해보려 합니다.1. Batch란?Batch는 데이터를 일정 시간 동안 모아서 한 번에 처리하는 방식입니다. 예를 들어, 매일 자정에 하루치 로그를 처리하거나, 데이터 양이 일정 기준을 넘었을 때 작업이 실행됩니다.특징데이터를 모아두었다가 일정 주기 또는 임계 데이터량을 기준으로 처리처리 시점에 시스템에 부하가 집중될 수 있음후속 작업이 처리 완료를 기다려야 하는 병목 가능성 존재사용 예시유저 행동 로그 기반 일간, 주간, 월간 보고서주기적..
멀티스레딩 환경의 Race Condition과 동기화 방법Race Condition이란?멀티스레딩 환경에서는 Race Condition(경쟁 상태)이 발생할 수 있습니다. 이는 여러 프로세스나 스레드가 동시에 같은 데이터를 조작할 때, 접근 순서나 타이밍에 따라 작업의 결과가 달라질 수 있는 현상을 말합니다.동기화(Synchronization)의 개념동기화는 여러 프로세스나 스레드가 동시에 실행되더라도 공유 데이터의 일관성을 유지하기 위한 작업입니다.임계 영역(Critical Section)데이터 일관성을 보장하기 위해 단 하나의 프로세스 또는 스레드만 진입해 실행 가능한 영역을 임계 영역(Critical Section)이라고 합니다. 임계 영역 진입을 위한 상호 배제(Mutual Exclusion)를 ..

1. GC(가비지 컬렉션)란?GC란 힙(Heap) 메모리에 동적으로 할당된 객체 중 사용되지 않는 객체를 자동으로 식별하고 제거하는 프로세스를 의미합니다. GC 덕분에 개발자는 메모리 누수와 같은 메모리 관리 문제에 신경 쓰지 않고 프로그래밍에 집중할 수 있게 되었습니다.그러나 GC는 다음과 같은 단점도 존재합니다.객체의 메모리가 정확히 언제 해제되는지 알 수 없어, 개발자가 메모리 관리를 직접 제어하기 어렵습니다.GC가 실행되는 동안 모든 애플리케이션의 동작이 일시적으로 중단되는 Stop-The-World(STW) 현상이 발생하여 오버헤드가 생길 수 있습니다.2. GC 대상은 어떻게 식별할까?GC는 객체의 도달성(Reachability) 개념을 이용해 제거 대상을 식별합니다.객체에 유효한 참조(refe..
1.모든것은 CPU에서 시작된다.CPU는 운영체제,프로세스,스레드와 같은 개념을 알지 못한다. 단지 메모리에서 명령어를 가져다가 수행하고 다시 명령어를 가져오고 수행하는 것을 반복 할 뿐이다. 그렇다면 CPU는 어떤 기준으로 명령어를 메모리로부터 가져오는 것일까? 바로 PC(Program Counter) 라는 레지스터에서 찾을 수 있다. PC레지스터에는 CPU가 다음에 가져 올 명령어 주소를 저장하고 있다. PC 레지스터의 명령어 주소 값은 자동으로 1씩 증가한다. CPU가 주소를 하나씩 증가시키면서 차례대로 명령어를 실행하기에 자연스러운 모습이다. 하지만 if~else,함수 호출 같은 명령어를 만나게 되면 이 순서는 파괴된다. 이때는 CPU가 대상 명령어 주소로 PC 레지스터의 값을 동적으로 변경한다...
컴파일러는 어떻게 동작하는가?1.컴파일러는 단순한 프로그램이다컴파일러는 고수준언어를 저수준 언어로 번역하는 프로그램이다. 텍스트 형태로 작성된 소스파일을 컴파일러에 input하면 CPU가 실행할 수 있는 기계어로 작성된 실행파일을 output 한다. CPU는 추상적인 명령어를 이해할 수 없기때문에 이러한 작업이 동반된다.2.토큰 추출하기컴파일러는 소스코드를 번역하기 위해 토큰을 추출한다. 토큰을 추출하기 위해서는 먼저, 각 항목을 잘게 쪼갠다. 이후 각 항목의 정보와 추가정보를 결합하고 이것을 토큰이라고 부른다. 이렇게 토큰을 추출하는 과정을 어휘분석(lexical analysis)라고 부른다.3.토큰이 표현하고자 하는 의미토큰을 추출한 이후에는 전달하고자 하는 토큰 의도를 표현해야한다.while (표현..
CPU는 똑똑한 바보CPU는 스위치의 개폐만으로 0,1을 표현하고 더 나아가 Boolean 논리를 나타낼 수 있는 것에서 착안하여 만들어졌다. CPU는 생각보다 단순하다. A 지점에서 데이터를 가져와 간단한 연산 후 B 지점으로 옮기는 작업만 수행할 뿐이다. 하지만 굉장한 장점 하나가 단순함을 모두 상쇄한다. CPU는 속도가 매우 빠르다. 인간의 계산 속도를 아득히 뛰어넘을 정도다. 이러한 장점을 토대로 CPU는 인간에게 제 2의 두뇌가 되어줬다.인간은 제 2의 두뇌, CPU를 제어하고 작업을 시키기 위해 CPU의 언어를 사용해야했다. CPU가 인간의 언어를 이해할 수 없기 때문이다. 그래서 0과1로 작성된 천공카드를 통해 CPU에게 명령어를 전달했고, CPU는 명령어를 수행했다. 이 0,1로 작성된 내..
보호되어 있는 글입니다.