"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Spring Cloud를 사용한 마이크로서비스 아키텍처

Spring Cloud를 사용한 마이크로서비스 아키텍처

2024-07-29에 게시됨
검색:857

Microservices Architecture with Spring Cloud

마이크로서비스 아키텍처는 애플리케이션이 느슨하게 결합된 서비스로 구성되는 설계 접근 방식입니다. 각 서비스는 특정 기능을 담당하며 독립적으로 개발, 배포 및 확장될 수 있습니다. Spring Cloud는 강력하고 확장 가능한 마이크로서비스를 구축하는 데 도움이 되는 도구 및 프레임워크 제품군입니다.

마이크로서비스란 무엇인가요?
마이크로서비스는 복잡한 애플리케이션을 더 작고 관리 가능한 서비스로 분해합니다. 각 마이크로서비스는 단일 비즈니스 기능에 중점을 두고 일반적으로 REST 또는 메시징 대기열을 사용하여 잘 정의된 API를 통해 다른 서비스와 통신합니다.

마이크로서비스의 이점

  • 확장성: 개별 서비스는 수요에 따라 독립적으로 확장될 수 있습니다.
  • 유연성: 다양한 기술과 언어를 사용하여 다양한 서비스를 개발할 수 있습니다.
  • 장애 격리: 하나의 서비스에 장애가 발생해도 전체 시스템에 영향을 미치지 않습니다.
  • 지속적 배포: 서비스를 자주 독립적으로 배포할 수 있습니다.

Spring Cloud의 주요 구성요소:

1. 스프링 클라우드 구성:

  • 중앙 집중식 외부 구성 관리.
  • Git, SVN, 로컬 파일 등 다양한 구성 소스를 지원합니다.
  • : 여러 서비스에 걸쳐 데이터베이스 자격 증명, API 키 및 기타 속성을 구성합니다.

2. 스프링 클라우드 넷플릭스:

  • Eureka, Hystrix, Zuul, Ribbon 등 Netflix OSS 구성요소를 통합합니다.
  • 유레카: 서비스 검색 서버 및 클라이언트.
  • Hystrix: 내결함성을 위한 회로 차단기.
  • Zuul: 동적 라우팅을 위한 API 게이트웨이.
  • 리본: 클라이언트측 로드 밸런싱.

삼. Spring Cloud 게이트웨이:

  • Zuul을 대체하는 새로운 프로젝트입니다.
  • 요청을 라우팅하는 간단하고 효과적인 방법을 제공합니다.
  • 경로 재작성, 로드 밸런싱, 경로 필터와 같은 기능.

4. 스프링 클라우드 슬루스:

  • 마이크로서비스 전반에 걸쳐 요청 흐름을 추적하는 분산 추적.
  • 모니터링 및 분석을 위해 Zipkin과 통합됩니다.

5. Spring Cloud 스트림:

  • 이벤트 중심 마이크로서비스 구축을 위한 프레임워크.
  • RabbitMQ 및 Apache Kafka와 같은 메시징 시스템을 사용합니다.

Spring Cloud를 사용하여 간단한 마이크로서비스 애플리케이션 구축:

Spring Boot 프로젝트 설정:

  • 각 마이크로서비스에 대해 별도의 Spring Boot 프로젝트를 생성합니다.
  • pom.xml 또는 build.gradle에서 Spring Cloud 구성 요소에 대한 종속성을 정의합니다.

Spring Cloud 구성 서버 구성:

  • 외부 구성을 관리하기 위해 구성 서버를 설정합니다.
  • 중앙 집중식 구성을 위해 마이크로서비스를 구성 서버로 지정합니다.

Eureka를 통한 서비스 검색:

  • 서비스 등록 및 검색을 위해 Eureka 서버를 설정합니다.
  • Eureka 서버에 등록하도록 각 마이크로서비스를 구성합니다.

Spring Cloud 게이트웨이가 포함된 API 게이트웨이:

  • 요청을 다른 마이크로서비스로 라우팅하기 위해 Spring Cloud 게이트웨이를 설정합니다.
  • 요청 처리를 위한 라우팅 규칙 및 필터를 정의합니다.

Hystrix로 탄력성 추가:

  • 회로 차단 및 대체 메커니즘을 위해 Hystrix를 통합합니다.
  • @HystrixCommand를 사용하여 메서드에 주석을 달아 회로 차단을 활성화합니다.

Spring Cloud Sleuth를 사용한 분산 추적:

  • Sleuth 종속성을 추가하여 요청 흐름을 추적하고 기록합니다.
  • Zipkin을 사용하여 추적 데이터를 시각화하고 분석합니다.

예: 간단한 마이크로서비스 아키텍처 구현

다음 마이크로서비스가 포함된 기본 전자 상거래 애플리케이션을 고려해 보겠습니다.

  1. 상품서비스 : 상품정보를 관리합니다.
  2. 주문 서비스: 주문 및 거래를 처리합니다.
  3. 재고 서비스: 재고 수준을 관리합니다.

1단계: Spring Boot 프로젝트 생성
각 서비스에 대해 필요한 종속성을 포함하는 Spring Boot 프로젝트를 만듭니다.


org.springframework.cloudspring-cloud-starter-netflix-eureka-client

2단계: 구성 서버 설정
구성 서버를 생성하고 Git 저장소에서 읽도록 구성합니다.

# application.yml for Config Server
spring:
  cloud:
    config:
      server:
        git:
          uri: https://github.com/your-repo/config-repo

3단계: Eureka에 서비스 등록
각 마이크로서비스에서 Eureka 클라이언트 설정을 구성합니다.

# application.yml for Product Service
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/

4단계: Spring Cloud 게이트웨이 구성
게이트웨이 애플리케이션에서 경로 설정:

# application.yml for Gateway
spring:
  cloud:
    gateway:
      routes:
        - id: product-service
          uri: lb://PRODUCT-SERVICE
          predicates:
            - Path=/products/**

5단계: Hystrix로 회로 차단기 추가
서비스 클래스의 메소드에 주석을 답니다:

@HystrixCommand(fallbackMethod = "fallbackMethod")
public String getProductDetails(String productId) {
    // logic to get product details
}

public String fallbackMethod(String productId) {
    return "Product details not available";
}

6단계: 분산 추적 활성화
Sleuth 및 Zipkin 종속성 및 구성을 추가합니다.

# application.yml for Tracing
spring:
  zipkin:
    base-url: http://localhost:9411/

결론:

Spring Cloud로 마이크로서비스 아키텍처를 구현하면 애플리케이션의 확장성, 탄력성, 유지 관리성이 향상됩니다. Spring Cloud의 강력한 도구 세트는 마이크로서비스 구축 및 관리와 관련된 복잡성을 단순화하므로 개발자에게 탁월한 선택이 됩니다. 모범 사례를 따르고 이러한 강력한 도구를 활용하면 효율적이고 확장 가능하며 내결함성을 갖춘 마이크로서비스 솔루션을 만들 수 있습니다.

릴리스 선언문 이 글은 https://dev.to/vidhi_jayswal/microservices-architecture-with-spring-cloud-lff?1에서 복제됩니다. 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3