In the early days of business data processing, write operations to the database usually correspond to commercial transactions that occur: selling, placing orders with suppliers, paying employees’ salaries, etc. Transaction does not involve currency exchange, but the term transaction is stagnant, referring to a set of reads and writes that constitute a logical unit.
Even if the database started to be used for many different types of data annotations such as blog posts, actions in games, contacts in the address book, etc., the basic access pattern is still similar to processing business transactions. Applications usually use indexes to find a…
The ability to identify and troubleshoot an issue in a production system is critical. In this article, we will talk about a couple of tools that can help us understand what’s going on in a production Kubernetes cluster.
Observability is the ability to understand what is happening in a production system. We can deal with low-observability systems (inability to understand what is happening) or high-observability systems (where events and internal states can be inferred from the outside through tools).
Observability is an attribute of the system itself. Generally, monitoring is the operation of obtaining information about the current or past…
There are cases where software fails in rare conditions that are temporary in nature. Although it’s important to be made aware when these conditions arise, it’s usually at least as important to restore the service as quickly as possible.
When all the processes in a container have exited, that container will enter the exited state. A Docker container can be in one of four states:
A basic strategy for recovering from temporary failures is that when a process exits or fails, it will automatically restart. …
When everything is normal, the API composition and CQRS patterns can provide appropriate solutions for distributed queries.
However, maintaining the integrity of distributed data is complex. If you store all data in a single relational database and specify the appropriate constraints in the schema, you can rely on the database engine to maintain data integrity.
The situation is very different when multiple microservices keeps the data in isolated data stores (relational or non-relational). Data integrity is critical, but it must be maintained by code. The saga pattern addresses this concern.
Kubernetes is deprecating Docker as a container runtime after version 1.20.
Docker as an underlying runtime is being deprecated in favor of runtimes that use the Container Runtime Interface (CRI) created for Kubernetes.
If you are an end-user of Kubernetes, it will not bring you much change. This does not mean the demise of Docker, nor does it mean that you cannot or should no longer use Docker as a development tool. Docker is still a useful tool for building containers, and the images produced by running docker build can still be run in your Kubernetes cluster.
In case you…
When we have an application architected using microservices, there are several data strategies that can be used. One of the recommended approaches is to have each microservice owns its data store. This means that the overall state of the system will be distributed across multiple data stores, accessible only from their own microservices.
Most complex queries will involve data available in multiple databases. Every consumer can access all these microservices and aggregate all data to satisfy their queries. However, it is not ideal for several reasons:
Historically, companies have hired sysadmins to run complex systems.
This systems administrator approach involves building existing software components and deploying them to work together to produce a service. Then, the task of the system administrator is to run the service and respond to events and updates as they occur. With the increase in system complexity and traffic, the occurrence of incidents and updates has increased accordingly, the sysadmin team needs to grow to absorb the additional work.
The sysadmin model of service management has several advantages. For companies that decide how to run and configure services, this approach is relatively…
It’s 2021 and you still want to talk about how to send a fax? Well, there are industries like real estate, healthcare, and banking that still rely heavily on fax.
In this article, we are going to build a simple service that will allow us to send faxes without a fax machine.
Serverless is the go-to technology these days to build simple and cost-effective services. We can also use it to run some experiments in the cloud without the need to spin up a server instance.
In this article, we are going to create a lambda function to join PDFs files. At first glance, it can look like an easy task to do. But it has some challenges when we need to run our code in a serverless infrastructure.