Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Operational Excellence
with Hystrix
Billy Yuen
Principal Engineer
Intuit, Inc.
September 20, 2016
Lesson learned from Quickbooks Online (QBO)
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Intuit Mission:
CONSUMERS
SMALL
BUSINESSES
ACCOUNTING
PROFESSIONALS
To improve our customers’ financial lives so profoundly…
they can’t imagine going back to the old way
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
A Premiere Innovative Growth Company
Employees
8,000+
Customers
45M
Global Offices
US, UK, India,
Canada, Australia
Revenue
4.2B
Founded
1983
Public 1993
INTU
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
What is resiliency?
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Resiliency: Act tough to your enemy even if you are hurting
NORMAL CUSTOMER
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
And fix the problem quickly before your customers notice!
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Why is resiliency hard to achieve?
 Micro-services allow teams to move and innovate faster.
 But failure now will also be distributed!
 New Architecture == New Set of Problems
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Even Google has faced this issue!
• On May 3, 2013 “From 6:26 PM to 7:58 PM PT, requests to most Google
APIs resulted in 500 error response messages.”
• “The combination of the bug and configuration error quickly caused all of the serving
threads to be consumed. Traffic was permanently queued waiting for a serving
thread to become available.”
• http://googledevelopers.blogspot.com/2013/05/google-api-infrastructure-
outage_3.html
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Challenges we face
• Cascade failures from dependent systems.
• Very few instrumentation and monitoring for the dependent services.
• Decomposition from Monolith to micro-services.
– Design consideration for auto recovery from latency and dependency failure.
– Testing for latency and dependency failure.
• Impossible to achieve 99.9% uptime
– If there are N dependencies and each has 99.9% uptime, best uptime would be 99.9%
^ N (99.9% ^ 10 = 99%).
– If dependency is down for X minutes, our recovery time will be X + Y minutes
(detection and server restart).
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
How does Hystrix help?
• Also known as “Circuit Breaker”
– Automatic Fail Fast
– Automatic Fail Over (fallback)
– Protocol Agnostics
• Created by an engineer to make his life better during production support!
• Defend against your dependencies (Trust but verify)!
• Battle tested with billions of request per days.
• Metrics Generation
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Hystrix at work (fail fast)
Health Check
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Overcome Organization Challenge – feature, feature,
feature…
• Growing Pain and Opportunity – QBO experienced big growth and uptime
became a bigger issue.
– Dependency network issue making QBO unresponsive.
– Cascade failure from Disk Failure in one component causing QBO clusters
unresponsive.
• Action over Plan – Implemented Hystrix and monitoring in Payment API to
demonstrate the vision.
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Our Journey to implement Hystrix
• Apply Hystrix to legacy code
• Prevent Drift Detection
• Failure Testing
• Real time monitoring
• Production troubleshooting with historical data
• Production support process
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Apply Hystrix to Legacy Code
• Challenges
– We don’t know all the network calls. Many calls are also buried in client libraries.
– New Relics can provide the URL for the remote service, but not the stack trace.
• Solution - Hystrix Agent
– Java Agent to detect any “naked” network call.
– Work for both socket and NIO calls.
– https://github.com/Netflix/Hystrix/tree/master/hystrix-contrib/hystrix-network-
auditor-agent
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Learning from applying Hystrix Agent in QBO
• Remove Network calls to system that are no longer use.
– Analogous to “Reduce Attack surface” in security.
– Remove unnecessary network calls to “Reduce Dependency Vulnerability”.
• Remove Heart Beat to dependent systems.
• Remove Custom fallback logic.
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Prevent Drift detection
• Integrated Hystrix audit agent with regression build.
• Report all unprotected calls in self-service dashboard.
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Failure testing
• Mindset changes
– Developer - Coding for resiliency
– Quality - Testing for dependency failure
• Failure testing tools
– Hystrix’s ForceCircuitOpen property
– Unit Test and Integration with Wiremock - Http only
– Custom Proxy (Man in the middle) - Any protocol
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Real time monitoring - architecture
• Instance - publish Hystrix Metrics stream (provided by Hystrix).
• Turbine – aggregate all streams in one cluster.
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Real time monitoring - dashboard
• Hystrix Dashboard - Rolling window of last ten seconds of dependency
health
• https://github.com/Netflix/Hystrix/tree/master/hystrix-dashboard
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Real time monitoring - metrics
• Circuit Breaker Status
• Success, Failure and Timeout Count
• Response time
• Fallback status
• Thread pool status
• https://github.com/Netflix/Hystrix/wiki/Metrics-and-Monitoring
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Production troubleshooting with historical data
• Netflix Atlas - https://github.com/Netflix/atlas/wiki/Overview
• Intuit – export the Hystrix Metrics to Splunk
– Pinpoint production issue root cause.
– Measurement for actual latency (Network + Service).
– Troubleshoot random “blip”. What is “blip”?
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Splunk Hystrix Dashboard
• Aggregate data by any timeframe
• Drill down to specific Hystrix command for detail.
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Production support process
• Configure Alerts around critical Hystrix Commands in Splunk
• Integrate Alerts with PagerDuty.
• Use Hystrix Dashboard to review real time system health.
• Use Splunk to debug production issues
Alert Page Revie
w
Debu
g
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Other Considerations
• Is the call necessary?
• Can you create fallback for read?
• Client does not need to know it is from fallback (except fragment caching)
• Can you handle offline write?
• Idempotence for write (or verify before calling again)
• Limit blast radius with thread pool or semaphore.
• Adjust the Hystrix default parameter to your use case.
• Fallback needs to be fast and highly available.
• Timeout vs Failure
• Not applicable to stream or batch.
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Thread pool vs Semaphore
• Thread pool
– Guaranteed timeout by using thread interrupt.
– More memory required.
– Support Concurrent programming (Future is non-blocking).
• Semaphore
– No timeout guarantee (your code will assume the timeout responsibility).
– Set Hystrix Timeout to be greater than your timeout to avoid false timeout.
– Should throw HystrixTimeoutException if client code throws timeout exception.
– Scale better for large pool.
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
E2E experience including UI
• Focus on critical workflows!
• QBO
– Provide degraded experience if not available.
• Payroll is down
• Invoice without attachment service.
– Allow Login if subscription service is temporary not available.
• Payments Service
– Limit dependency calls to only applicable use case.
– Cache read-only data with last known good value.
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Demo
• HystrixCommand
– Synchronous
– Asynchronous
– Reactive
– Thread pool vs Semaphore
• HystrixObservableCommand for NIO
• Callable Wrapper for TLS
• Logging Metrics
• https://github.com/billyy/Hystrix-Tutorial
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Implementation Best Practices
• Don’t implement fallback if you don’t have a fallback.
• Don’t call another Hystrix Command from catch.
• Good and Bad use of fallback.
• Throw Hystrix TimeoutException if your code is doing timeout.
• Update your catch block once you have implemented Hystrix.
• Avoid the use of thread local.
• Retry only if necessary.
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Don’t implement fallback if you don’t have a fallback
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Don’t call another Hystrix Command from catch
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Good use of fallback
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Bad use of fallback
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Throw Hystrix TimeoutException if your code is doing
timeout
• Hystrix will report all exceptions as failure.
• Timeout will indicate a potential issue with dependency instead of coding
issue.
• Need to configure Hystrix timeout > your timeout.
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Update your catch block once you have implemented Hystrix
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Retry only if necessary
• Hystrix does NOT support retry.
• Retry code inside Hystrix Command will skew your metrics.
• Bad things can happen
– Good chance that the immediate retry could also timeout.
– Overload the dependency.
– Exceed your SLA.
• If you have to retry, implement the retry outside of Hystrix.
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Minimize the use of thread local
• Not explicit to the caller.
• TLS needs to be copied to the Hystrix worker thread and reset afterward
(Prone for error).
• Implement callable wrapper if TLS is required.
• https://github.com/Netflix/Hystrix/issues/92
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Important differences in Hystrix version
• 1.2.x
– Initial public release.
• 1.3.x
– Add support for RxJava.
– Semaphore based execution cannot be interrupted but would throw exception if SLA
is exceeded (even if the call is successful!).
• 1.4.x
– Add HystrixObservableCommand for NIO.
– Semaphore based execution can be interrupted by a separate background thread.
– HystrixTimeoutException is public (1.4.18+).
• 1.5.x – Re-architecture of the Metrics to support metric streaming.
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Different ways to implement Hystrix
• Client library - Hystrix jar
– http://www.slideshare.net/MattJacobs11/using-hystrix-to-build-resilient-distributed-
systems-58836753
• Existing application – Javanica
– https://github.com/Netflix/Hystrix/tree/master/hystrix-contrib/hystrix-javanica
• New application - Spring Cloud
– http://cloud.spring.io/spring-cloud-netflix/spring-cloud-netflix.html
Copyright © 2016, Oracle and/or its affiliates. All rights reserved. |
Thanks!!!
billy_yuen@intuit.com
Confidential – Oracle Internal/Restricted/Highly Restricted 40

