분류 전체보기 153

DB Replication

DB Replication(데이터베이스 복제)은 데이터를 한 데이터베이스 서버에서 다른 서버로 복제하여 여러 복사본을 유지하는 기술이다. 이 과정은 데이터의 가용성과 성능을 높이고 장애 복구 및 확장성을 제공하기 위해 사용된다. DB Replication의 주요 목적고가용성(High Availability) : 한 서버가 다운되더라도 다른 복제본 서버에서 데이터를 제공할 수 있도록 보장부하 분산(Load Balancing) : 읽기 작업을 여러 서버에 분산시켜 성능 향상장애 복구(Fault Tolerance) : 원본 데이터베이스가 손상되더라도 복제본으로 복구 가능데이터 배포(Data Distribution) : 여러 지역이나 지점에 데이터 동기화 가능 DB Replication의 유형Master-Sla..

MySQL 옵티마이저 실행계획 분석

MySQL 옵티마이저 실행계획은 쿼리를 효율적으로 실행하기 위해 MySQL이 사용하는 계획을 의미한다. 이 실행계획은 쿼리를 어떻게 처리할지에 대한 정보를 제공하며 이를 분석하면 쿼리 성능을 최적화할 수 있다.MySQL에서 실행계획을 확인하려면 EXPLAIN 명령어를 사용한다. 이를 통해 MySQL이 쿼리를 실행하는 방식(예: 사용된 인덱스, 조인 방식, 풀스캔 여부 등)을 확인할 수 있다. EXPLAIN 사용 방법EXPLAIN [쿼리]; 예제)EXPLAIN SELECT * FROM employees WHERE department_id = 10; EXPLAIN 출력 컬럼 설명id쿼리 내 실행 단계 식별자값이 클수록 먼저 실행됨select_type쿼리의 유형주요 값SIMPLE : 단순 쿼리, 서브쿼리 없음..

Service Discovery

Service Discovery는 분산 시스템에서 서비스 간의 통신을 가능하게 하기 위해 서비스의 위치를 동적으로 찾는 메커니즘을 말한다. 이는 마이크로서비스 아키텍처에서 특히 중요한 개념으로 서비스가 동적으로 생성되고 종료되는 환경에서 안정적이고 효율적인 통신을 가능하게 한다. 주요 개념서비스 등록 (Service Registration)서비스가 시작되면 자신의 정보를 서비스 디스커버리 시스템에 등록한다.정보에는 서비스의 이름, IP 주소, 포트 등이 포함된다.서비스 조회 (Service Lookup)클라이언트가 다른 서비스를 호출하기 전에 디스커버리 시스템에서 대상 서비스의 위치를 조회한다. 동작 방식중앙 집중형 서비스 디스커버리별도의 디스커버리 서버(레지스트리)가 서비스를 등록하고 조회하는 역할을 ..

Document AI

Document AI는 문서와 관련된 데이터를 자동으로 처리하고 분석할 수 있도록 설계된 인공지능 기술이다. 이를 통해 기업과 개인이 문서 작업을 효율적으로 처리하고 중요한 정보를 빠르게 추출할 수 있다.Document AI는 일반적으로 다음과 같은 기능을 포함하고 있다. 주요 기능문서 스캔 및 디지털화종이 문서를 스캔한 후 디지털화하여 편집 가능한 텍스트로 변환(OCR - Optical Character Recognition)다양한 언어와 폰트를 인식 가능데이터 추출문서에서 필요한 정보(예: 이름, 주소, 날짜, 금액 등)를 자동으로 추출구조화되지 않은 데이터를 구조화된 형식으로 변환분류 및 정리문서를 자동으로 분류(예: 송장, 계약서, 영수증)다양한 문서 형식에 따라 정리하여 관리자연어 처리(NLP)..

개발이론/AI 2024.12.03

캐시 스탬피드(Cache Stampede) 개념과 해결 방법

캐시 스탬피드(Cache Stampede)는 캐시된 데이터가 만료될 때 다수의 클라이언트가 동시에 동일한 데이터를 요청하는 현상을 말한다. 이로 인해 원본 데이터 소스(예: 데이터베이스나 API)에 과부하가 발생하며 시스템 성능이 급격히 저하되거나 심지어 장애가 발생할 수 있다. 현상의 원인캐시 만료 시점 동시 요청동일한 데이터를 요청하는 여러 클라이언트가 캐시된 데이터가 만료된 직후 동시에 원본 데이터 소스에 접근하려고 시도한다.예를 들어, 인기 있는 웹 페이지의 캐시가 만료되면 그 페이지를 요청하는 수많은 사용자의 요청이 한꺼번에 데이터베이스로 전달될 수 있다.원본 데이터 소스의 처리 한계데이터베이스, API, 파일 시스템 등 원본 데이터 소스는 높은 동시 요청을 처리할 수 있는 용량에 한계가 있다...

