Trivadis TechEvent 2016 Microservices, Containers, CQRS, Actors in .NET for the Cloud by Christoph...

33
BASLE BERN BRUGG DÜSSELDORF FRANKFURT A.M. FREIBURG I.BR. GENEVA HAMBURG COPENHAGEN LAUSANNE MUNICH STUTTGART VIENNA ZURICH Modern .NET Software Architecture Where are we today? Christoph Pletz, CL - SOL Manuel Meyer, ZH - AD

Transcript of Trivadis TechEvent 2016 Microservices, Containers, CQRS, Actors in .NET for the Cloud by Christoph...

Page 1: Trivadis TechEvent 2016 Microservices, Containers, CQRS, Actors in .NET for the Cloud by Christoph Pletz and Manuel Meyer

BASLE BERN BRUGG DÜSSELDORF FRANKFURT A.M. FREIBURG I.BR. GENEVA

HAMBURG COPENHAGEN LAUSANNE MUNICH STUTTGART VIENNA ZURICH

Modern .NET Software ArchitectureWhere are we today?

Christoph Pletz, CL-SOLManuel Meyer, ZH-AD

Page 2: Trivadis TechEvent 2016 Microservices, Containers, CQRS, Actors in .NET for the Cloud by Christoph Pletz and Manuel Meyer

Agenda

Modern .NET Software Architecture2 09.09.2016

1. TicTacTech

2. A Brief History of Software Engineering

3. Microservice Characteristics

4. Microservice Examples

5. Inside TicTacTech

6. Summary

Page 3: Trivadis TechEvent 2016 Microservices, Containers, CQRS, Actors in .NET for the Cloud by Christoph Pletz and Manuel Meyer

TicTacTech

Modern .NET Software Architecture3 09.09.2016

GamePlayer Statistics

Page 4: Trivadis TechEvent 2016 Microservices, Containers, CQRS, Actors in .NET for the Cloud by Christoph Pletz and Manuel Meyer

TicTacTech

Modern .NET Software Architecture4 09.09.2016

http://tictactech.azurewebsites.net/

On Android I had problems

with Chrome, but it works

great with Opera !?

Page 5: Trivadis TechEvent 2016 Microservices, Containers, CQRS, Actors in .NET for the Cloud by Christoph Pletz and Manuel Meyer

Modern .NET Software Architecture5 09.09.2016

A Brief History of

Sofware Engineering

Page 6: Trivadis TechEvent 2016 Microservices, Containers, CQRS, Actors in .NET for the Cloud by Christoph Pletz and Manuel Meyer

A Look Around Today

Modern .NET Software Architecture6 09.09.2016

Google Trend „Microservices“

Page 7: Trivadis TechEvent 2016 Microservices, Containers, CQRS, Actors in .NET for the Cloud by Christoph Pletz and Manuel Meyer

A Look Around Today

Modern .NET Software Architecture7 09.09.2016

Google Trend „SOA“

Page 8: Trivadis TechEvent 2016 Microservices, Containers, CQRS, Actors in .NET for the Cloud by Christoph Pletz and Manuel Meyer

A Look Around Today

Modern .NET Software Architecture8 09.09.2016

Google Trend „SOA“

Page 9: Trivadis TechEvent 2016 Microservices, Containers, CQRS, Actors in .NET for the Cloud by Christoph Pletz and Manuel Meyer

A Look Around Today

Modern .NET Software Architecture9 09.09.2016

Google Trend „Microservices“ versus „Service Oriented Architecture“

Page 10: Trivadis TechEvent 2016 Microservices, Containers, CQRS, Actors in .NET for the Cloud by Christoph Pletz and Manuel Meyer

A Brief History of Software Engineering

Modern .NET Software Architecture10 09.09.2016

1940

09.09.2016Mark 1

1978

The UNIX

Philosophy

(DOTADIW)

1970

WWW

1989

1996

SOA

2001

Agile

Manifesto

RESTful

Services

2000

2003

DDD

2002

The Cloud

2007

DevOps

2005

‘’Micro-

Web-

Services‘’

2011

Microservices

2013

Reactive

Manifesto

Page 11: Trivadis TechEvent 2016 Microservices, Containers, CQRS, Actors in .NET for the Cloud by Christoph Pletz and Manuel Meyer

The Unix Philosophy (1978) - DOTADIW

Modern .NET Software Architecture11 09.09.2016

Page 12: Trivadis TechEvent 2016 Microservices, Containers, CQRS, Actors in .NET for the Cloud by Christoph Pletz and Manuel Meyer

Modern .NET Software Architecture12 09.09.2016

Page 13: Trivadis TechEvent 2016 Microservices, Containers, CQRS, Actors in .NET for the Cloud by Christoph Pletz and Manuel Meyer

The Unix Philosophy (1978) - DOTADIW

Modern .NET Software Architecture13 09.09.2016

Page 14: Trivadis TechEvent 2016 Microservices, Containers, CQRS, Actors in .NET for the Cloud by Christoph Pletz and Manuel Meyer

The Unix Philosophy (1978) - DOTADIW

Modern .NET Software Architecture14 09.09.2016

„Do one thing and do it well“

Make each program do one thing well

Expect the output of every program to become the input to another

Design software and systems to be tried early, don‘t hesitate to throw away

Use and make tools.

Page 15: Trivadis TechEvent 2016 Microservices, Containers, CQRS, Actors in .NET for the Cloud by Christoph Pletz and Manuel Meyer

The Reactive Manifesto

Modern .NET Software Architecture15 09.09.2016

https://www.reactivemanifesto.org/

REACTIVE

Elastic

Responsive Resilient

Message

Driven

Page 16: Trivadis TechEvent 2016 Microservices, Containers, CQRS, Actors in .NET for the Cloud by Christoph Pletz and Manuel Meyer

