Seonb2n

데이터 중심 애플리케이션 설계 리뷰

데이터중심 애플리케이션 설계 - 3년차 백엔드 개발자의 시각 이 책을 선택한 이유 소프트웨어 엔지니어 필독서 목록을 검색할 때마다 빠지지 않고 등장하는 책이 있었다. 바로 마틴 클레프만의 『데이터중심 애플리케이션 설계』였다. 소프트웨어 엔지니어 필수 서적, 월드 클래스 엔지니어가 되기 위해 읽어야할 12 가지 책 등등 국내, 해외를 가리지 않고...

Spring Batch를 멀티스레드로 실행시켜서 배치 실행 성능을 높여보자

Spring Batch를 멀티스레드로 실행시켜서 배치 실행 성능을 높여보자 Spring Batch를 운영하다 보면 대용량 데이터 처리 시 성능 문제에 직면하게 됩니다. 배치에 따라 다르지만, network I/O, DB I/O 작업이 많다면 멀티스레드 처리를 통해 성능을 크게 향상시킬 수 있을 것 같아서 그 과정에서 삽질과 고민을 정리해보고자 합...

데이터 중심 애플리케이션 설계10

일괄 처리 개요 10장에서는 요청-응답 방식의 온라인 시스템과 대비되는 배치 처리 시스템에 대해 다룹니다. 배치 처리는 대규모 데이터를 처리하여 파생 데이터를 생성하는 핵심 구성 요소입니다. 1. 배치 처리의 정의와 특징 핵심 개념 고정된(bounded) 크기의 대량 데이터를 입력으로 처리 입력 데이터를 수정하지 않고 새로운 데이터...

데이터 중심 애플리케이션 설계09

일관성과 협의 분산 시스템에서 가장 어려운 문제 중 하나는 여러 노드에 걸쳐 있는 데이터를 일관성 있게 유지하는 것입니다. 네트워크 지연, 노드 장애, 메시지 손실 등의 문제가 언제든 발생할 수 있는 환경에서 모든 노드가 동일한 상태를 유지하기 위해서는 많은 사항을 고려해야합니다. 최종 일관성의 함정 대부분의 복제된 데이터베이스는 최종 일관성...

데이터 중심 애플리케이션 설계08

분산 시스템의 골칫거리 분산 시스템에서는 언제나 문제가 일어날 수 있다. 분산 시스템을 다루는 것은 한 컴퓨터에서 실행되는 소프트웨어를 작성하는 일과는 근본적으로 다르다. 서버 개발자가 분산 환경에서 마주하게 되는 가장 큰 도전은 부분 실패의 비결정적 특성을 다루는 것이다. 분산 시스템에서 시스템이 커질수록 구성 요소 중 하나가 고장날 가능성도...

데이터 중심 애플리케이션 설계07

트랜잭션 트랜잭션이란 무엇인가 트랜잭션은 여러 데이터베이스 작업을 하나의 논리적 단위로 묶어서 처리하는 메커니즘이다. 시스템에 오류가 발생하더라도 데이터베이스가 일관된 상태를 유지할 수 있도록 보장한다. ACID 속성 트랜잭션의 안전 보장은 ACID라는 네 가지 속성으로 설명된다: 원자성 (Atomicity) 트랜잭션 내의 모든 작업이 전...

데이터 중심 애플리케이션 설계06

파티셔닝 파티셔닝 개요 파티셔닝의 정의와 목적 파티셔닝(Partitioning)은 대규모 데이터셋을 여러 작은 부분집합으로 나누어 여러 노드에 분산 저장하는 기술입니다. 이는 단일 머신으로는 처리하기 어려운 대규모 데이터나 높은 쿼리 처리량을 효과적으로 관리하기 위한 핵심 전략입니다. 주요 목적: 확장성: 데이터와 쿼리 부하를 여러 노...