49
Service Explosion HOW HOOTSUITE MANAGES ITS GROWING MICROSERVICE LANDSCAPE Specialist Software Developer - Mobile Web and APIs Adam Arsenault @Adam_Arsenault

How Hootsuite Manages its Growing Microservice Landscape - Adam Arsenault

Embed Size (px)

Citation preview

Page 1: How Hootsuite Manages its Growing Microservice Landscape - Adam Arsenault

Service ExplosionHOW HOOTSUITE MANAGES ITSGROWING MICROSERVICE LANDSCAPE

Specialist Software Developer - Mobile Web and APIsAdam Arsenault

@Adam_Arsenault

Page 2: How Hootsuite Manages its Growing Microservice Landscape - Adam Arsenault
Page 3: How Hootsuite Manages its Growing Microservice Landscape - Adam Arsenault

● Road to SOA

● Service Graph

● Voltron

● Demo

● Lessons Learned

What We’ll Talk aboutApp

S2

S3

S4S1

Page 4: How Hootsuite Manages its Growing Microservice Landscape - Adam Arsenault

● Founded in 2008

● PHP Monolith

● SOA started in 2013

● Hyper growth

● Continuous Integration

● ~20 services and counting

Road to SOA

Page 5: How Hootsuite Manages its Growing Microservice Landscape - Adam Arsenault

“Organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations”- Melvin Conway

Page 6: How Hootsuite Manages its Growing Microservice Landscape - Adam Arsenault

Engagement MobilePublisher Analytics

Platform Tools Labs

Stable Teams

Page 7: How Hootsuite Manages its Growing Microservice Landscape - Adam Arsenault

KABOOM!!!!

Page 8: How Hootsuite Manages its Growing Microservice Landscape - Adam Arsenault

Ex. 1 - Integration Failures

● Dev merges changes

● Changes go to staging

● Integration tests fail

● Release pipeline frozen

KABOOM!!!!

Page 9: How Hootsuite Manages its Growing Microservice Landscape - Adam Arsenault

Ex. 2 - Production Downtime

● Service goes down in production

● On call / teams affected get notifications

● Sift through flood of notifications to figure out what’s broken

KABOOM!!!!

Page 10: How Hootsuite Manages its Growing Microservice Landscape - Adam Arsenault

VISIBILITY

Page 11: How Hootsuite Manages its Growing Microservice Landscape - Adam Arsenault

The Service Graph

Page 12: How Hootsuite Manages its Growing Microservice Landscape - Adam Arsenault

The Service Graph

App

Page 13: How Hootsuite Manages its Growing Microservice Landscape - Adam Arsenault

The Service Graph

App

S1 S2

Page 14: How Hootsuite Manages its Growing Microservice Landscape - Adam Arsenault

The Service Graph

App

S2 S3 S4S1

Page 15: How Hootsuite Manages its Growing Microservice Landscape - Adam Arsenault

The Service GraphApp

S2

S3

S4S1

Page 16: How Hootsuite Manages its Growing Microservice Landscape - Adam Arsenault

The Service GraphApp

S2

S3

S4S1

S5S6

S7

Page 17: How Hootsuite Manages its Growing Microservice Landscape - Adam Arsenault

The Service GraphApp

S2

S3

S4S1

S5S6

S7

Page 18: How Hootsuite Manages its Growing Microservice Landscape - Adam Arsenault

The Service GraphApp

S2

S3

S4S1

S5S6

S7

Page 19: How Hootsuite Manages its Growing Microservice Landscape - Adam Arsenault
Page 20: How Hootsuite Manages its Growing Microservice Landscape - Adam Arsenault

The API

Page 21: How Hootsuite Manages its Growing Microservice Landscape - Adam Arsenault

DependencySomething that a service needs to function properly.

Types:

1. Internal

2. Traversable

App

Cachedb S1

Page 22: How Hootsuite Manages its Growing Microservice Landscape - Adam Arsenault

/status/aboutReturns metadata information about the service or app such as version, description, maintainers, links to documentation, and gets the status of each individual dependency.

Page 23: How Hootsuite Manages its Growing Microservice Landscape - Adam Arsenault

/status/:dependencyA configured status endpoint at '/status/:dependency

