전체 글202 마이크로서비스간에 데이터 동기화 - 1 MicroService(Orders Service)를 2개 가동 했을 경우 2개의 데이터 베이스가 생성됨 Users의 요청 분산 처리 Orders 데이터도 분산 저장 -> 동기화 문제 하나의 Database 사용해 여러개의 서비스를 동기화 여러개의 MQ(Message Queuing)를 통해 Database간의 동기화 Kafaka Connector + DB 를 사용해 데이터베이스 동기화 두개의 order-service 가동 데이터를 저장했을 때 두개의 서버에 나눠서 저장됨 조회도 번갈아가면서 조회됨 게이트웨이가 RR(Round Robbin)방식으로 번갈아가면서 저장, 호출 함 2021. 9. 8. 마이크로서비스간 통신 - Feign Web Service Client FeignClient -> HTTP Client REST Call을 추상화 한 Spring Cloud Netflix 라이브러리 사용방법 호출하려는 HTTP Endpoint에 대한 Interface를 생성 @FeignClient 선언 Load balanced 지원 Feign Web Service Client openfeign 라이브러리 추가 @FeignClient Interface 생성 package com.example.userservice.client; import com.example.userservice.vo.ResponseOrder; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind... 2021. 9. 7. 마이크로서비스간 통신 - Resttemplate MSA에선 물리적으로 분산된 서비스들간에 통신이 필요함 대표적인 HTTP 통신 방법인 RestTemplate SpringCloud에서 사용하는 Feign Client Communication Types 동기 방식으로 통신 (Synchronous HTTP communication) 하나의 프로세스의 요청에 대해 작업이 끝나야 다른 작업을 호출 하는 방식 비동기 방식으로 통신 (Asynchronous commnunication over AMQP) amqp라는 프로토콜을 이용해 순차적으로 동기하는 것이 아니라 연결되어 있는 모든 서비스를 변경된 사항을 전달할 수 있음 Rest Template Java로 만들어진 웹어플리케이션 간에 HTTP 프로토콜을 이용해 또 다른 서비스(API)를 호출하는 방식 User S.. 2021. 9. 6. 암호화(Encryption) - 비대칭 키 비대칭키(Asymmetric Encryption) 암호화와 복호화할때 다른 키를 사용 하는 방식 JDK Keytool을 이용해 Public(복호화용), Private(암호화용) Key 생성 알고리즘: RSA(공개키 암호화시스템중 하나) 생성 시 셀프 인증 패스워드는 임의로 alias 설정 keytool -genkeypair -alias apiEncryptionKey -keyalg RSA -dname "CN=TaeYoon Lee, OU=API Development, O=ty1306.tistory.com, L=Seoul, C=KR" -keypass "yoon1234" -keystore apiEncryptionKey.jks -storepass "yoon1234" Private Key 확인 keytool -li.. 2021. 9. 5. 암호화(Encryption) - 대칭키 대칭키(Symmetric Encryption) Shared 암호화, 복호화할 때 같은 키를 사용 하는 것 비대칭키(Asymetric Encryption) RSA Keypair 암호화, 복호화할 때 다른 키를 사용 하는 것 Java에서 제공되는 keytool을 사용 설정 파일에 중요한 Secret 값 같은 경우에는 쉽게 노출 되면 안되기 때문에 암호화를 통해 보관하고 설정파일을 통해 복호화해 각 Service에서 사용할 수 있는값으로 변경한다 config-service bootstrap.yml 파일 추가 및 encrypt key 설정 대칭키를 통해 암호화 대칭키를 통해 복호화 User-Service datasource 설정 주석처리 local storage에 저장된 user-service.yml 파일 수정.. 2021. 9. 5. Spring Cloud Bus Spring Cloud Bus 분산 시스템의 노드(MicroService)를 경량 메시지 브로커(RabbitMQ)와 연결 상태 및 구성에 대한 변경 사항을 연결된 노드에게 전달(Broadcast) AMQP(Advanced message Queuing Protocol) 메시지 지향 미들웨어를 위한 개방형 표준 응용 계층 프로토콜 메시지 지향, 큐잉, 라우팅(P2P, Publisher-Subcriber), 신뢰성, 보안 Erlang, RabbitMQ에서 사용 Kafka 프로젝트 Apache Software Foundation이 Scalar 언어로 개발한 오픈 소스 메시지 브로커 프로젝트 분산형 스트리밍 플랫폼 대용량의 데이터를 처리 가능한 메시징 시스템 RabbitMQ 메시지 브로커 초당 20+ 메시지를 소.. 2021. 9. 4. 이전 1 2 3 4 5 6 ··· 34 다음