The Principles of Planning and Implementing Microservices

Planning a microservices-based application  —  where to start? This architecture is composed of many aspects; how to break down this decoupled architecture? I hope that after reading this article, the picture will be clearer.

Microservices architecture

The Gist

  • Why?
    • The reasoning for choosing microservices.
  • What to consider?
    • The planning considerations before moving to microservices (versioning, service discovery and registry, transactions, and resourcing)
  • How?
    • Implementation practices (resilience, communication patterns)
  • Who?
    • Understanding the data flow (logging, monitoring, and alerting)

Building a viable microservices solution is attributed to the technical platform and supporting tools. This article focuses on the technical foundations and principles without diving into the underlying tools and products that carry out the solution itself (Docker, Kubernetes or other containers orchestration tool, API Gateway, authentication, etc.).

A Tale of Two Migrations

Within an enterprise, there are services (systems really) that are widely popular, offer just what you need, and are easy to use. There are also systems, which for years the organization tries to decommission but they have so many applications depending on them, so many strings attached, it seems impossible. Often, it's the same system, at different points in time.

Recently while exploring a legacy application in order to design its Cloud-native replacement, we identified a connection to such a system. We will refer to this system as the SAK (aka Swiss Army Knife). We wanted to do our part and remove one more string. The SAK’s service we consume acts in essence as a proxy for a database. After investigation, we found out that our application is the only one using the specific data (and thus the service). For the data, imagine a contact list (it's not really a contact list), which facilitates the main business offering of the application. I know I am vague, but I have to be. The data in question make the main functionality easier but their lack does not make it impossible. You could still make calls without your contact list, but it would be a pain. Some clients use the application daily and some might not use it for months. 

How To Grow From a Software Developer To a Software Architect

The journey from developer to software architect is a difficult path full of challenges and doubts. Many developers start as juniors and progress into senior and team lead roles. But there’s more than one direction to grow as a software engineer, for example, a software architect. In this article, I would like to give you some ideas on becoming an effective software architect. 

First of all, let’s discuss who a software architect is. In one of our articles, “The role of a software architect,” written by the software architect of Apiumhub. 

Microservices Powered By Domain-Driven Design

Have you been finding it difficult to model the boundaries of your system’s microservices? Have you been slowed down by the Technical complexity of your codebase? Has your team been stepping on each other’s toes?

If answers to any or many of such questions are yes, then Domain-Driven Design is likely useful to your Team!

Event Sourcing on Azure

Hi All! With this post, we’ll start a new Series about Event Sourcing on Azure. We’re going to talk a bit about the pattern, general architecture, and the individual building blocks. Then in the next posts, we’ll dig more and see each one in detail.

If you’re a regular reader of this blog, you might know that I wrote already about Event Sourcing in the past. It’s a complex pattern, probably one of the most complex to get right. I enjoy the challenges it gives and how it causes a whole plethora of other patterns to be evaluated in conjunction (CQRS anyone?).

Software Architecture Quality Attributes

Software projects are becoming complex, larger, more integrated, and are implemented by the use of several varieties of technologies. These various technologies need to be managed and organized to deliver a quality product. Quality attributes usually assessed and analyzed at the architecture level, not at the code level. And finally, software architecture has gained increasing visibility in the last years as the software industry has recognized the role of software architectures in maintaining high quality and ensuring high quality and sustainability of software products. 

However, there is still no consensus on how to measure various aspects of software architecture, therefore today I wanted to talk about software architecture metrics, but found out that in software architecture there are no standard metrics yet, this field is still very immature. However, some experts start talking about it, for example, I highly recommend you to attend Global Software Architecture Summit in Barcelona ( October, 1-2), where Alexander von Zitzewitz will talk about “Software Metrics for Architects”.

5 Major Software Architecture Patterns

In the Global Software Architecture Summit we were discussing software architecture patterns a lot and I decided to write an article about it, highlighting leading software architects' insights.   

First of All, What Are Software Architecture Patterns?

Architectural patterns are ways of capturing proven good design structures, so that they can be reused. Software architects have been looking for ways to capture and reuse the architectural knowledge that have proven successful in the past. 

Why We Need a New Breed of Hybrid Microservices Platform

Many enterprises have been using both monolithic and microservices architectures, side by side, for their IT needs. Each architecture has its own benefits and challenges, yet neither one provides an all around solution to modern day IT challenges which demand high performance without compromising on the decoupling and agility offered by microservices. In this post, we’ll discuss the evolution of persistence technologies, the pros and cons of microservices versus monolithic architecture, and why a hybrid microservices platform is the way to go.

The Evolution of Persistence Technologies

The evolution of storage volumes and the increase in high-end transient processing engines, consisting of cache and RAM, has brought us to the era of In-Memory Computing (IMC). This golden age of IMC includes the evolution of Low Latency Distributed Microservices (LLDM).

Understanding the Future of the Data Center Edge

With the adoption of Kubernetes and microservices, the edge has evolved from simple hardware load balancers to a full stack of hardware and software proxies that comprise API Gateways, content delivery networks, and load balancers. Understanding this transformation is key for data center executives so they can make the right architecture, strategy, and operations decisions. To get an understanding of the transformation, a quick historical journey helps.

The Early Internet and Load Balancers

In the mid-1990s, web application architecture was in its infancy. The classic n-tier architecture, consisting of a database tier, application tier, and presentation tier, was the de facto application architecture of this time. The n-tier architecture was horizontally scalable by connecting multiple instances of an application or presentation tier to the Internet using the first iteration of the data center edge: a load balancer. In this era, the load balancer was responsible for routing traffic between different instances of the application, ensuring high availability and scalability. The load balancer was typically a hardware appliance, although the release of HAProxy in 2001 started to popularize the concept of software load balancers.

Event Sourcing in .NET Core: A Gentle Introduction

Event sourcing, aka "the great myth". I've been thinking about writing a series of articles about this for a while, and now it's time to put my hands back on the keyboard. 

I thought that with this long period of confinement at least I could have had more time to write some nice articles, but it turns out the reality has been slightly different so far.

The Bots Are Coming!

The surge of networked devices in the Internet of Things (IoT) increased the stakes for information security once more. IoT sensors and actors also pose a threat to existing information infrastructure. They can be used as remote-controlled drones in so-called Distributed-Denial-of-Service (DDoS) attacks. 

How do we ensure the trustworthiness of information systems on the Internet of Things? How do we protect against attacks of a global bot army?

Comparing Container Pipelines

Introduction

Containers brought a monumental shift to DevOps by allowing teams to ship code faster than ever before. However, we still have to go through the process of building, packaging, and deploying those containers. That's why we use container pipelines.

However, there are many different choices when it comes to container pipelines. How do we know which one to use? In this article, we'll compare six choices and cover the configuration, benefits, limitations, and pricing of each.

Five Architectures You Can Quickly Prototype on PaaS

Sometimes, as an architect or developer, you want to try a new architecture or technical solution but just can't seem to find the time to install, configure, debug, and figure out an entirely new concept. Experimentation is a lot of work, project deadlines come first, and new tech is often one of your last priorities. 

However, Platform as a Service (PaaS) can help. One of the advantages of PaaS is the speed and simplicity of pre-configured deployments. You can scroll through a list of options, click a button or two, and have a reference architecture or sample project deployed, running, and ready for experimentation within minutes.

DevOps: Architecture Monitoring

“It is not the strongest of the species that survive, nor the most intelligent, but the one most responsive to change” – Charles Darwin

Software development is constantly changing. Teams need to be responsive to survive. DevOps was created to help organizations deal with constant change by responding quickly. This movement is designed to bring development and operations closer together so that they may collaborate and communicate more effectively.

Low Code Platforms — a Dangerous Bet

Is low code really low stress?

The low code application platforms (LCAP) have emerged in response to the complexity and variety of the modern software development landscape. Mendix is one of the most prominent players in this space according to Gartner, so let me use it as a reference in this article. Similar conclusions would apply to Outsystems, Appian, Kony, Betty Blocks and many other platforms.

You may also like: Understand No-Code and Low-Code Application Development Tools

How Database B-Tree Indexing Works

When we think about the performance of a database, indexing is the first thing that comes to the mind. Here, we are going to look into how database indexing works on a database. Please note that here, architectural details are described referenced to SQLite 2.x database architecture. You can find out the backend implementation of SQLite 2.5.0 with tests, which is relevant to this post from https://github.com/madushadhanushka/simple-sqlite.

Read how overall SQLite database architecture composed in this DZone article.

Review Structural Changes in Java Code

Read on to learn more about code reviews and Java code structure!

Code reviews are a proven practice to help keep your code as clean as possible. Doing it means nitpicking every detail of each method and class: naming, length, responsibility, algorithm, style, and so on. You have to look at everything used to ensure that lines of code are understood not only by the machine (compiler) but also by humans. As humans, you or your fellow programmers will have to maintain the code.

What about the bigger picture? Well, there’s the architecture of the system. Perhaps, it just sits with the leads of your team, or perhaps it is properly documented, but generally, people know which applications or microservices are integrated with each other and in what direction the data flows between them. Somebody cares about this highest level of modularity.