CDC(Change Data Capture)

CDC(Change Data Capture)는 데이터베이스에서 데이터 변경 사항을 캡처하고 이를 다른 시스템이나 서비스로 전송하는 기술 또는 프로세스를 말한다. 이는 데이터베이스의 삽입(INSERT), 수정(UPDATE), 삭제(DELETE)와 같은 변경 사항을 추적하고 이를 실시간 또는 배치 작업으로 다른 데이터 스토어, 데이터 웨어하우스, 데이터 레이크 등으로 전달하는데 사용된다. CDC의 주요 목적데이터 동기화 : 여러 시스템 간의 데이터를 실시간으로 동기화데이터 분석 : 실시간 분석 및 데이터 스트리밍 애플리케이션 구현ETL 개선 : 전통적인 ETL(Extract, Transform, Load) 프로세스를 개선하여 실시간 데이터 파이프라인 구축이벤트 드리븐 아키텍처 : 데이터베이스의 변경 사항을 ..

Spring Cloud Gateway에서 Custom Filter, Global Filter, Logging Filter 예제

Custom Filter개념Custom Filter는 특정한 요구사항을 처리하기 위해 개발자가 직접 정의한 필터이다. 특정 라우트(Route)에만 적용되며 Spring Cloud Gateway의 필터 체인에서 요청 또는 응답을 조작할 수 있다.예제Custom Filter 구현import org.springframework.cloud.gateway.filter.GatewayFilter;import org.springframework.cloud.gateway.filter.GatewayFilterChain;import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory;import org.springframework.htt..

개발이론/Spring 2024.11.28

Spring Cloud Gateway

Spring Cloud Gateway는 마이크로서비스 아키텍처에서 API 게이트웨이 역할을 수행하는 프로젝트로 Spring Cloud의 일부이다. 클라우드 네이티브 애플리케이션에서 요청 라우팅, 보안, 부하 분산, 모니터링, API 관리를 효율적으로 처리하기 위해 설계되었다. Spring Cloud Gateway는 Spring Framework와 Spring Boot의 생태계에 통합되어 있어 유연하고 강력한 API 게이트웨이 솔루션을 제공하고있다. 주요 특징라우팅 (Routing)Spring Cloud Gateway의 핵심 기능으로 클라이언트 요청을 적절한 백엔드 서비스로 전달한다.경로 기반 라우팅 : URL 경로나 패턴에 따라 요청을 라우팅헤더, 쿼리 매개변수 기반 라우팅 : HTTP 헤더나 쿼리 매개..

개발이론/Spring 2024.11.26

트랜잭셔널 메시징

트랜잭셔널 메시징은 마이크로서비스 아키텍처에서 데이터 일관성과 메시지 전달의 신뢰성을 유지하기 위해 사용되는 기법이다. 이 개념은 데이터베이스 트랜잭션과 메시징 시스템 간의 연계를 통해 데이터 상태와 메시지 전달이 항상 일치하도록 보장하고자 한다. 이를 통해 시스템 간의 분산 트랜잭션 문제를 해결할 수 있다. 트랜잭셔널 메시징의 핵심 개념데이터 일관성 보장데이터 상태가 변경될 때 반드시 관련 메시지도 전달되어야 함메시지가 전달되지 않으면 데이터 변경이 롤백되어야 함단일 트랜잭션 원칙데이터베이스 업데이트와 메시지 브로커에 메시지 발행이 하나의 트랜잭션처럼 작동해야 함중복 메시지 처리메시지가 중복 전달될 가능성이 있으므로 멱등성(idempotency)을 고려한 메시지 처리 설계가 필요트랜잭셔널 메시징 구현 ..

랭체인(LangChain)

랭체인(LangChain)은 자연어 처리(NLP)와 인공지능(AI) 응용 프로그램을 더욱 쉽게 구축할 수 있도록 돕는 Python 및 JavaScript 기반의 프레임워크이다. 주로 대규모 언어 모델(LLM, Large Language Model)을 활용한 애플리케이션 개발에 초점을 맞추고 있으며 다양한 데이터 소스와 상호작용하거나 복잡한 체인을 생성하는 데 최적화되어 있다. 주요 기능 및 구성 요소모듈화된 구조랭체인은 여러 모듈로 구성되어 있으며 각 모듈은 독립적으로 사용하거나 통합할 수 있다. 주요 모듈은 다음과 같다.Prompt Templates : LLM에게 효과적으로 요청을 전달하기 위한 템플릿 관리Chains : 여러 작업을 연결하여 순차적으로 실행하는 워크플로우Agents : 외부 데이터 소..

개발이론/AI 2024.11.25

분산 락(Distributed Lock)

