본문 바로가기

728x90
반응형
SMALL

전체 글

(109)
spring cloud config vault (그림에는 git 저장소를 이용했지만, 저희는 vault를 이용하였습니다.) 사용이유? 위의 그림으로도 간단히 설명이 가능합니다. spring cloud config는 여러 서비스들의 설정 정보들을 중앙으로 관리하기 용이하도록 도와주는 것입니다.  예를들어 A , B, C 서비스가 있고, 각각의 서비스들은 같은 설정 정보를 사용한다고 가정해봅시다. 설정정보가 바뀌면, A, B, C 모든 서비스에 설정 정보를 수정해야 합니다.그리고 설정 정보를 변경했으므로 모두 재배포를 해야합니다.  그와중 한군데의 설정 정보를 잘못 변경하면 장애로 전파 될 수 있습니다. 그러므로 설정 정보의 변경 시 관리 용이를 위해 외부에 중앙으로 관리하는 것이 관리적인 측면에서 편합니다.   사용법?우선 vault를 설치해야합니다이..
springboot Gateway swagger 적용 (MSA) 사용이유? MSA로 환경을 구축하면, 각 서비스마다 서버가 띄어져있을 것입니다. 그 서비스마다 Swagger를 설정하고 이를 개별로 확인하는 것은 상당히 비효율적이라고 생각합니다. 각 서비스에 도달하기전 Gateway 서비스가 제어를 하는데, 이 Gateway 서비스에 swagger를 적용하면 됩니다. MSA로 어느정도 구축된 환경이라고 생각하고 진행하겠습니다. 또한 이 환경을 기준으로 설명하겠습니다. - Java 17- spring boot 3.2.3- gradle- yaml  설정  1. 의존성 주입https://mvnrepository.com/artifact/org.springdoc/springdoc-openapi-starter-webflux-ui 위의 링크에서 최신 버전의 의존성 확인이 가능합니다..
No qualifying bean of type 'org.springframework.boot.autoconfigure.http.HttpMessageConverters' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(requ 상황springboot에서 내부통신을 위해 feignClient를 사용. api01 -> api02로 feignClient로 찔렀을때, 제목과 같은 오류가 발생하였다. No qualifying bean of type 'org.springframework.boot.autoconfigure.http.HttpMessageConverters' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}  해결전 해결후  원인spring-boot-starter-web 에..
FeignClient 를 활용해보기(feat. Eureka) https://yjkim-dev.tistory.com/109 Spring Cloud Gateway, Eureka 사용해보기 Eureka란? Neflix에서 제공하는 MSA를 위한 클라우드 오픈 소스입니다. 정의는 LB 와 Middle-tier server에 에러 대응을 위한 REST 기반 서비스입니다. Eureka를 왜 쓸까? LB는 MSA의 각 모듈에 대한 연결 정보(ip, yjkim-dev.tistory.com 를 먼저 보고오시는 것을 추천합니다. (내용이 이어지기때문) MSA에서는 내부통신이 많이 일어납니다. 주로 Eureka에 등록해놓고, 그 인스턴스의 정보를 가져와 주소를 알아내고 요청을 합니다. 1번서버는 2번서버의 리턴값을 리턴하는 서비스가 있고, 2번서버는 문자열 "2번서버"를 리턴하는 서..
Spring Cloud Gateway, Eureka 사용해보기 Eureka란? Neflix에서 제공하는 MSA를 위한 클라우드 오픈 소스입니다. 정의는 LB 와 Middle-tier server에 에러 대응을 위한 REST 기반 서비스입니다. Eureka를 왜 쓸까? LB는 MSA의 각 모듈에 대한 연결 정보(ip,host,hostname)을 알고 있어야한다. 그리고 각 모듈의 연결정보를 LB에 등록을 해야 한다. CI/CD를 수행하게 되면서 모듈이 업데이트가 되고, 수정되며 그 과정을 통해 연결정보가 바뀌게 된다. 그럴때마다 연결정보를 찾아서, 다시 연결정보를 업데이트해주고 하기가 너무나 번거롭다. 그래서 나온게 Eureka이다. Eureka는 LB에 연결 정보 등록을 유연하게 처리해준다. 등록과 해지를 곧바로 적용할 수 있게 해준다. 사용해보자 준비물 ● mod..
마이크로서비스 아키텍처에서 RabbitMQ를 활용한 내부 통신: 메일 및 SMS 서비스 구현 사례 마이그레이션 전 소스코드 ※실제 코드는 아니지만, 구조는 동일했습니다. @Service @RequiredArgsConstructor public class SignUpService { private final NotiService notiService; public void signUp() { //회원가입 로직 ... ... //노티전송 로직 ... ... } } 위에 코드에서 signUp() 안의 내용을 들여다 보면 1)회원가입 2)노티전송 두가지 역할을 하고있습니다. 한 서비스에 여러 로직이 함께 있는 경우 몇 가지 단점이 있습니다. ● 단일 책임 원칙 위반: 각 서비스는 특정 기능 또는 역할을 담당해야 한다는 원칙입니다. ● 유연성 감소 : 서비스가 다양한 역할을 수행하면 변경이 발생했을 때 다른 ..
Springboot + RabbitMQ DLX 사용하기 DLX 란? Dead Letter Exchange 의 줄인말임. 메세지큐는 큐안에 메세지가 들어있을때 무조건 소비를 해줘야한다. 어떠한 이유로 메세지가 소비가 안되고 계속 남아있을때, 무한히 요청을 한다. 무한히 요청이 되면, 과부하로 인해 메세지큐서버가 다운될 수 있다. 그걸 방지하기위해 메세지 소비가 안될 상황에 흔히 부르는 DLX 큐를 생성해 메세지를 옮겨주는 장소이다. 즉. 메세지소비 시 오류가 생겼을때, 임시로 대피시켜주는 장소라고 보면 된다. 바로 사용해보자 local에 rabbitmq를 띄어 놓기 (도커) docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 --restart=unless-stopped -e RABBITMQ_DEFAULT_US..
git convention git도 convention을 지켜야한다. 블로그를 보다가, 글이 잘 정리된 블로그가 있어 기록 해놓으려고 한다. https://velog.io/@msung99/Git-Commit-Message-Convension

728x90
반응형
LIST