Top Banner
Distributed Cloud Native Applications with Node.js Resistance Is Futile, Resilience Is Crucial
56

Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

Mar 20, 2018

Download

Documents

phungque
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: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

Distributed Cloud Native

Applications with Node.js

Resistance Is Futile, Resilience Is Crucial

Page 2: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

Hristo Iliev & Stoyan Rachev

Abacus committers

hello!

2

Page 3: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

Distributed Cloud

Native Applications

with Node.js

Resistance Is Futile, Resilience Is

Crucial

Page 4: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

1.

Abacus

Architecture 101

Page 5: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

COMPUTE STORAGE SERVICES

CF Abacus Billing Engine Invoice

Metering APIs

App Usage

Monetizing Your Applications Using Cloud Foundry Abacus and Billing Engines - Pankaj Kumar, SAP

Page 6: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

COMPUTE STORAGE SERVICES

CF Abacus Billing Engine Invoice

Metering APIs

App Usage

Monetizing Your Applications Using Cloud Foundry Abacus and Billing Engines - Pankaj Kumar, SAP

Page 7: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

Usage event

Collector

receives and

stores usage

Meter

applies

metering

formulas

Accumulator

accumulates

daily and

monthly usage

Aggregator

aggregates by

org, space,

service etc

Reporting

provides usage

summaries

collector

DB

meter

DB

accumulator

DB

aggregator

DB

Usage

Docs

Page 8: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

2.

Network

Pitfalls & recipes

Page 9: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

“Fallacies of distributed computing:

� The network is reliable� Latency is zero� Bandwidth is infinite� Topology doesn't change

https://blogs.oracle.com/jag/resource/Fallacies.html

Page 10: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

Network Problems

Unreliable network

Insufficient bandwidth / latency

Application availability� Crashes� Updates

Page 11: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

Fault Tolerance

Retry� Seriously?! �

Page 12: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

Fault Tolerance

Retry� Seriously?! �� Yes: with exponential backoff

Page 13: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

Fault Tolerance

Retry� Seriously?! �� Yes: with exponential backoff

Circuit Breakers� Hystrix style

Page 14: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

Bandwidth & Latency

Scaling� Cost, discovery, ...

Page 15: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

Bandwidth & Latency

Scaling� Cost, discovery, ...

Batching� ↓Connections & latency� ↑Throughput

Page 16: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

Bandwidth & Latency

Scaling� Cost, discovery, ...

Batching� ↓Connections & latency� ↑Throughput

Throttling� Limit requests

Page 17: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

Availability

Platform� Updates

Application� Restarts� Updates

Replay

Page 18: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

Monitoring & Discovery

Monitoring

Page 19: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

Monitoring & Discovery

Monitoring

Cell

App 1 App 2

App 3 App 1

App 2

Router

Page 20: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

Monitoring & Discovery

Monitoring

Instance access?

Cell

App 3

Router

Page 21: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

Monitoring & Discovery

Monitoring

Indexed apps� “collector-0”� Single instance

Page 22: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

Monitoring & Discovery

Performance? Security?

Monitoring

Indexed apps� “collector-0”� Single instance

App 1 App 2

Router / LB

Page 23: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

Container networking

Direct container-to-container communication

Page 24: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

Indexed apps� “collector-0”� Single instance

App-to-App� Via router / LB

Container Networking

MonitoringDiscoveryPerformanceSecurity

Page 25: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

3.

Node.js

Functional Programming

Page 26: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

Functional Programming� Composition

Node.js

Page 27: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

Functional Programming� Composition

Asynchronous control flow� Generators

Node.js

Page 28: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

Functional Programming� Composition

Asynchronous control flow� Generators

yieldable(throttle(retry(breaker(batch(request)))))

Node.js

Page 29: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

4.

Monitoring

health & metrics

Page 30: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

HealthTrafficCircuit stateError percentage

Hystrix Streams

Page 31: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

Hystrix

Dashboard

Page 32: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

Hystrix + Turbine + Eureka

Turbine

Aggregate data

Hystrix

Data streams

Eureka

Service discovery

Page 33: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

Direct communication� Networking release

Eureka client� Code instrumentation

Service Discovery

Page 34: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

Mozzle

https://github.com/Bo0mer/mozzle

Page 35: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

Mozzle + RIG

Riemann + InfluxDB

Store data

Mozzle

Pull metrics from CF

Grafana

Visualize

Page 36: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

CF metrics

in

Grafana

Page 37: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

5.

Alerts

on problems

Page 38: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

Monitoring & Alerts

Alerts

Page 39: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

Monitoring & Alerts� Reactive

Alerts

Page 40: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

Monitoring & Alerts� Reactive

Anomaly Detection� Pro-active

Alerts

Page 41: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

6.

Deployment

to Cloud Foundry

Page 42: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

Applications vs. Processes

12-factor apps� Factor VI: Processes

Abacus: set of processes

CF: single-process apps

Page 43: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

Applications vs. Processes

Process support� deployment� management� flexibility

Page 44: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

7.

Database

Partitioning & operations

Page 45: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

Data Size� Small documents� TB / day

Datasets

Page 46: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

One huge dataset� How big?� When do I delete?� Performance?� DevOps?� Costs?

Datasets

Page 47: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

One huge dataset� How big?� When do I delete?� Performance?� DevOps?� Costs?

Datasets

Several large datasets� How many?� How big?� Data distribution?� Load-balancing?� DevOps?� More Costs!?

Page 48: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

Partitioning

from the start

Page 49: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

Benefits� Manageability � Performance� Availability� Load balancing

https://en.wikipedia.org/wiki/Partition_(database)

Partitioning

Page 50: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

Keys� App-level� Time-based

Partitioning

Page 51: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

Retention� Backup / restore� Delete

Partitioning

Page 52: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

thanks!

Any questions?

You can find us [email protected], [email protected]

[email protected], [email protected]

Page 53: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

Credits

Special thanks to all the people who made and released these awesome resources for free:� Presentation template by SlidesCarnival� Photographs by Unsplash

Page 54: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

SlidesCarnival icons are editable shapes.

This means that you can:● Resize them without losing quality.● Change fill color and opacity.

Isn’t that nice? :)

Examples:

Page 55: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

Now you can use any emoji as an icon!And of course it resizes without losing quality and you can change the color.

How? Follow Google instructions https://twitter.com/googledocs/status/730087240156643328

������������������������������������ and many

more...

Page 56: Applications with Node.js Resistance Is Futile, Resilience Is …schd.ws/hosted_files/cfsummit2017/ef/Resistance Is Futile... · Applications with Node.js Resistance Is Futile, Resilience

Extra graphics