Микросервисы как съесть слона. · 2019-05-21 · Azure. Docker. Docker...

25
Микросервисы: как съесть слона. DEVPRO, ТОМСК, 20.05.2017

Transcript of Микросервисы как съесть слона. · 2019-05-21 · Azure. Docker. Docker...

Page 1: Микросервисы как съесть слона. · 2019-05-21 · Azure. Docker. Docker ... Images from MS Nano/SQL Server. Docker Ecosystem. Demo VS 2017. MS Loves Containers.

Микросервисы: как съесть слона.DEVPRO, ТОМСК, 20.05.2017

Page 2: Микросервисы как съесть слона. · 2019-05-21 · Azure. Docker. Docker ... Images from MS Nano/SQL Server. Docker Ecosystem. Demo VS 2017. MS Loves Containers.

Кто я?

Игорь Бычков

Softwareentwicklungsleiter

Löwenstein Medical Technology

Руководитель разработки, MCC Tomsk

[email protected]

Page 3: Микросервисы как съесть слона. · 2019-05-21 · Azure. Docker. Docker ... Images from MS Nano/SQL Server. Docker Ecosystem. Demo VS 2017. MS Loves Containers.

http://mcc-tomsk.de http://www.loewensteinmedical.de

Page 4: Микросервисы как съесть слона. · 2019-05-21 · Azure. Docker. Docker ... Images from MS Nano/SQL Server. Docker Ecosystem. Demo VS 2017. MS Loves Containers.
Page 5: Микросервисы как съесть слона. · 2019-05-21 · Azure. Docker. Docker ... Images from MS Nano/SQL Server. Docker Ecosystem. Demo VS 2017. MS Loves Containers.

Microservices?

Page 6: Микросервисы как съесть слона. · 2019-05-21 · Azure. Docker. Docker ... Images from MS Nano/SQL Server. Docker Ecosystem. Demo VS 2017. MS Loves Containers.

DefinitionIn computing, microservices is a software architecture style, in which complex applications are composed of small, independent processes communicating with each other using language-agnostic APIs.

These services are small, highly decoupled and focus on doing a small task.

https://en.wikipedia.org/wiki/Microservices

….. microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services, which may be written in different programming languages and use different data storage technologies.

-- James Lewis and Martin Fowler

Page 7: Микросервисы как съесть слона. · 2019-05-21 · Azure. Docker. Docker ... Images from MS Nano/SQL Server. Docker Ecosystem. Demo VS 2017. MS Loves Containers.

Definition

Small (?)Lightweight InterfacesIndependent DeployableAround business Capabilities

Page 8: Микросервисы как съесть слона. · 2019-05-21 · Azure. Docker. Docker ... Images from MS Nano/SQL Server. Docker Ecosystem. Demo VS 2017. MS Loves Containers.

Monolith

Presentation

Data

Domain

DB

US1 US2

Any organization that

designs a system

(defined broadly) will

produce a design

whose structure is a

copy of the

organization's

communication

structure.

-- Melvyn Conway,

1967

Done!

Blocker

In progress

Page 9: Микросервисы как съесть слона. · 2019-05-21 · Azure. Docker. Docker ... Images from MS Nano/SQL Server. Docker Ecosystem. Demo VS 2017. MS Loves Containers.

Scaling

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

Page 10: Микросервисы как съесть слона. · 2019-05-21 · Azure. Docker. Docker ... Images from MS Nano/SQL Server. Docker Ecosystem. Demo VS 2017. MS Loves Containers.

Example

Browser Mobile Device

Catalog Service Review Service Order Service

API Gateway

DB DB DB

Page 11: Микросервисы как съесть слона. · 2019-05-21 · Azure. Docker. Docker ... Images from MS Nano/SQL Server. Docker Ecosystem. Demo VS 2017. MS Loves Containers.

Lighweight Interfaces

Service 1

Service 2

Service 1

Service 2

MQ

REST Messaging

AsyncSync

Page 12: Микросервисы как съесть слона. · 2019-05-21 · Azure. Docker. Docker ... Images from MS Nano/SQL Server. Docker Ecosystem. Demo VS 2017. MS Loves Containers.

Principles of Microservices

%https://martinfowler.com/articles/microservices.html