분산 락은 분산 시스템에서 리소스나 데이터를 여러 노드가 동시에 접근하거나 변경하지 못하도록 동기화하는 기법이다. 분산 환경에서는 여러 프로세스나 노드가 동시에 같은 리소스에 접근하려는 상황이 빈번히 발생하므로 데이터 정합성을 보장하기 위해 분산 락이 필요하다.  특징동시성 제어 : 여러 프로세스가 동시에 특정 리소스를 사용하지 못하게 막음데이터 정합성 보장 : 리소스가 여러 노드에서 동시에 변경되지 않도록 방지Failover 처리 : 노드가 실패했을 때도 락을 안정적으로 관리해야 함 분산 락 구현의 주요 과제상호 배제 (Mutual Exclusion) : 한 번에 하나의 클라이언트만 리소스에 접근 가능데드락 방지 (Deadlock Prevention) : 락을 얻은 클라이언트가 실패하거나 느려지더라도 ..

개발이론/Spring 2024.11.21

LLM의 할루시네이션이란?

LLM(대규모 언어 모델, Large Language Model)의 할루시네이션(hallucination)이란 모델이 자신감 있게 사실처럼 보이는 응답을 생성하지만 실제로는 틀리거나 허구적인 정보를 생성하는 현상을 의미한다. 이는 LLM의 대표적인 한계 중 하나로 주어진 질문이나 문맥에 대해 신뢰할 수 없는 내용을 제공할 가능성을 나타낸다. 왜 할루시네이션이 발생할까?훈련 데이터의 한계LLM은 대규모 텍스트 데이터를 기반으로 학습되지만 데이터가 항상 정확하거나 최신 정보만 포함하지는 않는다. 잘못된 정보가 포함된 데이터를 학습한 경우 이를 기반으로 할루시네이션이 발생할 수 있다.지식과 추론의 경계모델은 학습한 데이터 기반으로 추론을 수행하지만 이를 "이해"하거나 "지식"으로 판단하지 못한다. 따라서, 문..

개발이론/AI 2024.11.18

AOP - Advice, Target, Pointcut

AOP(Aspect-Oriented Programming)란 무엇인가?AOP는 소프트웨어 개발에서 핵심 비즈니스 로직과는 별개로 반복적으로 사용되는 부가기능(공통 관심사)을 분리하여 코드의 중복을 제거하고 유지보수성을 향상시키기 위한 프로그래밍 패러다임이다.AOP의 대표적인 부가기능로깅 (Logging)성능 측정 (Performance Monitoring)트랜잭션 관리 (Transaction Management)인증 및 권한 관리 (Authentication & Authorization) AOP가 필요한 이유예를 들어, 시간 측정 기능이 필요하다고 가정한다면기존 방식에서는 각 컨트롤러 메서드마다 시간을 측정하는 코드를 추가해야 함결과적으로 코드 중복, 가독성 저하, 핵심 비즈니스 로직과 부가기능 혼합 문..

개발이론/Spring 2024.11.18

소년이 온다

한강 작가의 『소년이 온다』는 1980년 광주 민주화 운동을 배경으로 인간의 고통과 기억그리고 역사적 상처에 대해 깊이 있게 나타낸 작품이다. 이 소설은 단순히 역사적 사건을 나열하는 것을 넘어그 사건 속에 존재했던 개인의 삶과 감정을 세밀하게 표현하여 읽는 동안 몰입하게 만들었다. 작품은 여러 인물의 시점을 통해 전개된다.각 장마다 이야기를 이끌어가는 인물이 달라진다.주인공 동호를 중심으로 그의 친구와 가족 그리고 그들을 둘러싼다양한 인물들의 관점을 통해 사건의 진실이 조금씩 밝혀진다.  이야기의 표현 부분에서도 폭력과 죽음, 상실의 순간을 직접적으로 묘사하면서그 안에서 피어나는 인간의 연대와 사랑을 담담하게 그려내고 있다.이 부분이 읽는 이에게 광주에서 벌어진 참혹한 현실과 그것이 개인과 공동체에 남..

2024.11.16

Spring Cloud Config

Spring Cloud Config는 분산 시스템에서 구성 데이터를 중앙에서 관리하고 배포하기 위해 사용하는 Spring 프로젝트이다. 이를 통해 애플리케이션의 설정 정보를 중앙화하고 일관되게 관리할 수 있어 특히, 마이크로서비스 아키텍처에서 유용하게 사용된다. Spring Cloud Config는 클라이언트 애플리케이션들이 공통된 설정 정보에 쉽게 접근할 수 있도록 도와주며 설정 변경이 필요할 때 각 서비스를 수정하지 않고도 실시간으로 반영할 수 있게 한다. 주요 개념Spring Cloud Config Server : 구성 데이터를 저장하고 제공하는 서버이다. 서버는 일반적으로 Git, 파일 시스템, SVN과 같은 외부 저장소에 저장된 설정 파일을 읽어와 클라이언트 애플리케이션에 제공한다.Spring ..

개발이론/Spring 2024.11.12
반응형