본문 바로가기

MSA

(14)
개별 마이크로 서비스 Custom Exception 처리 1.개별 마이크로서비스 내에 ErrorDecoder를 구현한 구현체인 클래스 생성 methodKey는 에러를 유발한 메서드의 이름이 저장되는 파라미터 response는 응답 정보를 담고있는 파라미터 public class FeignError implements ErrorDecoder { @Override public Exception decode(String methodKey, Response response) { return null; } } switch~case문을 이용해 먼저 에러코드를 지정해주고 특정 에러코드 내에서는 조건문을 이용해, 어떤 메서드를 통해 에러가 유발되는지 적어주고 마지막으로 발생시킬 예외를 차레로 작성합니다. switch(response.status()) { case 404: i..
개별 마이크로서비스 통신2 요구사항: 관리자 입장에서 해당 상품의 주문내역을 조회하고 싶은 상황! 0단계. 요청하는 쪽:item-service , 요청받는 쪽:order-service // build.gradle 의존성 추가 implementation 'org.springframework.cloud:spring-cloud-starter-openfeign' package com.example.itemservice; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDisc..
개별 마이크로 서비스 간 통신 1. 사전 설정 및 이론 fegin을 사용하도록 요청을 넣는 입장의 마이크로 서비스 애플리케이션 측에 의존성 부여 Eureka를 지나서 fegin 요청을 넣음으로 엔트포인트가 아닌 서비스명으로 넣을 수 있었음 통신용 인터페이스에서 호출 정보를 분리해서 저정하기 때문에 Fegin관련 특정 로직을 실행하는 서비스 클래스 내부에 인터페이스와 구현체를 생성하고 해당 인터페이스 내부의 요청 메서드를 호출하면, 타 마이크로 서비스에 그대로 요청이 전달됨 // 인터페이스 자료형, 인터페이스명, 생성자만 만들면 알아서 구현체를 만들어서 대입함 @Service public class Service { private final Repository repository; private final 인터페이스명 인터페이스명; p..
Github 레포지토리 config 서버 연동 원격 레포에 올린 파일을 이용한 처리 방법 1. 원격 레포지토리를 하나 만듭니다. 2. 사용할 yml파일들을 그곳에 올려줍니다. 3. Config- server 프로그램 내 application.yml파일을 작성 spring: cloud: config: server: git: uri: 레포지토리 주소 username: 깃허브 계정명 # 퍼블릭에서는 불필요 password: 깃허브 패스워드 # 퍼블릭에서는 불필요 이때, 깃허브 계정명과 깃허브 패스워드는 보안 설정을 위해서 암호화를 진행합니다. https://www.devglan.com/online-tools/jasypt-online-encryption-decryption Programming Blog Article Feeds as per your Inte..
Spring Cloud Config 서버를 활용한 DB 정보관리 1. config-server application.java @SpringBootApplication @EnableConfigServer public class ConfigServerApplication { public static void main(String[] args) { SpringApplication.run(ConfigServerApplication.class, args); } } application.yml 파일 server: port: 8888 spring: cloud: config: server: git: uri: file://C:\DevSoo\MSABackend\config-resource 2. config-resoure 폴더 내 test-db.yml 파일 spring: datasour..
Spring Cloud Config 서버를 활용한 연동 1. Config 서버의 필요성 민감정보는 빌드 시에는 무조건 올려야 하지만, 프로젝트 내부 민감정보를 들어낼 필요는 없다 인스턴스가 많은 회사인 경우 Config 설정이 바뀔 때 인스턴스에 있는 모든 서버 접속 정보를 바꾸기 어렵다. 그래서 설정파일만 가진 Config 서버가 필요하다. 2. Config 서버 작동 방식 3. Spring Cloud Config Spring Cloud Config는 분산 시스템을 위한 외부 구성 관리를 제공하는 프로젝트입니다. 이를 통해 애플리케이션의 설정을 중앙 집중식으로 관리하고, 서비스 간에 설정 공유하고 변경사항을 동적으로 적용할 수 있습니다. 서비스 주요 특징과 작동 방식 a. 중앙 집중화된 설정 저장소+ 외부 구성소스 지원 애플리케이션의 설정 파일을 저장하고 ..
JAVA 객체로 먼저 보는Join 없는 연관 관계 이해하기 이 내용은 MSA에서 DB가 분리된 상황에서 어떻게 join 없이 연관관계가 가능한지에 대한 의문점에서 시작된 내용입니다. 1. MSA에서 JOIN MSA에서는 되도록이면 조인을 하지 않는 것이 좋다. 하나의 서비스가 죽으면 다른 서비스는 작동해야 하는데 조인된 상태에서는 연관 테이블을 얻어오지 못하기 때문에 같이 죽는 경우가 발생한다. 이러한 상황은 MSA 장점을 살리지 못한 상황이다. 하지만,, 만약에 조인이 불가피한 상황인 경우 join 없이 작동하는 방식을 사용한다. 실제 MSA에서는 getOrderByUserId와 같은 코드를 Spring Fegin을 사용하여 다른 DB에서 연관테이블에 있는 데이터을 가져오는부분에 해당하는 코드로 교체한다. 아래 소스코드는 JAVA로 먼저 Join 없는 연관관계..
디스커버리 서버와 유레카 적용 사례 구성: 사용자→게이트웨이→유레카←(이커머스: 회원,주문,재고)←설정 서버,DB서버1. 프로젝트 생성 2. 유레카 클라이언트로 설정UserServiceApplication 설정package com.example.userservice;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.client.discovery.EnableDiscoveryClient;@SpringBootApplication@EnableDiscoveryClientpublic class UserServiceApplication..