Top Banner
DEV OPS Push the hassle from production to developers. Easily DevOpsDays Ghent 2016 October 27th @MartinGoodwell Dynatrace
44

Pushing the hassle from production to developers. Easily

Apr 13, 2017

Download

Software

Martin Goodwell
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: Pushing the hassle from production to developers. Easily

DEV

OPS

Push the hassle

from production

to developers.

Easily

DevOpsDays Ghent 2016

October 27th

@MartinGoodwell

Dynatrace

Page 2: Pushing the hassle from production to developers. Easily

@MartinGoodwell

About me

Passionate about life,

technology, and the people

behind both of them.

• Started with Commodore 8-bit (VC-20 and C-64)

• Built Null-modem connections for playing Doom and WarCraft

• Built IPX/SPX networks between MS-DOS 5.0 and Windows 3.1

• Did DevOps before they called it that way (mainly Java and Web)

for about 10 years

• Now at Dynatrace Innovation Lab

• Tech Lead for Microsoft Technologies

and Software Architecture

• Find me on Twitter: @MartinGoodwell

@MartinGoodwell

Page 3: Pushing the hassle from production to developers. Easily

@MartinGoodwell

Agenda

• The Rules

• Warm-up

• The Ops dilemma (I call it that)

• The second Ops dilemma

• On Monitoring ...

• ... and Logging

• ... and Call Tracing

• ... and Databases

• Commercial offerings

@MartinGoodwell

Page 4: Pushing the hassle from production to developers. Easily

@MartinGoodwell

The Rules

• Please, ask or interrupt anytime

• But keep ideas for open space discussions

• Or track me down anytime around

@MartinGoodwell

Page 5: Pushing the hassle from production to developers. Easily

@MartinGoodwell

Warm up

• What's your occupation?

• Dev, Ops, BinExec?

• What's your technology stack?

• Node.js

• Go

• Java

• .net

• Who of you does

• Monitoring

• Logging

• Call-Tracing

• Application performance management/monitoring (APM)

@MartinGoodwell

Page 6: Pushing the hassle from production to developers. Easily

@MartinGoodwell

The Ops dilemma (1)

Dev

• Single transaction

• Deal with a specific problem

• No impact on real users and business

• Concentrate on single component

• Deadlines refer to sprints

• Weeks, usually

Ops

• 100s or 1000s of txns

• No idea, what the cause is

• Real user impact

• Lots of moving parts

• Deadlines usually mean SLAs

• Hours, maybe just minutes

@MartinGoodwell

Page 7: Pushing the hassle from production to developers. Easily

@MartinGoodwell@MartinGoodwell

Page 8: Pushing the hassle from production to developers. Easily

@MartinGoodwell

The Ops dilemma (1)

Dev

• Single transaction

• Deal with a specific problem

• No impact on real users and business

• Concentrate on single component

• Deadlines refer to sprints

• Weeks, usually

Ops

• 100s or 1000s of txns

• No idea, what the cause is

• Real user impact

• Lots of moving parts

• Deadlines usually mean SLAs

• Hours, maybe just minutes

@MartinGoodwell

Page 9: Pushing the hassle from production to developers. Easily

@MartinGoodwell

The Ops dilemma (2)

Automation

• Continuous {Integration/Deployment/Delivery} pipeline

• triggering unit tests for fast feedback

• Build servers

• Repositories

• Automatic deployments

• Helps devs getting stuff into production

• Does nothing for the opposite direction

@MartinGoodwell

Page 10: Pushing the hassle from production to developers. Easily

@MartinGoodwell

DevOps is about collaboration.

Collaboration requires documentation.

Automation is implicit documentation.

But there is no automation for

supporting Ops with troubleshooting.

@MartinGoodwell

Page 11: Pushing the hassle from production to developers. Easily

@MartinGoodwell

Monitoring

@MartinGoodwell

Page 12: Pushing the hassle from production to developers. Easily

@MartinGoodwell

Host metrics

• CPU usage

• Memory usage

• Disk I/O

• Network performance

• No insight into app's

problems and performance

@MartinGoodwell

Page 13: Pushing the hassle from production to developers. Easily

@MartinGoodwell

In your code

@MartinGoodwell

Page 14: Pushing the hassle from production to developers. Easily

@MartinGoodwell

Use statsd

@MartinGoodwell

Page 15: Pushing the hassle from production to developers. Easily

@MartinGoodwell

statsd real quick

http://www.slideshare.net/DatadogSlides/dev-opsdays-tokyo2013effectivestatsdmonitoring

@MartinGoodwell

Page 16: Pushing the hassle from production to developers. Easily

@MartinGoodwell

Downsides?

• "Polluting" business logic with monitoring code

• Code introspection (ie AOP) requires advanced skills

• Not using something like statsd leads to cluttered metrics

• Great for single component insight

• what about called 3rd parties?

• what about microservices (ie distributed transactions)?

• what about calls to databases, queues, etc.

@MartinGoodwell

