분류 전체보기 610

[주니어 백엔드 개발자가 반드시 알아야 할 실무 지식] 4. 외부 연동이 문제일 때 살펴봐야 할 것들

최범균 님의 "주니어 백엔드 개발자가 반드시 알아야 할 실무 지식" 책을 정리한 포스팅 입니다. 대규모 트래픽 요청 중 외부 시스템에 의존할 경우, 외부 시스템에서 부하를 감당하지 못해 장애가 발생할 수 있음✅ 연동 시스템의 품질도 함께 신경써야 함➡️ 문제를 완전히 차단하기는 어려우므로, 영향을 줄이도록 접근하기 1. 타임아웃외부 시스템 호출 시, 일정 시간 안에 응답이 없으면 강제로 중단하고 에러로 처리하는 기능타임아웃 시간을 설정하여 지정한 시간이 지나도 응답이 없을 경우 에러를 반환하기✅ 연동 서비스의 응답이 느릴 때, 연동 서비스에 대한 타임아웃을 설정하지 않으면 처리량이 급격히 떨어짐➡️ 사용자 경험 개선 (반응 없는 무한 대기보다는 에러 화면이 나음)➡️ 시스템 자원 보호 (자원이 포화되기 ..

카테고리 없음 2025.08.24

[주니어 백엔드 개발자가 반드시 알아야 할 실무 지식] 3. 성능을 좌우하는 DB 설계와 쿼리

최범균 님의 "주니어 백엔드 개발자가 반드시 알아야 할 실무 지식" 책을 정리한 포스팅 입니다.1. 성능에 핵심인 DB테이블 풀 스캔일 경우, DB 부하 커짐 2. 조회 트래픽을 고려한 인덱스 설계일반적인 시스템에서는 조회 기능의 실행 비율이 높음인기 있는 게시글과 인기 없는 게시글이 구분될 수 있음➡️ 인덱스 사용 (카테고리, 작성자 id 등) Full-Text Search더보기데이터베이스나 검색 시스템에서 문자열 전체를 대상으로 검색하는 기능➡️ 효율적으로 검색할 수 있음✅ 단어 단위 인덱스✅ 불용어 처리✅ 어근화 / 형태소 분석✅ 랭킹/점수 부영 MySQLCREATE FULLTEXT INDEX idx_title_content ON articles(title, content);SELECT * FROM..

카테고리 없음 2025.08.21

[주니어 백엔드 개발자가 반드시 알아야 할 실무 지식] 2. 느려진 서비스, 어디부터 봐야 할까

최범균 님의 "주니어 백엔드 개발자가 반드시 알아야 할 실무 지식" 책을 정리한 포스팅 입니다. 1. 처리량과 응답 시간응답 시간 (Response Time)사용자의 요청을 처리하는데 걸리는 시간 구성API 요청: 서버 연결, 서버에 데이터 전송서버 실행API 응답: FFTB(첫번쨰 바이트 도착), FFLB(마지막 바이트 도착) 처리량 (Throughput)단위 시간 당 시스템이 처리하는 작업량TPS: 초당 트랜잭션 수RPS: 초당 요청 수 2. 서버 성능 개선 기초병목 지점시스템이 수용할 수 있는 최대 TPS를 초과하는 트래픽이 유입될 경우 발생➡️ 오래 걸리는 작업 식별하기 (주로 DB나 외부 API 연동에서 발생함) DB 커넥션 풀커넥션 풀은 커넥션을 미리 생성해서 보관함⚠️ 커넥션 생성 및 종료는..

카테고리 없음 2025.08.21

[Spring Cloud Config] 1-2. Spring Cloud Config Server: Environment Repository

0. Environment RepositoryConfig Server가 어디서 설정 데이터를 가져올지 정의하는 전략Config Server는 설정을 읽어서 Environment 객체로 변환해 클라이언트에게 내려줌✅ client는 config server에 "http://{config-server}/{application}/{profile}/{label}" 형식으로 요청함✅ config server는 "서비스 이름 + 환경 + 레이블" 조합으로 설정파일을 식별함 주요 변수변수매핑 대상의미예시{application}클라이언트 spring.application.name어떤 서비스인지 식별하는 이름user-serviceorder-service{profile}클라이언트 spring.profiles.active어떤..

카테고리 없음 2025.08.21

[Spring Cloud Config] 1-1. Spring Cloud Config Server: Introduction

0. Introduction분산 시스템에서 외부 설정을 중앙에서 관리하기 위한 프레임워크✅ 애플리케이션 설정을 중앙 저장소에 두기 (git)➡️ Config Server와 Client가 이를 동적으로 가져와 사용 구성 요소구성 요소역할비고Git Backend설정 파일들이 저장된 중앙 레포지토리환경/서비스별 파일 관리, 버전 관리 가능Config Server중앙에서 설정 파일을 읽어와 제공하는 서버Git에서 설정을 가져와 REST API로 노출Config Client애플리케이션 실행 시 Config Server로부터 설정값을 받아 사용가져온 값이 Spring Environment / PropertySource에 주입됨 예) Git Backend더보기application.ymluser-service-dev...

