AWS 클라우드 서버에서 백엔드와 프론트엔드를 배포중이고, 젠킨스까지 하나의 서버에서 진행하려고 합니다. Nginx 활용한 리버스 프록시, SSL 적용https://anythingis.tistory.com/175 프록시 서버, Nginx 설정(리버스 프록시, SSL)(Ubuntu 24.03ver)프록시 서버 왜 쓸까?기본 웹 서비스 통신의 방식입니다.www.naver.com을 치면 이런 화면을 받아오는 것과 같습니다. 이후 로그인을 하는 등 비즈니스 로직과 관련된 부분을 동작하면 백엔드에anythingis.tistory.com 직접적인 포트노출을 줄이고 HTTPS 적용을 위해 Nginx를 활용해 리버스 프록시 서버로 활용중이고 젠킨스를 추가 설정합니다. 활용중인 Nginx Confserver { ..
Trace Id, Span Id 하나의 요청에서 여러 마이크로 서비스의 참조가 필요할 때 전체적으로 동일한 trace Id를 사용하고, 서비스마다 다른 sapn Id를 사용합니다. 이를 통해 문제가 있는 trace Id 요청을 트레이싱해서 문제가 있는 서비스를 찾을 수 있습니다. MicrometerSpringBoot 2에서는 spring cloud sleuth를 통해 spring boot에서 zipkin으로 span id, trace id 전송해 분산 추적을 진행했는데 이와 같이 순환참조가 일어나는 구조와 Spring과 SpringBoot에서는 트레이싱 기능일 지원하지 않는 구조로 인해 SpringBoot 3에서는 Sleuth의 트레이싱 기능이 Micrometer로 이관되었습니다. https://tec..
CircuitBreaker는 왜 필요한가?도메인 별로 서비스(서버)가 나뉘어지는 MSA 아키텍처에서는 특정 유저의 주문 리스트를 조회하는 경우에 다음과 같은 순서로 이루어 집니다. 1. user-service 호출 user-service / controller @GetMapping("/users/{userId}") public ResponseEntity getUser(@PathVariable String userId){ UserDto userDto = userService.getUserByUserId(userId); return ResponseEntity.status(HttpStatus.OK) .body(new ModelMapper().map(us..
개요https://anythingis.tistory.com/193 [MSA] Apache Kafka & Kafka ConnectKafkaKafka 개요현재 하나의 서비스는 다양한 서비스와 연동됩니다. 이때 end-to-end 방식으로 연결되어 있으면 속도상 빠르다는 장점이 있을 수 있지만 아래와 같은 단점이 있습니다. 데이터 연동의anythingis.tistory.com이전 포스팅에서 Zookeeper, Kafka, Kafka Connect를 활용해봤습니다. 그중에서도 단일 DB를 활용하고, 서비스가 DB에 INSERT를 직접 하는게 아닌 카프카에 위임하는 방법을 알아보겠습니다. 장점 : 서비스가 DB Lock, Connection에 대해 자유로움, 동시성 처리를 Kafka가, 비즈니스 로직을 서비스..
KafkaKafka 개요현재 하나의 서비스는 다양한 서비스와 연동됩니다. 이때 end-to-end 방식으로 연결되어 있으면 속도상 빠르다는 장점이 있을 수 있지만 아래와 같은 단점이 있습니다. 데이터 연동의 복잡성이 증가해 하드웨어, 운영체제에 영향을 많이 받고 장애에 영향을 많이 받음서로 다른 데이터 파이프 라인으로 인한 확장에 어려움이를 해결하고자 중간단계의 추상화를 위해 Apache Kafka가 등장했고, Data를 생성하는 Producer, Data를 소비하는 Cosumer를 통해 end-to-end는 서로 모르지만, 유연한 데이터 파이프라인을 구축할 수 있습니다. kafka 구성kafka Broker실제로 실행되는 Kafka 애플리케이션 서버로 3대 이상의 Broker Cluster를 구성해 브..
Spring Cloud Bus를 활용하는 이유Spring Cloud Config Server - Client로 설정 정보를 변경할 수 있지만, 변경되는 Client의 Spring Boot Actuator Refresh API 호출을 통해 변경된 사항들을 로딩해줘야합니다. 설정 정보가 변경 되었을 때 모든 마이크로 서비스에 정보를 다시 로딩하라고 요구하는 것은 어떤 서비스가 어떤 설정 정보를 갖고 있는지 체크하는 것이 번거롭기도하고 실수로 중요한 설정을 변경하지 않으면 오류의 확률도 생깁니다. 이럴때 Spring Cloud Bus를 활용하면 변경 내용을 감지하고 자동으로 Cloud Config Client의 Refresh API를 호출할 수 있습니다. 동적으로 설정 정보를 변경하기 위한 Message Qu..
Cloud Config Server 활용의 이유 보통 스프링 내에 application 설정파일을 변경하고 재빌드를 통해 설정을 적용합니다. 하지만 도메인별로 흩어진 마이크로 서비스 구조에서는 이런 관리를 할 수 있는 Cloud Config Server로 관리합니다. Local Git Repository의 정보에 접근하는 Config Server를 만듭니다. 그림으로 먼저 설명하자면 이런 느낌입니다. 외부에서 적용할 yml 파일 생성ecommerce.yml 생성token: expiration_time: 1 secret: cD08xCg+eiWnntQyYKCF/ZE7h9FbF5lN8Dgateway: ip: 192.168.0.71 git 등록local git에 commit 된 파일에 Cloud Ser..