기술나눔

springcloud 인터뷰에서 자주 묻는 질문

2024-07-08

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Spring Cloud는 Spring Boot 기반의 마이크로서비스 아키텍처 솔루션으로, 마이크로서비스 구축 및 관리를 위한 다양한 도구와 프레임워크가 포함되어 있습니다. 인터뷰에서 Spring Cloud와 관련된 질문은 일반적으로 핵심 개념, 구성 요소, 공통 패턴 및 솔루션을 다룹니다. Spring Cloud 인터뷰 중 자주 묻는 질문과 답변은 다음과 같습니다.

1. Spring Cloud의 핵심 구성요소는 무엇입니까?

Spring Cloud에는 많은 핵심 구성 요소가 포함되어 있으며 일반적인 구성 요소는 다음과 같습니다.

  • 스프링 클라우드 설정: 구성 파일의 중앙 집중식 관리 및 동적 새로 고침을 지원하는 분산 구성 관리 도구입니다.
  • 스프링 클라우드 넷플릭스: Eureka(서비스 등록 및 검색), Ribbon(클라이언트 로드 밸런싱), Hystrix(회로 차단기), Zuul(API 게이트웨이) 등 포함
  • 스프링 클라우드 게이트웨이: Zuul을 대체하는 API 게이트웨이로 더욱 효율적인 라우팅 및 필터링 기능을 제공합니다.
  • 스프링 클라우드 슬루스: Zipkin 또는 Jaeger와 통합된 분산 추적 도구입니다.
  • 스프링 클라우드 스트림: 다양한 메시지 미들웨어(예: Kafka, RabbitMQ)를 지원하는 메시지 기반 마이크로서비스 프레임워크입니다.
  • 스프링 클라우드 버스: 일반적으로 구성을 동적으로 새로 고치는 데 사용되는 이벤트 버스입니다.
  • 스프링 클라우드 오픈페인: HTTP 호출을 단순화하는 선언적 HTTP 클라이언트입니다.

2. 서비스 등록 및 검색이란 무엇입니까? Spring Cloud는 어떻게 구현되나요?

서비스 등록 및 검색은 서비스 인스턴스의 동적 등록 및 검색을 의미하는 마이크로서비스 아키텍처의 핵심 개념입니다. 서비스 등록 센터는 서비스 인스턴스 목록을 유지 관리하는 역할을 담당합니다. 각 마이크로서비스는 시작 시 해당 주소와 메타데이터를 서비스 등록 센터에 등록합니다.

Spring Cloud에서 일반적으로 사용되는 서비스 등록 및 검색 구성 요소는 Netflix Eureka입니다.

서비스 등록 및 검색 프로세스

  1. 서비스 등록: 서비스 인스턴스는 시작 시 자신의 정보(서비스 이름, 인스턴스 주소 등)를 유레카 서버에 등록합니다.
  2. 서비스 발견: 클라이언트가 서비스를 호출하면 호출해야 하는 서비스 인스턴스 목록을 Eureka Server에 쿼리합니다.

샘플 코드

  • 유레카 서버 구성:
 

자바 복사 코드

@EnableEurekaServer @SpringBootApplication public class EurekaServerApplication { public static void main(String[] args) { SpringApplication.run(EurekaServerApplication.class, args); } }

  • 유레카 클라이언트 구성:
 

자바 복사 코드

@EnableEurekaClient @SpringBootApplication public class EurekaClientApplication { public static void main(String[] args) { SpringApplication.run(EurekaClientApplication.class, args); } }

3. 로드 밸런싱이란 무엇입니까? Spring Cloud는 어떻게 구현되나요?

로드 밸런싱은 요청을 여러 서비스 인스턴스에 분산하여 시스템 가용성과 성능을 향상시키는 기술입니다. Spring Cloud는 주로 리본을 통해 구현되는 클라이언트 측 로드 밸런싱 솔루션을 제공합니다.

리본의 주요 기능

  • 일련의 로드 밸런싱 전략(예: 라운드 로빈, 무작위, 가중치 등)을 제공합니다.
  • 서비스 목록의 동적 새로 고침을 지원합니다.

