본문 바로가기

Programming/Java, Spring98

[Spring Cloud] 마이크로서비스 간의 통신 RestTemplate, FeignClient, Error decoder, 동기화 문제 동기 방식과 비동기 방식으로 나누어 생각할 수 있다. 동기방식의 문제점은 해당 요청이 끝날 때까지 다른 작업을 할 수 없다는 것이다. 요청 - 컨트롤러 - 서비스 // => 이것을 하나의 프로세스라고 하면 끝나야 다음 작업이 진행된다. - 일반적인 방식의 동기 방식 - AMQP를 통한 비동기 방식 Eureka discovery service를 사용하면 기본적으로 round robin 방식으로 순차 처리가 가능하다. 이때 설정에 따라서 dispatch 하는 방식을 다르게 정할 수도 있다. (지역, 시간대, 리소스 등 => 분산) 1. RestTemplate Http 프로토콜을 통해 다른 API를 연결하는 방식 클라이언트 요청 -> localhost:8000/user-service/users -> rest .. 2023. 6. 2.
[Spring cloud] 비대칭키로 암호화하기 Jdk keytool을 사용한다. 먼저 keystore라는 폴더를 생성한다. 이곳에 private 키를 보관한다. 해당 폴더로 가서 터미널에서 다음과 같이 입력한다. keytool -genkeypair -alias apiEncryptionKey -keyalg RSA -dname "CN=name, OU=API Development, O=msapractice.co.kr, L=Seoul, C=KR" -keypass "test1234" -keystore apiEncryptionKey.jks -storepass "test1234" -genkeypair: 키 쌍(공개키 및 개인키)을 생성하는 옵션. -alias apiEncryptionKey: 생성되는 키 쌍에 대한 별칭을 지정. 이 별칭은 나중에 키 스토어에서 해.. 2023. 6. 1.
[Spring Cloud] config에서 대칭키 암호화 설정하기 설정 값 암호화/복호화 하기 암호화를 처리하는 두 가지 방식 대칭키 vs 비대칭키 Symmetric Encrption (shared : 대칭키) - 같은 키 Asymmetric Encryption (RSA keypair : 비대칭키) - privater and public key - using java keytool (JDK에 포함) spring cloud config를 이용해 공개키 암호화를 할 수 있다. config server에 encrypt용 yml 파일 생성 encrypt: key: abcdefghijklmnopqrstuvwxyz0123456789 이 키값으로 암호화를 한다는 의미이다. post 요청시 변경된 암호를 리턴 받는 것을 볼 수 있다. decrypt 시에도 작동한다. 이처럼 Sprin.. 2023. 6. 1.
[Spring Cloud] bus, rabbitmq를 이용해 서버 연결하고 actuator를 이용한 갱신 집합화하기 설정 정보를 변경하는 방식으로 Spring cloud bus를 사용한다. Atuator의 refresh 방법은 서버가 늘어나면 하나하나를 전부 해줘야 해서 번거롭다. Spring cloud bus 는 - 분산 시스템의 노드(마이크로 서비스)를 경량 메시지 브로커와 연결한다 - 상태 및 구성에 대한 변경 사항을 연결된 노드에게 전달한다 (broadcast) 다이렉트로 메시지를 전달하는 것이 아니라 중간에 middleware를 두고 전달하는 방식이다. AMQP (Advanced Message Queing Protocol) 을 이용해서 변경점을 알려준다. => push update AMQP : 메시지 지향 미들웨어를 위한 개방형 표준 응용 계층 프로토콜 - 메시지 지향, 큐잉 라우팅, 신뢰성, 보안 - Erl.. 2023. 6. 1.
[Spring Cloud] Config yml 설정, actuator를 이용한 자동 반영 Spring Cloud Config - 분산 시스템에서 서버, 클라이언트 구성에 필요한 설정정보 (application.yml)를 외부 시스템에서 관리 - 하나의 중앙화된 저장소에서 구성 요소 관리 가능 - 각 서비스를 다시 빌드하지 않고 바로 적용 가능 - 애플리케이션 배포 파이프라인을 통해 DEV - UAT - PROD 환경에 맞는 구성 정보 사용 기존에 각 프로젝트마다 존재하던 yml 파일을 외부에서 관리하도록 하여 동적으로 서버 구성 정보를 적용할 수 있도록 한다. - private git repository -> - secure vault ->. Spring cloud config server - secure file storage -> local repository를 만들어 confi yml .. 2023. 6. 1.