Spring Cloud is a set of tools built on Spring Boot that solves common distributed-systems problems in a microservices architecture, including service discovery, client-side load balancing, and inter-service HTTP calls.
Key Points: • Spring Cloud Netflix Eureka provides service discovery, so services register themselves and look up other services by name instead of hard-coded URLs or IPs. • Spring Cloud OpenFeign is a declarative REST client — you define an interface with annotations and Spring generates the HTTP call implementation. • Spring Cloud LoadBalancer distributes requests across all healthy instances of a service, working transparently with Eureka-registered services. • Spring Cloud Config centralizes externalized configuration across services, which pairs naturally with the above tools. • Spring Cloud Gateway or Sleuth/Zipkin are often added alongside these for routing and distributed tracing.
Example: An Order Service that needs to call a Payment Service would inject a Feign client interface annotated with @FeignClient("payment-service"); Eureka resolves "payment-service" to a live instance and LoadBalancer picks one, so no URL is ever hard-coded.
Code Example:
@FeignClient(name = "payment-service")
public interface PaymentClient {
@PostMapping("/api/payments")
PaymentResponse processPayment(@RequestBody PaymentRequest request);
}
@Service
public class OrderService {
private final PaymentClient paymentClient;
public OrderService(PaymentClient paymentClient) {
this.paymentClient = paymentClient;
}
public void checkout(PaymentRequest request) {
PaymentResponse response = paymentClient.processPayment(request);
}
}Interview Tip: A concise interview answer is:
"I'd use Eureka for service discovery so services aren't hard-coded to specific hosts, OpenFeign for declarative REST clients between services, and Spring Cloud LoadBalancer to distribute requests across instances — together they remove most of the boilerplate needed for reliable service-to-service calls."