• Services, not Libraries• Business Domains, not technologies• Products, not Projects • Deployed independently• Smart endpoints and dumb pipes• Decentralized everything• Automatization of everything• Design for failure• Evolutionary Design

Page 13: Микросервисы как съесть слона. · 2019-05-21 · Azure. Docker. Docker ... Images from MS Nano/SQL Server. Docker Ecosystem. Demo VS 2017. MS Loves Containers.

Pros and ConsIndependent deployment

Parallel development

2-pizzas possible

Better code ownership

Technology/Platform diversity

Horizontal Scalability

PaaS

Operations Overhead

Automation Required

Implicit Interfaces

Eventual Consistency

Distributed System Complexity

Testing

Logging/Monitoring

Debugging

Page 14: Микросервисы как съесть слона. · 2019-05-21 · Azure. Docker. Docker ... Images from MS Nano/SQL Server. Docker Ecosystem. Demo VS 2017. MS Loves Containers.

Why now?

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

Infrastructure / OrchestrationLanguagesCloudTools

Our ExperienceDocker.NET CoreAzure

Page 15: Микросервисы как съесть слона. · 2019-05-21 · Azure. Docker. Docker ... Images from MS Nano/SQL Server. Docker Ecosystem. Demo VS 2017. MS Loves Containers.

Docker

Page 16: Микросервисы как съесть слона. · 2019-05-21 · Azure. Docker. Docker ... Images from MS Nano/SQL Server. Docker Ecosystem. Demo VS 2017. MS Loves Containers.

Docker

http://i1.wp.com/www.chinasmack.com/wp-content/uploads/2013/09/historical-shanghai-photos-early-20th-century-14.jpghttp://www.bbc.com/news/uk-england-suffolk-30700269

Page 17: Микросервисы как съесть слона. · 2019-05-21 · Azure. Docker. Docker ... Images from MS Nano/SQL Server. Docker Ecosystem. Demo VS 2017. MS Loves Containers.

DemoHello World ASP.NET Core Web API

Linux on Windows

Pack and Run

Page 18: Микросервисы как съесть слона. · 2019-05-21 · Azure. Docker. Docker ... Images from MS Nano/SQL Server. Docker Ecosystem. Demo VS 2017. MS Loves Containers.

Docker vs VM

http://stackoverflow.com/questions/16047306/how-is-docker-different-from-a-normal-virtual-machine

Page 19: Микросервисы как съесть слона. · 2019-05-21 · Azure. Docker. Docker ... Images from MS Nano/SQL Server. Docker Ecosystem. Demo VS 2017. MS Loves Containers.

MS loves Containers

Page 20: Микросервисы как съесть слона. · 2019-05-21 · Azure. Docker. Docker ... Images from MS Nano/SQL Server. Docker Ecosystem. Demo VS 2017. MS Loves Containers.

DemoDocker for Windows

Images from MS

Nano/SQL Server

Page 21: Микросервисы как съесть слона. · 2019-05-21 · Azure. Docker. Docker ... Images from MS Nano/SQL Server. Docker Ecosystem. Demo VS 2017. MS Loves Containers.

Docker Ecosystem

Page 22: Микросервисы как съесть слона. · 2019-05-21 · Azure. Docker. Docker ... Images from MS Nano/SQL Server. Docker Ecosystem. Demo VS 2017. MS Loves Containers.

DemoVS 2017

Page 23: Микросервисы как съесть слона. · 2019-05-21 · Azure. Docker. Docker ... Images from MS Nano/SQL Server. Docker Ecosystem. Demo VS 2017. MS Loves Containers.

MS Loves Containers

Page 24: Микросервисы как съесть слона. · 2019-05-21 · Azure. Docker. Docker ... Images from MS Nano/SQL Server. Docker Ecosystem. Demo VS 2017. MS Loves Containers.

Important WordsDDD

REST – Swagger and Co.

Event Bus

CQRS

Event Sourcing

OAuth 2.0

Page 25: Микросервисы как съесть слона. · 2019-05-21 · Azure. Docker. Docker ... Images from MS Nano/SQL Server. Docker Ecosystem. Demo VS 2017. MS Loves Containers.

Q and AСПАСИБО!