본문 바로가기

전체 글

(127)
2장 다양한 NoSQL 데이터 베이스 CAP 이론 분산 데이터베이스는 일관성(C), 가용성(A), 파티션 허용(P), 이 세 가지 속성을 동시에 가질 수 없다는 내용이다. 일관성 : 서버 간에 일관된 데이터를 유지함을 의미 가용성 : 질의에 대한 응답을 제공함 (실패하지 않음) 파티션 허용 : 둘 이상의 데이터베이스 서버가 연결된 네트워크에 문제가 생기더라도 이 서버들은 여전히 일관된 데이터를 갖고 있다는 것 'NO' ACID 'YES' BASE BA(Basically Available) 기본적인 가용성 분산 시스템에서 부분적인 고장이나 실패는 있을 수 있지만 시스템의 나머지 부분은 계속 기능을 수행해야 한다. S(Soft State) 소프트 상태 데이터가 더 최신 상태인 데이터로 덮여 쓰인다. E(Eventually Consistence)..
스프링 부트 자동 구성과 실패분석기 스프링 부트 자동 구성 스프링 부트에서 제공하는 스타터 라이브러리를 가져오면 자동으로 관련 설정을 해준다. 이러한 설정은 @Configuration 애너테이션이 붙어있는 클래스를 통해서 자동으로 필요한 빈을 생성해주는 것이다. 하지만 특정 상황에서 정의된 빈을 생성하지 않고 싶은 경우를 대비해서 스프링 부트는 @Conditional 애너테이션을 제공한다. @Conditional 스프링이 관리하는 컴포넌트의 생성을 제어할 수 있도록 @Bean, @Component, @Configuration과 더불어서 @Conditional 애너테이션을 제공한다. 이 애너테이션은 Condition 클래스를 인자로 받는다. Condition은 이름처럼 조건을 검사하는 책임을 가지는 함수형 인터페이스로 matches() 메서..
3장 카프카 컨슈머 컨슈머 API 카프카에서 데이터를 넣어주는 프로듀서가 있으니 당연히 데이터를 사용하는 컨슈머가 있다. 컨슈머에 대해서 알아보자. 컨슈머 중요 개념 컨슈머를 운영하는 방법은 크게 2가지가 있다. 토픽의 특정 파티션을 구독하는 컨슈머를 운영하는 방식 1개 이상의 컨슈머로 이루어진 컨슈머 그룹을 운영하는 방식 컨슈머 그룹으로 운영하는 경우를 좀 더 자세히 살펴보자. 1개 이상의 컨슈머로 이루어진 컨슈머 그룹을 운영하는 방식 컨슈머를 각 컨슈머 그룹으로부터 격리된 환경에서 안전하게 운영할 수 있게 도와주는 방식이다. 컨슈머 그룹으로 묶인 컨슈머들은 토픽의 1개 이상 파티션들에 할당되어 데이터를 가져갈 수 있다. 컨슈머 그룹으로 묶인 컨슈머가 토픽을 구독해서 데이터를 가져갈 때, 파티션은 오직 하나의 컨슈머만 사..
3장 카프카 기본 개념 설명 - 브로커, 프로듀서 카프카 브로커, 클러스터 주키퍼 데이터 복제, 싱크 장애 발생시에도 데이터를 유실하지 않고 안전하게 사용하기 위해서 데이터 복제(싱크)를 실행한다. 카프카의 데이터 복제는 파티션 단위로 이루어지며 복제된 파티션은 리터와 팔로워로 구성된다. 팔로워의 파티션은 리더 파티션으로부터 데이터를 가져와서 자신의 파티션에 저장한다. 복제 개수만큼 저장 용량이 증가한다는 단점을 가지고 있다. 리더 파티션에 장애가 발생하면 다른 팔로워 파티션이 그 기능을 위임받는다. 컨트롤러 클러스터의 다수 브로커 중 한 대가 컨트롤러의 역할을 한다. 컨트롤러는 다른 브로커들의 상태를 체크하고 브로커가 클러스터에서 빠지는 경우 해당 브로커에 존재하는 리더 파티션을 재분배한다. 데이터 삭제 카프카는 다른 메시징 플랫폼과 다르게 컨슈머가 ..
2장 스프링 부트 공통 작업 - 실전 스프링 부트 1. 어플리케이션 설정 관리 스프링 부트는 프로퍼티 파일, YAML 파일, 환경 변수, 명령행 인자 등 여려 가지 방법으로 설정 정보를 외부화해서 소스 코드 변경 없이 환경마다 다르게 적용할 수 있다. 1.1 SpringApplication 클래스 사용 @SpringBootApplication public class SpringBootAppDemoApplication { public static void main(String[] args) { var properties = new Properties(); // 해당 설정은 spring.config.import에 명시한 파일이 존재하지 않는 경우 전략을 소개 설정한 것이다. properties.setProperty("spring.config.on-not-f..
2장 카프카 빠르게 시작해보기 (카프카 커맨드 라인 ) kafka-topics.sh 토픽 생성 hello.kafka 이름의 토픽을 생성한다. ./kafka-topics.sh \ --create \ --bootstrap-server kafka:9092 \ -- topic hello.kafka 추가적인 옵션을 설정하지 않으면 기본 설정에 따라 토픽이 생성된다. 옵션을 적용하여 토픽 생성 ./kafka-topics.sh \ --create \ --bootstrap-server kafka:9092 \ --partitions 4 \ --replication-factor 1 \ --config retention.ms=172800000 -- topic hello.kafka.2 option describe partitions 파티션의 개수를 설정한다. replication..
1장 스프링 부트 시작하기 - 실전 스프링 부트 1.1 스프링 부트 소개 1.1.1 왜 스프링 부트 인가? 개발자가 애플리케이션을 신속히 만들어서 구동 가능하게 해주고 복잡한 설정 지옥에서 해방시켜 줌 1.1.2 스프링 부트는 무엇인가? 스프링 프레임워크와 개발자 사이에 존재하는 계층으로서 설정을 단순화해 주는 역할을 하는 것 1.1.3 스프링 부트 핵심 기능 빠른 시동 개발자가 애플리케이션에 필요한 의존 관계를 명시하기만 하면 실행가능 자동 구성 클래스패스에 있는 JAR 파일이나 여러 가지 설정 파일에 지정된 프로퍼티 정보를 바탕으로 스프링 애플리케이션에 필요한 최소한의 컴포넌트를 알아서 자동 구성 미리 정의된 방식 미리 정의된 의존 관계를 통해서 개발자가 의존성 관리에서 자유로워지고 빠른 개발이 가능 독립 실행형 JAR 파일로 패키징 되어 외부 W..
2장 카프카 빠르게 시작해보기 (실습용 카프카 브로커 설치) 들어가면서 책에서는 AWS EC2에 카프카를 설치하고 운영하는 예제를 보여주지만 AWS 계정에 다른 서버를 구동하고 있기도 하고 그냥 로컬에서 외부 환경에 제약 없이 자유롭게 실습을 하고 싶어서 Docker를 사용해서 실습환경을 구축하기로 결정했다. 2.1 실습용 카프카 설치 AWS 환경 설정을 도커 설치로 변경 2.1.1 도커 데스크톱 설치 도커를 그냥 사용해도 괜찮지만 GUI로 변하게 컨테이너를 관리하기 위해서 도커 데스크톱을 설치한다. 2.1.2 인스턴스에 접속하기 아직 컨테이너를 생성하지 않았기 때문에 PASS!! 하지만 생성된 컨테이너를 도커 데스크톱을 사용하면 쉽게 컨테이너에 접속할 수 있다. 도커 CLI도 docker exec 명령을 통해서 접근 가능!! 2.1.3 인스턴스에 자바 설치하기 ..