Spring Microservice(101)
-
eureka server configuration
spring: application: name: eureka-server boot: admin: context-path: /adminserver: port: 8070eureka: instance: hostname: eurekaserver client: registerWithEureka: false fetchRegistry: false serviceUrl: defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ server: waitTimeInMsWhenSyncEmpty: 5spring.boot.admin.context-path는 Spring Boot Admin과 관련된..
2024.12.11 -
@EnableFeignClients
🚀 Spring Cloud OpenFeign과 @EnableFeignClients마이크로서비스 아키텍처에서 서비스 간의 HTTP 통신은 필수적입니다.Spring Boot에서는 여러 HTTP 클라이언트를 지원하지만, Spring Cloud OpenFeign은 가장 직관적인 선언적 방식으로 REST API 호출을 단순화합니다.이번 글에서는 @EnableFeignClients의 역할과 내부 동작 원리, Feign의 역사, application.yml 설정 방법까지심층적으로 다루며, OpenFeign을 보다 효과적으로 활용할 수 있도록 가이드하겠습니다.📜 Feign의 역사와 개요Feign은 넷플릭스(Netflix)에서 개발한 선언적 HTTP 클라이언트 라이브러리입니다.대규모 마이크로서비스 환경에서 API 호..
2024.12.11 -
Spring Cloud Bus
네, 맞습니다! Spring Cloud Bus는 Kafka를 공식적으로 지원하므로, Kafka를 사용하는 것이 훨씬 간단하고 안정적입니다. Kafka는 고성능, 내구성, 확장성을 갖춘 분산 메시징 시스템으로, Spring Cloud Bus의 사용 사례와 잘 맞아떨어집니다.Kafka와 Spring Cloud Bus 설정의존성 추가Spring Cloud Bus와 Kafka를 사용하려면 다음과 같은 의존성을 추가해야 합니다. org.springframework.cloud spring-cloud-starter-bus-kafkaKafka 설정application.yml에 Kafka 브로커 정보를 추가합니다.spring: cloud: bus: enabled: true stream: ..
2024.12.11 -
서비스 디스커버리 클라이언트 Push/Pull
서비스 디스커버리 클라이언트가 자기 상태를 pull하는 이유는 주로 네트워크 효율성과 최신 데이터를 동기화하기 위한 필요성 때문입니다.아래에서 서비스 디스커버리 클라이언트가 상태를 pull 방식으로 가져오는 이유를 자세히 설명하겠습니다.1. Push와 Pull 방식의 차이Push:클라이언트가 자신의 상태(예: 서비스 등록 정보, 상태 업데이트)를 서버에 능동적으로 전송.클라이언트가 업데이트 사항을 즉시 서버에 알리는 방식.Pull:클라이언트가 서버로부터 데이터를 주기적으로 요청하여 최신 상태를 가져오는 방식.클라이언트는 서버의 데이터에 따라 동작을 결정.2. Push 방식의 한계클라이언트가 자신의 상태를 계속 push한다면, 다음과 같은 문제점이 발생할 수 있습니다.(1) 네트워크 오버헤드 증가각 클라이..
2024.12.11 -
Gossip Protocol
Gossip Protocol은 분산 시스템에서 정보를 효율적으로 전달하고 유지하는 데 사용되는 프로토콜입니다. 이 프로토콜은 사람들 간의 소문이 퍼지는 방식과 유사하게, 네트워크 노드 간에 정보를 점진적으로 전파합니다.다음은 Gossip Protocol에 대한 상세한 설명입니다.Gossip Protocol의 기본 개념Gossip Protocol은 노드 간의 상호작용을 통해 정보를 확산시키는 방식을 사용합니다.각 노드는 자신이 가진 정보를 주기적으로 임의의 다른 노드에게 전달하며, 이를 반복하는 과정에서 정보가 네트워크 전체로 퍼집니다.이 과정은 확률적이고 비동기적이어서, 특정 노드에 장애가 발생해도 프로토콜의 작동에 큰 영향을 미치지 않습니다.Gossip Protocol의 주요 특징확률 기반 전파노드들은..
2024.12.11 -
Client-side load balancing
Spring Boot의 Client-Side Load BalancingClient-Side Load Balancing은 서비스 소비자가 서비스 요청을 보내기 전에 직접 서비스 인스턴스 목록을 가져와 적절한 인스턴스를 선택하여 요청을 분배하는 방식입니다. 이 방식은 클라이언트가 로드 밸런싱 책임을 지며, Spring Boot에서는 주로 Spring Cloud LoadBalancer를 통해 구현됩니다. 클라이언트의 정의위에서 설명한 클라이언트(Client)는 일반적으로 생각하는 웹 브라우저(웹 클라이언트)가 아닌, 애플리케이션 간 통신에서 다른 서비스를 호출하는 마이크로서비스나 애플리케이션을 의미합니다.이 경우 클라이언트는 마이크로서비스 환경에서 다른 서비스를 호출하고 요청을 처리하는 서비스 소비자(Serv..
2024.12.11