This is the first part of a series of posts about how I’ll develop an application in Kubernetes (k8s)
first post: Idea (https://jorge.aguilera.soy/blog/prestamos-bibliotecas/k8s-1.html)
second post: Infraestructure (https://jorge.aguilera.soy/blog/prestamos-bibliotecas/k8s-2.html)
The main ot these posts is to document the process of deploying a solution in k8s at the same time I’m writting the application so probably all posts will have a lot of errors and mistakes that I need to correct in the next post.
| | Be aware that I’m a very nobel with Kubernetes and these are my first steps with it. I hope to catch up the attention of people with more knowledge than me and maybe they can review these posts and suggest to us some improvements. |
My idea is to develop a "solution" with some level of complexity (use a database, some services and a public front) and build it step by step. So, a possible roadmap could be:
define the architecture of the application
design the application, tools and basic infraestructure
import data into database using a service or script. It needs to be executed every month
a REST service to expose dome domains
a simple web frontend to consume the service
The town hall of Madrid releases every month a huge file with the details of loans of public libraries to their users from the previous month.
In this file you can find when a library loan a resource to a user (you can’t know the user, only if it’s adult, child, staff and so on). The resource can be a book, a newspaper, a DVD, etc.
Also, in the same portal, we can find another file with the catalog of all books in the libraries with the detail of it (author, num of copies, where to find it, etc)
The idea will be to build an application to ask simple questions about what was the most popular book loaned last month (or the date you want), compare libraries, etc
A first approach to the architecture can be:
As you can see, we’ll have a k8s pod with a database (I’m curious about Postgre so this time I’ll try to use it), some kind of script to import csv into it, maybe using a k8s filesystem (persistent volume claim or PVC) where the admin upload the files, a service REST (pretty sure it’ll be a micronaut service) talking against a webapp (I’m thinking in a simple Vue application)
The next step will be to define the application and select the tools and infraestructure