InfoQ

The Software Architects' Newsletter
October 2017

We are delighted to be able to share our third monthly architects’ newsletter with you, which we will send on the last Friday of every month. InfoQ strives to facilitate the spread of knowledge and innovation within this space, and in this newsletter we aim to curate and summarise key learnings from news items, articles and presentations created by industry peers, both on InfoQ and across the web. We aim to keep readers informed and educated about emerging trends, peer-validated early adoption of technologies, and architectural best practices, and are always keen to receive feedback from our readers.

If you do not want to receive it in future, please unsubscribe.

Unsubscribe

News

Microservices as Evolutionary Architecture

Christian Posta, Chief Architect of Cloud Application Development at Red Hat, continued his insightful blog post series "Low-risk Monolith to Microservice Evolution". Posta discusses how "monolithic" applications typically provide a lot of value for the business, and developers must mitigate the risk of negatively impacting these systems as the organisation iterates and expands. This leads to an often-overlooked fact "when we start to explore a monolith to microservice journey we're going to quickly run into the undesirable, sometimes nasty parts that we cannot just wish away."

Posta presents a comprehensive walk-through of migrating a sample TicketMonster monolithic application towards a microservices-based application, using technologies such as Spring Boot, JBoss Wildfly, Debezium.io, Istio, Kubernetes and OpenShift. All code and documentation (in progress) can be found in the ticket-monster-msa GitHub repository.

Posta also took part in this month's InfoQ Cloud Panel Discussion "Defining Cloud Native", alongside Kevin Hoffman and Matt Stine, and provided additional comments on the inherent relationship between cloud technologies and the microservice architectural style.

October also saw the release of the book "Building Evolutionary Architecture" by Neal Ford, Rebecca Parsons, and Patrick Kua. A core concept presented early in the book is the use of fitness functions to track the evolution of system quality attributes like auditability, performance, security, and scalability over time. The authors argue that engineering should focus on incremental changes, and examine concepts such as architectural and data coupling and migration strategies. A series of antipatterns are also presented, the title of which are typically self-descriptive, such as "Vendor King", "Core Reuse Abuse" and "Resume-Driven Development".

Simon Brown has recently argued that "evolutionary design still requires up front thinking", and making some existing systems more evolvable won't be easy. However, the authors state that there is not really a choice: "The software development ecosystem is going to continue to churn out new ideas from unexpected places. Organizations who can react and thrive in that environment will have a serious advantage."

Java Microservices: EE4J, MicroProfile and Open Liberty

In September Oracle announced that the Eclipse Foundation would be the new home for Java EE. After the JavaOne conference this month InfoQ sat down with David Blevins, CEO of Tomitribe and long-time Java EE community leader, and discussed the future of the platform. Blevins began the discussion by stating that before the move of Java EE to the Eclipse foundation it was often difficult for developers to easily get involved with contributing to the Java EE specification and code.

The emergence of the MicroProfile project over the last year has provided insight into how a more open Java EE community could flourish, and this will be positive for both the traditional Java EE and Spring technologies. The discussion concluded with Blevins making a call-to-action towards cloud vendors, suggesting that the implementation of a EE4J-enabled Platform-as-a-Service (PaaS) could be a "potential goldmine" that allows organisations looking to "lift and shift" Java EE workloads to the cloud.

On a related topic, IBM this month released Open Liberty, an open source implementation of their WebSphere Liberty application server. This new release supports the latest versions of both Eclipse MicroProfile and Java EE APIs for building microservices and cloud-native applications. First introduced in 2012, WebSphere Liberty was designed to be small and lightweight, and has served Java EE 7 certified applications that are deployed in major platforms such as Docker, Kubernetes, and Cloud Foundry.

The release of Open Liberty comes alongside IBM's announcement of the open sourcing of their own JVM as Eclipse Open J9. Earlier this year, IBM also collaborated with Google and Lyft to introduce another open source project, Istio, a service mesh for monitoring microservices. Open Liberty, combined with Open J9 and Istio, will serve as a full Java stack for developers to build Java microservices and cloud-native applications. Developers can also take advantage of Open Liberty Tools, a set of lightweight tools for developing, assembling, and deploying apps to Open Liberty, with all Open Liberty repositories available from GitHub.

Case Studies

Reactive Domain-Driven Design

Although there is a lot of power in using microservices and reactive models, they bring with them the uncertainty of not knowing where things stand at any point in time. Message-driven systems can lead developers to often wonder about seemingly simple questions, such as has someone received my message, and were messages received out of order?

Speaking during a keynote presentation at the Explore DDD conference, Vaughn Vernon said trying to understand such questions, and react to the results, is the essence of Domain-Driven Design. Using a Ubiquitous Language to describe a system composed of Bounded Contexts helps to tackle the complexity of distributed systems.

Concepts of uncertainty, especially regarding communication between bounded contexts, need to become part of the ubiquitous language. Vernon, author of Implementing Domain-Driven Design and Reactive Messaging Patterns with the Actor Model, said creating a good context map was vital to a project. Vernon believes that uncertainty is difficult to deal with because developers have become "addicted" to ideas like blocking calls, expecting a proper ordering of things, and database locking.

In reactive systems, those long-held beliefs start to break down. Businesses must embrace a mindset that considers uncertainty, and it must be modeled in the open, with business decision makers, not within software development teams. Don't try to create a façade that allows you to think you aren't in a state of uncertainty. Rather, make your best effort and model the uncertainty.

To keep up-to-date with everything InfoQ is publishing, you can follow the topics of Microservices on InfoQ.

This is the third issue of a monthly newsletter, focusing exclusively on software architecture. We thought it would be valuable for you to get a quick overview of things you might like to keep an eye on. If this is not the case, you can unsubscribe using the link below.

Unsubscribe

Forwarded email? Subscribe and get your own copy.

Subscribe