Javaone 2016 - Operational Excellence with Hystrix

  • 2.
    Copyright © 2016,Oracle and/or its affiliates. All rights reserved. | Operational Excellence with Hystrix Billy Yuen Principal Engineer Intuit, Inc. September 20, 2016 Lesson learned from Quickbooks Online (QBO)
  • 3.
    Copyright © 2016,Oracle and/or its affiliates. All rights reserved. | Intuit Mission: CONSUMERS SMALL BUSINESSES ACCOUNTING PROFESSIONALS To improve our customers’ financial lives so profoundly… they can’t imagine going back to the old way
  • 4.
    Copyright © 2016,Oracle and/or its affiliates. All rights reserved. | A Premiere Innovative Growth Company Employees 8,000+ Customers 45M Global Offices US, UK, India, Canada, Australia Revenue 4.2B Founded 1983 Public 1993 INTU
  • 5.
    Copyright © 2016,Oracle and/or its affiliates. All rights reserved. | What is resiliency?
  • 6.
    Copyright © 2016,Oracle and/or its affiliates. All rights reserved. | Resiliency: Act tough to your enemy even if you are hurting NORMAL CUSTOMER
  • 7.
    Copyright © 2016,Oracle and/or its affiliates. All rights reserved. | And fix the problem quickly before your customers notice!
  • 8.
    Copyright © 2016,Oracle and/or its affiliates. All rights reserved. | Why is resiliency hard to achieve?  Micro-services allow teams to move and innovate faster.  But failure now will also be distributed!  New Architecture == New Set of Problems
  • 9.
    Copyright © 2016,Oracle and/or its affiliates. All rights reserved. | Even Google has faced this issue! • On May 3, 2013 “From 6:26 PM to 7:58 PM PT, requests to most Google APIs resulted in 500 error response messages.” • “The combination of the bug and configuration error quickly caused all of the serving threads to be consumed. Traffic was permanently queued waiting for a serving thread to become available.” • http://googledevelopers.blogspot.com/2013/05/google-api-infrastructure- outage_3.html
  • 10.
    Copyright © 2016,Oracle and/or its affiliates. All rights reserved. | Challenges we face • Cascade failures from dependent systems. • Very few instrumentation and monitoring for the dependent services. • Decomposition from Monolith to micro-services. – Design consideration for auto recovery from latency and dependency failure. – Testing for latency and dependency failure. • Impossible to achieve 99.9% uptime – If there are N dependencies and each has 99.9% uptime, best uptime would be 99.9% ^ N (99.9% ^ 10 = 99%). – If dependency is down for X minutes, our recovery time will be X + Y minutes (detection and server restart).
  • 11.
    Copyright © 2016,Oracle and/or its affiliates. All rights reserved. | How does Hystrix help? • Also known as “Circuit Breaker” – Automatic Fail Fast – Automatic Fail Over (fallback) – Protocol Agnostics • Created by an engineer to make his life better during production support! • Defend against your dependencies (Trust but verify)! • Battle tested with billions of request per days. • Metrics Generation
  • 12.
    Copyright © 2016,Oracle and/or its affiliates. All rights reserved. | Hystrix at work (fail fast) Health Check
  • 13.
    Copyright © 2016,Oracle and/or its affiliates. All rights reserved. | Overcome Organization Challenge – feature, feature, feature… • Growing Pain and Opportunity – QBO experienced big growth and uptime became a bigger issue. – Dependency network issue making QBO unresponsive. – Cascade failure from Disk Failure in one component causing QBO clusters unresponsive. • Action over Plan – Implemented Hystrix and monitoring in Payment API to demonstrate the vision.
  • 14.
    Copyright © 2016,Oracle and/or its affiliates. All rights reserved. | Our Journey to implement Hystrix • Apply Hystrix to legacy code • Prevent Drift Detection • Failure Testing • Real time monitoring • Production troubleshooting with historical data • Production support process
  • 15.
    Copyright © 2016,Oracle and/or its affiliates. All rights reserved. | Apply Hystrix to Legacy Code • Challenges – We don’t know all the network calls. Many calls are also buried in client libraries. – New Relics can provide the URL for the remote service, but not the stack trace. • Solution - Hystrix Agent – Java Agent to detect any “naked” network call. – Work for both socket and NIO calls. – https://github.com/Netflix/Hystrix/tree/master/hystrix-contrib/hystrix-network- auditor-agent
  • 16.
    Copyright © 2016,Oracle and/or its affiliates. All rights reserved. | Learning from applying Hystrix Agent in QBO • Remove Network calls to system that are no longer use. – Analogous to “Reduce Attack surface” in security. – Remove unnecessary network calls to “Reduce Dependency Vulnerability”. • Remove Heart Beat to dependent systems. • Remove Custom fallback logic.
  • 17.
    Copyright © 2016,Oracle and/or its affiliates. All rights reserved. | Prevent Drift detection • Integrated Hystrix audit agent with regression build. • Report all unprotected calls in self-service dashboard.
  • 18.
    Copyright © 2016,Oracle and/or its affiliates. All rights reserved. | Failure testing • Mindset changes – Developer - Coding for resiliency – Quality - Testing for dependency failure • Failure testing tools – Hystrix’s ForceCircuitOpen property – Unit Test and Integration with Wiremock - Http only – Custom Proxy (Man in the middle) - Any protocol
  • 19.
    Copyright © 2016,Oracle and/or its affiliates. All rights reserved. | Real time monitoring - architecture • Instance - publish Hystrix Metrics stream (provided by Hystrix). • Turbine – aggregate all streams in one cluster.
  • 20.
    Copyright © 2016,Oracle and/or its affiliates. All rights reserved. | Real time monitoring - dashboard • Hystrix Dashboard - Rolling window of last ten seconds of dependency health • https://github.com/Netflix/Hystrix/tree/master/hystrix-dashboard
  • 21.
    Copyright © 2016,Oracle and/or its affiliates. All rights reserved. | Real time monitoring - metrics • Circuit Breaker Status • Success, Failure and Timeout Count • Response time • Fallback status • Thread pool status • https://github.com/Netflix/Hystrix/wiki/Metrics-and-Monitoring
  • 22.
    Copyright © 2016,Oracle and/or its affiliates. All rights reserved. | Production troubleshooting with historical data • Netflix Atlas - https://github.com/Netflix/atlas/wiki/Overview • Intuit – export the Hystrix Metrics to Splunk – Pinpoint production issue root cause. – Measurement for actual latency (Network + Service). – Troubleshoot random “blip”. What is “blip”?
  • 23.
    Copyright © 2016,Oracle and/or its affiliates. All rights reserved. | Splunk Hystrix Dashboard • Aggregate data by any timeframe • Drill down to specific Hystrix command for detail.
  • 24.
    Copyright © 2016,Oracle and/or its affiliates. All rights reserved. | Production support process • Configure Alerts around critical Hystrix Commands in Splunk • Integrate Alerts with PagerDuty. • Use Hystrix Dashboard to review real time system health. • Use Splunk to debug production issues Alert Page Revie w Debu g
  • 25.
    Copyright © 2016,Oracle and/or its affiliates. All rights reserved. | Other Considerations • Is the call necessary? • Can you create fallback for read? • Client does not need to know it is from fallback (except fragment caching) • Can you handle offline write? • Idempotence for write (or verify before calling again) • Limit blast radius with thread pool or semaphore. • Adjust the Hystrix default parameter to your use case. • Fallback needs to be fast and highly available. • Timeout vs Failure • Not applicable to stream or batch.
  • 26.
    Copyright © 2016,Oracle and/or its affiliates. All rights reserved. | Thread pool vs Semaphore • Thread pool – Guaranteed timeout by using thread interrupt. – More memory required. – Support Concurrent programming (Future is non-blocking). • Semaphore – No timeout guarantee (your code will assume the timeout responsibility). – Set Hystrix Timeout to be greater than your timeout to avoid false timeout. – Should throw HystrixTimeoutException if client code throws timeout exception. – Scale better for large pool.
  • 27.
    Copyright © 2016,Oracle and/or its affiliates. All rights reserved. | E2E experience including UI • Focus on critical workflows! • QBO – Provide degraded experience if not available. • Payroll is down • Invoice without attachment service. – Allow Login if subscription service is temporary not available. • Payments Service – Limit dependency calls to only applicable use case. – Cache read-only data with last known good value.
  • 28.
    Copyright © 2016,Oracle and/or its affiliates. All rights reserved. | Demo • HystrixCommand – Synchronous – Asynchronous – Reactive – Thread pool vs Semaphore • HystrixObservableCommand for NIO • Callable Wrapper for TLS • Logging Metrics • https://github.com/billyy/Hystrix-Tutorial
  • 29.
    Copyright © 2016,Oracle and/or its affiliates. All rights reserved. | Implementation Best Practices • Don’t implement fallback if you don’t have a fallback. • Don’t call another Hystrix Command from catch. • Good and Bad use of fallback. • Throw Hystrix TimeoutException if your code is doing timeout. • Update your catch block once you have implemented Hystrix. • Avoid the use of thread local. • Retry only if necessary.
  • 30.
    Copyright © 2016,Oracle and/or its affiliates. All rights reserved. | Don’t implement fallback if you don’t have a fallback
  • 31.
    Copyright © 2016,Oracle and/or its affiliates. All rights reserved. | Don’t call another Hystrix Command from catch
  • 32.
    Copyright © 2016,Oracle and/or its affiliates. All rights reserved. | Good use of fallback
  • 33.
    Copyright © 2016,Oracle and/or its affiliates. All rights reserved. | Bad use of fallback
  • 34.
    Copyright © 2016,Oracle and/or its affiliates. All rights reserved. | Throw Hystrix TimeoutException if your code is doing timeout • Hystrix will report all exceptions as failure. • Timeout will indicate a potential issue with dependency instead of coding issue. • Need to configure Hystrix timeout > your timeout.
  • 35.
    Copyright © 2016,Oracle and/or its affiliates. All rights reserved. | Update your catch block once you have implemented Hystrix
  • 36.
    Copyright © 2016,Oracle and/or its affiliates. All rights reserved. | Retry only if necessary • Hystrix does NOT support retry. • Retry code inside Hystrix Command will skew your metrics. • Bad things can happen – Good chance that the immediate retry could also timeout. – Overload the dependency. – Exceed your SLA. • If you have to retry, implement the retry outside of Hystrix.
  • 37.
    Copyright © 2016,Oracle and/or its affiliates. All rights reserved. | Minimize the use of thread local • Not explicit to the caller. • TLS needs to be copied to the Hystrix worker thread and reset afterward (Prone for error). • Implement callable wrapper if TLS is required. • https://github.com/Netflix/Hystrix/issues/92
  • 38.
    Copyright © 2016,Oracle and/or its affiliates. All rights reserved. | Important differences in Hystrix version • 1.2.x – Initial public release. • 1.3.x – Add support for RxJava. – Semaphore based execution cannot be interrupted but would throw exception if SLA is exceeded (even if the call is successful!). • 1.4.x – Add HystrixObservableCommand for NIO. – Semaphore based execution can be interrupted by a separate background thread. – HystrixTimeoutException is public (1.4.18+). • 1.5.x – Re-architecture of the Metrics to support metric streaming.
  • 39.
    Copyright © 2016,Oracle and/or its affiliates. All rights reserved. | Different ways to implement Hystrix • Client library - Hystrix jar – http://www.slideshare.net/MattJacobs11/using-hystrix-to-build-resilient-distributed- systems-58836753 • Existing application – Javanica – https://github.com/Netflix/Hystrix/tree/master/hystrix-contrib/hystrix-javanica • New application - Spring Cloud – http://cloud.spring.io/spring-cloud-netflix/spring-cloud-netflix.html
  • 40.
    Copyright © 2016,Oracle and/or its affiliates. All rights reserved. | Thanks!!! billy_yuen@intuit.com Confidential – Oracle Internal/Restricted/Highly Restricted 40

