본문 바로가기

반응형

IT

3장 Redis 자료구조 String - Key/Value 형태로 유일하게 1:1 매핑 구조인 자료구조임 모든 자료구조는 Set을 통해 기존 키에 새로운 값을 넣으면 덮어쓰여짐 [Set 옵션] NX 옵션 - 새로운 값으로 저장되는걸 막을 수 있음 XX 옵션 - 키가 있는 경우에만 새로운 값으로 저장할 수 있음 String은 숫자형태도 저장이 가능한데 이때 INCR/DECR을 통해 1씩 증가/감소 시킬 수 있고 INCRBY/DECRBY로 입력한 값을 증가/감소 시킬 수 있음. 이때 INCR/DECR 같은 커맨드는 원자적이기 때문에 동시 호출에 대한 원자성이 보장됨 - 예로 A, B에서 동시에 10이라는 데이터를 갖은 키에 INCR 커맨드를 호출하더라고 하나의 커맨드만 수행되어 10에서 11로 변경됨 MSET/MGET 커맨드를 통해.. 더보기
4장 카프카 상세 개념 설명(2) 4-4) 스프링 카프카 스프링 카프카 : 카프카를 스프링 프레임워크에서 효과적으로 사용할 수 있도록 만들어진 라이브러리를 의미함 4-4-1) 스프링 카프카 프로듀서 카프카 템플릿 클래스를 통해서 데이터를 전송할 수 있음. [카프카 템플릿을 사용하는 방법] 1) 기본 카프카 템플릿을 사용하는 방법 [application.yaml] spring: kafka: producer: bootstrap-servers: my-kafka:9092 acks: all @SpringBootApplication public class DefaultKafkaProducer implements CommandLineRunner { private static String TOPIC_NAME = "test"; @Autowired pri.. 더보기
4장 카프카 상세 개념 설명 4-1) 토픽과 파티션 카프카에서 토픽은 가장 중요한 역할이며 토픽의 파티션 개수는 카프카의 성능과 관련이 많음 4-1-1)적정 파티션 개수 - 고려사항 : 데이터 처리량, 메시지 키 사용 여부, 브로커 & 컨슈머 영향도 1. 데이터 처리량 파티션 : 카프카 병렬처리의 핵심, 파티션-컨슈머 1:1 매핑임 => 그러므로 파티션 개수를 정할때 해당 토픽에 필요한 데이터 처리량을 측정하여 정하는게 중요함. 데이터 처리 속도를 올리는 방법 1) 컨슈머 처리량을 늘리는 방법 - 컨슈머 서버의 사양을 늘리거나 GC 튜닝 등을 활용할 수 있으나 컨슈머 특성상 다른 시스템(=오라클, 하둡..)과 연동하여 데이터 처리함으로 한계 존재 2) 파티션 개수 늘리는 방법 - 가장 확실한 방법임 프로듀서가 보내는 데이터양보다 파.. 더보기
3장 카프카 기본 개념 설명 3-1) 카프카 브로커, 클러스터, 주키퍼 브로커 : 클라이언트와 데이터를 주고받는 주체, 데이터 분산 저장으로 장애 발생에 대한 대응이 가능하도록 도와주는 애플리케이션 (한 클러스터(=렉)에 3대 이상의 브로커로 운영하길 권장함 - 클러스터로 묶인 브로커끼린 데이터 분산 저장 및 복제하는 역할) 프로듀서 -> 브로커 -> 컨슈머 관계로 데이터를 주고받는다. 프로듀서 : 데이터 전송 브로커 : 요청받은 토픽의 파티션에 데이터 저장 및 컨슈머가 데이터 요청하는 경우 데이터 전달 컨슈머 : 데이터 요청 config/server.properties의 log.dir 옵션에 정의된 디렉토리에 데이터를 저장함 카프카는 별도 db나 캐시 메모리를 사용하지 않고 파일 시스템에 데이터를 저장하기 때문에 파일 입출력으로 .. 더보기
Apache Kafka 완전 정복 : 클러스터 구축부터 MSA 환경 활용 - 기본 개념 Event란 비즈니스에서 일어나는 모든 일 (데이터)을 의미한다. 예를 들어 은행은 고객이 월요일 오전 10시 33분에 고객 b에게 300달러를 송금하는것, A 택시가 현재 위치한 GPS좌표, 상점 B의 상품이 오후 3시 33분에 배송을 시작하는 것 이 모든 행위를 이벤트로 볼 수 있다. 이처럼 비즈니스 모든 영역에서 광범위하게 발생함으로 이벤트는 빅데이터 특징을 갖고 있다 그래서 이런 연속적인 많은 이벤트들의 흐름을 Event Stream이라 칭한다. 대표적인 이벤트 스트리밍 플랫폼으로 아파치 카프카가 존재하며 아파치 카프카는 크게 3가지 특징을 갖고 있다. 1. 이벤트 스트림을 안전하게 전송한다. (Pub & Sub 기능) 2. 이벤트 스트림을 디스트에 저장한다. (다른 이벤트 스트림과의 차별점) 3.. 더보기
Test-DrivenDevelopment : 테스트 주도 개발 테스트 주도 개발 도서를 읽으면서 TDD 개발 방법론을 익히고자 한다. 1부 화폐예제를 읽고 PG 결제 시스템의 결제 승인, 취소, 복합결제 기능을 샘플로 구현하면서 책에서 익힌 방법들을 적용해보았다. 카드결제, 계좌결제, 간편결제 객체는 Paymt라는 부모 객체를 상속받으며 주문서비스(OrderService)에서 PaymtType 인터페이스에 정의되어 있는 승인, 취소, 복합결제 기능을 간략하게 구현했습니다. 화폐의 통화 개념과 비슷하게 결제별 타입을 결제수단을 통해 카드, 계좌, 간편으로 구분되도록 했으며, 승인과 취소는 결제 금액을 +, - 처리하도록 구현했고 리스트로 여러결제를 받아 전체 결제금액을 세팅함으로써 복합결제 기능을 대신 표현했습니다. 책 설명과 동일하게 동치 비교 테스트, 결제승인, .. 더보기
MSA 가상머신, 컨테이너 VM VS 도커 VM은 각 게스트 OS가 따로 있어 커널, 라이브러리 전부 포함 성능 손실이 발생할 수 있고 이미지가 매우 커 배포, 부팅 속도가 오래걸린다. 그에 반면 컨테이너는 호스트 OS를 같이 쓰기 때문에 손실 위험성이 적으며 배포, 부팅속도가 매우 빠르다 개발 환경 그대로 다른 서버로 복제가 용이하며 컨테이너에는 애플리케이션 구동을 위한 라이브러리와 실행파일만 존재함으로 용량도 매우 작다. 도커는 컨테이너 생성시 필요한 요소들 도커 이미지에 모아두는데 이미지 내용은 여러개의 계층으로 된 바이너리 파일이다. 도커 컨테이너는 도커 이미지로 생성되며 격리된 시스템 자원과 네트워크를 사용할 수 있는 독립된 공간을 의미한다. Dockerfile로 이미지 생성을 자동화 할 수 있으며 빌드 명령어, 컨테이너.. 더보기
MSA 관심사 - 내부/외부 아키텍처 MSA는 여러 서비스간의 연계를 통해 시스템을 구축하는 SOA의 범주에 있다고 볼 수 있다. (SOA :통합 DB를 쓰면서 엔터프라이즈 서비스에서 모든 동작과 서비스를 제공하는 시스템을 의미함) MSA와 SOA의 가장 큰 차이는 저장소를 같이 쓰는지 각자 쓰는지이다. MSA를 구성하기 위해선 많은 시스템을 구축해야 된다. 각각의 레벨에서 기본적으로 구성해야되는 요소들이 패턴화되어 있고 각 영역의 패턴에 맞춰 사용할 플랫폼을 결정하면 된다. 보통 마이크로서비스 아키텍처를 정의할때 아래의 화면처럼 많이들 표현하고 있다. 마이크로서비스 빌드부터 시스템 구성에 대한 흐름을 아래 화면을 통해 살펴볼 수 있다. [참고자료 및 강좌] https://www.inflearn.com/course/%EC%8B%A4%EB%A.. 더보기

반응형