2.2. 부스터 프로젝트 생성


개발자가 독립 실행형 애플리케이션을 실행할 수 있도록 Fuse booster 프로젝트가 있습니다. 여기에 제공된 지침은 부스터 프로젝트 인 회로 차단기 부스터 중 하나를 생성하는 방법을 안내합니다. 이 실습에서는 Spring Boot에서 Fuse의 유용한 구성 요소를 보여줍니다.

넷플릭스/Hystrix 회로 차단기를 사용하면 분산 애플리케이션이 네트워크 연결 및 백엔드 서비스의 임시 사용할 수 없는 중단을 처리할 수 있습니다. 회로 차단기 패턴의 기본 개념은 종속 서비스의 손실이 자동으로 감지되고 백엔드 서비스를 일시적으로 사용할 수 없는 경우 대체 동작이 프로그램될 수 있다는 것입니다.

Fuse 회로 차단기 부스터는 두 가지 관련 서비스로 구성됩니다.

  • 이름 서비스인 백엔드 서비스는 이름을 Cryostat로 반환합니다.
  • 인사말 서비스인 frontend 서비스는 name 서비스를 호출하여 이름을 가져온 다음 문자열 Hello, NAME 을 반환합니다.

이 부스터 데모에서 Hystrix 회로 차단기는 인사말 서비스와 이름 서비스 사이에 삽입됩니다. 백엔드 이름 서비스를 사용할 수 없게 되면 인사말 서비스가 대체 동작으로 대체되고, 이름 서비스가 재시작될 때까지 기다리는 동안 차단되는 대신 즉시 클라이언트에 응답할 수 있습니다.

사전 요구 사항

