9174 words
46 minutes
[draft]블로그 용어사전
2025-01-29

개요#

블로그에 여기저기 흩어져 있는 용어들을 하나의 md에 모읍니다. 개인학습용 포스트 입니다.

Concepts#

conceptdescriptiontags
O(1)상수 시간. 입력 데이터의 크기에 상관없이 실행시간이 일정한 알고리즘.functional
O(n)선형 시간. 입력 데이터의 크기에 비례하여 시간이 걸리는 알고리즘.functional
O(log n)로그 시간. 입력 데이터의 크기에 대한 로그값에 비례하여 시간이 걸리는 알고리즘. binary search에서 나타난다. 데이터 크기의 영향을 상대적으로 덜 받는다.functional
O(n^2)제곱 시간. 입력 데이터의 크기의 제곱에 비례하여 시간이 걸리는 알고리즘. 보통 이중 for loop에서 나타난다.functional
O(n log n)선형로그 시간. n * log n에 비례하여 시간이 걸리는 알고리즘. 보통 quick sort, merge sort 등의 정렬 알고리즘에서 나타난다.functional
클래스 로더JRE의 일부로 자바 클래스와 인터페이스를 동적으로 로드하는 하위 시스템. 자바 바이트 코드를 읽어서 JVM의 실행엔진이 사용할 수 있도록 JVM메모리의 메서드 영역에 적재하는 역할을 한다. 클래스 로딩은 기본적으로 클래스파일을 읽어서 바이너리 코드로 만들고 이를 메모리에 메서드 영역에 저장하는 과정이다.java;stack;heap;memory
스택 메모리Stack Memory. 함수호출과 지역변수에 사용되는 메모리 영역. 함수 호출 시 할당되며 함수 호출이 끝나면 해제됨.java;stack;heap;memory
힙 메모리Heap Memory. 객체를 저장하는 메모리 영역. 런타임에 동적할당됨 JAVA에서는 GC가 관리. : Javajava;stack;heap;memory
가비지 컬렉터Garbage Collector. 더 이상 사용되지 않는 메모리를 해제하는 역할을 하는 매커니즘. : Javajava;stack;heap;memory
원시 타입Primitive Type . int, long, float, double, boolean, char 등의 기본 데이터 타입. Stack Memory에 저장됨 : JAVAjava;stack;heap;memory
참조 타입Referenced Type. 객체의 주소값을 저장하는 데이터 타입. null 값을 가질 수 있음. Heap에 저장됨 : Javajava;stack;heap;memory
박싱과 언박싱Boxing & Unboxing. 원시타입과 해당 래퍼 클래스간의 변환을 의미한다. 원시타입을 래퍼 클래스로 변환할 경우 박싱, 래퍼클래스를 원시타입으로 변환할 경우 언박싱이라고 한다. : Javajava;stack;heap;memory
Constructor Overloading생성자 오버로딩. 하나의 클래스에 매개변수와 타입을 다르게 해서 여러개 생성.java;stack;heap;memory
Observer Pattern특정 객체에 발생하는 모든 이벤트, 상태변화를 감지하고 이를 다른 객체에게 알리는 구독 매커니즘을 정의하는 패턴. 기본적으로 변경하는 실제 객체 집합을 미리 알 수 없거나 동적으로 변경되는 경우 사용한다.design-pattern
Generic데이터 타입이 나중에 결정되는 것을 의미. 클래스에서 사용할 객체의 데이터 타입을 컴파일 시점에 결정하는 것. 컴파일 시 타입 체크를 하기 때문에 런타임 에러를 방지할 수 있으며(타입안정성) 실행 시점에 다른 타입을 받아서 처리할 수있기 때문에 생산성이 늘어난다.(재사용성)java;generic
Type ParameterGenerics에서 데이터 타입을 전달하는 변수. Generic class를 사용할 때 실제 타입으로 대체된다.java;generic
Generic Method파라미터와 리턴타입으로 타입 파라미터를 가지는 메소드.java;generic
와일드카드<?> 형태로 사용. 모든 타입을 허용. 기본적으로 이미 타입이 결정된 제네릭 타입을 전달받아서 활용할 때 사용. 단일 메소드 내에서 알 수 없는 타입을 나타낼 때 사용java;generic
상한 와일드카드upper bound wild card. <? extends T> 와 같이 사용. T와 T를 상속받는 타입만 사용하게끔 제한. 주로 Collection 에서 데이터를 읽을 때(Produce) 사용java;generic
하한 와일드카드lower bound wild card. <? super T> 와 같이 사용. T와 T의 super 클래스 타입만 사용java;generic
Type Erasure타입 소거. 제네릭 타입이 컴파일 시 제거되어 런타임에는 원시 타입으로 변환되는 것. 타입 소거는 제네릭이 없는 기존 코드와의 호환성을 유지하기 위해 도입되었다.java;generic
공변성Covariance. A가 B의 서브타입이라면, C<A>C<B>의 서브타입이다.서브타입의 관계가 유지되는 것. subtype 까지만 받는 경우. Wildcard의 <? extends T> 가 이에 해당한다.java;generic
반공변성Contravariance. 서브타입의 관계가 역전되는 것. Supertype이나 동일한 타입을 받는 경우. Wildcard의 <? super T> 가 이에 해당한다.java;generic
무공변성Invariance. 서브타입 관계가 유지되지 않는 것. A가 B의 서브타입이라도 C<A>C<B>는 서로 관련이 없다. 기본적으로 타입 변환이 안된다. 일반적인 제네릭 타입은 무공변성을 가진다.java;generic
BivarianceCovariance하면서 Contravariance를 모두 포함하는 경우.java;generic
PECSProducer Extends Consumer Super. extends 를 사용하는 경우 자바 Collection을 producer로 사용하고 super를 사용하는 경우 Collection을 Consumer로 사용.java;generic
Object ClassJava의 모든 클래스의 최상위 클래스. 모든 자바 클래스는 암시적으로 Object Class를 상속함. 객체 비교, 해시코드 생성, 객체 복제 등 모든 자바 객체의 공통 기능 제공java
String Pool문자열 리터럴이 동일하면 같은 주소값을 가리키게 되는 메모리 영역 :java
순수함수pure function. 다음 두가지 조건을 만족할 경우 순수함수라 한다. 1. 동일한 입력에 대해 항상 동일한 출력을 반환 2. 글로벌 상태를 변경하거나 IO를 사용하는 등의 사이드 이펙트를 가지지 않는다.java;functional
참조 투명성referentially transparent. 동일한 입력에 대해 항상 동일한 출력을 보장하는 특성. 핵심은 표현식을 값으로 대체할 수 있는 것. 이러한 특서은 memoization라는 최적화 기법을 사용할 수 있게 한다. memoization은 함수의 결과를 캐시해두어 계산 시간을 줄이는 대신 메모리 공간을 사용하는 기법이다. (시공간 트레이드오프)java;functional
재귀Recursion. 같은 형태의 문제를 부분적으로 해결하고 그 결과를 이용해 최종적으로 원래 문제를 해결하는 기법. 스스로 자신을 호출하는 함수를 재귀함수라 한다. 재귀함수는 반드시 종료 조건을 만족해야 한다.java;functional
Lambda자바에서 람다는 표현식의 일종으로 0개 이상의 매개변수를 가지고 값을 반환할 수 잇다. 기본적으로 파라미터를 받아서 표현식인 body로 전달한다.java;functional
Functional Interface함수형 인터페이스는 하나의 추상 메서드를 가지고 있는 인터페이스. 함수형 인터페이스는 람다 표현식을 사용할 수 있게 해준다. 함수형 인터페이스는 @FunctionalInterface 어노테이션을 사용해 정의한다.java;functional
SAMSingle Abstract Methodjava;functional
Functional Interface AnnotationSAM 요구사항을 충족하기 위해 Java에서 도입한 마커 어노테이션. 기존 인터페이스와 하위 호환성 보장java;functional
Stream자바 Stream은 기본적으로 평가할 수 있는 함수들의 파이프라인이다. Stream은 데이터 처리 연산을 지원하도록 소스에서 추출된 연속된 요소이다. Java의 Stream은 데이터 구조가 아니며 원본 데이터를 변경하지 않는다. Stream은 데이터를 변환하는데 사용되는 함수들의 연속이다.java;stream
배열Array. 배열은 연속적인 메모리 공간에 저장되는 자료구조이다. 배열은 Heap 영역에 저장되며 같은 데이터 타입만 저장할 수 있다.java;collection
ArrayListArrayList는 Java에서 제공하는 가변 길이 배열 구현체다. 중복을 허용하고 순서가 유지되며 데이터를 중간에 추가하거나 삭제할 수 있다. 내부적으로 크기가 자동으로 관리되는 Object 배열을 가진다. 기본적으로 순서를 유지해야 하기 때문에 데이터의 삽입 삭제가 빈번할 경우 성능이 저하될 수 있다.java;collection
Scope프로그램 내에서 객체가 유효함을 표시하기 위한 범위이다. Scope은 기본적으로 제어할 수 있냐 없냐의 문제이다.python;functional;decorator;closure
Lexical Scope함수를 선언한 지점의 변수와 함수를 포함한 환경을 의미하며 정적 스코프(Static Scope) 이라고도 한다. Nested Function에서 inner function이 더 상위 범위에 있는 변수와 함수에 접근할 수 있음을 의미한다. 기본적으로 함수의 호출(call)지점이 아니라 선언(declare) 지점에 따라 inner function이 영향을 주는 범위가 달라지는 것을 의미한다.python;functional;decorator;closure
Closure환경을 캡처하는 함수 오브젝트. 클로저는 Lambda와 같은 함수 오브젝트의 일종으로 자신이 정의된 환경(Lexical Scope)을 캡처해서 추후 그 환경에 접근할 수 있게끔 한다. 환경을 캡처한다는 것은 자신을 둘러싼 Scope의 상태값을 보존한다는 것이다. 이는 내부 상태를 유지하면서 외부로부터 데이터를 은닉할 수 있게 해준다.python;functional;decorator;closure
Free Variable클로저 내부 함수에서 사용되는 외부 함수의 지역 변수를 말한다. 클로저는 자신이 생성될 때의 환경(Lexical)에 있는 모든 변수를 기억하고 있다. 이러한 변수를 자유 변수라고 한다.python;functional;decorator;closure
functional programming표현식(Expression) 과 평가(Expression)을 사용해 이들을 함수에 캡슐화 하여 특정 상태와 가변 데이터를 피하면서 프로그램을 구축하는 방법론.python;functional
imperative programming명령형 프로그래밍. 프로그램이 상태가 존재하며 프로그램이 실행되는 순서에 따라서 이전 상태를 바꿔가면서 계산하는 패러다임. : functionalpython;functional
declarative programming선언형 프로그래밍. 특정 값에 대한 반환값을 가지는 함수를 연쇄적으로 호출해 최종 결과값을 유도하는 방식python;functional
first class object일급객체. 함수의 인자로 전달 가능하고, 함수의 리턴값으로 사용가능하며 동적으로 생성가능한 객체를 first class object라 한다. 파이썬에서 함수는 일급 객체로 취급된다.python;functional
Tail Call함수 호출 후 바로 다음 함수로 제어권이 넘어가는 구조. 재귀호출. 기본적으로 재귀호출이 발생할 때마다 Call Stack에 쌓이게 되는데, 이를 최적화하여 Stack overflow를 방지하기 위해 TCO를 사용한다.python;functional
Tail Call Optimization재귀함수의 최적화를 위해, 함수의 마지막 부분에서 호출되는 함수를 최적화하여 stack overflow를 방지하는 방법론. Tail Call에서 새로운 스택프레임을 생성하지 않고 기존 스택프레임을 재사용한다. 기본적으로는 컴파일러에서 재귀를 루프로 변경하는 것.python;functional
global keywordpython의 global은 전역변수를 함수 내에서 사용하기 위한 키워드이다.python;functional
strict evaluation인자가 즉시 평가되는 방식. 함수가 호출되기 전에 모든 인자들이 평가된다. 메모리 사용이 예측가능하며 디버깅이 용이하다.python;functional
non-strict evaluationlazy evaluation. 인자가 필요할 때 평가되는 방식. 필요한 값만 계산하므로 메모리 사용이 효율적이다(성능최적화 용이). 무한 데이터 구조를 다룰 때 유용하다. 한번 처리한 값을 캐시하여 재사용할 수 있다.python;functional
tail recursion functionrecursion call 이 논리적인 실행부분의 마지막 부분에 위치하면서, 이전의 호출을 더 이상 필요로 하지 않는 함수를 말한다.python;functional
Scala개별 값에 적용할 수 있고, 개별적인 결과를 반환한다. abs, round, ceil, floor, pow 등. Single Value -> Single Valuepython;functional
Reductioncollection에 있는 모든 값에 누적적으로 함수를 호출해 최종적으로 하나의 값으로 반환하는 것 . Collection -> Single Valuepython;functional
Mapping: 함수를 collection의 각 요소에 적용하는 것. Collection -> Collectionpython;functional
Filtering: 함수를 collection의 각 요소에 적용하고, 조건을 만족하는 요소만 반환하는 것. Collection -> Collectionpython;functional
멱등성Idempotency. 기본적으로 같은 Input에 대해 항상 같은 Output을 반환하는것.python;functional
참조 투명성Referential Transparency. 참조 투명성은 표현식이 동일한 입력에 대해 항상 같은 출력을 내며, 프로그램 내에서 해당 표현식을 같은 값으로 대체해도 프로그램의 연산에 영향을 미치지 않는 성질이다. 즉 표현식 자체가 그 표현식의 결과로 대체될 수 있다.python;functional
순수 함수Pure Function. 같은 Input에 대해 항상 같은 Output을 반환하며, 외부 상태나 부작용에 의존하지 않는 함수. 외부의 어떤 상태도 변경하지 않으며, 함수의 결과가 외부 요인에 의해 영향을 받지 않는다. 모든 순수 함수는 참조 투명성을 가진다.python;functional
Statefull시스템 또는 컴포넌트가 이전 호출 또는 작업의 상태를 유지하여 이후 호출에 영향을 준다. 즉, 과거의 상호작용 결과가 현재와 미래의 작업에 영향을 줄 수 있다.python;functional
Stateless시스템 또는 컴포넌트에 들어오는 각 호출이 독립적으로 처리되며, 이전의 호출이나 작업에 영향을 받지 않습니다python;functional
불변성데이터 구조 또는 객체의 상태를 변경하지 않는 특성. 모든 변경 작업은 새로운 데이터 구조를 반환한다. 불변 객체는 변경 불가능하며, 어떤 연산을 통해서도 원래의 객체가 수정되지 않는다. 변경이 불가능하므로, 동시 접근 시에도 데이터의 일관성을 유지할 수 있다. 멀티 스레드 환경에서 안전하게 공유될 수 있다.python;functional
first class object일급객체. 함수의 인자로 전달 가능하고, 함수의 리턴값으로 사용가능하며 동적으로 생성가능한 객체를 first class object라 한다. 파이썬에서 함수는 일급 객체로 취급된다.python;functional
Function Composition함수 합성. 어떤 결과를 계산하거나 새로운 함수를 만들기 위해 두 개 이상의 함수를 조합하는 것. 기본적으로 여러 개의 순수함수들을 병렬 또는 연쇄적으로 호출해서 더 큰 함수를 만드는 과정을 말한다.python;functional
순차 컴퓨팅python;concurrency
순차 컴퓨팅python;concurrency
IPCInter-Process Communicationpython;asyncio;concurrency;coroutine
pipe:python;asyncio;concurrency;coroutine
named pipe:python;asyncio;concurrency;coroutine
pipe:python;asyncio;concurrency;coroutine
file descripter:python;asyncio;concurrency;coroutine
CORSCross Origin Resource Sharing. 추가 HTTP 헤더를 사용하여, 한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 메카니즘.web
RESTRepresentational State Transfer. HTTP URI를 통해 자원을 명시하고, HTTP 메서드를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것.web
CSRFCross Site Request Forgery. 사용자가 의도하지 않은 요청을 통해 공격하는 방식. 악성코드가 클라이언트가 아니라 서버에서 발생web
서브쿼리Subquery. 서브쿼리는 하나의 SQL쿼리 안에 포함된 다른 SQL쿼리를 말한다. : SQLsql
dbtdata build tool. Tool for transforming data within Data Warehouse.commandline
modela SQL query that is designed to query out particular transformation that you want to make.commandline
Operating System:linux;kernel
System Call Interface:linux;kernel
Kernel:linux;kernel
Kernel Space:linux;kernel
Context SwitchingCPU가 한 프로세스에서 다른 프로세스로 전환하는 과정. 커널 모드와 유저 모드 간 전환kafka;zero-copy
Zero-Copy디스크의 데이터를 Application buffer를 거치지 않고 커널에서 직접 네트워크로 전송하는 기법. 디스크에서 네트워크로 데이터를 전송할 때 NIC card로 직접 전송하는 방식. 불필요한 데이터 복사를 제거하여 시스템 성능을 향상시킴kafka;zero-copy
DMADirect Memory Access. CPU 개입 없이 메모리와 간 데이터 전송이 가능한 하드웨어 메커니즘. 사실상 Zero-Copy를 구현하는 핵심 기술kafka;zero-copy
socket bufferNetwork 통신에서 데이터를 임시 저장하는 커널 메모리 공간. 송수신 데이터의 버퍼링을 담당kafka;zero-copy
pache cache기본적으로는 disk I/O 성능 향상을 위해 파일 시스템의 데이터를 메모리에 캐싱하는 것. zero copy관점에서는 read buffer로 사용됨.kafka;zero-copy
NICNeitwork Interface Card. 이더넷 카드 .컴퓨터를 네트워크에 연결하는 하드웨어 장치kafka;zero-copy
NIC bufferNIC에 내장된 메모리로,네트워크 패킷을 임시 저장하는 공간kafka;zero-copy
scatter-gatherRead buffer의 포인터를 Socket buffer로 복사하는 방식. DMA 엔진이 Socket buffer의 포인터를 통해 데이터를 NIC buffer로 전송kafka;zero-copy
idempotency멱등성. 멱등성 자체는 동일한 작업을 여러번 실행해도 한 번만 실행한 것과 결과가 같은 것을 의미한다.kafka
max.in.flights.requests.per.connection프로듀서가 브로커로 보낼 수 있는 최대 요청 수 . 브로커는 할당된 모든 파티션에 쓰여진 5개 메시지를 추적하기 위해 고유 식별자를 사용한다.kafka
atomic multipartition write여러 파티션에 거친 쓰기 작업을 원자적으로 수행하는 것kafka
transactional producertransactional.id 설정이 잡혀있고 ininitTransactions()kafka
zombie fencing어플리케이션의 좀비 인스턴스가 중복 프로듀서를 생성하는 것을 방지하기 위한 메커니즘. epoch라는 개념을 사용하여 좀비 프로듀서를 식별한다. 같은 transactional.id를 가진 프로듀서가 새로운 epoch를 가지면 이전 epoch의 프로듀서는 좀비 프로듀서로 간주한다.kafka
isolation.level트랜잭션이 진행 중일 때 다른 컨슈머가 해당 메시지를 읽을 수 있는 수준을 정의한다. read uncommitted, read committed 두 가지 격리 수준을 제공. read committed는 커밋된 트랜잭션의 메시지만 읽을 수 있다. read uncommitted는 트랜잭션의 상태와 관계없이 모든 메시지를 읽을 수 있다.kafka
2PC2 Phase Commit. 분산시스템에서 모든 참여자의 트랜잭션의 원자성을 보장하기 위한 합의 프로토콜의 일종kafka
Kafka Admin Client카프카 클러스터의 메타데이터를 관리 및 제어하기 위해 카프카에서 제공하는 인터페이스. 토픽 관리, 컨슈머 그룹, entity 설정등 기능 제공.kafka
CAP Theory: 분산시스템 설계시 고려하는 중요 3가지 원칙. Consistency(일관성 : 모든 노드가 동시에 같은 데이터를 보여줘야 함. 노드 간 데이터 동기화가 중요) , Availability, Partition Tolerance로 구성됨. 핵심은 기본적으로 3가지 원칙중 2가지만 설계에서 가져갈 수 있고 시나리오에 따라 어떻게 가져가야할 지가 달라진다는 것kafka
Consistency일관성. 분산 시스템에서 Consistency는 기본적으로 모든 노드가 동시에 같은 데이터를 보여줘야 한다는 것을 의미한다. 노드간 동기화가 중요.kafka
Availability시스템이 다운되지 않는게 최우선 순위인것. 모든 요청에 대해 성공/실패와 관계없이 계속 응답을 해야한다.kafka
Partition Tolerance시스템을 구성하는 요소중 하나가 망가지더라도(네트워크 통신 문제 등) 시스템이 계속 동작해야 한다는 특성kafka
Eventual Consistency분산 데이터 스토어 하에서의 모든 노드에서의 읽기작업이 최종적으로 동일한 값을 반환하는 것을 이론적으로 보장하는 것. 고가용성을 보장해야하는 시나리오와 관련있다. 핵심은 단기적으로 일관성을 잃더라도 결국에는(Eventually) 데이터 일관성을 보장하는것.kafka
Strong Consistency특정 한 노드에 변경이 일어나면 즉시 시스템의 모든 노드가 동일하게 동기화되는 것. 핵심은 일단 Transaction이 일어나면 일관성을 유지해야 한다는 것. Consistency를 보장해야 하는 시나리오와 관련있다. 기본적으로 어플리케이션의 확장성과 성능과 트레이드오프를 가진다. 구체적으로는 데이터의 업데이트 또는 복제 프로세스 도중에는 Lock를 통해 다른 프로세스에서 동일 데이터를 업데이트 하지 않도록 해야한다.kafka
preferred leader각 파티션은 기본적으로 선호 리더라는 레플리카를 하나씩 가진다.kafka
unclean leader리더 레플리카가 사용불능인 상황에서 리더가 될 수 없는 레플리카 하나를 리더로 삼는 것. 이 경우 데이터 유실이 일어난다 (예전에 리더에 쓰여졌지만 새 리더로 복제되지 않는 데이터는 모두 유실됨)kafka
페이지 캐시페이지 캐시는 리눅스 커널의 메모리 관리 시스템의 일부로서, 파일 시스템의 데이터를 캐싱하는 데 사용된다.kafka
Rack서버, 네트워크 장비, 스토리지 등 IT 인프라 구성 요소를 설치 및 보관하는 데 사용되는 물리적인 구조물kafka
replication.factor파티션의 복제본 수kafka
unclean.leader.election.enableISR 외의 레플리카가 리더가 될 수 있는지 여부kafka
acksaknowledgement. 프로듀서가 메시지응답을 성공으로 판정한는 기준에 대한 설정. 안정성과 성능간 트레이드오프와 관련kafka
delivery.timeout.ms프로듀서는 이 시간 간격안에 있는 한 메시지 전송을 재시도.kafka
Offset commit컨슈머가 특정 파티션의 offset까지의 메시지를 안전하게 처리할 수 있다고 보장할 수 있는 지점을 카프카에 기록하는 작업. 이는 단순히 처리완료 신호가 아니라 복구가 가능한 지점을 표기하는것의 가까움. 특정 offset을 commit했다는 것은 offset이전의 모든 메시지도 처리되었음을 의미kafka
group.id기본적으로 같은 그룹id를 갖는 두 개의 컨슈머가 같은 토픽을 구독할 경우, 각각의 컨슈머에는 해당 토픽 전체의 서로 다른 서브셋만 할당되기 때문에 각각은 서로 다른 부분의 메시지를 읽게된다.kafka
auto.offset.reset컨슈머가 브로커에 없는 오프셋을 요청할 때 컨슈머가 처음부터 읽을지(데이터 유실 최소화), 가장 최신의 메시지부터 읽을지(중복처리 최소화와 메시지 누락의 트레이드오프)를 결정하는 설정kafka
enable.auto.일정한 시간에 맞춰 컨슈머가 오프셋을 커밋하게 할 것인가 코드에서 오프셋을 커밋하게 할 것인가?kafka
auto.commit.interval.ms오토커밋의 주기. 더 자주 커밋할수록 오버헤드 역시 늘어나지만 컨슈머가 정지했을 경우의 중복의 수는 줄어든다.kafka
dead letter queue재처리가 불가능한 메시지를 보관하는 큐kafka
Controller Plane클러스터에서 역할에 따라 카프카 브로커를 구분한 것. 클러스터의 모든 메타 데이터를 관리하는 영역.kafka
Data Plane클러스터에서 역할에 따라 카프카 브로커를 구분한것. 카프카에 들어오는 실제 데이터에 대한 읽고 쓰기를 담당하는 영역.kafka
produce request데이터 배치 하나가 특정 topic에 쓰여지는 것에 대한 요청.kafka
fetch requestkafka topic으로 부터 데이터를 request하는 것에 대한 요청.kafka
Kafka Broker데이터 수집과 분산처리를 담당하는 카프카의 서버 단위. 주로 프로듀서로 부터 데이터를 수신해서 파티션에 저장하고 , 팔로워 브로커에게 데이터를 복제하고, 컨슈머에게 데이터를 전달하는 역할을 한다.kafka
2f + 1 rulef대의 브로커의 장애를 허용하려면 . 전체 브로커의 수가 최소 2f + 1 이상이어야 한다. 이는 한개 노드가 장애가 나도 나머지 두 개 node가 동기화를 유지할 수 있도록 하기 위함이다. 예를 들어 2개의 브로커가 있을 경우 한개의 브로커가 장애가 나면 나머지 한개의 브로커가 동기화를 유지할 수 없기 때문에 데이터 유실이 발생할 수 있다.kafka
In Sync ReplicaISR. 현재 리더와 동기화된 상태로 유지되는 팔로워 브로커 목록. 기본적으로 리더와 동기화 상태를 유지해야 하며 그러지 못할 경우 목록에서 제외된다.kafka
offset파티션내의 각 메시지의 일종의 일련번호. 컨슈머가 어디까지 메시지를 읽었는지를 관리하는 정보.kafka
consumer_offsetsConsumer 가 어디까지 메시지를 읽었는지를 관리하는 특별한 토픽. 컨슈머가 읽은 메시지의 offset 정보를 저장한다.kafka
Controller카프카 클러스터의 상태를 관리하고 조정하는 클러스터의 일종. 브로커 내에 존재하는 리더 파티션 재분배. 파티션 리밸런싱, Broker 상태 관리 등의 역할을 수행한다.kafka
Replication카프카에서 데이터 복제는 팔로워 파티션이 리더 파티션의 오프셋을 따라 동기화 되는 것을 의미한다.kafka
CoordinatorConsumer Group의 상태를 관리하고 조정하는 역할을 하는 브로커. 컨슈머 그룹의 리밸런싱, 컨슈머 그룹의 상태 관리 등의 역할을 수행한다.kafka
TopicKafka에서 메시지를 논리적으로 구분하는 단위. DB의 Table과 유사한 개념으로 생각할 수 있다. Topic은 여러개의 Partition으로 구성되어 있다.kafka
PartitionTopic을 물리적으로 분할한 단위. 각 Partition은 순차적으로 증가하는 offset을 가진다.kafka
RecordKafka에서 데이터의 단위. 메시지를 의미한다. Record는 Key, Value, timestamp, header, Offset 등의 정보를 가진다.kafka
파티셔너메시지의 파티션 할당을 결정한다. 파티션 키를 설정했을 경우 동일한 키의 메시지는 항상 같은 파티션으로 간다. 파티션 키를 설정하지 않을 경우 RR(Round-Robin) 방식으로 여러 파티션에 분산된다.kafka
배치카프카에서의 배치는 여러 메시지를 한 번에 묶어서 전송하는 것을 의미한다. 배치 크기를 설정할 경우 설정된 크기만큼 메시지를 모아서 전송한다. 메시지의 양이 배치 크기에 도달하지 못한 경우 일정 시간 동안 모은 메시지를 전송한다.kafka
생성카프카 프로듀서에서 생성은 브로커로 메시지를 전송 후 응답을 확인하는 절차이다.kafka
Fire and Forget메시지를 서버에 전송만하고 성공 혹인 실패 여부에는 신경쓰지 않음. 재시도할 수 없는 에러 혹은 타임아웃 발생시 메시지가 유실됨.kafka
동기적 전송기본적으로 카프카는 비동기적으로 동작하지만(Future 객체를 반환) 다음 메시지를 전송하기 전 get()을 호출하여 동기적으로 동작하게끔 할 수 있다.kafka
비동기적 전송콜백함수와 함께 send() 를 호출하면 카프카 브로커로부터 응답을 받는 시점에서 자동으로 콜백 함수가 호출된다.kafka
client.id프로듀서 클라이언트 식별자. 브로커에 로그를 남길 때 사용.kafka
acks프로듀서 매개변수. 프로듀서가 임의의 쓰기 작업이 성공했다고 판별하기 위해 얼마나 많은 파티션 레플리카가 해당 메시지를 수신해야 하는지를 지정.kafka
end to end latency종단지연. 레코드가 생성되어 컨슈머가 읽을 수 있을 때까지의 시간. acks는 종단지연에 영향을 주지 않는다.kafka
Schema RegistryProducer와 Consumer 간에 주고받는 메시지의 형식(스키마)을 중앙에서 관리하는 시스템. 주로 Avro, Protocol Buffers와 같은 스키마 형식을 지원하며 스키마 버전관리가 가능하다. RESTful 인터페이스를 통해 스키마를 저장하고 검색할 수 있다.kafka
Avro바이너리 포맷으로 데이터를 읽고 쓰기 위한 데이터 직렬화 시스템. 스키마는 JSON으로 정의되며, 데이터는 스키마에 따라 직렬화된다. 기본적으로 메시지가 바이너리라 메모리를 적게 사용하며 데이터가 스키마와 함께 저장되지 않기 때문에 데이터의 일관성을 유지하기 용이하다. 이는 데이터의 구조가 변경되더라도 기존 데이터와의 호환성을 유지할 수 있기 때문이다.kafka
Sticky Partitioning프로듀서가 메시지 배치를 채울 때, 다음 배치로 넘어가기 전에 이전 배치를 모두 채우는 것kafka
RoundRobin Partitioner기본적으로 메시지를 전체 파티션에 대해 균등하게 할당하는 것kafka
UniformSticky Partitionerbatch.size에 도달할 때까지 파티션을 유지. 대기 중인 큐의 크기를 고려하여 파티션을 전환하는 균등 분배 전략 사용.kafka
Consumer Group토픽에서 읽어오는 데이터를 확장할 수 있도록 구성된 컨슈머의 집합.kafka
Partition Rebalancing컨슈머 그룹에 새로운 컨슈머가 추가되거나 기존 컨슈머가 사라지면, 토픽에 파티션을 새로 할당하는 과정.kafka
Eager Rebalancing조급한 리밸런싱.모든 컨슈머가 읽기 작업을 멈추고 파티션을 완전히 다시 할당하는 방식. 모든 컨슈머가 자신에게 할당된 파티션을 포기하고 새로운 파티션을 할당받는 두 단계를 거친다.kafka
Cooperative Rebalancing협력적 리밸런싱. 핵심 아이디어는 전체 파티션이 아닌 재할당 대상이 되는 파티션만 컨슈머가 읽기 작업을 정지하고 리밸런싱을 수행하는 것. 서비스 다운타임 최소화 및 시스템 안정성 향상 도모.kafka
polling기본적으로 어떤 프로세스가 다른 프로세스의 상태를 주기적으로 확인하는 것.kafka
http overhead정보의 신뢰성 판단을 위한, 보내지는 헤더같은 정보 때문에 처리시간이나 데이터의 양이 증가하는 것을 의미.kafka
fetch.min.bytes브로커로부터 가져올 최소 데이터 양. 값을 크게 가져갈 경우 컨슈머 수가 많을 때 브로커의 부하를 줄일 수 있다. 하지만 처리량이 적을때 레이턴시가 늘어날 수 있다.kafka
fetch.max.bytes브로커로부터 가져올 최대 데이터 양.kafka
max.poll.interval.mspoll() 호출 간격의 최대 시간. 컨슈머가 poll을 하지 않고도 죽은것으로 판단하지 않기 위한 최대 시간.kafka
Range구독하는 각 토픽의 파티션을 연속된 그룹으로 나눠서 할당.kafka
Round RobinRound Robin Partitioning. 모든 구독된 토픽의 모든 파티션을 가져다 순차적으로 하나씩 컨슈머에 할당.kafka
Sticky파티션을 균등하게 할당하면서 리밸런싱 발생시 가능한 많은 파티션들이 같은 컨슈머에 할당되게끔 하는 전략.kafka
Cooperative StickyCooperative Sticky Assignment. Sticky Assignment와 기본적으로 동일하지만, 컨슈머가 재할당되지 않은 파티션으로부터 데이터를 읽는 협력적 리밸런싱 지원.kafka
Record카프카에서 데이터의 단위. Record는 Key, Value, Timestamp로 구성된다.kafka
Key메시지를 구분하는 식별자로, 파티션을 결정하는데 사용된다.kafka
Value메시지의 실제 데이터를 담고 있다.kafka
Timestamp메시지의 생성 시간을 나타낸다.kafka
Batch단순히 같은 토픽에 속한 메시지의 집합을 의미한다.kafka
스키마카프카에서 스키마는 메시지의 구조를 담고 있는 일종의 명세다. 스키마의 핵심은 데이터의 저장및 전송을 위한 일관적인 특정 형식을 지원하는 것이다.kafka
Topic카프카에서 메시지의 논리적인 구분단위. 일종의 카테고리나 디렉토리로 생각할 수 있다. 토픽은 여러개의 파티션으로 구성되어 있다. 토픽은 메시지의 논리적 연관성이나 데이터 처리 패턴에 따라 결정될 수 있다.kafka
Partition파티션은 메시지의 물리적인 분할 단위이다. 보통 브로커에 분산 저장되며 각각 독립적인 offset을 가지기에 순서가 보장되는 특성이 있다.kafka
Producer원천 데이터에서 메시지를 생성해 카프카에 전송하는 역할을 하는 클라이언트.kafka
Partitioner프로듀서에서 메시지를 전송할 때, 메시지를 어떤 파티션에 저장할지 결정하는 역할을 하는 클래스. 특정 키를 가진 메시지를 특정 파티션에 저장하거나 동일한 키를 가진 메시지를 동일한 파티션에 저장하는 등의 역할을 한다.kafka
Consumer카프카에서 메시지를 소비하는 역할을 하는 클라이언트.kafka
Kafka Broker데이터 수집과 분산처리를 담당하는 카프카의 서버 단위. 주로 프로듀서로 부터 데이터를 수신해서 파티션에 저장하고 , 팔로워 브로커에게 데이터를 복제하고, 컨슈머에게 데이터를 전달하는 역할을 한다.kafka
Kafka Cluster여러개의 브로커로 구성된 카프카의 집합. 클러스터는 데이터의 복제와 분산처리를 위한 여러개의 브로커로 구성된다.kafka
Controller카프카 클러스터의 상태를 관리하고 조정하는 브로커의 일종. 브로커 내에 존재하는 리더 파티션 재분배. 파티션 리밸런싱, Broker 상태 관리 등의 역할을 수행한다.kafka
Replication카프카에서 데이터 복제는 팔로워 파티션이 리더 파티션의 오프셋을 따라 동기화 되는 것을 의미한다.kafka
2f + 1 rulef대의 브로커의 장애를 허용하려면 . 전체 브로커의 수가 최소 2f + 1 이상이어야 한다. 이는 한개 노드가 장애가 나도 나머지 두 개 node가 동기화를 유지할 수 있도록 하기 위함이다. 예를 들어 2개의 브로커가 있을 경우 한개의 브로커가 장애가 나면 나머지 한개의 브로커가 동기화를 유지할 수 없기 때문에 데이터 유실이 발생할 수 있다.kafka
Automation반복적인 작업을 재사용가능한 코드로 대체하는 것. wrap repetitive tasks into reusable code.commandline
Integration특정 작업들을 수행하기 위해 다른 시스템들을 연결하는 것. connect different systems to accomplish a task.commandline

Last Updated: 2025-01-30 15:58:13

[draft]블로그 용어사전
https://yjinheon.netlify.app/posts/80draft/draft-words/
Author
Datamind
Published at
2025-01-29