How to Make Implementing Cloud-Native Applications Easier

From the first programming languages, to advanced programming paradigms, to the development of virtualization and cloud infrastructure, the history of computer science is the history of the evolution of abstractions that hide complexity and empower the creation of ever more sophisticated applications.

The development of reliable, scalable applications for the cloud seems to be far harder than it ought to be.

In recent years, containers and container orchestrators like Kubernetes have proved to be an important abstraction that dramatically simplifies the development of reliable, scalable distributed systems. Though containers and container orchestration are just now entering the mainstream, they are…

Mastering the Actor Model

The development of reliable, scalable applications for cloud environments is far harder than it ought to be. Here we describe a proven architecture that creates a multi-cloud application framework to meet the tougher challenges of managing distributed data across multi-cloud clusters — reliability and automatic failover, high performance and auto-scaling, and near real-time data consistency. This is the first of six parts that describe how to build multi-cloud applications with minimal frustration and error. If that is interesting, read on.

In recent years, containers and container orchestrators like Kubernetes have dramatically simplified the development of multi-cloud, reliable, scalable, distributed systems…

Photo courtesy of Angel Street Studio

Software Engineering is the application of a systematic, disciplined, quantifiable approach to the design, development, operation, and maintenance of software.

We who make our living building and maintaining software are very much in demand, are paid well, and are expected to demonstrate the competence and skill of professionals. Sadly, not all of us are the professionals we could be. Learning programming languages does not, by itself, make one a software engineer. It is only a start. Writing code is a small part of creating, deploying, supporting, and maintaining software. As our profession transitions through the latest major paradigm shift —…

A Cautionary Tale of Technology Choices In the 2020s

I read an interesting Medium article today. It was well-written but highly subjective — though it did resonate with my own personal experience. What surprised me was the vehemence of the attacks it provoked. Apparently, Angular is more of a religion than a Web framework. That response started me thinking about how we choose our technologies now days.

Since I began building software in 1972, a few (almost all) things have changed. In fact, for most of my professional life I’ve had the challenge and the pleasure of constantly learning and using new technologies and tools. …

How Amazon Does Digital Transformation Better

Digital transformation gets a lot of attention, appearing on almost every CEO’s and CIO’s annual ToDo list. But digital transformation has not been all that easy for most of us. So, what’s the secret sauce for making digital transformation happen? Amazon’s Jeff Bezos figured that out almost 20 years ago. Like many game changing ideas, it was deceptively simple. So how did he do it?

Amazon was founded in 1994 as an online marketplace for books which then expanded to sell electronics, software, video games, apparel, furniture, food, toys, and jewelry. Though it is still an online retailer, it has…

Creating a Working Partnership

Microservices are new to most organizations and they can take a bit of getting used to. By their very nature, they disrupt our normal ways of doing things. Continuous Integration/Continuous Deployment (CI/CD) is one of those things that can get disrupted. If you are interested, lets take look at how microservices and CI/CD can form a happy working partnership.

Organizations that do CI/CD understand the problems they solve and the value they can deliver. It would be unwise to think that microservices reduce the need for or value of CI/CD in any way — if anything, the increased number of…

Database per Service?

Click for Explanation

How valid or useful is the “database per service” microservices architectural pattern? Given the pattern’s crippling impact on managing distributed data with microservices, that is a question worth answering.

The database per service pattern results from a misunderstanding or misapplication of principles described by Werner Vogels, CTO at Amazon. Vogels is a very smart guy and one of the creators of cloud computing as we know it today. When Vogels began building the software that helped make Amazon into the giant it is today, he articulated a set of principles upon which that software was designed. Among those principles are:

The Answer Is… It Depends

Image Courtesy of Contentstack

How do you know whether microservices make sense for your organization? If you are trying to figure that out, please read on.

What Are Microservices?

Microservices are not magic, but they are an approach to breaking up an application into usable components that can be connected together to form systems. They are called microservices because their components tend to be smaller than the traditional Service-Oriented Architecture (SOA) services popular for more than a decade. An individual microservice:

  • Implements a single task within a domain bounded context. This is a fundamental characteristic of a microservice and promotes a high level of granularity and separation…

Making Microservices Work in the Cloud

Click for Details

“The term Microservice Architecture has sprung up over the last few years to describe a particular way of designing software applications as suites of independently deployable services. While there is no precise definition of this architectural style, there are certain common characteristics around organization, around business capability, automated deployment, intelligence in the endpoints, and decentralized control of languages and data.” James Lewis and Martin Fowler


For years, services have been a favored technique when building Web applications. Web apps are frequently built with HTML, CSS, and JavaScript GUI front-ends running on Web browsers that interact with Web servers to…

Being a good software engineer takes work

Courtesy of

Software is a magical thing. With it you can build anything your imagination can conceive. Just like a sculptor, a painter, a boatbuilder, a cabinet maker, or the people who built the the Brooklyn Bridge— to make real the thing of your your imagination you have to understand and have a feel for the material with which you are working. For the professional artist, boatbuilder, cabinet maker and civil engineer that takes training, discipline, and experience. The software developer should be no different.

My father graduated as a mechanical engineer from Brown University. When I began my civilian career (after…

Dick Dowdell

I’m a US Army veteran of the Vietnam War, have a wonderful wife and family, am a working software engineer, and a committed citizen.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store