Modern .NET Software Architecture16 09.09.2016

Microservice Characteristics

Page 17: Trivadis TechEvent 2016 Microservices, Containers, CQRS, Actors in .NET for the Cloud by Christoph Pletz and Manuel Meyer

The Evolution of Software Architecture

Modern .NET Software Architecture17 09.09.2016

Page 18: Trivadis TechEvent 2016 Microservices, Containers, CQRS, Actors in .NET for the Cloud by Christoph Pletz and Manuel Meyer

The Evolution of Software Architecture

Modern .NET Software Architecture18 09.09.2016

Page 19: Trivadis TechEvent 2016 Microservices, Containers, CQRS, Actors in .NET for the Cloud by Christoph Pletz and Manuel Meyer

The Evolution of Software Architecture

Modern .NET Software Architecture19 09.09.2016

Page 20: Trivadis TechEvent 2016 Microservices, Containers, CQRS, Actors in .NET for the Cloud by Christoph Pletz and Manuel Meyer

Microservice Characteristics

Modern .NET Software Architecture20 09.09.2016

Small and self contained, owns its datasource, owned by 1 team

Easy to replace, individually deployable and disposable

Organized around capabilities

Implemented with „what fits best“

„Smart endpoints and dumb pipes“

Designed for failure

http://martinfowler.com/articles/microservices.html/

Page 21: Trivadis TechEvent 2016 Microservices, Containers, CQRS, Actors in .NET for the Cloud by Christoph Pletz and Manuel Meyer

N-Tier / X-Layer Microservice

Modern .NET Software Architecture21 09.09.2016

Page 22: Trivadis TechEvent 2016 Microservices, Containers, CQRS, Actors in .NET for the Cloud by Christoph Pletz and Manuel Meyer

Modern .NET Software Architecture22 09.09.2016

Microservice Examples

Page 23: Trivadis TechEvent 2016 Microservices, Containers, CQRS, Actors in .NET for the Cloud by Christoph Pletz and Manuel Meyer

Microservice Example 1: Microsoft Azure

Modern .NET Software Architecture23 09.09.2016

Clemens Vasters: Utopia ESB

http://channel9.msdn.com/Blogs/Subscribe/Wheres-the-ESB

Page 24: Trivadis TechEvent 2016 Microservices, Containers, CQRS, Actors in .NET for the Cloud by Christoph Pletz and Manuel Meyer

Microservice Example 2

Modern .NET Software Architecture24 09.09.2016

«MicroMonolith - Top anti-

patterns of distributed systems»

- Michal Franc

NDC Oslo 2016

https://vimeo.com/171704583

Page 25: Trivadis TechEvent 2016 Microservices, Containers, CQRS, Actors in .NET for the Cloud by Christoph Pletz and Manuel Meyer

Microservice Example 3

Modern .NET Software Architecture25 09.09.2016

«A High-Performance Solution

to Microservices UI

Composition»

NDC Oslo 2016

https://vimeo.com/171927597

Page 26: Trivadis TechEvent 2016 Microservices, Containers, CQRS, Actors in .NET for the Cloud by Christoph Pletz and Manuel Meyer

Modern .NET Software Architecture26 09.09.2016

Inside TicTacTech

Page 27: Trivadis TechEvent 2016 Microservices, Containers, CQRS, Actors in .NET for the Cloud by Christoph Pletz and Manuel Meyer

ServiceBus

Modern .NET Software Architecture27 09.09.2016

PlayerChanged

Logged-In

HTML - JS

Web API

Data Collector

Sig

nalR

“Branding Service”

Arch

itetu

reO

verv

iew

HTML - JS

Web API

Reliable Actors

Reliable Service

Service Bus Listener

Game Events

Sig

nalR

Web API

HTML - JS

Document DB

Page 28: Trivadis TechEvent 2016 Microservices, Containers, CQRS, Actors in .NET for the Cloud by Christoph Pletz and Manuel Meyer

Microservice Example 4: TicTacTech

Modern .NET Software Architecture28 09.09.2016

PlayerService GameService StatisticsService User Interface

Azure ServiceBus

aurelia.io

Azure Web Job

Service Fabric

Reliable Actors

Sql Server

Page 29: Trivadis TechEvent 2016 Microservices, Containers, CQRS, Actors in .NET for the Cloud by Christoph Pletz and Manuel Meyer

Azure Service Fabric

Modern .NET Software Architecture29 09.09.2016

Cluster Management

Stateful Middle Tier

Runs any EXE

Specific APIs

– Reliable Actors

– Reliable Services

Rolling Updates

Page 30: Trivadis TechEvent 2016 Microservices, Containers, CQRS, Actors in .NET for the Cloud by Christoph Pletz and Manuel Meyer

Actors: “Objects done right”

Modern .NET Software Architecture30 09.09.2016

Page 31: Trivadis TechEvent 2016 Microservices, Containers, CQRS, Actors in .NET for the Cloud by Christoph Pletz and Manuel Meyer

Other Technologies to look at

Modern .NET Software Architecture31 09.09.2016

Actors

Messaging

– Server

– Server to UI

NServiceBus

Page 32: Trivadis TechEvent 2016 Microservices, Containers, CQRS, Actors in .NET for the Cloud by Christoph Pletz and Manuel Meyer

Microservice Challenges

Modern .NET Software Architecture32 09.09.2016

UI Composition – How to separate UI parts?

Complexity

Logging / Monitoring

Integration testing

Deployment

Page 33: Trivadis TechEvent 2016 Microservices, Containers, CQRS, Actors in .NET for the Cloud by Christoph Pletz and Manuel Meyer

Thank You!Manuel Meyer ([email protected])

Christoph Pletz ([email protected])

09.09.2016 Modern .NET Software Architecture33