어떤 것이든지 잘못될 가능성이 있다면 잘못된다. 0. 분산 시스템의 골칫거리 분산 시스템을 다루는 것은 한 컴퓨터에서 실행되는 소프트웨어를 작성하는 일과는 근본적으로 다르다. 엔지니어로서의 우리의 임무는 모든게 잘못되더라도 사용자가 기대하는 보장을 만족시키는 제 역할을 해내는 시스템을 구축하는 것이다. 1. 결함과 부분 장애 ...
07장. 트랜잭션
트랜잭션 잘 사용하기 0. 트랜잭션 데이터 시스템은 다양한 문제가 발생할 가능성이 있다. 데이터베이스 소프트웨어나 하드웨어는 언제라도 실패할 수 있다. 애플리케이션은 언제라도 죽을 수 있다. 네트워크가 끊기면 애플리케이션과 데이터베이스의 연결이 갑자기 끊기거나 데이터...
06장. 파티셔닝
대용량 데이터셋을 파티셔닝하는 몇 가지 방법을 살펴보고 인덱스와 파티셔닝이 어떻게 상호작용하는지 살펴보자 클러스터에 노드를 추가하거나 제거할 때 필요한 재균형화(리밸런싱)에 대해서 살펴보자 데이터베이스가 어떻게 요청을 올바른 파티션에 전달하고 질의를 실행하는지 살펴보자 0. 파티셔닝 데이터셋이 매우 크거나 질의 처리량이 매우 높다면 복제...
05장. 복제
복제를 위한 데이터 변경 처리에 대한 어려움을 알아보자 잘못될 수 있는 것과 잘못될 수 없는 것 사이의 주된 차이점은 잘못될 수 없는 것이 잘못됐을 때는 잘못을 파악하거나 고치는 것은 거의 불가능하다는 점이다. - 더글라스 애덤스, 대체로 무해함(1992) 0. 복제란? 네트워크로 연결된 여러 장비에 동일한 데이터의 복사본을 유...
04장. 부호화와 발전
Encoding and Evolution 데이터 부호화를 위한 다양한 형식으로 스키마가 변경되고 예전 버전과 새로운 버전의 데이터와 코드가 공존하는 시스템을 어떻게 지원하는지 알아보자. 하위 호환성: 새로운 코드는 예전 코드가 기록한 데이터를 읽을 수 있어야 한다. 상위 호환성: 에전 코드는 새로운 코드가 기록한 데이터를 읽을 수 있...
03장. 저장소와 검색
데이터베이스 관점에서 데이터를 저장하는 방법과 데이터를 요청했을 때 다시 찾을 수 있는 방법에 대해 알아보자. 0. 개발자가 주의해야하는 이유 사용 가능한 여러 저장소 엔진 중에 어플리케이션에 적합한 엔진을 선택하는 것이 필요 특정 작업부하 유형에서 좋은 성능을 내게끔 저장소 엔진을 조정하려면 저장소 엔진이 내부에서 수행되는 작업에 ...
02장. 데이터 모델과 질의 언어
소프트웨어에서 데이터를 저장, 표현, 조작하는 다양한 방법을 알아보자. 관계형 모델 문서 모델 그래프 기반 데이터 모델 1. 관계형 모델과 문서 모델 1.1. 관계형 모델 메인프레임 컴퓨터에서 수행된 비즈니스 데이터 처리, 트랜잭션 처리, 일괄처리를 하기 위해 사용됨. 개발자는 DB 내부 데이터 표현에 대해 ...
[fp-ts] 타입스크립트로 함수형 프로그래밍 시작하기: Eq
이 포스팅은 DEV Community에서 참고하여 공부하면서 정리한 문서입니다. 현재 주 개발 언어로 사용 중인 스칼라 코드가 갑작스럽게 등장할 수 있습니다. fp-ts fp-ts는 타입스크립트로 타입이 있는 함수형 프로그래밍을 할 수 있도록 제공하는 라이브러리이다. 타입스크립트에서 제공하지 않는 Option, Either, IO, Task...
[Live Study] 15주차 과제: 람다식
이 스터디는 백기선님께서 Github와 유튜브로 진행하시는 스터디 입니다. 참여하시고 싶으신 분은 아래 링크를 참고해 주세요 :) 대부분의 내용은 [O’REILLY] Java in a Nutshell, 7th Edition 에서 참고 하였습니다. (최대한 직접 해석하면서 읽고 있으며 모르는 단어는 번역기로 찾았습니다.) 학습 목표 자바의 람다...
[Live Study] 14주차 과제: 제네릭
이 스터디는 백기선님께서 Github와 유튜브로 진행하시는 스터디 입니다. 참여하시고 싶으신 분은 아래 링크를 참고해 주세요 :) 대부분의 내용은 [O’REILLY] Java in a Nutshell, 7th Edition 에서 참고 하였습니다. (최대한 직접 해석하면서 읽고 있으며 모르는 단어는 번역기로 찾았습니다.) 학습 목표 자바의 제네...