📦 Spring Boot + RESTHeart 연결 샘플✅ 1. 프로젝트 기본 세팅pom.xml org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-webflux com.fasterxml.jackson.core jackson-databind 여기선 WebClient (Spring 5 이상)로 HTTP 호출할 겁니다.✅ 2. application.yml (RESTHeart 서버 설정)restheart: base-url: http://localhost:8..
✅ Lua로 APISIX 흐름 가로채기 구현 팁항목설명예시1. 요청 바디 읽기ngx.req.get_body_data() 사용local body = ngx.req.get_body_data()2. 비동기 작업 처리ngx.timer.at(0, function) 사용 (non-blocking)ngx.timer.at(0, send_to_kafka, body)3. 외부 HTTP 호출resty.http 모듈 사용local http = require("resty.http")4. HTTP POST 호출httpc:request_uri 로 외부 서버 호출httpc:request_uri("http://server", {method="POST", body=...})5. JSON 직렬화 (Encoding)Lua 테이블을 JSO..
C#에서 UUID는 Guid 구조체로 다룹니다. UUID(Universally Unique Identifier)는 전 세계적으로 고유한 식별자를 생성할 때 사용되며, C#에서는 System.Guid를 사용해서 쉽게 생성하고 사용할 수 있습니다.✅ UUID 생성 방법using System;class Program{ static void Main() { Guid uuid = Guid.NewGuid(); Console.WriteLine(uuid); // 예: e7b4c0a1-3fcf-4b12-a2f9-56d0df098e72 }}Guid.NewGuid()는 새로운 UUID를 생성합니다.기본적으로 UUID는 RFC 4122의 버전 4(랜덤 기반) 형식을 따릅니다.✅ 문자..
🔁 예시 플로우 (Custom Plugin + Kafka Proxy)[클라이언트 요청 JSON] → [Lua 커스텀 플러그인] - JSON 파싱 - 필요한 필드 추출/변환 - 새로운 JSON 구성 - ngx.ctx.kafkavalue에 저장 → [Kafka Proxy Plugin] - 변환된 JSON 값을 Kafka에 전송🎯 예시 목표요청 바디:{ "user_id": 42, "event": "signup", "password": "secret"}➡️ Kafka로는 아래와 같은 값만 보내고 싶어요:{ "event": "signup", "user": 42}🧩 1. Lua 플러그인 작성 (custom-transform.lua)local c..
🔷 Lua 언어란?Lua는 1993년 브라질의 PUC-Rio 대학에서 개발된 경량 스크립트 언어입니다. "루아(Lua)"는 포르투갈어로 "달(Moon)"을 뜻하며, 작고 효율적이면서도 유연한 언어로 유명합니다.✅ 대표적인 특징:가볍다 (Lightweight)빠르다 (Fast)내장하기 쉽다 (Embeddable)🔶 주요 특징 및 기능 소개1. ✏️ 간결한 문법Lua는 문법이 단순해서 배우기 쉽습니다. 복잡한 선언 없이 변수, 함수 등을 간단하게 정의할 수 있습니다.-- Hello World 예제print("Hello, Lua!")2. 🧠 동적 타이핑변수를 선언할 때 자료형을 명시할 필요 없이, 자동으로 타입을 결정합니다.x = 10 -- 정수x = "hello" -- 문자열3. 📦 ..
🎯 UUID란?**UUID (Universally Unique Identifier)**는"전 세계적으로 고유한 식별자"를 의미하는 128비트 값입니다.예시:e5f63194-9e7c-11ee-a1b8-0242ac120002🧩 UUID 사용 목적 사용처 설명Kafka 메시지 key메시지 분산과 추적을 위한 고유 IDDB row IDMongoDB, PostgreSQL 등에서 주키(primary key)로 사용Request IDAPI 요청 추적(trace)용이벤트 트래킹"OrderCreated", "UserUpdated" 같은 이벤트 고유 식별☕ Java에서 UUID 생성 (Spring 기준)import java.util.UUID;String id = UUID.randomUUID().toString();Sy..
처리 방식 설명 사용 예1. Proxy 방식들어온 요청을 그대로 Kafka Bridge로 forwardGateway가 중계만 할 때2. Custom 처리API Gateway가 JSON 파싱 후 Kafka로 직접 전송사용자 정의 처리 필요할 때🧭 1. Proxy 방식 (요청 그대로 Kafka Bridge로 전달)🔁 흐름[Client] → [API Gateway] → [Kafka Bridge (REST)] → Kafka✅ 구현: Spring Cloud Gateway (또는 WebFlux)로 프록시 라우팅# application.ymlspring: cloud: gateway: routes: - id: kafka-bridge uri: http://bridge-s..
🧩 Apache Pulsar 란 무엇인가요?🐳 경량화 단일 노드 Pulsar개발/테스트용 standalone 모드로 실행하는 환경⚙️ Pulsar 기능 제한형 구성Function, KoP, Tiered Storage 등을 제외한 최소 기능 셋🎈 IoT, Edge 용 경량 Pulsar리소스 제한 환경을 위한 맞춤형 빌드 (예: ARM 등)☁️ Pulsar Proxy 기반 게이트웨이Kafka 클라이언트 또는 REST 게이트웨이만 얹은 경량 Pulsar Wrapper✅ PulsarLite = 흔히 “개발/테스트용 경량화 구성”을 의미예시 1: Docker로 띄우는 Standalone Pulsardocker run -it -p 6650:6650 -p 8080:8080 apachepulsar/pulsar:..
🔗 HTTP/REST, gRPC, 메시지 브로커 기반 이벤트 소개1. HTTP/REST: 가장 널리 쓰이는 표준 API 통신방식: 클라이언트-서버 방식의 동기 통신 (Request/Response)전송 포맷: 일반적으로 JSON장점:직관적인 URI 설계브라우저 친화적거의 모든 언어/프레임워크에서 지원단점:동기 통신: 호출자가 응답을 기다려야 함 → 시스템 결합도 높음에러나 타임아웃 발생 시 실패 처리 필요사용 예: 사용자 인증, 주문 요청, 리소스 CRUD 등 명령형 API 호출2. gRPC: 고성능 이진 프로토콜 기반 RPC방식: 동기 또는 비동기 Remote Procedure Call전송 포맷: Protocol Buffers (Protobuf)장점:빠르고 효율적인 바이너리 전송자동 코드 생성 → 인..
@ReflectionHint는 Spring Boot 3.x + AOT + Native 이미지 환경에서 아주 중요한 개념. 특히 GraalVM Native 이미지를 만들 때 리플렉션이 자동으로 안 되기 때문에, 리플렉션이 필요한 클래스들을 명시적으로 등록해주는 역할을 합니다.✅ @ReflectionHint란?Spring AOT에서 사용하는 애노테이션으로,리플렉션을 사용하는 클래스나 멤버(생성자, 필드, 메서드 등) 를 native 이미지에 포함시키기 위해 힌트를 제공하는 도구입니다.GraalVM Native 이미지에서는 리플렉션을 사용하려면 미리 등록해야 하기 때문에, 이 힌트가 필수입니다.🔧 사용 예시import org.springframework.aot.hint.annotation.Reflection..