Top Banner
MICROSERVICES IN REALITY: INCEPTION Dmitry Petukhov / Upwork Mobile API [email protected]
37

Dmitry Petukhov (Provectus): "МИКРОСЕРВИСЫ НА ПРАКТИКЕ. НАЧАЛО."

Jan 22, 2018

Download

Technology

Provectus
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Dmitry Petukhov (Provectus): "МИКРОСЕРВИСЫ НА ПРАКТИКЕ. НАЧАЛО."

MICROSERVICES IN REALITY:INCEPTION

Dmitry Petukhov / Upwork Mobile [email protected]

Page 2: Dmitry Petukhov (Provectus): "МИКРОСЕРВИСЫ НА ПРАКТИКЕ. НАЧАЛО."

What are Microservices

?

Page 3: Dmitry Petukhov (Provectus): "МИКРОСЕРВИСЫ НА ПРАКТИКЕ. НАЧАЛО."

Features Known

● modularity a step towards clean architecture● single responsibility principle SOLID app!● distributed deployment model scalable app!● full isolation of:

○ teams and backlogs bye 30-min meetings!○ versioning CI increments it when needed○ repositories a repo per module is faultless○ documentation small separated docs○ CI servers concurrent build of everything○ hardware isolation of JVMs and instances

Page 4: Dmitry Petukhov (Provectus): "МИКРОСЕРВИСЫ НА ПРАКТИКЕ. НАЧАЛО."

Microservices vs

monoliths

Page 5: Dmitry Petukhov (Provectus): "МИКРОСЕРВИСЫ НА ПРАКТИКЕ. НАЧАЛО."

Monolith

”$ pidof java9927 2151

$ ps aux | grep -v grep | grep java | awk '{print $2}'99272151

Microservice

- Milen Dyankov / Liferay, JPoint 2017

Page 6: Dmitry Petukhov (Provectus): "МИКРОСЕРВИСЫ НА ПРАКТИКЕ. НАЧАЛО."

Common Idea

Page 7: Dmitry Petukhov (Provectus): "МИКРОСЕРВИСЫ НА ПРАКТИКЕ. НАЧАЛО."

Microservices inJ2EE containers?

● Glassfish● JBoss / WildFly● WebSphere● WebLogic etc.

Page 8: Dmitry Petukhov (Provectus): "МИКРОСЕРВИСЫ НА ПРАКТИКЕ. НАЧАЛО."

Microservices = SOA -- ESB - SOAP- centralized DB/mgmt- fixed vendors+ REST/HTTP + CI/CD + DevOps+ cross-language + containerization+ Cloud/PaaS

- Arun Gupta / AWS

Page 9: Dmitry Petukhov (Provectus): "МИКРОСЕРВИСЫ НА ПРАКТИКЕ. НАЧАЛО."

Microserviceson modularplatforms?

● OSGi containers● JBoss Modules

Page 10: Dmitry Petukhov (Provectus): "МИКРОСЕРВИСЫ НА ПРАКТИКЕ. НАЧАЛО."

Why use microservices

?

Page 11: Dmitry Petukhov (Provectus): "МИКРОСЕРВИСЫ НА ПРАКТИКЕ. НАЧАЛО."

Benefits of Microservices

● Independent of languages true polyglot programming● Independent of frameworks choose best for purpose● Independent of datasources SQL, NoSQL, files, streams● Independent of other microservices except contracts● Independent of UI frontend guys don't even know you● Asynchronous speed up your system X times● Observable monitoring, logging, tracing● Testable embraces automated testing

Page 12: Dmitry Petukhov (Provectus): "МИКРОСЕРВИСЫ НА ПРАКТИКЕ. НАЧАЛО."

What People Say

Page 13: Dmitry Petukhov (Provectus): "МИКРОСЕРВИСЫ НА ПРАКТИКЕ. НАЧАЛО."

Microservicesreducecomplexity!

...do they?

Page 14: Dmitry Petukhov (Provectus): "МИКРОСЕРВИСЫ НА ПРАКТИКЕ. НАЧАЛО."

Under the Hood

Page 15: Dmitry Petukhov (Provectus): "МИКРОСЕРВИСЫ НА ПРАКТИКЕ. НАЧАЛО."

– Complexity reduced!

Page 16: Dmitry Petukhov (Provectus): "МИКРОСЕРВИСЫ НА ПРАКТИКЕ. НАЧАЛО."

Companies Evolved To Microservices

● Google● Netflix● eBay● Amazon● Facebook

Are you operating on

the samescale?

● PayPal● Twitter● Walmart● Spotify● LinkedIn

Page 17: Dmitry Petukhov (Provectus): "МИКРОСЕРВИСЫ НА ПРАКТИКЕ. НАЧАЛО."

Monolith First / Martin Fowler

Page 18: Dmitry Petukhov (Provectus): "МИКРОСЕРВИСЫ НА ПРАКТИКЕ. НАЧАЛО."

Don't Start With A Monolith / Stefan Tilkov

Page 19: Dmitry Petukhov (Provectus): "МИКРОСЕРВИСЫ НА ПРАКТИКЕ. НАЧАЛО."

Microservices vs Modularity / Milen Dyankov

Milen Dyankov -

Microservices and

Modularity or the difference

between treatment and cure!

JUG .ru

149 views

Uploaded on May 4, 2017

1:02:08

