Bozobooks.com: Fullstack k8s application blog series
Bozobooks.com Scope & Architecture
Chapter 1: A hands-on walkthrough of building and deploying a full-stack microservices application on k8s, along with supporting framework components
Hello readers, coders, architects …
Since I released my book on GraalVM, I have taken a break, from writing. During the break, I have been working on implementing the case study, I covered in the last chapter of the book (Supercharge your applications with GraalVM). The case study was about a Book Library application, built as a bunch of microservices, built on GraalVM, and deployed on Kubernetes.
I thought it would be a good idea to take that and build a complete reference implementation. This blog series is all about that. The various chapters of this blog series walk through the end-to-end development of these microservices and deploying them on AWS.
This blog series provides a hands-on walkthrough of building the application and deploying it to AWS EKS. We will be using the docker desktop/Rancher as the development environment.
This blog series walks through the complete lifecycle of building the microservices application with the following topics
- Build a ReactJS front end and package it to deploy in k8s cluster.
- Build microservices using Quarkus, and build native images of these microservices and deploy them on k8s
- Use containerised postgres database to store the book preferences and Redis to cache the book search results.
- Manage secrets in Hashicorp Vault
- Implement SSL/HTTPs, with cert-manager and Lets Encrypt and eventually also integrate with Vault.
- Implement Logging and monitoring using Prometheus, Loki, and Grafana — with Slack integration for alerts
- Build GitOps pipeline with GitHub actions (CI) and ArgoCD (CD), integrated with Slack for notifications
- Use Helm and Terraform to deploy and manage the Kubernetes clusters on Docker/rancher desktop (Development environment) and AWS EKS (Production environment).
I will provide the respective blog links, as I publish them, and update this space. Please watch out
So let’s get started…
This chapter is a quick recap of the case study that I published in my “Supercharge your applications with GraalVM” book (you can find the book here). It is a very simple Book Library Microservices web application, called Bozo Book Library.
Who is Bozo?
Bozo is my pet dog (Shih tzu) , who always sits near my chair, as I code, write books/blogs, do any work. So didn’t have to think hard, to name the application :-D
The following picture shows the high-level application architecture.
Bozobook Library UI: This is a ReactJS application. This is the home page, that the user lands after successfully logging in. This web page presents a way to search and view books. This will be implemented as a SPA using ReactJS.
The following is the design of the SPA.
We will build 2 UI components as follows:
- Book List UI Component: List of all the books
- Library UI Component: This lists the books in the personal library and allows the user to add or delete books from this library.
To support these UI services, we will build Microservices that store, fetch and search the books. The following are the services that we will build
- Bozobook Library Service: These services provide RESTful APIs to browse, search and view the book details. This service will provide all the restful API to access books in the library, and add and delete them from the Library.
- Bozobook Book Info Service: Let’s decide to use Google Books API (https://developers.google.com/books) to get all the details about the books. We will need a Service that proxies the Google Books API. This will help us manage the data that is coming from Google Books API. This also provides a proxy layer, so that we can always switch to a different Book API service, without changing the whole application.
Both the services will be implemented as Quarkus applications, built as GraalVM Native images (This will also support the book). Later in the blog series, we will explore migrating one of these services to GoLang, as a separate blog.
The following picture shows the k8s deployment architecture. We will have detailed architecture pictures of each of the supporting components (shown as namespaces in the following diagram) in the respective chapters.
I hope this will be a helpful blog series...I am super excited…
- Kubernetes documentation
- Quarkus Documentation
- GraalVM documentation
- And of course my book :-D
Supercharge Your Applications with GraalVM | Packt
GraalVM is a high-performance VM that provides the runtime for modern cloud-native applications. Cloud-native…
5 Microservices Challenges and Blindspots for Developers
Microservices are loosely coupled services that are organized around business capabilities. In an ideal microservices…
Microservices Monitoring: Cutting Engineering Costs and Saving Time
Today, many businesses are adopting a more conservative mindset when it comes to their resources. Cloud-native and…
Kubernetes Monitoring with OpenTelemetry
Organizations increasingly deploy and manage their applications using Kubernetes, which has emerged as the de facto…
Testing Microservices - Trace Based Integration Testing Example
As engineering organizations transitioned from monolith to microservices architectures, they sought to make their…