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

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

Upload: others

Post on 27-Jul-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

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СПАСИБО!