In the current environment, all systems are developed by keeping the integration with other services/systems in mind from day zero. Systems communicate with each other using APIs. API is a communication channel. You are using AWS services in your app, you need to consume AWS APIs. You want to use social feeds such as facebook/twitter in your app, you need to use their APIs. Social login solutions is also based on APIs. You are developing an HTML5 app, you need APIs. UI app consumes APIs and renders the data.
APIs developed to serve the request in a non-blocking, async way are part of the reactive paradigm. Reactive programming in Spring is facilitated by WebFlux, which supports fully non-blocking code. However, the programmer has to take special care of maintaining the non-blocking call. Reactive code allows you to use the resources such as CPU in an optimal way and gives you more throughput. Therefore, it is the preferred choice for cloud deployment. It also gives you added cost advantage.
gRPC is mostly used in backend systems, which are based on microservices. gRPC allows these microservices to communicate with each other.
GraphQL is another way to implement the APIs. It was developed by Facebook to increase the Facebook app performance on mobile devices. Later on, it was open-sourced and got popular among many leading tech companies.