Examples:● '/status/service-core'● '/status/db'

OK

Page 24: How Hootsuite Manages its Growing Microservice Landscape - Adam Arsenault

/status/aggregateReturns the overall status by checking all registered status checks and giving a simple response.

Examples:● OK● CRIT - error message

OK

Page 25: How Hootsuite Manages its Growing Microservice Landscape - Adam Arsenault

/status/traverseEnables service graph traversal and execution of an "action" at the last level of traversal.

App

S2

S3

S4S1

Page 26: How Hootsuite Manages its Growing Microservice Landscape - Adam Arsenault

Usage

Page 27: How Hootsuite Manages its Growing Microservice Landscape - Adam Arsenault

MonitorOK / CRIT

Page 28: How Hootsuite Manages its Growing Microservice Landscape - Adam Arsenault

Debug

S1

db S2

Page 29: How Hootsuite Manages its Growing Microservice Landscape - Adam Arsenault

Explore and LearnApp

S2

S3

S4S1

S5S6

S7

Page 30: How Hootsuite Manages its Growing Microservice Landscape - Adam Arsenault

Document

Page 31: How Hootsuite Manages its Growing Microservice Landscape - Adam Arsenault

Status of single machine Overall status of application and services

Alerts / notifications Troubleshoot by drilling down

Monitoring Strategy

Page 32: How Hootsuite Manages its Growing Microservice Landscape - Adam Arsenault
Page 33: How Hootsuite Manages its Growing Microservice Landscape - Adam Arsenault

Technologies

Page 34: How Hootsuite Manages its Growing Microservice Landscape - Adam Arsenault

Architecture

Browser 1 Browser N...

Play App

Status Poller Actor

WS Actor 1

WS Actor N

...

Page 35: How Hootsuite Manages its Growing Microservice Landscape - Adam Arsenault

DEMO

Page 36: How Hootsuite Manages its Growing Microservice Landscape - Adam Arsenault

“When there is a production issue, I see lots of people go to Voltron to perform diagnostics on what might be wrong”Geordie Henderson - VP Software Development

Page 37: How Hootsuite Manages its Growing Microservice Landscape - Adam Arsenault

“Voltron is often the first to tell us when snowflake is down”Brandon Okert - Junior Software Developer Publisher

Page 38: How Hootsuite Manages its Growing Microservice Landscape - Adam Arsenault

“When a critical service goes down, everything starts alerting and reporting problems, but Voltron gets through the noise by letting you drill down”Michael Reid - Senior Software Developer Platform

Page 39: How Hootsuite Manages its Growing Microservice Landscape - Adam Arsenault

“We suspected the connection between dashboard and Billing Service was broken, but Voltron told us the communication channel was okay.”Martin Jung - Software Developer Mobile Web and APIs

Page 40: How Hootsuite Manages its Growing Microservice Landscape - Adam Arsenault

Lessons Learned

Page 41: How Hootsuite Manages its Growing Microservice Landscape - Adam Arsenault

• Productivity

• Happiness

Visibility Empowers

Page 42: How Hootsuite Manages its Growing Microservice Landscape - Adam Arsenault

• Automate all the things

• Identify problems early and fix

• 10x factor

SOA Tools Early

Page 43: How Hootsuite Manages its Growing Microservice Landscape - Adam Arsenault

• Standardize

• Add to a service framework

• Share common status checks

Make Checking Status Easy

Page 44: How Hootsuite Manages its Growing Microservice Landscape - Adam Arsenault

• Synchronized views

• Performance

Websockets for Real time

Page 45: How Hootsuite Manages its Growing Microservice Landscape - Adam Arsenault

Future Work

Page 46: How Hootsuite Manages its Growing Microservice Landscape - Adam Arsenault

Analytics

Page 47: How Hootsuite Manages its Growing Microservice Landscape - Adam Arsenault

Real Time Graph View

Page 48: How Hootsuite Manages its Growing Microservice Landscape - Adam Arsenault

Open Source

Page 49: How Hootsuite Manages its Growing Microservice Landscape - Adam Arsenault

Thank you!Questions?

Specialist Software Developer - Mobile Web and APIs@Adam_Arsenault

Adam Arsenault