전자 상거래를 할 수 있는 어플리케이션을 MSA 구조로 Spring Cloud를 이용해 만들어 보자Git Repository : 마이크로서비스 소스 관리 및 프로파일 관리Config Server : Git 저장소에 등록된 프로파일 정보 및 설정 정보Eureka Serv
유저 정보를 관리하는 서비스DevToolsLombokWebEureka Discovery Client포트번호는 Load Balancer처리를 위해 랜덤으로 지정path는 h2-console로 설정localhost:{port}/h2-console로 접속testdb가 잘 생
Authentication + AuthorizationDependency 추가WebSecurity class 추가메소드 동작authenticated() 인증된 사용자의 접근을 허용fullyAuthenticated() 인증된 사용자의 접근을 허용, rememberMe 인
지난번 MSA를 공부하면서 만든 API Gateway에 USER-SERVICE추가등록확인Controller단에서 API Gateway와 맞게 path를 수정한다.Controller에 @RequestMapping("/user-service")를 추가하거나Mapping요청
User의 정보를 받을 ResponseUser 클래스 생성
JPASpring WebEureka Discovery Clienth2 (1.3이하 버전)modelmapper (2버전이상)lombokSpring Devtoolsdatabase: h2 defer-datasource-initialization: true옵션은 테이블이 자동
Dependencies lombok Spring Devtools Spring Web Mapper (2 버전 이상) H2DB (1.3 이하버전) Eureka Discovery Client property 설정 JPA Entity 생성
POST {ContextPath}/user-service/login사용자 로그인 정보를 저장하기 위한 RequestLoginSpring Security를 이용한 로그인 요청 발생 시 작업을 처리해 주는 Custom Filter클래스 생성UsernamePasswordAu
로그인 처리 과정 AuthenticationFilter 수정 Dependencies (Gradle) implementation 'io.jsonwebtoken:jjwt:0.9.1'추가 successfulAuthentication() 함수 추가 Service 수정
분산 시스템에서 서버 클라이언트 구성에 필요한 설정 정보application.yml를 외부 시스템에서 관리하나의 중앙화 된 저장소에서 구성요소 관리 가능각 서비스를 다시 빌드하지 않고, 바로 적응 가능어플리케이션 배포 파이프라인을 통해 DEV(개발) - UAT(테스트)
User Serivce 연동 Dependenies 추가 (User Service) spring-cloud-starter-config spring-cloud-starter-bootstrap or) spring.cloud.bootstrap.enabled=true ap
Spring Cloud Bus 분산 시스템의 노드를 경량 메시지 브로커와 연결 상태 및 구성에 대한 변경 사항을 연결된 노드에게 전달(Broadcast) Config가 변경 되었을때 서버 재기동 Actuator refresh Spring Cloud Bus 사용
Symmetric Encryption (대칭 암호화)같은 키 값을 사용해 암호화Asymmetric Encryption (비대칭 암호화)서로 다른 키 값을 사용해 암호화와 복호화를 담당한다.java에선 keytool사용bootstrap.yml 생성// appication
동기와 비동기 동기 : 동기 방식은 서버에서 요청을 보냈을 때 응답이 돌아와야 다음 동작을 수행할 수 있다. 즉 A작업이 모두 진행 될때까지 B작업은 대기해야한다. 비동기 : 비동기 방식은 반대로 요청을 보냈을 때 응답 상태와 상관없이 다음 동작을 수행 할 수 있다.
OrderService 2개 기동 Users의 요청 분산 처리 Orders 데이터도 분산 저장 -> 동기화 문제 두 가지 포트로 분리된 서비스의 H2DB에 같은 유저의 주문 5번이 나뉘어서 저장된다. 해결 방법 하나의 Database 사용 Databas
설치과정은 생략 Kafka 서버 기동 Kafka와 데이터를 주고받기 위해 사용하는 Java Library https://mvnrepository.com/artifact/org.apache.kafka/kafka-clients Zookeeper 및 Kafka 서버
Orders, Catalogs 서비스에 적용 OrderService에 요청 된 주문의 수량 정보를 CatalogService에 반영 OrderService에서 Kafka Topic으로 메시지 전송 -> Producer CatalogService에서 Kafka Topic
OrderService가 여러개 실행되었을때 각각의 H2 DB에 따로 데이터가 저장되는 일이 발생할 수 있다. 이때 하나의 DB로 단일화 시킴으로써 해결할 수 있다.Dependencies 추가application.yml 수정Controller 수정Producer에서 발
CircuitBreaker https://martinfowler.com/bliki/CircuitBreaker.html 장애가 발생하는 서비스에 반복적인 호출이 되지 못하게 차단 특정 서비스가 정상적으로 동작하지 않을 경우 다른 기능으로 대체 수행 -> 장애 회피
Hystrix? >마이크로서비스의 전류차단기(Circuit Breaker) 역할을 하는 오픈소스. Turbine Server 마이크로서비스에 설치된 Hystrix 클라이언트의 스트림을 통합 마이크로서비스에서 생성되는 Hystrix 클라이언트 스트림 메시지를 터빈
컨테이너 가상화 물리적인 컴퓨터 리소스를 다른 시스템이나 애플리케이션에서 사용할 수 있도록 제공 플랫폼 가상화 리소스 가상화 하이퍼바이저(Hypervisor) Virtual Machine Manager (VMM) 다수의 운영체제를 동시에 실행하기