Microservices for development teams

International PHP Conference | May 29 - June 2, 2017, Berlin
4
Apr

Applying a microservice architecture to development teams

IPC Arrow loosely coupled tightly aligned

Arthimedes/Shutterstock.com

For larger teams, breaking down your application into loosely coupled components can be a real game changer. This is how it's done.

One of the most mentioned perks of introducing microservices is autonomy. Each service is independent from any other service, only providing a well-defined (and hopefully versioned) public API. To the outside world it does not matter which technologies or even programming languages are being used internally, which gives a lot of freedom to the developers writing the services.

Despite the ongoing hype, microservices are not for everyone. The complexity they add usually outweights the benefits for a single small development team, which might be better off by focussing on separation of concerns on a lower level to facilitate a later refactoring to microservices when needed.

For larger teams though, breaking down your application into loosely coupled components can be a real game changer – not only for technical reasons, but also because it allows you to apply the same pattern to your developers. Instead of having one large, hard to manage team, you could split it up the same way you split up your application!

No autonomy without alignment

The idea of splitting up your core application into multiple services can also be applied to your team setup: in theory, every team could have “their” microservice, since the only thing they need to agree on with other teams is the public API.

This also means that you could easily end up having services written in different languages. Maybe team A implements a new service in Go just because they heard about it on a conference and wanted to try it, while team B uses PHP 7 along with the Phalcon framework. What you will get are highly specialised teams, and conventions like collective code ownership or even the most basic coding guidelines will not be applicable anymore.

There are certainly several ways to avoid this, but one very efficient one is setting de-facto standards that every team commits to. This should not only be a set of languages to be used but also conventions like coding style or CI processes. By establishing these standards, it will be a lot easier for developers to switch teams, as they can focus on learning details about the domain instead of fiddeling with technical differences or even having to learn a new programming language.

Loosely coupled, tightly aligned

Achieving team autonomy is great and can give your company a huge productivity boost, but it also requires a great deal of alignment across teams in order to keep going into the right direction. As always, communication is the key to success.

Stay tuned!

Behind the Tracks of IPC

PHP Core & Coding
Best practices & applications

General Web Development
Broader web development topics

DevOps & Continuous Delivery
Learn about DevOps and transform your development pipeline

Software Architecture
All about PHP frameworks, concepts & environments

Web Security
All about web security

Software Quality
More about software testing tools & strategies

Agile & Company Culture
Getting agile right is so important

Content Management Systems
Sessions on content management systems

#slideless (pure coding)
See how technology really works

PHP Frameworks
All about PHP Frameworks

Docker, Kubernetes, Cloud
Cloud-based & native apps