전체 글 170

데이터 중심 애플리케이션 설계 (11장 스트림 처리)

[2부 분산 데이터]11장: 스트림 처리1. 이벤트 스트림 전송1.1 메시징 시스템1.2 파티셔닝된 로그2. 데이터베이스와 스트림2.1 시스템 동기화 유지하기2.2 변경 데이터 캡처2.3 이벤트 소싱3. 스트림 처리3.1 스트림 처리의 사용3.2 시간에 관한 추론3.3 스트림 조인3.4 내결함성  11장 스트림 처리- 일괄처리의 경우 입력을 사전에 알려진 유한크기로 한정한다는 중요한 가정이 있음=> 즉 초기에 출력을 시작할 수 없음=> 그래서 일괄 처리 프로세서는 인위적으로 일정 기간씩 데이터 청크를 나눠야 함- 스트림 처리=> 매초가 끝나는 시점에 1초 분량의 데이터를 처리하거나 고정된 시간 조각이라는 개념을 완전히 버리고 단순히 이벤트가 발생할 때마다 처리함=> 스트림? 시간 흐름에 따라 점진적으로 ..

카테고리 없음 2024.07.19

데이터 중심 애플리케이션 설계 (10장 일괄 처리)

[2부 분산 데이터]10장: 일괄 처리1. 유닉스 도구로 일괄 처리하기1.1 단순 로그 분석1.2 유닉스 철학2. 맵리듀스와 분산 파일 시스템2.1 맵리듀스 작업 실행하기2.2 리듀스 사이드 조인과 그룹화2.3 맵 사이드 조인 일괄 처리2.4 워크플로의 출력2.5 하둡과 분산 데이터베이스의 비교3. 맵리듀스를 넘어3.1 중간 상태 구체화3.2 그래프와 반복 처리3.3 고수준 API와 언어  [정리]- awk, grep, sort 등 유닉스 도구의 설계 원리=> 입력은 불변, 출력은 다른 프로그램의 입력으로 사용. 복잡한 문제도 한 가지 일을 잘하는 작은 도구를 엮어서 해결- 유닉스 환경에서 프로그램과 다른 프로그램을 연결하는 단일 인터페이스? 파일과 파이프=> 맵리듀스의 인터페이스는 분산 파일 시스템=>..

카테고리 없음 2024.07.14

데이터 중심 애플리케이션 설계 (9장 일관성과 합의)

[2부 분산 데이터]09장: 일관성과 합의1. 일관성 보장2. 선형성2.1 시스템에 선형성을 부여하는 것은 무엇인가?2.2 선형성에 기대기2.3 선형성 시스템 구현하기2.4 선형성의 비용3. 순서화 보장3.1 순서화와 인과성3.2 일련번호 순서화3.3 전체 순서 브로드캐스트4. 분산 트랜잭션과 합의4.1 원자적 커밋과 2단계 커밋(2PC)4.2 현실의 분산 트랜잭션4.3 내결함성을 지닌 합의4.4 멤버십과 코디네이션 서비스[정리]- 인기 있는 일관성 모델 '선형성'=> 목적? 복제된 데이터가 오직 하나의 복사본만 있는 것처럼 보이게 하고 데이터에 대한 모든 연산을 원자적으로 만드는 것=> 장점? 데이터베이스가 단일 스레드 프로그램의 변수처럼 동작하게 만듦=> 단점? 느림. 네트워크 지연이 큰 환경에서 특..

카테고리 없음 2024.07.08

데이터 중심 애플리케이션 설계 (7장 트랜잭션)

[2부 분산 데이터]07장: 트랜잭션1. 애매모호한 트랜잭션의 개념1.1 ACID의 의미1.2 단일 객체 연산과 다중 객체 연산2. 완화된 격리 수준2.1 커밋 후 읽기2.2 스냅숏 격리와 반복 읽기2.3 갱신 손실 방지2.4 쓰기 스큐와 팬텀3. 직렬성3.1 실제적인 직렬 실행3.2 2단계 잠금(2PL)3.3 직렬성 스냅숏 격리(SSI)[정리: 여러 장비로 분산해 저장하는 데이터]- 트랜잭션=> 애플리케이션이 어떤 동시성 문제와 어떤 종류의 하드웨어와 소프트웨어 결함이 존재하지 않는 것처럼 동작할 수 있게 도와주는 추상층=> 트랜잭션이 없으면 다양한 방법으로 데이터가 일관성이 깨질 수 있음- 동시성 제어 - 경쟁 조건1) 더티읽기: 한 클라이언트가 다른 클라이언트가 썼지만 아직 커밋되지 않은 데이터를 ..

데이터 중심 애플리케이션 설계 (6장 파티셔닝)

[2부 분산 데이터]06장: 파티셔닝1. 파티셔닝과 복제2. 키-값 데이터 파티셔닝2.1 키 범위 기준 파티셔닝2.2 키의 해시값 기준 파티셔닝2.3 쏠린 작업부하와 핫스팟 완화3. 파티셔닝과 보조 색인3.1 문서 기준 보조 색인 파티셔닝3.2 용어 기준 보조 색인 파티셔닝4. 파티션 재균형화4.1 재균형화 전략4.2 운영: 자동 재균형화와 수동 재균형화5. 요청 라우팅5.1 병렬 질의 실행 [정리: 여러 장비로 분산해 저장하는 데이터]- 파티셔닝=> 대용량 데이터셋을 더 작은 데이터셋으로 쪼개는 것=> 저장/처리할 데이터가 너무 많아 장비 한 대로 처리하는 게 불가능해지면 파티셔닝이 필요=> 핫스팟이 생기지 않게 하면서 데이터와 질의 부하를 여러 장비에 균일하게 분배하도록 해야 함* 핫스팟? 불균형적으..

[Scala 찍먹하기] 유튜브 크롤링 페이지 개발(feat. vuejs)

8시간에 걸쳐 프로그래밍 언어 Scala로 개발해본 유튜브 크롤링 페이지!찍먹하기가 목적이라 복잡한 로직이나 설정은 넣지 않았지만 의미있는 미니 프로젝트였다.Scala를 기반으로 Akka로 HTTP나 stream 등을 설정했다.MVC 아키텍처 패턴 기반의 Play 프레임워크를 사용할지 말지 고민했지만 익히는데 시간이 걸리겠다 판단했다. 오판이었다..!Express를 해봤기에 Nestjs처럼 폴더구조를 잡아주는 역할을 하는 게 굳이 필요할까 했는데 역시 새로 등장하는 기술에는 이유가 있는 법이었다.

카테고리 없음 2024.06.03