mapping a service-oriented architecture - usenix...mapping a service-oriented architecture. mapping...

83
Mapping a service-oriented architecture

Upload: others

Post on 05-Jun-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

Mapping a service-oriented architecture

Page 2: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

Mapping a service-oriented architecture

Page 3: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

Mapping a service-oriented architecture

microservices

with Dockerand SDNs

big-data

NoSQL

timeseriesMetallica

Lambda architecture

Kappa architecture

machine learning

Page 4: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

Mapping your infrastructure

Page 5: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

Peter Bourgon Harmen Bus

David Kaltschmidt☞

Page 6: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

1. Motivation 2. What we want 3. How to build it

Page 7: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

Motivation

Page 8: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

A dev/ops world

Page 9: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a
Page 10: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

Speed = good

Page 11: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a
Page 12: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

Speed = dangerous

Page 13: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a
Page 14: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a
Page 15: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

Invariant:Complexity is unavoidable

DEAL WITH IT

Page 16: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

What we want

Page 17: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

Make complexity understandable

Page 18: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a
Page 19: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

Visual, dynamic, humane

Visual · http://worrydream.com/LadderOfAbstraction/ Dynamic · https://vimeo.com/66085662

Humane · http://worrydream.com/TheHumaneRepresentationOfThoughtTalk

Page 20: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

Visual

Page 21: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

Dynamic

Page 22: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

Humane

“Let’s stop feeding the machines with human blood.”

–Todd Underwood

Page 23: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

Visual = graphical Dynamic = responsive Humane = no config

Page 24: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

Invariant: Model as a directed graph

(visual)

Page 25: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

Invariant: An instantaneous, updating view

(dynamic)

Page 26: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

Invariant: No configuration or declaration

(humane)

Page 27: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

java

95 ⇆

↘︎ 56 KB/s

neo4j

???

10.14.0.119:30112 11 KB/s

10.19.91.119:200219 KB/s

paul

-Xms=1024 … -Xmx=1024 …

8862

↖︎ 997 KB/s 10.14.0.101:11323 254 KB/s

10.14.0.119:30112 331 KB/s

0.0.0.0:7474

0.0.0.0:7474 → 10.14.0.119:30112

TCP

IPv4 330 KB/s

325 KB/s

HTTP 301 KB/s

???

???

HTTP 501105/s

ICMP…

45 B/s

Page 28: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a
Page 29: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a
Page 30: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a
Page 31: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a
Page 32: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a
Page 33: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a
Page 34: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a
Page 35: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a
Page 36: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a
Page 37: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a
Page 38: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

How to build it

Page 39: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

Information sources

Page 40: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

Invariant: The atom of the data model

is the process (PID)

Page 41: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

Process list – `ps` Programmatically – /proc

Page 42: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

/proc/PID + complete (ish)

+ reliable — slow (ish)

Page 43: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

(Is there another one?)

Page 44: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

pid 1234 process_name java user paul max_cpu 101.3 cmd java -Xmx... foo_bar baz

Page 45: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

Communication: Named pipes Files on disk

Network

Page 46: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

Communication = sockets

Page 47: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

Invariant: Communication occurs via sockets

Page 48: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

Socket list – `netstat`, `lsof` Programmatically – well…

Page 49: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

Order of operations: First: get data associated to some network ID

Later: link network ID to process ID

Page 50: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

/proc/net/tcp[6] · connection-based

+ fast (comparatively) + reliable

— just connections

Page 51: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

tcp_diag · connection-based

+ like /proc/net/tcp but faster — kernel module

— not actually used?

Page 52: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

libpcap · packet-based + complete (ish) + can be bundled

— slow

Page 53: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

ip_conntrack · connection-based

+ fast — just connections — kernel module

Page 54: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

netlink – nflog, netfilter · packet-based

+ fast + complete (ish) ~ relatively new

— complex

Page 55: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

Span port/port mirroring · complete!

+ no effect on node — separate hardware

— breaks data model :(

Page 56: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

(Are there more?)

Page 57: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

— Everything discussed is Linux + Other implementations possible

+ Information can compose

Page 58: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

tcp (10.1.1.1 80 172.16.1.2 9010) send_bytes 1024576 recv_bytes 55128 http_gets 25 http_posts 1 http_200s 20 http_501s 6

Page 59: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

process ID – network ID mapping

Page 60: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

tcp_id (10.1.1.1 80 172.16.1.2 9010) send_bytes 1024576 recv_bytes 55128 http_gets 25 http_posts 1 http_200s 20 http_501s 6

pid 8110 name java cmd java neo4j -Xmx … max_cpu 101.5 listen (0.0.0.0 80)

Merge

Add

Max

Page 61: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

Invariant: Observed data must mergewithout losing information

Page 62: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

Data that can’t be mapped should stay in its origin domain;

∴ multiple topologies.

Page 63: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

Topologies: PID–PID

Host–Host IP–IP

¿MAC–MAC?

Page 64: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

Nodes in the {PID, IP, Host} topology with {IP, TCP, HTTP, …} traffic {to, from, to&from} port/s {N}

Page 65: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a
Page 66: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a
Page 67: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a
Page 68: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a
Page 69: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a
Page 70: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a
Page 71: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

What else can we do?

Page 72: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

Monday

Page 73: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

Tuesday

Page 74: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

Wednesday

Page 75: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

Thursday

Page 76: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

Δ

Page 77: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

Every data point is a time series. Alerting, anomaly detection…

Page 78: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

Conclusion

Page 79: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

Complexity is unavoidable

Model as directed graph

An instantaneous, updating view

No configuration or declaration

Process-oriented

Communication occurs over sockets

Data must have a merge strategy

Page 80: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

A humane tool

Focus on the facts

Help us understand what we’ve built

Page 81: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

“Instead of telling me how your software will solve problems, show me … a product that is going to join my team as an

awesome team member.”

–John Allspaw

Page 82: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

github.com/weaveworks/scope

Page 83: Mapping a service-oriented architecture - USENIX...Mapping a service-oriented architecture. Mapping a service-oriented architecture. Mapping a service-oriented architecture s r s a

Thank you!

What have I missed? What are your thoughts?

@peterbourgon