microservices: another way

50
MICRO-SERVICES: ANOTHER WAY Mykhailo Sorokovskyi

Upload: mykhailo-sorokovskyy

Post on 21-Jan-2018

305 views

Category:

Software


0 download

TRANSCRIPT

MICRO-SERVICES:ANOTHER WAY

Mykhailo Sorokovskyi

INTRODUCTION

13

Distributed & Highload

Cloud Solutions

WorkExperience

Languages Focus

AGENDA

Is Monolith a real problem?

Why Micro-Services?

How we gonna do Micro-Services?

Why Service Fabric?

What is Another Way?

IS MONOLITHA REAL PROBLEM?

MONOLITH

Azure

AWS

Desktop

Browsers

80% backend logic 20% backend logic

Monolith

MONOLITH - SCALABILITY

80% backend logicAzure

Redis: Cache

Redis: WebSocketsBackplane

SQL Store

MonolithInstance 1

MonolithInstance 2

MonolithInstance 3

MonolithInstance N

Stateless & Scalable

Redis

SQL – limited scale –

10% load

PROBLEM - TECHNICAL

1 Language / Platform limitation

Module cannot be scaled separately

DB Schema sharing

PROBLEM - BUSINESS

Acquiring several companies

Expecting growth ~ x5 in a year

Targeting for Hybrid solution

WHY MICRO-SERVICES?

SCALING & HARDWARE

~ 20 Modules

3 – High Load

1 – requires Memory

GPUModule 1

GPUModule 2

SSDModule 1

SSDModule 2

Node with SSDNode with GPU

LANGUAGE & TOOLS

Use appropriate language & tools for component goals

Languages:

Java

.NET

NodeJS

Ruby

C++

Python

Storages & tools:SqlServer

MySql

Redis

ELK

Kafka

Apache Solr

Apache Spark

HYBRID (CLOUD + ON PREMISES)

Cloud

Service 1

Service 2

Data Service 1

Data Service 2

Service 3

Regular Tenants

Classified Tenants

Tenant DC

HOW WE GONNA DO MICRO-SERVICES?

REQUIREMENTS - SYSOPS

Infrastructure

Platforms

Scalability

Hardware

REQUIREMENTS - DEVOPS

Script minimization

Upgrade in single command

High Availability & Self-Healing

Service Discovery

Hardware Constraints

DEPLOYMENT – SERVICE PER VM

DEPLOYMENT - CONTAINERS

WHY WE CHOSESERVICE FABRIC?

WHAT IS

Service Orchestrating Tool

SERVICE FABRIC vs CONTAINERS ORCHESTRATION

Service Fabric Containers

Orchestrating Services Containers

Ops Cost Low Medium

App Infrastructure One SDK Custom

Scaling Instance + Partitioning Instance

Service Isolation No, Container, Kernel Container

Service FabricCluster

Node 1

Node 5

Node 3Node 4

Node 2Resource Manager

Cluster Manager

Naming Service

Image Store

Health Manager

CLUSTER

Service FabricCluster

Node 1

Node 5

Node 3Node 4

Node 2

Manage

Admin UI PS / CLI

Application

Web Service

Worker ServiceDeploy

Web Service

Web Service Web Service

Worker Service Worker Service

Worker Service

Worker Service Worker Service

MANAGEMENT

PLATFORMS

SDK

PROGRAMMING MODELS

Reliable Services

Stateful

Stateless

Actors

SDK No SDK

Containers

Guest Executable

RELIABLE SERVICES

Cluster State

Stateless Stateful

State

ACTORS

Add Actor

Subtract Actor

Node

XY

ABXY

AB

Calculator API

User XY

User AB

CONTAINERS

Service FabricCluster

Node

Node

NodeNode

NodeWindows

Linux

GUEST EXECUTABLE

WHAT IS ANOTHER WAY?

ORCHESTRATING / SCALING / SELF-HEALING

Usually Another Way

Resource ManagerFailover ManagerHealth Manager

SERVICE DISCOVERYUsually Another Way

Eureka

Naming Service

CONFIGURATIONUsually Another Way

Image Store

LOAD BALANCING

Ribbon

Usually Another Way

Naming ServiceReverse Proxy

STATEUsually Another Way

Reliable Collections

HEALTH / MONITORING

Eureka

Usually Another Way

Health Manger

TESTABILITYUsually Another Way

Fault Analysis Service

ACTORSUsually Another Way

Actors SDK

DEMO

SUMMARY

WHEN TO USE

WHEN TO USE

WHEN TO USE

WHEN TO USE

WHEN TO USE

WHEN TO USE

You want to try Another Way

LIMITATIONS

Hyper-V Virtualization – Q3 201

Full Linux support – Q4 2017

Stateful services on Linux – Q4 2017

Reverse Proxy on Linux – Q4 2017

Docker Compose support – Q4 2017

Heterogeneous Cluster – Q1 2018

linkedin.com/in/mykhailo-sorokovskyy-25765683 [email protected]

[email protected]: mikle.sorokovsky

LINKS

https://github.com/msorokovsky/servicefabricdemo

https://docs.microsoft.com/en-us/azure/service-fabric/

https://github.com/Azure-Samples/service-fabric-java-getting-started

https://channel9.msdn.com/Shows/Cloud+Cover/Episode-210-Service-Fabric-Series-1-of-3-Introduction