반응형

분류 전체보기 65

#11 클라이언트 메타데이터와 브로커 통신

📡 클라이언트 메타데이터와 브로커 통신Kafka 클라이언트란? 🤔Kafka 클라이언트는 Kafka 클러스터와 상호작용하여 데이터를 송수신하거나 명령을 내리는 역할을 한다. 대표적으로 프로듀서(Producer) 와 컨슈머(Consumer) 가 있는데, 프로듀서는 데이터를 생산하고 컨슈머는 데이터를 소비한다.그런데 클라이언트가 Kafka 클러스터와 제대로 통신하려면 클러스터의 메타데이터(Metadata) 를 알아야 한다. 이 메타데이터를 기반으로 클라이언트는 적절한 브로커(Broker)와 통신할 수 있다.🗂️ 클라이언트와 메타데이터Kafka 클라이언트는 먼저 클러스터에 메타데이터 요청 을 보낸다. 이 요청에 대한 응답으로 Kafka 클러스터는 다음과 같은 정보를 반환한다.리더 파티션(Leader Par..

Apache Kafka 공부 2025.02.16

#10 토픽 작명 방법

🏷️ 토픽 이름 짓기 - 제약 조건과 유지보수하기 좋은 네이밍카프카에서 토픽은 데이터를 주고받는 핵심 단위다. 그런데 토픽 이름을 아무렇게나 짓다 보면 유지보수도 어렵고, 예기치 못한 문제를 마주칠 수도 있다. 그렇다면 "좋은 토픽 이름"은 어떤 기준으로 정해야 할까?❌ 토픽 이름의 제약 조건카프카에서 토픽 이름을 정할 때 몇 가지 제약이 있다. 이 조건들을 어기면 토픽이 생성되지 않거나, 경고 메시지가 뜰 수 있다.빈 문자열은 토픽 이름으로 사용할 수 없다.마침표(.) 하나 또는 마침표 두 개(..)만으로 된 이름은 불가능하다.토픽 이름의 길이는 249자 미만이어야 한다.사용 가능한 문자:영어 대문자(A-Z), 소문자(a-z), 숫자(0-9)마침표(.), 언더바(_), 하이픈(-)마침표(.)와 언더바..

Apache Kafka 공부 2025.02.16

#9 레코드

레코드란? 🧐오늘은 카프카(Kafka)의 레코드(Record)에 대해 정리해보려고 한다. 처음 카프카를 접했을 때 레코드라는 개념이 생각보다 직관적이지 않았는데, 하나씩 정리하다 보면 이해가 쉬워질 것 같다.카프카의 레코드는 크게 타임스탬프, 헤더, 메시지 키, 메시지 값, 오프셋으로 구성된다. 그런데 여기서 중요한 점은, 프로듀서는 오프셋과 타임스탬프를 직접 지정하지 않는다. 이 값들은 브로커가 데이터를 받을 때 자동으로 설정된다. 처음에는 이게 좀 의아했는데, 생각해보니 프로듀서가 직접 오프셋을 관리하면 분산 시스템에서 동기화 문제가 발생할 수 있겠다는 생각이 들었다.🤔⏳ 레코드 - 타임스탬프타임스탬프는 스트림 프로세싱을 위해 활용되는 시간 정보다.기본적으로 프로듀서가 데이터를 생성한 시간이 들어..

Apache Kafka 공부 2025.02.16

# JIT 컴파일러

JIT 컴파일러 🚀JIT(Just-In-Time) 컴파일러라는 개념을 처음 접했을 때, 나는 약간 헷갈렸다. 이게 인터프리터야? 아니면 컴파일러야? 그런데 알고 보니 둘의 중간 형태라고 한다. 그렇다면 어떻게 동작하는 걸까? 🤔JIT 컴파일러란? 🛠️JIT 컴파일러는 실행 시점에서 프로그램 코드를 분석하고, 자주 실행되는 부분(hot spot)을 찾아 해당 부분만 기계어로 변환하는 방식이다. 일반적인 컴파일러처럼 실행 전에 미리 컴파일하는 것이 아니라, 실행 중에 실시간으로 컴파일이 이뤄진다.즉, 인터프리터처럼 코드를 한 줄씩 읽으며 실행하지만, 성능을 높이기 위해 자주 사용되는 코드(핫 코드)는 컴파일해서 빠르게 실행할 수 있도록 하는 것이다.JIT 컴파일러의 동작 과정 🔄JIT 컴파일러의 동작..

CS 공부 2025.02.16

# 오버헤드와 가비지 컬렉션

🗑️ 가비지 컬렉션과 오버헤드프로그래밍을 하면서 "메모리 관리"라는 단어를 자주 듣게 된다. 특히 Java 같은 언어를 사용할 때, 가비지 컬렉션(Garbage Collection, GC) 이 자동으로 메모리를 관리해준다는 얘기를 듣고 "그럼 우리는 신경 쓸 필요 없겠네?"라고 생각할 수도 있다. 하지만 정말 그럴까? 🤔🧹 가비지 컬렉션이란?가비지 컬렉션은 프로그램이 동적으로 할당한 메모리 중 더 이상 사용되지 않는 메모리를 자동으로 해제하는 과정이다. 덕분에 개발자가 직접 free() 같은 함수를 호출할 필요가 없고, 메모리 누수(memory leak) 문제를 줄일 수 있다.하지만 가비지 컬렉션이 언제, 어떻게 동작하는지는 생각보다 복잡하다. 예를 들어, Java의 GC는 Mark and Swee..

CS 공부 2025.02.16

# 추상화란 무엇인가?

추상화란 무엇인가? 🤔프로그래밍에서 추상화는 복잡한 데이터, 구조, 시스템 등에서 핵심적인 부분만을 추출해 덜 자세하게 만드는 과정을 말한다. 즉, 불필요한 세부사항이나 절차를 감추고, 인터페이스를 통해 간단한 접근만 가능하도록 하여 시스템의 복잡도를 줄이는 방법이다. 추상화는 복잡한 시스템을 더 쉽게 다룰 수 있게 해주기 때문에, 개발에서 매우 중요한 개념이라고 할 수 있다.사실, 내가 이 추상화 개념을 저번 달에 공부한 Spring Boot 강의에서 자주 접했었기 때문에, 이 개념이 좀 더 쉽게 와닿았다. 특히, Spring Boot의 구조에서 인터페이스와 클래스들이 어떻게 추상화되어 있는지를 보면서 추상화가 왜 중요한지 조금 더 이해할 수 있었다.데이터 추상화 🐱🐶🐵데이터 추상화는 특정 데이..

CS 공부 2025.02.16

# 오버로딩과 오버라이딩

오버로딩과 오버라이딩에 대한 내 생각 💭오늘은 오버로딩과 오버라이딩에 대해 정리해보려고 한다. 사실 처음에는 헷갈리기도 했고, 지금도 완벽하게 이해한 건 아니지만, 그래도 내 생각을 풀어보려고 한다.오버로딩 (Overloading) 🔧오버로딩은 "과적하다"는 의미가 있다고 했다. 이름이 같아도 매개변수의 개수, 타입, 순서를 다르게 해서 같은 이름으로 여러 메서드를 정의할 수 있다는 거였다. 예를 들어 add(int a, int b)랑 add(double a, double b) 같은 거였다. 이런 게 왜 필요할까?처음엔 왜 이름을 같은 걸로 써야 할까? 싶었다. 매개변수가 다르면 메서드 이름도 달리 해야 하는 거 아닌가? 그런데, 이렇게 같은 이름을 쓰는 이유는 유연하게 메서드를 호출할 수 있고, 코..

CS 공부 2025.02.16

# static 키워드

🌟 Static 키워드 - 클래스의 공통 속성을 공유하기오늘은 static 키워드에 대해 공부했다. static 키워드는 클래스의 인스턴스(객체)마다 따로 존재하는 것이 아니라, 클래스 자체에 속하는 변수나 메서드를 만들 때 사용한다고 한다. 객체를 여러 개 만들어도 static으로 선언한 변수나 메서드는 공유되기 때문에, 중복되는 속성을 효율적으로 관리할 수 있다. 📌 Static 키워드의 역할클래스 내에서 공통으로 사용하는 변수가 있다면, 그 변수를 static으로 선언하면 객체를 생성하지 않고도 사용할 수 있다. 예를 들어, 은행 계좌를 관리하는 BankAccount 클래스가 있다고 하자. class BankAccount { static double interestRate = 0.0..

CS 공부 2025.02.16

# 클래스와 객체, 인스턴스

클래스와 객체, 인스턴스 🤔프로그래밍을 하면서 자주 마주치는 개념 중 하나가 바로 클래스(class), 객체(object), 인스턴스(instance) 이다. 하지만 이 개념들이 헷갈릴 때가 많다. 그래서 오늘은 이를 정리해보려고 한다.클래스(Class) 🏗️클래스는 객체를 만들어 내기 위한 틀이다. 쉽게 말해, 객체를 만들기 위한 설계도라고 할 수 있다. 클래스 안에는 객체가 가질 속성(변수)과 동작(메서드) 들이 정의된다.class Person { String name; int level; int experience; Person() { this.name = "Unknown"; this.level = 1; this.experience = ..

CS 공부 2025.02.16

# CI/CD

CI/CD(Continuous Integration/Delivery & Deployment) 🚀🤔 왜 필요할까?혼자 개발을 한다면 CI/CD가 없어도 문제가 되지 않을 것 같다.그런데 여러 개발자들과 함께 개발을 진행한다면 이야기가 달라진다. CI/CD가 없으면 코드 통합이 어려워지고, 배포가 수동으로 진행되면서 실수가 발생할 가능성이 높아진다.그렇다면 CI/CD는 어떤 역할을 하는 걸까? 🔗 파이프라인이란?코드 구축부터 시작해서 배포까지의 일련의 과정을 CI/CD 파이프라인이라고 한다.이 과정은 총 3가지 단계로 구성된다. Continuous Integration (CI): 코드를 빌드하고, 테스트한 후, 저장소에 병합 Continuous Delivery (CD): 레포지토리에 릴리스 (m..

CS 공부 2025.02.15
반응형