Monolithic 모든 프로세스가 긴밀하게 결합되고 단일 서비스로 실행됩니다. 따라서 애플리케이션의 한 프로세스에 대한 수요가 급증하면 해당 아키텍처 전체를 확장해야 합니다. 코드 베이스가 증가하게 되면 모놀리식 애플리케이션의 기능을 추가하거나 개선하기가 더 복잡해집
SOA (서비스 지향 아키텍처)재사용을 통한 비용 절감서비스 공유 최대화공통의 서비스를 ESB에 모아 사업측면에서 공통서비스형식으로 서비스제공MSA 서비스간의 결합도를 낮추어 변화에 능동적으로 대응서비스 공유 최소화각 독립된 서비스가 노출된 REST API 사용

유레카 서버 등록유저 서비스 유저서비스 실행경우유레카서버에 user-service 등록된걸 볼수있다유저서비스 복수 실행port 겹치지않게 설정 하는 부분2개실행 한경우 eureka 서버 port 겹칠경우 문제 발생 방지를 위해 값을 0 지정하면 랜덤포트함에도 포트 겹처
API Gateway 어떤 규모에서든 개발자가 API를 손쉽게 생성, 게시, 유지 관리, 모니터링 및 보안 유지할 수 있도록 하는 완전관리형 서비스입니다. API는 애플리케이션이 백엔드 서비스의 데이터, 비즈니스 로직 또는 기능에 액세스할 수 있는 "정문" 역할을 합

Apigateway-service게이트웨이 역할 하고 아래에 first-service, second-service 구조일반필터 커스텀필터여기서 필요한 정보를 추가하거나 수정해서필요에 맞게 설정first service 에는 제공 xsecond service 제공한 경우f

전체적인 구조
AMQP(advanced message queuing protocol)메시지 지향, 큐잉, 라우팅 및 신뢰성 보안Erlang,RabbitMQ에서 사용Kafka 프로젝트scalar언어로 개발한 오픈소스 메시지 브로커분산형 스트리밍플랫폼으로 대용량의 데이터를 처리 가능한

키툴을 통해 키생성 설정인증 서버공개키 설정

FeignClient -> HttpClientRest call 추상화를 한 netflix라이브러리interface 작성 후 annotation 부여시 내용 추가 없이 사용 가능loadbalanced 지원

if order service 2개 기동 했을 경우 문제점 한 사용자가 위에 방식으로 조건 여러번으로 4개의 주문을 입력 시 이렇게 분산해서 데이터베이스 결과이런 데이터 동기화 문제를 해결하기 위해 아래해결방안Orders 데이터 분산 저장 하지만 동기화 문제발생하나의

스칼라로 개발한 오픈 소스 메시지 브로커 프로젝트 실시간 데이터 피드를 관리 위해 통일된 높은처리량 ,낮은 지연 시간 제공 producer/consumer 분리 여러 메시지를 cunsumer에게 허용 scale-out 가능 (장비를 추가해서 확장하는 방식을 말한다

kafka 구동 방식1 zookeeper 및 kafka 서버 먼저 구동zookeeper 서버구동kafka 서버구동producer 토픽을 먼저 생성 후 메시지 보 내는 것consumer메시지 받고 싶은 토픽을 골라서 받는 중새로운 컨슈머가 관련 토픽 정하면 처음부터 다
kafka connect 통해 data를 import/export 가능코드없이 configuration으로 데이터 이동Standaone mode, Distribution mode 지원RESTful API 통해 지원Stream 또는 Batch 형태 데이터 전송 가능커스텀


기존 여러 order service 에 주문을 보내면 order 1 , 2 에 번갈아 가면서저장되는 경우 발생해결 order-service 에 요청 된 주문정보를 db 가 아닌 kafka topic 으로 전송하여kafka sink connect 사용하여 단일 db에 저

CircuitBreaker 장애가 발생하는 서비스에 반복적인 호출이 되지 못하게 차단 특정 서비스가 정상적으로 동작하지 않을 경우 다른 기능으로 대체 수행 closed - microservice 정상적으로 이용가능 한 상태open - client 요청을 mircro

Zipkin 분산환경의 timing 데이터 수집, 추적 시스템 분산환경에서의 시스템 병목 현상 파악 Collector,Query Service, Database webui로 구성 span 하나의 요청에 사용되는 작업의 단위 trace 트리구조로 이뤄진 span 셋

Micrometer jvm기반의 애플리케이션의 Metrics 제공 Prometheus등의 다양한 모니터링 시스템 지원Timer 짧은 지연 시간, 이벤트의 사용 빈도를 측정 시계열로 이벤트의 시간,호출 빈도 등을 제공 prometheus metrics 수집하고 모니터링

Virtualization 물리적인 컴퓨터 리소스를 다른 시스템이나 앱에서 사용할 수 있도록 제공Hypervisor 가상화 관리하기 위한 서비스 프로그램OS Virtualization Host위에 guestOs 전체를 가상화 자유도가 높으나 시스템 부하가 많고 느려짐

RabbitMQ docker run -d --name rabbitmq --network ecommerce-network -p 15672:15672 -p 5672:5672 -p 15671:15671 -p 5671:5671 -p 4369:4369 -e RABBIT