Editor's Notes

  • #3 This is a JavaOne SF 2016 event branded Title slide ideal for including the Java Theme with a brief title, subtitle and presenter information. Do not customize this slide with your own picture. To reuse this branded background in another presentation on PC Locate and open the presentation where you will be placing this artwork. Click New Slide from the Home tab's Slides group and select Reuse Slides. Click Browse in the Reuse Slides panel and select Browse Files. Double-click the PowerPoint presentation that contains the background you wish to copy. Check Keep Source Formatting and click the slide that contains the background you want. Click the left-hand slide preview to which you wish to apply the new master layout. Apply New Layout (Important): Right-click any selected slide, point to Layout, and click the slide containing the desired layout from the layout gallery. Delete any unwanted slides or duplicates. To reuse this branded background in another presentation on Mac Locate and open the presentation where you will be placing this artwork. Click New Slide from the Home tab's Slides group and select Insert Slides from Other Presentation… Navigate to the PowerPoint presentation file that contains the background you wish to copy. Double-click or press Insert. This prompts the Slide Finder dialogue box. Make sure Keep design of original slides is unchecked and click the slide(s) that contains the background you want. Hold Shift key to select multiple slides. Click the left-hand slide preview to which you wish to apply the new master layout. Apply New Layout (Important): Click Layout from the Home tab's Slides group, and click the slide containing the desired layout from the layout gallery. Delete any unwanted slides or duplicates.
  • #9 300 engineers team dealing with build breakage, jar hell, big bang deployment.
  • #11 99.9^10 = 99
  • #12 Most failures are related to dependency or network failure and Hystrix is the simplest way to monitor your dependency. App Dynamics or New relics can provide the same level of monitoring IF you know where to look. Typically devs and ops don’t communicate!
  • #14 Before I dive into detail of our Hystrix journey, I like to share how I overcame mindset barrier, which is a much harder problem. As a small business, the #1 QBO feature is the ability to generate invoice! 1. Payroll system having network issue and hung all QBO threads. 2. One system with 99.95% (20 min per month) up and resulted in 60 min downtime (99.85%).
  • #26 Netflix is mostly read only with internal micro services. QBO also has to deal with transactional write and external integrations. List the Hystrix Default: Timeout: 1 second. Circuit Breaker: 20 requests in 10 seconds with 50% failure with 5 seconds retry after circuit is open. Bulkhead: Thread pool or semaphore limit
  • #41 This is a Section Header with Picture slide ideal for including a picture with a brief title and optional subtitle. This slide can also be used as a Q and A slide. To customize this slide with your own picture: Right-click the slide area and choose Format Background from the pop-up menu. From the Fill menu, click Picture and texture fill. Under Insert from: click File. Locate your new picture and click Insert. To copy the Customized Background from Another Presentation on PC Click New Slide from the Home tab's Slides group and select Reuse Slides. Click Browse in the Reuse Slides panel and select Browse Files. Double-click the PowerPoint presentation that contains the background you wish to copy. Check Keep Source Formatting and click the slide that contains the background you want. Click the left-hand slide preview to which you wish to apply the new master layout. Apply New Layout (Important): Right-click any selected slide, point to Layout, and click the slide containing the desired layout from the layout gallery. Delete any unwanted slides or duplicates. To copy the Customized Background from Another Presentation on Mac Click New Slide from the Home tab's Slides group and select Insert Slides from Other Presentation… Navigate to the PowerPoint presentation file that contains the background you wish to copy. Double-click or press Insert. This prompts the Slide Finder dialogue box. Make sure Keep design of original slides is unchecked and click the slide(s) that contains the background you want. Hold Shift key to select multiple slides. Click the left-hand slide preview to which you wish to apply the new master layout. Apply New Layout (Important): Click Layout from the Home tab's Slides group, and click the slide containing the desired layout from the layout gallery. Delete any unwanted slides or duplicates.