카테고리 없음 2025.08.20

[Kafka] Dead Letter Queue

1. Dead Letter Queue란?메시지 브로커가 전달에 실패한 메시지를 별도로 보관하는 백업 저장소✅ 소비자가 처리 중 메시지 처리가 실패될 수 있음✅ 견고하고 장애에 강한 데이터 파이프라인을 구축할 때 중요한 요소 이점목적설명Fault Tolerance메시지 처리 중 오류가 발생해도 전체 시스템에 영향을 주지 않도록 함Data Integrity처리할 수 없는 메시지를 안전하게 저장해 데이터 손실을 방지Recovery원인 해결 후 DLQ에 쌓인 메시지를 선택적으로 재처리해 데이터/서비스 복구 가능Monitoring & Troubleshooting실패한 메시지를 추적·분석하여 오류 원인 파악 및 디버깅 용이Scalability실패한 메시지를 DLQ로 분리하여 메인 처리 흐름의 적체(Backlog) ..

DevOps/Kafka 2025.08.15

[Debezium] 1. Introduction

다양한 데이터베이스의 CDC를 위한 오픈소스 커넥터 모음 (Kafka Connect 위에서 동작함)각 데이터베이스의 로그를 기반으로 한 변경 스트림을 읽음 장점항목설명예완전성모든 데이터 변경을 누락 없이 캡처 낮은 지연폴링 대비 매우 낮은 레이턴시MySQL·Postgres 사례: ms 수준스키마 변경 불필요Last Updated 같은 컬럼 추가 불필요 삭제 캡처DELETE 이벤트도 포함 메타데이터 제공DB/설정에 따라 포함 가능이전 레코드 상태, 트랜잭션 ID, 유발 쿼리 등 1. ArchitectureKafka Connect 위에서 동작하는 소스 커넥터로 배포됨구분내용가능 여부/비고토픽 네이밍기본은 서버/DB/테이블 기반 토픽명 생성✅ SMT로 패턴 치환/이름 변경 가능토픽 라우팅 1:1한 테이블 → ..

DevOps/Kafka 2025.08.11

[MongoDB Kafka Connector] 1. Kafka Connector

1. Kafka ConnectorApache Kafka의 하위 구성 요소Kafka를 데이터 저장소와 연결해줌 2. Install the MongoDB Kafka ConnectorKafka plugins 디렉토리에 복사커넥터 플러그인(JAR 파일들)을 plugin.path로 지정된 디렉토리에서 찾음예: plugin.path=/usr/local/share/kafka/plugins 라고 설정하면,/usr/local/share/kafka/plugins 폴더 안에 MongoDB Kafka Connector JAR을 넣어야 함.이렇게 하면 Kafka Connect 실행 시 해당 디렉토리에서 커넥터 클래스를 자동으로 로딩합니다. 분산 모드(Distributed Worker)Kafka Connect는 Standalon..

DevOps/Kafka 2025.08.10

[MongoDB Kafka Connector] 3-1. Source Connector: Fundamentals

1. Change Streams애플리케이션이 실시간 데이터 변경 내용을 바로 받아볼 수 있게 하는 기능구분내용AggregationAggregation Pipeline을 사용해 Change Stream 이벤트를 원하는 형태로 가공 가능Change Event Structure - 메타데이터(_id, operationType, ns, documentKey, updateDescription)- 변경 내용* publish.full.document.only 옵션: 변경 내용만 Kafka Connector로 전송 (메타데이터 제외)Performance인덱스 사용 불가 (oplog가 특수한 capped 컬렉션이라 인덱스 불가)→ 고속 스토리지 사용, 충분한 캐시 메모리(WiredTiger cache) 확보 Source..

카테고리 없음 2025.08.10

[마이크로서비스 아키텍처 구축] 2. 마이크로서비스 모델링 방법

샘 뉴먼 님의 "마이크로서비스 아키텍처 구축" 책을 정리한 포스팅 입니다. 1. 뮤직코프 소개최첨단 온라인 소매업체오프라인 위주로 판매를 해왔지만 온라인 판매에 더욱 집중하기로 결정함 2. 올바른 마이크로서비스 경계를 만드는 것은 무엇인가?마이크로서비스가 독립적인 방식으로 변경되거나 배포되 사용자에게 릴리즈되길 바람➡️ 다른 마이크로서비스와 별개로 변경할 수 있는 능력이 중요 정보 은닉모듈 내부의 구현 세부 사항을 외부에서 보지 못하게 감추는 원칙✅ 내부 로직이 바뀌어도 외부에 영향을 최소화할 수 있음✅ 모듈 경계를 정의하는 기준으로 사용함 이점이점설명효과개발 시간 단축다른 서비스는 인터페이스를 통해 기능을 사용- 서비스 간 독립 개발 가능- 여러 작업을 병렬로 처리 가능이해도- 각 모듈을 독립된 블랙박..

카테고리 없음 2025.08.09