Page 20: Dmitry Petukhov (Provectus): "МИКРОСЕРВИСЫ НА ПРАКТИКЕ. НАЧАЛО."

How we do microservices

at Upwork

Page 21: Dmitry Petukhov (Provectus): "МИКРОСЕРВИСЫ НА ПРАКТИКЕ. НАЧАЛО."

Upwork Mission

1 2

3

Page 22: Dmitry Petukhov (Provectus): "МИКРОСЕРВИСЫ НА ПРАКТИКЕ. НАЧАЛО."

14Musers

Upwork in Numbers

300services

30teams

Mobile API is presented by

2 teams and 11 services

Page 23: Dmitry Petukhov (Provectus): "МИКРОСЕРВИСЫ НА ПРАКТИКЕ. НАЧАЛО."

Upwork Mobile API

Page 24: Dmitry Petukhov (Provectus): "МИКРОСЕРВИСЫ НА ПРАКТИКЕ. НАЧАЛО."

Technology stack

Guice

Page 25: Dmitry Petukhov (Provectus): "МИКРОСЕРВИСЫ НА ПРАКТИКЕ. НАЧАЛО."

REST API

● Server-side query engine greatly enriches plain REST● CQRS segregation supports queries and mutations● Sync/async execution even better in GraphQL 5.0● Schema as documentation yet another doc for your API

Page 26: Dmitry Petukhov (Provectus): "МИКРОСЕРВИСЫ НА ПРАКТИКЕ. НАЧАЛО."

Service security

Business Access

Permissions

● Authentication (401)● Authorization (403)● Session management (SSO)● OAuth 2.0● JWT authorization tokens

● Role-based access● Group-based access● User-based access

Page 27: Dmitry Petukhov (Provectus): "МИКРОСЕРВИСЫ НА ПРАКТИКЕ. НАЧАЛО."

Resilience

● Fault-tolerance with fallback no more cascading failures● Repeatable commands configurable● Sync/async/reactive execution thanks to RxJava!● Latency metrics for each call● Web dashboard see problems on circuits instantly

Page 28: Dmitry Petukhov (Provectus): "МИКРОСЕРВИСЫ НА ПРАКТИКЕ. НАЧАЛО."

Inter-service communication

● Cross-language support● Lightweight serialization● Binary protocols

Apache Thrift

Page 29: Dmitry Petukhov (Provectus): "МИКРОСЕРВИСЫ НА ПРАКТИКЕ. НАЧАЛО."

Logging

+ Transparent logging unique request ID across the system+ All services have logs from API Gateway to DB workers+ 2K requests/sec ~10K log entries per second+ Automated request logging on every Hystrix call

Page 30: Dmitry Petukhov (Provectus): "МИКРОСЕРВИСЫ НА ПРАКТИКЕ. НАЧАЛО."

Monitoring and tracing

+ Hystrix metrics and healtchecks built-in+ Dropwizard metrics and healthchecks built-in+ Brave/Zipkin tracing request timespans+ Metrix from JVM threads, GC, memory, NIO buffers etc.+ Custom endpoints /ping, /properties etc.+ AWS monitoring Cloudwatch, RDS, Asgard etc.+ 3rd party monitoring Kafka/Hermes, RMQ, Icinga,

Page 31: Dmitry Petukhov (Provectus): "МИКРОСЕРВИСЫ НА ПРАКТИКЕ. НАЧАЛО."

Configuration

Static

● Source configuration files● Jenkins configurations for

build & deployment

Dynamic

● Git repos for dynamic settings● Endpoints to rewrite dynamic

settings

Page 32: Dmitry Petukhov (Provectus): "МИКРОСЕРВИСЫ НА ПРАКТИКЕ. НАЧАЛО."

Testing

● API unit- and IT tests JUnit/Mockito/TestNG● API load testing JMeter● API regression testing Chakram JS● Manual testing

Page 33: Dmitry Petukhov (Provectus): "МИКРОСЕРВИСЫ НА ПРАКТИКЕ. НАЧАЛО."

Data storages

Page 34: Dmitry Petukhov (Provectus): "МИКРОСЕРВИСЫ НА ПРАКТИКЕ. НАЧАЛО."

Documentation

1 GraphQL API Doc 2 Swagger UI Doc

Page 35: Dmitry Petukhov (Provectus): "МИКРОСЕРВИСЫ НА ПРАКТИКЕ. НАЧАЛО."

upstream

requests

downstream

request

Request Processing

Jersey

endpoints

Handler

A

Handler

B

Handler

C

Operation

Handlers

Service A

Service B1

Service B2

Business

Services

Service C

Upstream

Commands

GraphQL

engine

Single-

threaded

strategy

Multi-

threaded

strategy

Resource

A

Resource

B

Resource

C

Page 36: Dmitry Petukhov (Provectus): "МИКРОСЕРВИСЫ НА ПРАКТИКЕ. НАЧАЛО."

Management Console

Page 37: Dmitry Petukhov (Provectus): "МИКРОСЕРВИСЫ НА ПРАКТИКЕ. НАЧАЛО."

Thank you!

from monolith to microservices

metrics, monitoring, logging

eventual consistency

transactionality

data sources

blue/green

documentation

runtime dependencies

source code dependencies

static and dynamic configuration

introducing new microservices

splitting existing service

service discovery

loadbalancing

security

resilience

fault-tolerance

invocation retries

asynchronous communication

dynamic request routing (fallbacks)

Q & A