전체 글 94

실전카프카 개발부터 운영까지 - 4장. 카프카의 내부 동작 원리와 구현

이 블로그는 실전카프카 개발부터 운영까지 (책만) 책 내용을 스터디를 위해 정리 한 내용 입니다. 책구매는 바로가기 에서 구매 가능합니다. 이번 장에서는 카프카 내부동작 원리와 구현중에서 가장 중요한 부분중 하나인 리플리케이션 동작에 대해서 공부 한다. 카프카 리플리케이션 카프카는 높은 고가용성을 제공하기 위해서 여러개의 브로커중 한 두개에서 장애가 발생 하더라도, 안정적인 서비스가 가능하도록 리플리케이션 서비스을 제공 한다. Kafka Replication document link : https://kafka.apache.org/documentation/#replication 리플리케이션 동작 개요 리플리케이션이란 서비스 장애에 대비하여 데이터가 유실 되지 않도록 자신의 데이터를 다른곳으로 백업 하여 ..

Lib/KAFKA 2022.10.03

실전카프카 개발부터 운영까지 - 3장. 카프카 기본개념과 구조

이 블로그는 실전카프카 개발부터 운영까지 (책만) 책 내용을 스터디를 위해 정리 한 내용 입니다. 책구매는 바로가기 에서 구매 가능합니다. 이번장에서는 카프카를 공부하기 전에 간단히 카프카의 개념에 대해 공부한다. 카프카 기초 다지기 주키퍼 : 카프카의 메타데이터 관리 및 브로커의 상태관리(health check) 카프카 (kafka cluster) : 카프카 프로젝트 명. 브로커 (brocker) : 카프카 어플리케이션이 설치된 서버, 또는 노드. 프로듀서 (producer) :카프카로 메시지를 보내는 클라이언트를 총칭 컨슈머 (consumer) : 카프카에서 메시지를 꺼내가는 클라이언트 총칭 토픽 (topic) : 메시지 피드. 메시지를 관리하는 트레이라고 보는 편이 더 낫다. 파티션 (paritio..

Lib/KAFKA 2022.09.26

마이크로 서비스패턴 - 13장. 마이크로서비스로 리펙터링

이 블로그는 마이크로서비스패턴 (길벗) 책 내용을 스터디를 위해 정리 한 내용 입니다. 책구매는 바로가기 에서 구매 가능합니다. "스트랭글러 애플리케이션(Strangler application), 모놀리스테어 서비스를 하나씩 추출해 마이크로 서비스에 새기능으로 구현, 스트랭글러 애플리케이션을 점점 키우며 모놀리스를 고사시킨다." 이번장에서는 마이크로서비스로의 리팩터링의 필요성, 스트랭글러 애플리케이션 개방 방법, 모놀리스와의 연계등 다양한 주제를 훑어 본다. 마이크로서비스 리팩터링 개요 마이크로서비스로의 리팩터링은 모놀리식이 형편 없어서 가 아니라, 모놀리식 지옥에 빠져 갖가지 소프트웨어 개발 문제가 발생하기 때문이다. 모놀리스를 왜 리팩터링 하는가? 마이크로서비스 아키텍처는 유지보수성, 테스트성, 확장..

Design Patterns 2022.04.24

마이크로 서비스패턴 - 11장. 프로덕션 레디 서비스 개발

이 블로그는 마이크로서비스패턴 (길벗) 책 내용을 스터디를 위해 정리 한 내용 입니다. 책구매는 바로가기 에서 구매 가능합니다. 서비스가 배포되기 위해서는 보안, 구성성, 관측성이 보장 되어야 한다. 이번 장에서는 서비스가 정상적으로 배포되어야 할 요소들을 어떻게 제공하는지에 대해서 알아본다. 보안서비스 개발 애플리케이션 개발자는 주로 다음 네가지의 보안 요소를 구현한다. 인증 : 애플리케이션에 접근하는 애플리케이션이나 사람의 신원을 체크한다. 일반적으로 인증키나 로그인 계정과 비밀번호를 사용한다. 인가 : 어떤 주체가 요청을 보내왔을 경우 해당 요청을 수행할 수 있는 권한이 있는지 체크 한다.일반적으로 역할기반 (ROLE) 이나 접근제어리스트(ACL Access Control List) 를 함께 사용한..

Design Patterns 2022.04.17

마이크로서비스(Microservice?) 란?

이번 블로그는 보편적인 IT지식을 가지고 있지만 시스템 설계구조에 대해서는 그렇치 않은 IT담당자들을 대상으로, 마이크로서비스가 어떤 것인지에 대해 간략하게 설명 하고자 한다. 마이크로 서비스 (Microservice) 마이크로서비스, 혹은 마이크로서비스 아키텍처는 독립적으로 수행되는 소규모의 시스템들이 명확하고 절대적으로 분리된 인터페이스 정의에 의해 긴밀하게 통신하는 아키텍처 기반의 접근, 구현 방식이다. 좀 어렵게 들리겠지만, 간단히 말해 서비스를 작은 단위로 쪼개고, 그 작게 쪼갠 서비스는 독립적으로 수행되며, 독립적으로 수행되는 서비스끼리 정해놓은 규칙으로 인터페이스 하며 하나의 대규모 서비스를 제공한다 라고 이해하면 된다. 기존 시스템들은 하나의 시스템 자원을 공유하며 하나의 덩어리안에서 서비..

Design Patterns 2022.04.16

마이크로 서비스패턴 - 8장. 외부 API 패턴

이 블로그는 마이크로서비스패턴 (길벗) 책 내용을 스터디를 위해 정리 한 내용 입니다. 책구매는 바로가기 에서 구매 가능합니다. 마이크로 서비스는 클라이언트에서 API 호출시 분산되어 있는 여러 API 중 적절한 시스템을 찾아 호출 해야 한다. 이번 장에는 API 를 적절하게 호출 할 수 있는지 그 구현과 설계 방법을 알아본다. 외부 API 설계 이슈 FTGO 라는 어플리케이션은 다양한 환경에서 API 호출이 한다. 웹 어플리케이션 브라우저에서 수행중인 자바스크립트 소비자용/배달원용 클라이언트 모바일 앱 서드파트 어플리케이션 웹어플리케이션은 방화벽 내부의 전용선(LAN) 환경에서 호출 하므로 수행 속도가 빠르지만, 나머지 브라우저 자바스크립트, 클라이언트 앱, 서드파트 어플리케이션은 공용망(인터넷)을 통..

카테고리 없음 2022.04.10

마이크로 서비스패턴 - 7장. 마이크로서비스 쿼리 구현

이 블로그는 마이크로서비스패턴 (길벗) 책 내용을 스터디를 위해 정리 한 내용 입니다. 책구매는 바로가기 에서 구매 가능합니다. 마이크로 서비스에서 쿼리는 API조합패턴과 CQRS 패턴으로 쿼리를 구현한다. 이번장에서는 이 두 API 에 대해 설명 한다. API 조합 패턴 응용 쿼리 findOrder() 쿼리 모놀리식 시스템은 전체 데이터가 하나의 DB에 있기 때문에 SELECT 문으로 쉽게 여러 테이블 데이터를 조회할 수 있다. 하지만 마이크로 서비스 어키텍처는 데이터가 여러 시스템에 뿔뿔이 흩어져 있기 때문에 조회가 어렵다. 주문ID를 기준으로 주문을 조회하여 주문 상세를 return 하는 findOrder() 가 있다고 하자. 다양한 정보를 모아 return 해주어야 한다. 이 시스템들이 여러군데 ..

Design Patterns 2022.04.07

마이크로 서비스패턴 - 6장. 비즈니스 로직 개발 : 이벤트 소싱

이 블로그는 마이크로서비스패턴 (길벗) 책 내용을 스터디를 위해 정리 한 내용 입니다. 책구매는 바로가기 에서 구매 가능합니다. 이 장은 이벤트 소싱의 작동 원리를 살펴보고, 비즈니스로직을 작성하는 방법에 대해 설명한다. 이벤트 소싱 응용 비즈니스 로직 개발 이벤트 소싱이란? 이벤트 소싱은 데이터를 저장하는 방식중의 하나로 발생한 이벤트를 저장하는 기법이다. 주로 비즈니스 로직을 구성하고, 애그리거트를 저장하는 기법이다. 이벤트는 애그리거트의 상태 변화를 나타낸다. 이벤트의 최종 결과값이 아니라, 이벤트로 발생된 모든 상태를 저장한다. 이벤트의 모든 상태를 저장하기때문에 조회가 쉽지 않아 CQRS 패턴을 적용해야 한다. 기존 영속화의 문제점 기존 영속화는 클래스는 테이블, 필드는 컬럼, 인스턴스는 각 R..

Design Patterns 2022.03.27

마이크로 서비스패턴 - 5장. 비즈니스 로직 설계

이 블로그는 마이크로서비스패턴 (길벗) 책 내용을 스터디를 위해 정리 한 내용 입니다. 책구매는 바로가기 에서 구매 가능합니다. 5장은 DDD 설계의 전술적설계를 설명하는 단원이다. 전략적 설계를 통해 도출된 바운디드 컨텍스트와 도메인 모델을 기반으로 좀더 상세한 도메인 모델을 정의한다. 전술적 패턴은 단일 컨텍스트를 기반으로 적용된다. 비즈니스 로직 구성패턴 비즈니스 로직 설계 : 트랜잭션 스크립트 패턴 절차적 트랜잭션 스크립트 패턴. 객체지향적 설계를 하지 않고, 하나의 트랜잭션으로 구성된 로직을 단일 함수 또는 단일 스크립트에서 처리 하는 구조를 갖는다. 예를 들어, 주문생성 -> 결제 -> 주문승인 -> 완료 순의 순서가 하나의 로직에서 처리되어야 하고, 중간에 오류가 발생하면 모두 취소된다. 트..

Design Patterns 2022.03.19

마이크로서비스 패턴 - 4장. 트랜잭션 관리 : SAGA

이 블로그는 마이크로서비스패턴 (길벗) 책 내용을 스터디를 위해 정리 한 내용 입니다. 책구매는 바로가기 에서 구매 가능합니다. SAGA란? SAGA는 약자가 아닌, 1987년 처음 지정된 공통 용어이다. LLT (Long Lived Transactions) 을 의미 하는 단어이다. 사실 SAGA 는 사전적인의미로 '말해진것', '말로 전하다' 등으로, 아마 SAGA 패턴도 데이터 적으로 봤을때 '발생한 데이터' 로 그 데이터를 전달 한다로 이해 할수 있다. 마이크로서비스 아키텍처에서의 트랜잭션관리 분산 트랜잭션의 필요성 모놀리식 서비스에서의 트랜잭션 관리는, DB에게 위임하기때문에 어렵지 않다. 그러나 마이크로서비스 패턴에서의 트랜잭션은 DB를 여러개 사용하기도 하고, IPC 를 이용해 개별 DB를 가..

Design Patterns 2022.03.09