Page 17: Pushing the hassle from production to developers. Easily

@MartinGoodwell

Logging

@MartinGoodwell

Page 18: Pushing the hassle from production to developers. Easily

@MartinGoodwell

http://theburningmonk.com/2015/05/a-consistent-approach-to-track-correlation-ids-through-microservices/

@MartinGoodwell

Page 19: Pushing the hassle from production to developers. Easily

@MartinGoodwell

http://theburningmonk.com/2015/05/a-consistent-approach-to-track-correlation-ids-through-microservices/

@MartinGoodwell

Page 20: Pushing the hassle from production to developers. Easily

@MartinGoodwell

http://theburningmonk.com/2015/05/a-consistent-approach-to-track-correlation-ids-through-microservices/

@MartinGoodwell

Page 21: Pushing the hassle from production to developers. Easily

@MartinGoodwell

Logging learnings

• Use a logging server (eg ELK stack)

• directly log as JSON

• at least store as JSON

• Using logging for monitoring is expensive

• log analysis is a real resource hog

• works great for troubleshooting

• works great with limited problem scope

• for Java, use Logback via SLF4J

• to local logfiles

• to logstash

• to syslog

@MartinGoodwell

Page 22: Pushing the hassle from production to developers. Easily

@MartinGoodwell

Call Tracing

@MartinGoodwell

Page 23: Pushing the hassle from production to developers. Easily

@MartinGoodwell

Google Dapper paper

• The Dapper paper (2010)

http://research.google.com/pubs/archive/36356.pdf

• OpenTracing

http://opentracing.io/documentation/

• OpenZipkin (by Twitter)

• http://zipkin.io/

@MartinGoodwell

Page 24: Pushing the hassle from production to developers. Easily

@MartinGoodwell

Zipkin architecture

http://zipkin.io/pages/architecture.html

@MartinGoodwell

Page 25: Pushing the hassle from production to developers. Easily

@MartinGoodwell

https://github.com/openzipkin/zipkin

@MartinGoodwell

Page 26: Pushing the hassle from production to developers. Easily

@MartinGoodwell

http://zipkin.io/

@MartinGoodwell

Page 27: Pushing the hassle from production to developers. Easily

@MartinGoodwell

https://github.com/ordina-jworks/microservices-dashboard

@MartinGoodwell

Page 28: Pushing the hassle from production to developers. Easily

@MartinGoodwell

https://github.com/spring-cloud/spring-cloud-sleuth

Spring Cloud Sleuth is a distributed tracing solution on top of Spring Cloud

@MartinGoodwell

Page 29: Pushing the hassle from production to developers. Easily

@MartinGoodwell

http://trace.risingstack.com

@MartinGoodwell

Page 30: Pushing the hassle from production to developers. Easily

@MartinGoodwell

Databases

@MartinGoodwell

Page 31: Pushing the hassle from production to developers. Easily

@MartinGoodwell

Getting database insight

• Database automation

• eg. DB Maintain

• https://dbmaintain.github.io/

• Database performance logging

• log4jdbc

• https://github.com/arthurblake/log4jdbc

@MartinGoodwell

Page 32: Pushing the hassle from production to developers. Easily

@MartinGoodwell

The commercial hood

@MartinGoodwell

Page 33: Pushing the hassle from production to developers. Easily

@MartinGoodwell

Broad technology support

@MartinGoodwell

Page 34: Pushing the hassle from production to developers. Easily

@MartinGoodwell

Zero-conf and ready to run dashboards

@MartinGoodwell

Page 35: Pushing the hassle from production to developers. Easily

@MartinGoodwell

Method level insight for code and database

@MartinGoodwell

Page 36: Pushing the hassle from production to developers. Easily

@MartinGoodwell

Host, process and network metrics

@MartinGoodwell

Page 37: Pushing the hassle from production to developers. Easily

@MartinGoodwell

Call-tracing across technologies

@MartinGoodwell

Page 38: Pushing the hassle from production to developers. Easily

@MartinGoodwell

Including log analytics

@MartinGoodwell

Page 39: Pushing the hassle from production to developers. Easily

@MartinGoodwell

Full Docker insight (zero-conf)

@MartinGoodwell

Page 40: Pushing the hassle from production to developers. Easily

@MartinGoodwell

Dedicated support for most important technologies

@MartinGoodwell

Page 41: Pushing the hassle from production to developers. Easily

@MartinGoodwell

Automated baselining, root-cause-analysis, and problem

correlation

@MartinGoodwell

Page 42: Pushing the hassle from production to developers. Easily

@MartinGoodwell

You can't fight in here, Gentlemen.

This is the war room!

Page 43: Pushing the hassle from production to developers. Easily

@MartinGoodwell

Let's talk

• From monolith to microservice

• cloud migration

• performance optimization

• team culture

@MartinGoodwell

[email protected]

@MartinGoodwell

Page 44: Pushing the hassle from production to developers. Easily

@MartinGoodwell

Thank you!

@MartinGoodwell