오늘은 스터디에서 "실시간 시청자 수를 어떻게 대규모 환경에서 안전하게 집계할 것인가"를 주제로 공부함. 개인적으로 분산 처리나 전문 용어에 익숙해지기 위해, 논의되었던 핵심 설계 포인트들을 기록용으로 정리1. 단순 입/퇴장 로그 방식의 한계와 보완처음엔 사용자가 들어올 때(Join)와 나갈 때(Leave) 로그를 남겨서 그 차이를 구하면 된다고 생각했음. 하지만 실무에서는 비정상 종료(앱 강제 종료, 네트워크 단절) 시 '퇴장' 로그가 남지 않는 문제가 치명적임.이를 해결하기 위해 하트비트(Heartbeat) 개념을 도입함. 클라이언트가 주기적으로 "나 아직 보고 있어"라는 신호를 보내고, 서버는 이 신호가 끊기면 유효시간(TTL) 만료로 판단해 자동으로 인원수에서 제외함.2. 고가용성을 위한 데이터 ..
Lambda 함수 최적화 과정에서 배운 Python 동시성 개념 정리📚 배경API 크롤링 Lambda 함수가 너무 오래 걸려서 최적화가 필요했다. 여러 데이터를 순차적으로 수집하는데 10분 이상 소요되었고, 이를 병렬 처리로 개선하려고 했다.그런데 멀티스레딩, 멀티프로세싱, 비동기라는 용어가 나오면서 혼란스러웠다. 각각 언제 사용해야 하는지, 어떤 차이가 있는지 정리해보았다.🔑 핵심 개념: I/O Bound vs CPU Bound프로그램의 병목 지점이 어디인지에 따라 최적화 방법이 달라진다.CPU Bound (CPU 집약적)정의: CPU 연산이 병목인 작업예시:이미지/비디오 처리 (리사이징, 필터링)데이터 암호화/복호화복잡한 수학 연산 (머신러닝 학습)대용량 데이터 변환특징:# CPU가 계속 일함 f..
회사에서 AWS를 사용하고 있고, 최근 Agent에 관심도 생겼고 겸사겸사 모임을 참가했다.알게된 경로는 트위터에서 연사님 중 한분이 홍보하셔서 신청했음목적은 strands라는 프레임워크를 사용하여 Agent 구축을 실습하는 것!내가 신청한 트랙은 Agentic AI였음Agent란?특정 목표를 달성하기 위해 스스로 계획하고 도구를 사용하며 환경과 상호작용하기 위한 툴Q. 비결정적 프레임워크에서 어떻게 신뢰성 확보하고 중간에 컨트롤할 수 있으려나?langgraph는 흐름 설계 및 상태 전환을 개발자가 비교적 많이 제어함strands는 에이전트가 직접 판단하는 자율적 제어가 더 강조됨 -> 프로토타입이 빠르게 가능실습Github 코드와 설명서의 예제를 통해서 진행함. cursor 환경이라서 자동완성을 더 많..
TIL: Alembic으로 임베딩 차원 변경 마이그레이션, 인덱스 opclass, 권한 이슈 정리오늘 한 것기존 테이블 A, B를 각각 _bak으로 리네임해 백업.동일 스키마와 제약·인덱스를 유지한 채 새 테이블을 생성하고 embedding 컬럼만 VECTOR(384)로 변경하는 마이그레이션 설계.Alembic 실행 위치, downgrade 방법, 인덱스 opclass 의미, 권한 이슈 트러블슈팅 정리.Alembic 마이그레이션 설계 포인트대상 스키마: sample변경 범위:특정 테이블 백업 후 재생성.백업 절차:A → A_bakB → B_bak새 테이블 생성:기존 정의 유지, 단 embedding만 VECTOR(384)로 변경.인덱스/제약(동일 유지):HNSW 인덱스: embedding vector_c..
개발 중에 env.example인데 실제 키값이 들어가서 동료분이 커밋 히스토리를 삭제하고 다시 커밋해달라고 요청하심특정 파일만 히스토리를 삭제하는 방법을 Cursor의 도움으로 해결하고 정리용으로 블로그를 작성한 것입니다.문제 상황env.example 파일에 실제 API 키실수로 커밋되었습니다# 노출된 민감정보 예시KEY=1234이미 여러 커밋에 걸쳐 히스토리에 남아있고, PR도 생성된 상태였습니다.해결 과정1단계: 히스토리에서 완전 제거git-filter-repo 사용# 도구 설치pip3 install --user git-filter-repo# 전체 히스토리에서 민감파일 제거git-filter-repo --force --invert-paths --path env.example주의사항: git-filt..
최근 프로젝트에서 챗봇에 간단한 실시간 정보를 넣어야 하는 태스크를 맡았는데, 최소한의 자원으로 시작하기 위해 PostgreSQL의 FTS(Full-Text Search)를 테스트해야 했습니다. 이미 Docker로 DB는 잘 돌아가는 중이어서, 실행 중인 Docker 컨테이너 내부에 MeCab 형태소 분석기를 설치하는 게 주 목표였습니다. 다른 여러 블로그들이 도움이 되었지만 대부분 리눅스에 직접 설치하는 글이어서 저처럼 Docker 내부에 바로 설치하고 싶은 사람들을 위한 글은 찾기 어려웠습니다. 그 과정에서 온갖 에러를 만났기 때문에, 비슷한 문제를 겪는 분들께 도움이 될까 싶어 과정을 공유합니다.Docker 안에서 한국어 FTS (Full-Text Search)쓰기이미 실행 중인 PostgreSQL..
airflow 대신 n8n을 사용했으나 n8n은 코드 기반의 작업이 어려워서 airflow로 마이그레이션하는 과정에서 배워간 기록입니다.1. Airflow 핵심 개념: DAG와 스크립트의 관계DAG란 무엇인가?DAG(Directed Acyclic Graph, 방향성 비순환 그래프)는 작업(Task)들의 실행 순서와 의존관계를 정의한 하나의 워크플로우입니다. Airflow에서 DAG 파일 자체는 실제 데이터 처리 로직을 담기보다는, 어떤 스크립트를(Task) 어떤 순서로, 어떤 주기로 실행할지 정의하는 역할을 합니다.예시: 독립적인 두 개의 수집 파이프라인네이버 뉴스 수집: 매시간 최신 뉴스를 수집하는 파이프라인위키피디아 수집: 매일 특정 주제의 문서를 수집하는 파이프라인Airflow에서는 이 두 워크플로..
내 경우에는 로컬과 람다 배포 중 테스트에서 s3에 접근해야하느데 에러가 계속 생겼다.보통 IAM 권한 문제인데 분명 권한, Region 문제가 없는데도 에러가 생겨서 다른 글과 AI의 도움을 받아 알아낸 것. # AWS 자격 증명 설정 self.s3_client = boto3.client( 's3', region_name=self.region_name, #aws_access_key_id=os.getenv('AWS_ACCESS_KEY_ID'), => 로컬에서 실행할 때 사용 #aws_secret_access_key=os.getenv('AWS_SECRET_ACCESS_KEY') => 로컬에서 실행할 때 사용 ) Q. 로컬에선 잘 됐는데 왜 람다 배포 후엔 안되는 지? A. AWS 환경에서는 액세스 권한 ..
물리적 관점 (하드웨어/실제 서버)가장 기본적인 수준에서, 코드가 실행되는 실제 컴퓨터나 서버의 관점이다. 이는 데이터 엔지니어링 파이프라인이 동작하는 물리적 인프라를 의미한다.컴퓨터/서버 (The Physical Machine): 데이터 처리 작업을 수행하는 물리적인 하드웨어다. CPU 코어 수, RAM 크기, 디스크 속도 등 이 서버가 가진 물리적 성능이 전체 데이터 처리 시스템의 최대 처리량을 결정한다. 대규모 데이터 처리는 종종 여러 대의 서버에 걸쳐 분산된다.CPU 코어 (CPU Core): CPU 코어는 실제 연산을 수행하는 프로세서의 단위다. 하나의 코어는 한 번에 하나의 스레드를 효율적으로 처리한다. 코어 수가 많을수록 동시에 더 많은 연산을 병렬로 처리할 수 있어, 대량의 데이터 처리나 ..
4.1 카프카 컨슈머4.1.1 컨슈머와 컨슈머 그룹컨슈머의 특징 중 하나는 병렬 처리가 가능하다. 컨슈머는 컨슈머 그룹(Consumer Group)을 구성해 여러 개의 컨슈머들이 동일한 토픽을 구독할 경우, 각각의 컨슈머는 해당 토픽에서 서로 다른 파티션의 메시지를 받는다.지연 시간이 긴 작업을 수행할 때, 컨슈머를 추가하여 단위 컨슈머가 처리하는 파티션과 메시지의 수를 분산시키는 것이 일반적인 규모 확장 방식이다.동작 방식: 토픽은 하나 이상의 파티션(Partition)으로 구성된다. 하나의 파티션은 특정 시점에 오직 하나의 컨슈머 그룹 내 단 한 명의 컨슈머에게만 할당될 수 있다. 컨슈머들은 각자 파티션을 하나씩 나눠 맡아 동시에 처리하므로 처리량이 극대화된다.성능과 한계: 처리량을 높이고 싶다면 컨..
- Total
- Today
- Yesterday
- vectorsearch
- 키워드추출
- python
- pandas
- ChatGPT
- Encoding
- vervel
- vscode
- MongoDB
- TextRank
- Vue3
- SPARQL
- deepseek
- PEFT
- rdflib
- AWS
- PostgreSQL
- Postgis
- Kafka
- 지식그래프
- polars
- hadoop
- Claude
- vertorsearch
- pdfmathtranslate
- LLM
- docker
- rdffox
- cursorai
- geospy
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |