The cornerstone of effective, scalable, cloud native development is establishing a personal laboratory, which is the focus of this chapter. This space serves as a secure playground for innovation. Your laboratory is your development environment, typically a local workstation or laptop, where you have the freedom to experiment, iterate, and rapidly observe the results. You […]
Configuring Service Accounts – Profile Service with Pub/Sub and Firestore
In general, if something isn’t working in Google Cloud, a good first step is to check for missing permissions on a service account, especially if you are using a service account other than the default. You can do this by going to the IAM & Admin section of the console and checking the permissions for […]
Sending Events to Pub/Sub – Profile Service with Pub/Sub and Firestore
Google Pub/Sub is a robust, fully managed service that enables real-time messaging between applications. However, when integrating Pub/Sub into your Spring applications, you might not want to deal with the specifics of the Pub/Sub API directly. This is where the Spring Cloud GCP library comes into play. Spring Cloud GCP provides a channel adapter for […]
Google Firestore – Profile Service with Pub/Sub and Firestore
Firestore is a NoSQL document database that is built for automatic scaling, high performance, and ease of application development. Given the small amounts of data you’ll be storing for each user profile, Firestore is an excellent choice for your needs. Its serverless nature allows it to scale automatically according to demand, making it highly available […]
Requirements – Profile Service with Pub/Sub and Firestore
This chapter delves into the creation of a cloud native, event-driven microservice: the profile service. This profile service will build and continuously update user profiles based on changing facts from the fact service. The architecture will employ Google Pub/Sub for event notifications, Firestore as a serverless database to store user profiles, and Cloud Run for […]
Evaluation – Fact Service with Spring Boot, Cloud Run, and Cloud SQL
Now let’s look at how the solution will scale and how much it will cost. How Will This Solution Scale? This solution is designed with scalability in mind. First, the service itself has been designed to handle vertical scaling. This means that each instance’s capacity can be increased by augmenting memory and CPU resources. This […]
Tip – Fact Service with Spring Boot, Cloud Run, and Cloud SQL
It may surprise you to learn that the size of your disk space can directly affect the number of input/output operations per second (IOPS) your system can handle. IOPS is a common performance measurement used to benchmark computer storage devices like hard disk drives (HDD), solid-state drives (SSD), and storage area networks. The more IOPS […]
Building the Container – Fact Service with Spring Boot, Cloud Run, and Cloud SQL
With the Spring Boot application written, you need to package it into a container. In Chapter 10, I will cover more options for automating this process; however, for now, I will introduce Jib, a Google open source project that allows you to build containers for a Java application without a Dockerfile. Jib uses a plugin […]
Cloud Run – Fact Service with Spring Boot, Cloud Run, and Cloud SQL
As you have seen in Chapter 6, Cloud Run is a flexible solution for running containers, and you will use it here again. My approach is to work my way down from the highest abstraction until I find a service that can work within the constraints I have identified, a process I call progressive decomposition, […]
Requirements – Fact Service with Spring Boot, Cloud Run, and Cloud SQL
In previous chapters, you embraced cloud native development. You made full use of the convenience of serverless Cloud Functions and then Cloud Run. You used the Go programming language, which, due to its relatively light footprint and fast startup time, is ideal for Cloud Run and autoscaling in particular. However, this chapter includes a more […]