절차

  1. https://developers.redhat.com/launch 로 이동합니다.
  2. START 를 클릭합니다.

    시작 관리자 마법사에서 Red Hat 계정에 로그인하라는 메시지가 표시됩니다.

  3. 로그인 또는 등록 버튼을 클릭한 다음 로그인합니다.
  4. 시작 관리자 페이지에서 예제 애플리케이션 배포 버튼을 클릭합니다.
  5. Create Example Application 페이지에서 Create Example Application에 name, fuse-circuit-breaker 를 입력합니다.
  6. Select an Example 을 클릭합니다.
  7. 예제 대화 상자에서 회로 차단기 옵션을 선택합니다. 런타임 선택 드롭다운 메뉴가 표시됩니다.

    1. Select a Runtime 드롭다운에서 Fuse 를 선택합니다.
    2. 버전 드롭다운 메뉴에서 7.5(Red Hat Fuse) 를 선택합니다( 2.21.2(Community) 버전을 선택하지 마십시오.
    3. 저장을 클릭합니다.
  8. 예제 애플리케이션 생성 페이지에서 다운로드를 클릭합니다.
  9. 애플리케이션 준비 상태 대화 상자가 표시되면 Download.zip 을 클릭합니다. 브라우저에서 생성된 booster 프로젝트를 다운로드합니다( ZIP 파일로 패키징됨).
  10. 아카이브 유틸리티를 사용하여 생성된 프로젝트를 로컬 파일 시스템의 편리한 위치로 추출합니다.

2.2.1. Circuit Breaker booster

넷플릭스/Hystrix 회로 차단기 구성 요소를 사용하면 분산 애플리케이션이 네트워크 연결 중단 및 백엔드 서비스를 일시적으로 사용할 수 없게 되는 문제를 해결할 수 있습니다. 회로 차단기 패턴의 기본 개념은 종속 서비스의 손실이 자동으로 감지되고 백엔드 서비스를 일시적으로 사용할 수 없는 경우 대체 동작이 프로그램될 수 있다는 것입니다.

Fuse 회로 차단기 부스터는 두 가지 관련 서비스로 구성됩니다.

  • 이름을 로 반환하는 이름 서비스.
  • name 서비스를 호출하여 이름을 가져온 다음 문자열 Hello, NAME.

이 데모에서는 인사말 서비스와 이름 서비스 사이에 Hystrix 회로 차단기가 삽입됩니다. 이름 서비스를 사용할 수 없게 되면 인사말 서비스가 다시 시작될 때까지 대기하는 동안 차단하거나 시간 초과하는 대신 대체 동작으로 대체되고 클라이언트에 즉시 응답할 수 있습니다.

2.2.1.1. Circuit Breaker booster를 빌드하고 실행합니다.

회로 차단기 미션에 대한 2.2절. “부스터 프로젝트 생성” 단계를 수행한 후 다음 단계에 따라 회로 차단기 부스터 프로젝트를 빌드하고 실행합니다.

  1. 쉘 프롬프트를 열고 Maven을 사용하여 명령줄에서 프로젝트를 빌드합니다.

    cd PROJECT_DIR
    mvn clean package
  2. 다음과 같이 새 쉘 프롬프트를 열고 name 서비스를 시작합니다.

    cd name-service
    mvn spring-boot:run -DskipTests -Dserver.port=8081

    Spring Boot가 시작되면 다음과 같은 몇 가지 출력이 표시됩니다.

    ...
    2017-12-08 15:44:24.223  INFO 22758 --- [           main] o.a.camel.spring.SpringCamelContext      : Total 1 routes, of which 1 are started
    2017-12-08 15:44:24.227  INFO 22758 --- [           main] o.a.camel.spring.SpringCamelContext      : Apache Camel 2.20.0 (CamelContext: camel-1) started in 0.776 seconds
    2017-12-08 15:44:24.234  INFO 22758 --- [           main] org.jboss.fuse.boosters.cb.Application   : Started Application in 4.137 seconds (JVM running for 4.744)
  3. 다음과 같이 새 쉘 프롬프트를 열고 인사말 서비스를 시작합니다.

    cd greetings-service
    mvn spring-boot:run -DskipTests

    Spring Boot가 시작되면 다음과 같은 몇 가지 출력이 표시됩니다.

    ...
    2017-12-08 15:46:58.521  INFO 22887 --- [           main] o.a.c.c.s.CamelHttpTransportServlet      : Initialized CamelHttpTransportServlet[name=CamelServlet, contextPath=]
    2017-12-08 15:46:58.524  INFO 22887 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
    2017-12-08 15:46:58.536  INFO 22887 --- [           main] org.jboss.fuse.boosters.cb.Application   : Started Application in 6.263 seconds (JVM running for 6.819)

    인사말 서비스는 URL http://localhost:8080/camel/greetings 에서 REST 끝점을 노출합니다.

  4. http://localhost:8080으로 이동합니다.

    이 페이지를 열면 서비스를 호출합니다.

    CB 인사말service1

    이 페이지는 회로 차단기의 상태를 모니터링하는 Hystrix 대시보드에 대한 링크도 제공합니다.

    CB hystrix 대시보드
  5. Camel Hystrix에서 제공하는 회로 차단기 기능을 설명하기 위해 이름 서비스가 실행 중인 쉘 프롬프트 창에서 Ctrl+C 를 눌러 백엔드 이름 서비스를 종료합니다.

    이제 이름 서비스를 사용할 수 없으므로 회로 차단기가 시작되어 인사말 서비스가 호출될 때 중단되지 않도록 합니다.

  6. Hystrix Monitor 대시보드 및 서비스 출력에서 변경 사항을 확인합니다.

    CB 인사말service2

2.2.2. 외부화된 구성 부스터

Externalized Configuration booster는 Apache Camel 경로에 대한 구성을 외부화하는 방법의 예를 제공합니다. Spring Boot 독립 실행형 배포의 경우 구성 데이터는 application.properties 파일에 저장됩니다.

참고

OpenShift 배포에서 Fuse의 경우 구성 데이터는 ConfigMap 오브젝트에 저장됩니다.

2.2.2.1. Externalized Configuration booster 빌드 및 실행

외부 구성 미션에 대한 2.2절. “부스터 프로젝트 생성” 단계를 수행한 후 다음 단계에 따라 로컬 머신의 독립 실행형 프로젝트로 외부 구성 부스터를 빌드하고 실행합니다.

  1. 프로젝트를 다운로드하고 로컬 파일 시스템에 아카이브를 추출합니다.
  2. 프로젝트를 빌드합니다.

    cd PROJECT_DIR
    mvn clean package
  3. 서비스를 실행합니다.

    mvn spring-boot:run
  4. http://localhost:8080 에 대한 웹 브라우저를 엽니다. 이 페이지에서는 5초마다 서비스를 호출합니다. service는 target/classes/application.properties 파일의 booster.nameToGreetvalue 를 사용하여 응답합니다.

    5초마다 "default"에 대한 인사말을 출력합니다.

    configmapbooster
  5. booster.nameToGreet 값을 수정합니다.

    1. 편집기에서 target/classes/application.properties 파일을 엽니다.
    2. booster.nameToGreetvalue 의 값을 기본값 에서 다른 값으로 변경합니다. 예를 들면 다음과 같습니다.

      booster.nameToGreetvalue=Thomas
  6. 터미널 창에서 CTRL+C 를 눌러 서비스를 중지합니다.
  7. 서비스를 다시 실행합니다.

    mvn spring-boot:run
  8. 웹 브라우저에서 http://localhost:8080 페이지로 돌아가 서비스 결과 창에서 변경된 값을 확인합니다.

    configmapbooster2

2.2.3. REST API booster

REST API 레벨 0 미션은 REST 프레임워크를 사용하여 비즈니스 작업을 HTTP를 통해 원격 프로시저 호출 끝점에 매핑하는 방법을 보여줍니다. 이 미션은 worldardson Maturity 모델의 레벨 0에 해당합니다.

이 부스트는 HTTP 프로토콜을 사용하여 원격(Apache Camel에서 노출) 서비스와 상호 작용하는 메커니즘을 소개합니다. 이 Fuse booster를 사용하면 신속하게 프로토타입을 생성하고 REST API를 유연하게 설계할 수 있습니다.

이 부스터를 사용하여 다음을 수행합니다.

  • camel/ Cryostatings/{name} 엔드포인트에서 HTTP GET 요청을 실행합니다. 이 요청은 Hello, $name! 의 페이로드를 사용하여 JSON 형식으로 응답을 생성합니다. 여기서 $name 은 HTTP GET 요청의 URL 매개변수 값으로 교체됩니다.
  • URL {name} 매개변수의 값을 변경하여 응답에 반영된 변경된 값을 확인합니다.
  • REST API의 Swagger 페이지를 확인합니다.

2.2.3.1. REST API booster 빌드 및 실행

REST API 미션에 대한 2.2절. “부스터 프로젝트 생성” 단계를 수행한 후 다음 단계에 따라 로컬 머신에서 독립 실행형 프로젝트로 REST API booster를 빌드하고 실행합니다.

  1. 프로젝트를 다운로드하고 로컬 파일 시스템에 아카이브를 추출합니다.
  2. 프로젝트를 빌드합니다.

    cd PROJECT_DIR
    mvn clean package
  3. 서비스를 실행합니다.

    mvn spring-boot:run
  4. 웹 브라우저를 열고 다음을 수행합니다. http://localhost:8080
  5. 예제 HTTP GET 요청을 실행하려면 camel/ingressings/{name} 버튼을 클릭합니다.

    localhost:8080/camel/ Cryostatings/Jacopo URL을 사용하여 새 웹 브라우저 창이 열립니다. URL {name} 매개변수의 기본값은 Jacopo 입니다.

    JSON 응답은 브라우저 창에 표시됩니다.

    restbooster2
  6. {name} 'parameter의 값을 변경하려면 URL을 변경합니다. 예를 들어 이름을 Cryostat로 변경하려면 'localhost:8080/camel/ Cryostatings/ Thomas 를 사용합니다.

    업데이트된 JSON 응답이 브라우저 창에 표시됩니다.

    restbooster3
  7. REST API의 Swagger 페이지를 보려면 API Swagger 페이지 버튼을 클릭합니다.

    API swagger 페이지가 브라우저 창에서 열립니다.

    restbooster4
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.