본문 바로가기
728x90
반응형

MSA7

feign client란? 현재 프로젝트에서 MSA 도메인 간 통신으로 Feign Client 를 사용하고 있다. HTTP Client Java Library 의 종류는 - HttpURLConnection - Apache Commons HttpClient - Apache HttpComponents - Retrofit - RestTemplate Synchronous, Blocking 방식 - feign client Synchronous, Blocking 방식 - WebClient Asynchronous, NonBlocking 방식 등등 여러가지가 있는데 스프링으로 개발 시에 RestTemplate을 가장 많이 사용한다고 한다. 하지만 Spring 5.0 이후 RestTemplate는 더 이상 사용되지 않는다고 한다. spring d.. 2022. 12. 6.
MSA 프로젝트 중 MVP를 만들었던 이유(feat. 일정 딜레이) MVP 란? • Minimum Viable Product의 약자로 최소 실행 가능 제품이란 뜻입니다. MVP는 왜 만들까? • 보통 아이디어가 실제 시장에서도 유효한지 검증하기 위해 최소한의 핵심기능만 구현해서 확인하기 위해 만드는 것 같은데 현재 프로젝트의 경우에는 설계 컨셉에 대해 합의점 도출이 되지 않고, 각 주장하는 설계 방안에 대한 장단점이 추상화된 사항으로 의사결정이 되지 않았기 때문입니다. 장점 : 추상적으로 생각했던 것을 확인하고 최적안을 도출 할 수 있습니다. 단점 : 설계기간이 길어지기 때문에 전체적인 프로젝트 기간이 길어지거나 타이트해집니다.. MSA 프로젝트 중 MVP를 만들었던 이유 • 설계기간을 진행하면서 Event Storming 을 통해 도메인을 나누었습니다. (Event S.. 2022. 11. 23.
CQRS 구현 - Redis, Kafka 적용 CQRS란? https://orange-makiyato.tistory.com/56 MSA, Database Architecture - Querying : API Composition, CQRS 패턴 ● API Composition 패턴 • API Composition은 클라이언트에서 하나의 API만을 호출해서 잘게 쪼개진 API들의 응답을 모아서 보내주는 것이다. • 클라이언트에서 API Composer(조합기)로 요청을 하면 API Compos orange-makiyato.tistory.com 현재 프로젝트 구조 Read 요청이 오면 마이크로서비스에서 먼저 Redis Cache를 확인하고 없으면 DB에서 데이터를 가져온다. Create, Update, Delete 요청이 오면 Pub/Sub(게시/구독).. 2022. 11. 23.
MSA, Database Architecture - Querying : API Composition, CQRS 패턴 ● API Composition 패턴 • API Composition은 클라이언트에서 하나의 API만을 호출해서 잘게 쪼개진 API들의 응답을 모아서 보내주는 것이다. • 클라이언트에서 API Composer(조합기)로 요청을 하면 API Composer에서 각각의 마이크로 서비스에 필요한 요청을 보내고, 응답값을 메모리에서 조인해 클라이언트에 반환한다. • 장점 : 클라이언트 입장에서 간단하게 필요한 데이터를 쿼리 할 수 있다 • 단점 : 인메모리 조인이기 때문에 대용량 데이터 조회 시 비효율적일 수 있다. • 보통 대용량 데이터 조회 시에는 API Composition보다는 CQRS Pattern을 사용하는 것 같다. • API조합기는 Client단에 만들 수 있다. ajax()로 화면 partial.. 2022. 10. 31.
MSA, Software Architecture : Layered Architecture MSA에서 Software Architecture로 사용하는 것은 Hexagonal Architecture와 Layered Architecture 등이 있는데 그 중에서 Layered Architecture에 대해 알아보자 Layered architecture란? layered architecture란 말 그대로 계층이 나뉘어져 있는 아키텍쳐를 뜻한다. layered architecture의 주된 목표는 어플리케이션을 여러 개의 굵직한 횡단 관심사(cross-cutting concern)로 분리해, 각각의 layer는 하나의 관심사에만 집중할 수 있도록 하는 것이다. 각각의 layer에 대한 명칭은 출처마다 조금씩 다르지만 근본적인 역할과 목적은 같으며, 대표적으로 DDD(Domain Driven Des.. 2022. 10. 19.
728x90
반응형