샘플 코드

 

자바 복사 코드

@LoadBalanced @Bean public RestTemplate restTemplate() { return new RestTemplate(); }

4. 퓨즈란 무엇입니까? Spring Cloud는 어떻게 구현되나요?

회로 차단기는 서비스 간의 계단식 오류를 방지하는 데 사용되는 보호 메커니즘입니다. 서비스 인스턴스를 사용할 수 없음을 감지하면 사용할 수 없는 인스턴스를 계속 호출하지 않도록 오류 응답을 직접 반환합니다.

Spring Cloud는 Netflix Hystrix를 사용하여 회로 차단기를 구현합니다.

Hystrix의 주요 기능

  • 서비스 호출을 모니터링하고 격리합니다.
  • 대체 메커니즘(Fallback)을 제공합니다.
  • 실시간 지표 모니터링을 제공합니다.

샘플 코드

 

자바 복사 코드

@HystrixCommand(fallbackMethod = "fallbackMethod") public String someMethod() { // 可能会失败的服务调用 } public String fallbackMethod() { return "Fallback response"; }

5. API 게이트웨이란 무엇입니까? Spring Cloud는 어떻게 구현되나요?

API 게이트웨이는 마이크로서비스 아키텍처의 중요한 구성 요소로 클라이언트 요청을 균일하게 관리하고 라우팅하는 데 사용되며 인증, 전류 제한, 로깅 및 기타 기능을 제공합니다.

Spring Cloud는 두 가지 API 게이트웨이 솔루션을 제공합니다.

  • : Netflix에서 제공하는 API 게이트웨이 솔루션으로 Spring Cloud Netflix 생태계에서 흔히 사용됩니다.
  • 스프링 클라우드 게이트웨이: Spring 팀에서 개발한 API 게이트웨이는 더 높은 성능과 더 강력한 기능을 갖추고 있으며 일반적으로 Zuul을 대체하는 데 사용됩니다.

Spring Cloud 게이트웨이 샘플 코드

 

yaml코드 복사

spring: cloud: gateway: routes: - id: some_route uri: http://some-service predicates: - Path=/some-path/** filters: - StripPrefix=1

6. 스프링 클라우드 구성이란 무엇입니까? 어떻게 작동하나요?

Spring Cloud Config는 여러 마이크로서비스의 구성 파일을 중앙에서 관리하고 동적으로 구성 새로 고침을 지원하는 분산 구성 관리 도구입니다.

작동 원리

  1. 구성 저장: 구성 파일은 중앙 저장소(예: Git, SVN, 파일 시스템)에 저장됩니다.
  2. 서버 구성: Spring Cloud Config Server는 중앙 저장소에서 구성 파일을 읽어 클라이언트에 제공합니다.
  3. 클라이언트 구성: Spring Cloud Config Client는 시작 시 구성 서버에서 구성 파일을 요청하고 구성을 로드하고 적용합니다.

샘플 코드

  • 서버 구성:
 

자바 복사 코드

@EnableConfigServer @SpringBootApplication public class ConfigServerApplication { public static void main(String[] args) { SpringApplication.run(ConfigServerApplication.class, args); } }

  • 클라이언트 구성(bootstrap.yml):
 

yaml코드 복사

spring: application: name: some-service cloud: config: uri: http://localhost:8888

7. 분산 추적이란 무엇입니까? Spring Cloud는 어떻게 구현되나요?

분산 추적은 여러 서비스에서 요청 링크를 추적하는 데 사용되므로 개발자가 분산 시스템을 모니터링하고 디버그하는 데 도움이 됩니다.

Spring Cloud Sleuth는 Zipkin 또는 Jaeger를 통합하는 분산 추적 솔루션을 제공합니다.

스프링 클라우드 슬루스의 주요 기능

  • 앱에 고유한 추적 ID와 범위 ID를 자동으로 추가합니다.
  • 로그와 추적 데이터의 상관관계를 제공합니다.
  • 중앙 집중식 추적 데이터 수집 및 표시를 위해 Zipkin 또는 Jaeger를 통합합니다.

샘플 코드

 

xml코드 복사