Who am I?

Armagan Amcalar
Head of Software Engineering @ unu GmbH
Founder @ Lonca Works

     dashersw            dashersw

AUTHORED ON GITHUB

dashersw

organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations.

— Melvin Conway, 1968

Let's START with the END:

dashersw

The roots

Why do we need code?

Why do we need high level languages?

Why do we need software architecture?

THIS IS A HUMAN PROBLEM!

dashersw

5 Properties of Microservices

Auto discovery

Zero-configuration

Highly-redundant

Fault-tolerant

Self-healing

And modular systems

This is actually how systems are built for ages

Microservices enforce decoupling

IT'S ALL ABOUT DECOUPLING

dashersw

dashersw

MICROSERVICES NEED DEVOPS

Individual development
Individual technology choices
Individual builds
Individual deployments
Individual scaling

 

... see a pattern?

this is All about making peace with the fact that we don’t want to communicate.

dashersw

dashersw

It all boils down to...

A POWER STRUGGLE.

dashersw

this is generation y

If Millennials are not a part of the process of input and forward thinking, they are most likely to disengage from the workplace and find meaning elsewhere.

Millennials seek work that is meaningful and solidifies their self-efficacy. ... millennialssense of self and self-efficacy makes them less stressed or fearful of changing jobs or building safety nets.

dashersw

generation y

They can't be bound by the earlier decisions of others

Require extreme autonomy

Independence, freedom, ownership

"My success doesn't depend on your success"

"I want to grow. I can't wait for you."

Fear of missing out

microservices is an extreme form of good architecture

A good architecture makes the system easy to change, in all the ways that it must change, by leaving options open.

Teams do not interfere with each other during development.

Partitioning the system into well-isolated, independently developable components

Those components are allocated to teams that can work independently of each other.

dashersw

source: Clean Architecture: A Craftsman's Guide to Software Structure and Design — Robert C. Martin

how to succeed with microservices

Observe your team's psychology and build for that

Create space and infrastructure for autonomy

Double down on communication

dashersw

Microservices is not a technical solution

It's a collaboration solution that improves efficiency by decoupling communication from implementation

dashersw

Communication isn't only talking

You don't need scrum masters or project managers to facilitate communication

 

Get the right team setup, give the right ownership

Define and document areas of responsibility

Document public interfaces and functionality

Leave no room for interpretation and frustration

dashersw

change mode of ownership

Abolish responsibilities based on layers of a system:
the UI, the business logic, the database, the infrastructure

 

Distribute product / feature responsibilities

A team / developer is responsible for a thin slice through all layers

 

Immense chance for full-stack developers

This is why JavaScript is so popular with Gen Y

dashersw

organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations.

dashersw

— Melvin Conway, 1968

Let's conclude with the beginning:

thank you!

Let's keep in touch!

Armagan Amcalar

armagan@amcalar.com
   dashersw
   dashersw

The Human Side of Microservices

By Armağan Amcalar

The Human Side of Microservices

“organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations” — Melvin Conway, 1968 Microservices is an architectural shift, a huge topic that demands change in every aspect of software delivery. It is also more than a technical problem — your microservices architecture can be as solid and efficient as your team communication. This talk tries to describe the human aspect of implementing a microservices approach, and how this affects team communication.

  • 1,962