Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ


Choose your language

InfoQ Homepage News microXchg Microservices Conference Day One Summary: DDD, Platforms, and Organisational Impact

microXchg Microservices Conference Day One Summary: DDD, Platforms, and Organisational Impact

This item in japanese

At the microXchg conference, held in Berlin, a group of software development practitioners shared their latest learnings about the microservice architectural style. Topics discussed included functional service design, integrating Domain-Driven Design (DDD) and REST, creating microservice-powered websites using transclusion, choosing a microservice runtime platform, the organisational and people impact of microservices, and how microservices can be used to power Internet of Things (IoT) applications.

The opening talk of the microXchg microservices conference was delivered by Uwe Friedrichsen, and discussed the core concepts of 'Resilient Functional Service Design'. A more detailed InfoQ news item has already been written on this talk, and key takeaways included: microservice developers should learn about fault tolerant design patterns (e.g. circuit break, bulkhead) and caching, but not utilise them to mitigate fundamentally bad (overly-coupled) system design; learn core Domain-Driven Design (DDD) and modularity concepts; aim for replaceability rather than reuse; and model the dynamic behaviour of the system.

Don't start with the static domain model: the magic is in the dynamic behaviour of the system

Next Oliver Gierke presented 'DDD & REST - Domain-Driven APIs or the Web', and began his talk with a recommendation to the audience to read the InfoQ 'Domain Driven Design Quickly' book, as this provides a good primer for the core concepts of DDD. Gierke suggested that when developing a domain model, software engineers should strive to 'make implicit concepts explicit', and recommended watching 'Power Use of Value Objects in DDD' in order to develop further understanding on this topic. Although many developers may be tempted to reference the database schema as the canonical model of the domain, a DDD-style model expresses business concepts more clearly than, for example, a simple foreign key relationship.

A DDD domain model reveals more than a database schema

Gierke stated clearly that the REST is not equal to 'CRUD via HTTP', and that care should be taken in the design of data exposed to clients, i.e. the view. A four-level model of API operation was presented, which moved from explicit operations via an API, some operations as events, to adoption of event sourcing (ES) and command query responsibility segregation (CQRS). Gierke stated that the concept of ‘hypermedia as the engine of application state (HATEOAS)' is valuable, and can be used to communicate to clients which actions or state transitions are allowed, rather than publishing this as separate documentation about the domain. This may be swapping domain knowledge for protocol complexity within clients, but Gierke questioned the audience if this was a useful trade-off:

HATEOAS can be used to indicate to clients which actions or state transitions are allowable. This may be trading domain knowledge with protocol complexity implemented within clients, but ask yourself ‘what changes more regularly - your business rules or the protocols you use?'

The third talk of the day 'Microservice Websites' was presented by Gustaf Nilsson Kotte, and discussed the principles behind the effective construction of websites delivered as a single site, but composed via multiple microservices. The core premise of the talk was that each microservice should provide its own frontend, and the resulting user-facing page should be constructed using transclusion. ‘Edge-Side Includes (ESI)' can provide transclusion on the server-side, for example via Akamai or Varnish, and a range of frameworks provide transclusion on a JavaScript-based client side, such as AngularJS and h-include. A range of advantages and disadvantages for each approach was presented:

Server transclusion vs client transclusion

Kotte concluded the talk by stating that goals for a microservice-based website should include continuous delivery, decentralised governance, and optimisation for good performance on mobile devices and cellular networks. Transcluding server-side resources with no global client-side dependencies can provide a methodology for web page (and microservices) decomposition, which may promote the aforementioned goals. Additional information on this topic can be found in a recent 'Microservice Websites' article by Kotte.

Dustin Huptas presented 'AaaS – Anything as a Service. Anything left to do, then?', and cautioned the audience that although many service providers offer 'X as a Service' deployment platforms, care should be taken when choosing the most appropriate solution for your applications. Huptas suggested that monolithic and classical-SOA applications are most suited to physical infrastructure and infrastructure as a service (IaaS); microservice-based applications to IaaS, Platform as a Service (PaaS) and the emerging Function as a Service (Faas) offerings; and ‘serverless' style applications to PaaS and FaaS.

Architecture / Technology as a service models

Huptas presented the 'Adaptive IT Cube' and discussed that any migration from one deployment platform to another should consider architecture, technology, and organisation (including culture and process). Care must be taken to use a graduated approach to a migration, and organisations must appreciate the transformational actions such as migrating or updating software applications require long-term commitment.

Next, Daniel Bryant (the author of this article) presented 'Microservices: The Organisational and People Impact'. The core message of the presentation was that many challenges presented when adopting microservices are based primarily around organisational, process or people issues. Bryant suggested that when deciding to implement a microservice-based application, organisations should focus on defining and communicating clear goals (including business value and technical strategy), optimising for feedback throughout the organisation and technical stack; and ensuring that responsibilities are clearly defined within the organisation.

communicate the strategic vision

Before setting goals, Bryant suggested that organisations must develop situational awareness, and suggested utilising Wardley Mapping and value stream analysis. Strong technical leadership (shared across teams) is also vital, and the ‘innersource' model promotes the use of lessons learned via large scale open source projects. Metrics and signals must be ‘baked in' to microservices to demonstrate business value, architectural quality, and operational effectiveness. Concluding the talk, Bryant suggested that responsibilities have to be defined when first implementing a DevOps methodology, and stated that continuous delivery is often a catalyst to drive lasting change with a software delivery process, particularly with the increased integration complexity associated with building a microservices-based application.

The first day of the conference concluded with a keynote from Fred George, 'IoT and Microservices in the Home'. George stated that we are now living in the 'age of the agents', as there are assistive technologies everywhere, for example, Apple's Siri, Google Home, and Microsoft Cortana. The primary innovation with these Internet of Things (IoT) technologies is not voice recognition, but the interaction of backing services that can be created by end users.

George presented a guide to the IoT technologies he has deployed within his own home, including an Amazon Echo, Phillips' IoT light bulbs, Apple TV, and IoT enabled switches. The software choreographing the devices is created as Ruby and Java microservices deployed via Docker Swarm, and communicating using RabbitMQ as an event bus. Key architectural principles for the software developed to glue together the IoT components included: just-in-time design; behaviour-oriented services that are implemented as small as possible; publish actions/conclusions as global events; and establish reliability using idempotency and redundancy of hardware.

The microXchg conference took place in Berlin on the 16th and 17th February, and video recordings of all of the talks can be found on the conference's YouTube channel.

Rate this Article