전체 글 79

Kafka에서 브로커와 토픽

Kafka에서 브로커와 토픽은 서로 다른 역할을 수행하는 핵심 구성 요소이다.개념적으로 명확하게 구분되지만, 서로 유기적으로 연결되어 Kafka 시스템이 동작하도록 한다. 간단하게 비유하자면,브로커(Broker): 카프카 클러스터를 구성하는 각각의 서버 컴퓨터를 말한다.메시지를 저장하고 처리하는 물리적인 "창고" 또는 "서버 장비" 라고 생각할 수 있다.토픽(Topic): 메시지(데이터)를 담는 "우체통의 종류" 이다. 데이터의 종류별로 메시지를 분류하는 논리적인 이름표.1. 브로커(Broker) 상세 설명물리적 서버 : 카프카 브로커는 카프카 클러스터를 구성하는 실제 서버(노드) 인스턴스이다. 여러 개의 브로커가 모여 하나의 카프카 클러스터를 형성한다.메시지 저장 : 생산자(Producer)로부터 전송..

인프라 2025.10.26

카프카 핵심 개념: 토픽(Topic)과 파티션(Partition)

대용량 데이터 처리의 필수 요소인 아파치 카프카(Apache Kafka)의 핵심 개념, 토픽(Topic)과 파티션(Partition)에 대해 알아본다.이 둘은 카프카의 성능과 확장성을 결정하는 뼈대와 같아서 꼭 함께 이해해야 한다. 1. 토픽 (Topic): 데이터의 종류를 나누는 우체통토픽은 카프카에서 메시지(데이터)를 저장하는 가장 큰 논리적 분류 단위이다.데이터의 종류별로 메시지를 분류하는 이름표라고 생각하면 이해하기 쉽다.구분설명비유논리적 분류애플리케이션이나 서비스에서 발생하는 특정 유형의 데이터를 구분합니다.'주문 정보' 우체통, '로그 정보' 우체통, '결제 정보' 우체통생산자와 소비자**생산자(Producer)**는 특정 토픽으로 메시지를 발행(publish)하고, **소비자(Consumer..

인프라 2025.10.25

DB 또는 API 개발에서 자주 사용되는 upsert 용어에 대하여

"upsert"는 프로그램 개발, 특히 데이터베이스나 API 설계에서 자주 사용되는 용어이다.개발자 사이에서는 거의 표준 용어처럼 널리 사용된다. ✅ upsert란?upsert = update + insert즉, 데이터가 있으면 update, 없으면 insert 하는 동작을 하나로 처리하는 방식이다. 🔍 사용 시점예시 1: 사용자 정보 저장 시사용자가 로그인할 때:기존 사용자면 → 정보 업데이트신규 사용자면 → 새로 저장→ users 테이블에 upsert 실행 🧾 SQL 기준 예 (PostgreSQL) INSERT INTO users (id, name, email)VALUES (1, '홍길동', 'hong@test.com')ON CONFLICT (id)DO UPDATE SET name = EXCLU..

인프라 2025.05.14

JWT의 payload 란

Payload 란payload는 영어로 "짐", "적재물"이라는 뜻이지만, 토큰(JWT)에서는 실제 전달하려는 "데이터 내용"을 의미한다. 🔐 JWT 구조에서의 PayloadJWT는 3 부분으로 구성된 문자열이다.xxxxx.yyyyy.zzzzz 문자열 설명xxxxxHeader토큰 타입과 서명 알고리즘yyyyyPayload실제 정보(사용자 ID, 권한, 만료 시간 등)zzzzzSignature토큰 위조 방지를 위한 서명 🔎 예시 (디코딩된 JWT Payload){ "sub": "user123", "name": "홍길동", "exp": 1715688840, "role": "admin"}sub: 사용자 식별 IDexp: 만료 시간 (UNIX timestamp)role: 사용자 권한💡 특징📖 읽을..

인프라 2025.05.14

Mac (맥북) 에서 Docker Desktop 악성코드 문제 해결

2025년 이후 일부 mac OS에서 기존 Docker Desktop를 실행 시 악성코드 발생 팝업이 오픈되면서 문제가 발생하는 케이스가 있다. dockerdocs 홈페이지에서는 4.28 및 이전 버전은 이 문제의 영향을 받지 않는다고 한다. 이를 해결할 솔루션을 알아보자. 첫째, 기존 Docker Desktop를 삭제한다.1. 이미 Docker Desktop 이 오픈되지 않기 때문에 Docker Desktop GUI 에서 삭제하는 방법은 패스한다. ❌ 2. CLI 에서 삭제한다. ⭕/Applications/Docker.app/Contents/MacOS/uninstall이후 Docker 애플리케이션을 휴지통으로 옮긴다.혹시나, Docker Desktop을 제거한 후에도 일부 잔여 파일이 남아 있을 수 있..

인프라 2025.04.13

AWS Rekognition 부적절한 이미지를 판별하는 파이썬 코드 알아보기

이전 포스트에서 AWS Rekognition 사용하기 위한 로컬 환경설정을 알아봤다.이번 글에서는 업로드된 이미지를 바탕으로 Amazon Rekognition API를 호출하여 해당 이미지가 부적절한 콘텐츠를 포함하고 있는지 확인하는 파이썬 백엔드 코드를 함께 살펴보자. ✅ 개발 환경이 예제는 다음과 같은 로컬 환경에서 테스트되었다.운영체제: macOS (맥북)프런트엔드: Vue 3백엔드: Python 3(Django Framework)사용 서비스: AWS Rekognition(Moderation Labels)🧑‍💻 AWS Rekognition 연동을 위한 백엔드 코드 1. URL 설정 (urls.py)먼저 Rekognition API 호출을 위한 엔드포인트를 등록해 준다.# smith/urls.py..

aws rekognition 사용하기 위한 로컬 환경설정

이미지 업로드 시 해당 이미지가 부적절한 콘텐츠인지 자동으로 판별하는 기능은 다양한 서비스에서 제공하고 있다.여기서는 AWS Rekognition을 이용해 로컬 환경에서 이를 구현하기 위한 환경 설정 방법을 소개한다. 1. 이미지 콘텐츠 판별 API 소개부적절한 이미지를 자동으로 탐지해 주는 대표적인 이미지 분석 API는 다음과 같다: ✅ Google Cloud Vision APISafeSearch Detection 기능 제공성인용 이미지, 폭력적 콘텐츠 여부 분석adult, violence, racy 등 카테고리로 위험 수준 평가✅ Amazon RekognitionModeration Labels 기능 제공노출, 성인 콘텐츠 여부를 판단하는 이미지 분석 기능✅ Microsoft Azure Content ..

vue3 의 router 에서 경로지정하는 index.js 파일 예시

1. Vue 3에서 Vue Router란? Vue Router는 Vue.js 애플리케이션에서 페이지 간 이동(라우팅)을 관리하는 라이브러리이다.Vue 3에서는 Vue Router 4.x 버전을 사용하며, 기존 Vue 2와는 일부 차이점이 있다. 이 글에서는 Vue 3에서 Vue Router를 설정하는 방법을 단계별로 설명하고,기본적인 라우팅 설정부터 동적 라우트, Lazy Loading, 404 페이지 처리까지 알아본다. 2. Vue 3에서 Vue Router 설정하기 Vue 3에서 라우터 설정을 담당하는 index.js 파일을 생성해야 한다. 📌 기본적인 Vue Router 설정 (src/router/index.js)import { createRouter, createWebHistory } from ..

vue 에서 Module not found: Error: Can't resolve 'axios' in 에러 원인

Vue.js 프로젝트에서 Module not found: Error: Can't resolve 'axios' 오류가 발생했다면,이는 axios 모듈을 찾을 수 없다는 의미이다. 이 오류가 발생하는 주요 원인과 해결 방법을 단계별로 알아본다. 📌 1. 오류 원인 분석 이 오류는 보통 다음 3가지 이유로 발생한다. 1️⃣ axios가 설치되지 않은 경우Vue 프로젝트에 axios 패키지가 설치되지 않았거나, package.json 파일에 포함되지 않은 경우. 2️⃣ 잘못된 설치 경로 문제 • axios가 프로젝트의 올바른 디렉터리에 설치되지 않았을 수 있다. • 프로젝트에서 패키지를 관리하는 node_modules 디렉터리의 구조가 깨졌을 수 있다. 3️⃣ 패키지 매니저(npm, yarn) 문제 • npm..

vuetify component의 input, button 사용할 때 길이 조정하기

Vuetify의 v-text-field(입력 필드)와 v-btn(버튼)은 기본적으로 너비가 길게 설정되어 있다.이를 적절하게 조정하려면 Vuetify의 그리드 시스템, 유틸리티 클래스, 속성 활용이 필요하다. ✅ 이 글에서 다룰 내용1️⃣ 그리드 시스템 활용 (v-row, v-col)2️⃣ 유틸리티 클래스 (ma-2, max-width) 사용3️⃣ 속성 (block, width)으로 크기 조정 🟢 1. Vuetify 그리드 시스템을 사용한 크기 조정 Vuetify는 Flexbox 기반의 그리드 시스템을 제공하므로, v-row와 v-col을 사용하면 반응형 크기 조정이 가능하다. ✔ 기본 코드 예제  ✅ 설명: • cols="12" → 모바일에서 전체 너비 사용 • sm="..