요약 이벤트 스트림 전송 중, 파티셔닝된 로그에 대해 이해함. 로그를 사용한 메시지 저장소 로그 방식과 전통적인 메시징 방식의 비교 소비자 오프셋 디스크 공간 사용 소비자가 생산자를 따라갈 수 없을 때 오래된 메시지 재생 데이터베이스와 스트림에 대해 이해함. 시스템 동기화 유지하기 변경 데이터 캡처 변경 데이터 캡처의 구현 초기 스냅숏 로그 컴팩션 변경 스트림용 API 지원 메모 파티셔닝된 로그 파티셔닝된 로그는 네트워크 상에서의 일시적 연산과 데이터베이스의 영구적 저장 방식의 차이를 해결하기 위한 방법임. 일반적인 메시징 시스템은 메시지를 소비자에게 전달한 후 즉시 삭제하지만, 데이터베이스와 파일 시스템은 명시적으로 삭제할 때까지 영구적으로 보관됨. 이러한 차이 때문에 일괄 처리와 메시징 처리의 파생 ..
요약 스트림 처리에 대한 내용을 이해함. 이벤트 스트림 전송 메시징 시스템 생산자에서 소비자로 메시지를 직접 전달하기 메시지 브로커 메시지 브로커와 데이터베이스의 비교 확인 응답과 재전송 메모 11장. 스트림 처리 이번 장에서는 스트림 처리의 기본 개념을 소개하고 있음. 스트림 처리는 시간이 지남에 따라 점진적으로 생성되는 데이터를 처리하는 방법으로, 일괄 처리와는 달리 데이터가 한정되지 않고 점진적으로 처리됨. 일반적으로 스트림은 유닉스의 stdin과 stdout, 프로그래밍 언어의 느긋한 리스트, 자바의 FileInputStream과 같은 파일 시스템 API, TCP 연결, 인터넷 상의 오디오와 비디오 전송 등에서 사용됨. 일괄 처리의 문제점은 입력의 변화가 처리 사이클이 끝날 때까지 반영되지 않는 ..
요약 애플리케이션 패턴에 대해 이해함. UI 컴포지트 패턴 또는 마이크로 프런트엔드 마이크로서비스 통신 패턴 저장소 분리 패턴 메모 2.4.3 애플리케이션 패턴 지금부터는 실제로 개발자가 구현해야 할 애플리케이션 영역으로 넘어와서 마이크로서비스 애플리케이션을 구성하기 위한 패턴을 살펴본다. 먼저, 프런트엔드를 구성하기 위한 패턴은 어떻게 해야하는 가? 프런트엔드가 한 덩어리 일 경우 과연 마이크로서비스 기반 시스템의 장점인 서비스의 독립적인 변경과 배포가 가능한가? 불가능하다. 이전의 백엔드가 모노리스였을 때 겪었던 문제를 프런트엔드의 모노리스 서비스도 동일하게 겪을 수밖에 없다. UI 컴포지트 패턴 또는 마이크로 프런트엔드 위 프런트엔드 모노리스의 해결 방안은 UI 컴포지트(Composite) 패턴과 ..
요약 마이크로서비스 운영과 관리를 위한 플랫폼 패턴의 나머지 부분에 대해 이해함. 장애 및 실패 처리를 위한 서킷 브레이커 패턴 모니터링과 추적 패턴 중앙화된 로그 집계 패턴 MSA 기술 변화 흐름 서비스 메시 패턴 메모 장애 및 실패 처리를 위한 서킷 브레이커 패턴 여러 서비스로 구성된 시스템에서 한 서비스에 장애가 발생했을 때 다른 서비스가 영향을 받을 수 있음. 이때 장애가 발생한 서비스를 격리해서 유연하게 처리할 수 있는 방법이 필요함. 이를 위한 한 가지 방법은 서킷 브레이커 패턴임. 시스템 과부하나 특정 서비스에 문제가 생겼을 때 자연스럽게 다른 정상적인 서비스로 요청 흐름이 변겨오디게 해야 함. 그러자면 서비스 상태를 항상 실시간으로 관리해서 시각화하고 모니터링할 수 있어야 함. 특정 서비스..
요약 맵리듀스를 넘어 일괄처리의 대안에 대한 내용을 이해함. 중간 상태 구체화 맵리듀스 작업은 중간 상태를 파일로 기록하는데 이를 구체화라고 함. 유닉스 파이프와 비교하여 맵리듀스의 중간 상태 구체화에는 여러 단점이 있음. 그래프와 반복 처리 그래프 처리는 웹 검색 엔진 순서 결정, 추천 엔진, 머신러닝, 랭킹 시스템에서 중요하게 사용됨. 데이터플로 엔진은 비순환 방향 그래프(DAG)를 사용하여 작업의 연산자를 배열하는데, 이는 데이터 자체가 그래프 형식인 것과 다름. 맵리듀스는 완료까지 반복하는 개념을 표현하기 어려워 반복적 스타일로 구현되는 그래프 처리 알고리즘이 필요함. 고수준 API와 언어 고수준 API와 언어는 분산 일괄 처리용 수행 엔진 발전과 함께 인기를 얻었음 . 맵리듀스 작업 작성의 어려..
요약 35일차와 36일차는 정말 몇번을 읽어도 이해가 잘 안가서 다음에 좀 더 집중해서 읽어본다. 일괄 처리 워크플로의 출력에 대해 이해함 검색 색인 구축 일괄 처리의 출력으로 키-값을 저장 일괄 처리 출력에 관한 철학 하둡과 분산 데이터베이스의 비교에 대해 이해함. 저장소의 다양성 처리 모델의 다양성 빈번하게 발생하는 결함을 줄이는 설계 메모 일괄 처리 워크플로의 출력 지금까지 다양한 알고리즘을 사용해 맵리듀스 작업의 워크플로를 구현하는 것을 살펴봄. 그러나 결과가 어떻게 나오고 왜 이 작업을 수행하는지에 대한 질문이 남아 있음. 데이터베이스 질의에서는 트랜잭션 처리(OLTP)와 분석 목적을 구별했음. OLTP 질의는 소량의 레코드를 조회하는 반면, 분석 질의는 대량의 레코드를 스캔하고 그룹화, 집계 ..
요약 마이크로서비스 운영과 관리를 위한 플랫폼 패턴의 나머지 부분에 대해 이해함. 스프링 클라우드: 스프링 부트 + 넷플릭스 OSS 서비스 레지스트리, 서비스 디스커버리 패턴 서비스 단일 진입을 위한 API 게이트웨이 패턴 BFF 패턴 외부 구성 저장소 패턴 인증/인가 패턴 메모 스프링 클라우드: 스프링 부트 + 넷플릭스 OSS 스프링 클라우드는 스프링 프레임워크를 개발하고 있는 피보탈에서 넷플릭스가 공개한 줄, 유레카, 히스트릭스, 리본 등의 넷플릭스 오픈소스를 스프링 부트 프레임워크 기반으로 사용하기 쉽게 통합한 것임. p 43~44 스프링 클라우드 서비스 연계 흐름 참고 마이크로서비스와 기반 서비스의 연계 흐름은 여러 개의 마이크로서비스로 시스템을 개발하면서 발생한 문제를 해결하기 위해 MSA 주요..
요약 MSA 구성 요소와 MSA 패턴의 나머지 부분을 이해함. 인프라 구성요소 컨테이너 오케스트레이션 플랫폼 패턴 애플리케이션 패턴 서비스 유형별 대표적인 클라우드 서비스를 이해함. IaaS CaaS PaaS 마이크로서비스 운영과 관리를 위한 플랫폼 패턴에 대해 이해함. 데브옵스 인프라 구성 빌드/배포 파이프라인 설계 마이크로서비스 생태계와 운영 관리 요소의 탄생 마이크로서비스 관리/운영 패턴 메모 컨테이너 오케스트레이션 컨테이너 기술을 선택했다면, 컨테이너를 관리하기 위한 기술 또한 필요함. 컨테이너가 많아지면 그에 따라 컨테이너의 자동 배치 및 복제 장애 복구 확장 및 축소 컨테이너 간 통신 로드 밸런싱 등의 컨테이너 관리를 위한 기능이 필요함. 이러한 기술을 컨테이너 오케스트레이션 이라고 함. 최근..
요약 맵리듀스와 분산 파일 시스템에 대해 이해함. 맵리듀스 작업 실행하기에 대한 내용을 이해함. 맵리듀스의 분산실행과 워크플로 리듀스 사이드 조인과 그룹화에 대해 이해함. 정렬 병합 조인 같은 곳으로 연관된 데이터 가져오기 그룹화 쏠림 다루기 맵 사이드 조인에 대해 이해함. 브로드캐스트 해시 조인 파티션 해시 조인 맵 사이드 병합 조인 맵 사이드 조인을 사용하는 맵리듀스 워크플로 메모 맵리듀스와 분산 파일 시스템 맵리듀스는 수천 대의 장비로 분산해서 실행이 가능하다. 이것이 유닉스 도구와의 차이임. 유닉스 도구와 마찬가지로 맵리듀스 작업은 입력을 수정하지 않기 때문에 출력을 생산하는 것 외에 다른 부수 효과가 없음. 유닉스 도구는 stdin, stdout 을 입력과 출력으로 사용하는데, 맵리듀스 작업은 ..
요약 10장 일괄 처리에 대한 내용을 이해함. 서비스 (온라인 시스템) 일괄 처리 시스템 (오프라인 시스템) 스트림 처리 시스템(준실시간 시스템) 유닉스 도구로 일괄처리하는 방법에 대한 내용을 이해함. 단순 로그 분석 유닉스 연쇄 명령 vs 맞춤형 프로그램 유닉스의 철학에 대해 이해함. 유닉스 프로그램 여러개가 유연하게 조립하여 사용할 수 있음. 유닉스 프로그램은 동일 인터페이스를 사용하기 때문 로직과 연결을 분리할 수 있음. 프로그램과 느슨한 결합을 유지하기에 작은 도구로부터 큰 시스템을 구성하기 훨씬 수월함. 유닉스는 진행상황을 보기 편함. 메모 10장. 일괄 처리 웹과 점점 늘어나고 있는 HTTP/REST 기반 API 때문에 요청/응답 방식의 상호작용이 매우 흔해져서 이를 당연히 여김. 하지만 이 ..
요약 MSA의 기술 영역 아키텍처에 대해 이해함. 리액티브 선언 빠른 응답이 중요 아키텍처의 유연성이 중요 느슨한 결합의 아키텍처로의 변화 특정 벤더에 의존하지 않도록 다양한 벤더를 사용하고 서로 조합함. 마이크로서비스의 외부 아키텍처와 내부 아키텍처가 존재함. 외부 아키텍처는 마이크로서비스가 운영되는 환경임 내부 아키텍처는 마이크로서비스가 제공하는 API, 비즈니스 등을 의미함. MSA 구성 요소와 MSA 패턴을 이해함. 인프라 구성요소 퍼블릭 클라우드, 베어메탈, 프라이빗 클라우드 가상 머신(VM)과 컨테이너 메모 02. MSA의 이해 이번 장에서 본격적으로 기술 영역인 아키텍처에 대해 살펴본다. 리액티브 선언을 통해 현대 아키텍처의 경향성을 알아본다. 한덩어리로 구성된 모노리스 시스템에서 여러 조각..
요약 일관성과 합의에 대한 내용을 정리함. 파트 3, 파생 데이터에 대한 내용을 이해함. 데이터 저장 시스템은 크게 두분류로 나뉨. 레코드 시스템 파생 데이터 시스템 위 시스템을 구분하면 시스템 전체 데이터플로가 명확해짐. 메모 정리 일관성과 합의에 관한 주제들을 여러 다양한 각도에서 살펴봄. 인기있는 일관성 모델인 선형성을 깊게 알아봄. 선형성은 이해하기 쉬우므로 매력적이지만 느리다는 단점이 있음. 시스템에 발생한 이벤트에 순서를 부과하는 인과성을 살펴봄. 모든 연산을 하나의 전체 순서가 정해진 타임라인에 넣는 선형성과 달리, 인과성은 더 약한 일관성 모델을 제공함. 인과적 일관성은 선형성의 코디네이션 오버헤드가 없고 네트워크 문제에 훨씬 덜 민감함. 위와 같은 인과적 순서를 담아내더라도 어떤 것들은 ..