Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage News Kevin Webber on Migrating Java to the Cloud

Kevin Webber on Migrating Java to the Cloud


Kevin Webber spoke at Reactive Summit 2017 Conference last month about migrating enterprise Java applications to the cloud by leveraging techniques like Event Storming, Domain Driven Design, and Cloud Native.

He started off the presentation by stating the enterprise software continues to be built piecemeal as applications, rather than systems, and includes complex integrations. Traditional infrastructures are active/passive with crude failover and support complex state replication between active and passive systems.

The first few decisions an architect must make ("The First mile") on a modernization project are critical. He talked about key architectural decisions and how to make those decisions guided by the principles of Domain-Driven Design. Event storming brings the key stakeholders together in a collaborative environment in order to define the business processes involved and how to translate those processes into event-driven systems. Teams should focus on the most interesting events that already occur within the business.

Other concepts like Anti-corruption Layer (ACL) and Strangler Pattern are also useful in the migration of legacy sysems into Reactive systems.

Onion architecture fits nicely with Domain Driven Design concepts. The following layers in this architecture can help with implementing different aspects.

  • Infrastructure: we can use this layer to implement cross-cutting requirements like health check, tracing, and authentication.
  • API: useful for routing and data validations
  • Domain: manage the bounded context in this layer
  • Core: this is where we mange the Aggregates

Webber discussed what it means to be Cloud Native for applications. The apps need to be container packaged, dynamically managed and microservices oriented.

Webber also talked about the microservices architecture and recommeded the teams to start with monolith models first and use microservices as a refactoring technique to decompose the systems into multiple microservices. The microservices model helps with not just distributed systems, but also distributed teams.

Many teams focus on decomposing the systems at a service level but leave the data layer coupled. In this architecture, any data model changes impact multiple services. 

InfoQ spoke with Kevin after the conference to learn more about migrating Java applications to cloud infrastructures.

He said if microservices have point-to-point interaction, then it's going to be chaotic in terms of the services governance. It's important to keep in mind that if one microservice changes and another one is impacted, then they are not really independent microservices and both should be combined into a single service.

Microservices composition can be achieved with the PubSub model using a server like Kafka to post events to the queue and then store in Event Log Store using a NoSQL database like Cassandra.

For more details on these topics, readers can checkout Webber’s mini-book from O’Reilly, Migrating Java to the Cloud.


Rate this Article