SlideShare uma empresa Scribd logo
1 de 32
DEBUGGING
MICROSERVICES
Idit Levine
solo.io
About
meIdit Levine
Founder and CEO of solo.io
@Idit_Levine
@ilevine
Debugging microservices
applications is hard
The problem:
The problem
A monolithic application
consists of a single process
An attached debugger allows
viewing the complete state of
the application during runtime
A microservices application
consists of potentially hundreds
of processes
Is it possible to get a complete
view of the state of a such
application?!
The problem
The problem
OpenTracing
Solution I
OpenTracing
A
B
E
D
C
Edge service
Unique ID → {context}
{context}
{context}
{context}
{context}
1. assign a unique identifier to each
request at the edge service
2. store it in a context object, along with
other metadata
3. propagate the context across process
boundaries (in-band)
4. baggage is arbitrary K/V
5. capture timing, events, tags and collect
them out of band (async)
6.re-assemble the call tree from the storage
for the UI
OpenTracing
A
B
E
D
C
Edge service
Unique ID → {context}
{context}
{context}
{context}
{context}
A
B
E
C
D
TRACE
SPANS
OpenTracing Architecture
spans - basic unit of timing and causality. can be tagged with key/value pairs. logs - structured
data recorded on a span.
span context - serializable format for linking spans across network boundaries. carries baggage,
such as a request and client IDs.
tracers - anything that plugs into the OpenTracing API to record information. zipKin, jaeger &
lightstep. but also metrics (Prometheus) and logging.
OpenTracing
OpenTracing is a consistent, expressive, vendor-neutral APIs
for popular platforms, OpenTracing makes it easy for
developers to add (or switch) tracing implementations with an
O(1) configuration change.
OpenTracing Demo
OpenTracing uses
logging - easy to output to any logging tool, even from OSS components.
metrics/alerting - measure based on tags, span timing, log data.
context propagation - use baggage to carry request and user ID’s, etc.
critical path analysis - drill down into request latency in very high fidelity.
system topology analysis - identify bottlenecks due to shared resources.
OpenTracing limitations
openTracing does not provide run-time debugging
openTracing requires wrapping and changing the code
no holistic view of the application state – can only see what was printed
the process (repeatedly modify the application and test) is expansive
Impossible to change variable values in runtime
logging and printing results in performances overhead
Squash
Solution II
Squash brings the power of modern popular debuggers to developers of microservices apps that run on
container orchestration platforms.
Squash bridges between the orchestration platform (without changing it) and IDE.
With Squash, you can:
• Live debugging cross multi microservices
• Debug container in a pod
• Debug a service
• Set breakpoints
• Step through the code
• View and modify values of variables
• and more ...
Squash Demo
Squash Architecture
Squash server: holds the information about the breakpoints for
each application, orchestrates and controls the squash clients.
Squash server deploys and runs on Kubernetes
Squash client: deploys as daemon set on Kubernetes node. The
client wraps as docker container, and also contains the binary of
the debuggers.
Squash User Interface: squash uses IDEs as its user interface.
After installing the Squash extension, Squash commands are
available in the IDE command palette.
What vegetable scares all the
bugs? Squash!”
one of my 8-year old daughter's
favorite riddles
Squash Architecture: vs code
extension
vs code extension ➜ kubectl to present the
user pod/container/debugger options
vs code extension ➜ Squash server with
debug config (pod/container/debugger
/breakpoint) ➜ waits for debug session
vs code extension ➜ connects to the debug
server & transfers control to the native debug
extension.
Squash Architecture: Squash
Server
vs code extension ➜ Squash server
Squash server ➜ relevant Squash client with debug config
(pod/container/debugger /breakpoint)
Squash server ➜ waits for debug session
Squash Architecture: Squash Client
Squash server ➜ Squash client
Squash client ➜ container runtime interface (to obtain the
container host pid)
Squash client ➜ runs the debugger, attaches it to the process in the
container, and sets the application breakpoints
Squash client ➜ return debug session.
Squash high level
Architecture
Platforms IDEs Debuggers
Squash high level
Architecture
Platforms IDEs Debuggers
We are looking for community help to add support for more debuggers, platforms and IDEs.
Check out at github:
https://github.com/solo-io/squash
Squash: open source
project
Service mesh
Solution III
Service
MeshService mesh data plane:
Touches every packet/request in the system.
Responsible for service discovery, health
checking, routing, load balancing,
authentication/authorization, and observability.
Service mesh control plane:
Provides policy and configuration for all the
running data planes in the mesh. Does not touch
any packets/requests in the system. The control
plane turns all of the data planes into a
distributed system.
Envoy – data
planeOut of process architecture: developers to focus on business logic
Modern C++11 code base: Fast and productive.
L3/L4 filter architecture: Can be used for things other than HTTP (TCP proxy at its core)
HTTP L7 filter architecture: Make it easy to plug in different functionality.
HTTP/2 first! (Including gRPC and a nifty gRPC HTTP/1.1 bridge).
Service discovery and active health checking.
Advanced load balancing: Retry, timeouts, circuit breaking, rate limiting, shadowing, etc.
Best in class observability: stats, logging, and tracing.
Edge proxy: routing and TLS.
The network should be
transparent to applications.
When network and
application problems do
occur it should be easy to
determine the source of
the problem.
Istio – control
planePilot: responsible for the lifecycle of
Envoy instances deployed across the Istio
service mesh. Pilot exposes APIs for
service discovery, dynamic updates to
load balancing pools and routing
tables.
Mixer: provides Precondition Checking
(authentication, ACL checks and more),
Quota Management and Telemetry
Reporting.
Istio-Auth enhance the security of
microservices and their communication
without requiring service code changes.
Service mesh,
OpenTracing, and
Squash
Towards an integrated solution
The whole
solutionStep 1:
vs code extension ➜ Squash server creating a debug
config (service & image) and wait for the debug session to
connect.
Step 2:
envoy gets a curl request with squash header
Step 3:
➜ envoy ask Squash server to debug itself and wait for the
debug session.
1
2
3
4
5
The whole
solutionStep 4:
Squash server ➜ Squash client
Squash client ➜ container runtime interface (to obtain the
container host pid)
Squash client ➜ runs the debugger, attaches it to the process in
the container, and sets the application breakpoints
Squash client ➜ return debug session.
Step 5:
vs code extension ➜ connects to the debug
server & transfers control to the native debug
extension.
envoy resume traffic to the app
1
2
3
4
5
Service Mesh Demo

Mais conteúdo relacionado

Mais procurados

[Call for code] IBM 블록체인을 활용하여 투명하게 구호기금 관리하기 - Hyperledger Fabric v1.1 by 맹개발
[Call for code] IBM 블록체인을 활용하여 투명하게 구호기금 관리하기 - Hyperledger Fabric v1.1 by 맹개발 [Call for code] IBM 블록체인을 활용하여 투명하게 구호기금 관리하기 - Hyperledger Fabric v1.1 by 맹개발
[Call for code] IBM 블록체인을 활용하여 투명하게 구호기금 관리하기 - Hyperledger Fabric v1.1 by 맹개발 Yunho Maeng
 
Template Haskell Tutorial
Template Haskell TutorialTemplate Haskell Tutorial
Template Haskell Tutorialkizzx2
 
Introduction To Solidity
Introduction To SolidityIntroduction To Solidity
Introduction To Solidity101 Blockchains
 
Hyperledger Indy tutorial
Hyperledger Indy tutorialHyperledger Indy tutorial
Hyperledger Indy tutorialssuser3993f3
 
Icsa2018 blockchain tutorial
Icsa2018 blockchain tutorialIcsa2018 blockchain tutorial
Icsa2018 blockchain tutorialLen Bass
 
⼤語⾔模型 LLM 應⽤開發入⾨
⼤語⾔模型 LLM 應⽤開發入⾨⼤語⾔模型 LLM 應⽤開發入⾨
⼤語⾔模型 LLM 應⽤開發入⾨Wen-Tien Chang
 
Blockchain-based Traceability Application In Agricultural
Blockchain-based Traceability Application In Agricultural Blockchain-based Traceability Application In Agricultural
Blockchain-based Traceability Application In Agricultural WowTrace
 
Tendermint in a nutshell
Tendermint in a nutshellTendermint in a nutshell
Tendermint in a nutshellArcBlock
 
Decentralized Application: A Software Engineering Perspective
Decentralized Application: A Software Engineering PerspectiveDecentralized Application: A Software Engineering Perspective
Decentralized Application: A Software Engineering PerspectiveBambang Purnomosidi D. P.
 
Hyperledger Fabric Technical Deep Dive 20190618
Hyperledger Fabric Technical Deep Dive 20190618Hyperledger Fabric Technical Deep Dive 20190618
Hyperledger Fabric Technical Deep Dive 20190618Arnaud Le Hors
 
PoW vs. PoS - Key Differences
PoW vs. PoS - Key DifferencesPoW vs. PoS - Key Differences
PoW vs. PoS - Key Differences101 Blockchains
 
Smart Contract & Ethereum
Smart Contract & EthereumSmart Contract & Ethereum
Smart Contract & EthereumAkshay Singh
 
Full stack development
Full stack developmentFull stack development
Full stack developmentArnav Gupta
 
Blockchain and Smart Contracts (Series: Blockchain Basics)
Blockchain and Smart Contracts (Series: Blockchain Basics)Blockchain and Smart Contracts (Series: Blockchain Basics)
Blockchain and Smart Contracts (Series: Blockchain Basics)Financial Poise
 

Mais procurados (20)

web3
web3web3
web3
 
Blockchain
BlockchainBlockchain
Blockchain
 
[Call for code] IBM 블록체인을 활용하여 투명하게 구호기금 관리하기 - Hyperledger Fabric v1.1 by 맹개발
[Call for code] IBM 블록체인을 활용하여 투명하게 구호기금 관리하기 - Hyperledger Fabric v1.1 by 맹개발 [Call for code] IBM 블록체인을 활용하여 투명하게 구호기금 관리하기 - Hyperledger Fabric v1.1 by 맹개발
[Call for code] IBM 블록체인을 활용하여 투명하게 구호기금 관리하기 - Hyperledger Fabric v1.1 by 맹개발
 
Web3 School
Web3 SchoolWeb3 School
Web3 School
 
Template Haskell Tutorial
Template Haskell TutorialTemplate Haskell Tutorial
Template Haskell Tutorial
 
Introduction To Solidity
Introduction To SolidityIntroduction To Solidity
Introduction To Solidity
 
Hyperledger Indy tutorial
Hyperledger Indy tutorialHyperledger Indy tutorial
Hyperledger Indy tutorial
 
Icsa2018 blockchain tutorial
Icsa2018 blockchain tutorialIcsa2018 blockchain tutorial
Icsa2018 blockchain tutorial
 
⼤語⾔模型 LLM 應⽤開發入⾨
⼤語⾔模型 LLM 應⽤開發入⾨⼤語⾔模型 LLM 應⽤開發入⾨
⼤語⾔模型 LLM 應⽤開發入⾨
 
Blockchain-based Traceability Application In Agricultural
Blockchain-based Traceability Application In Agricultural Blockchain-based Traceability Application In Agricultural
Blockchain-based Traceability Application In Agricultural
 
Tendermint in a nutshell
Tendermint in a nutshellTendermint in a nutshell
Tendermint in a nutshell
 
Decentralized Application: A Software Engineering Perspective
Decentralized Application: A Software Engineering PerspectiveDecentralized Application: A Software Engineering Perspective
Decentralized Application: A Software Engineering Perspective
 
Hyperledger Fabric Technical Deep Dive 20190618
Hyperledger Fabric Technical Deep Dive 20190618Hyperledger Fabric Technical Deep Dive 20190618
Hyperledger Fabric Technical Deep Dive 20190618
 
StarkNet Intro
StarkNet IntroStarkNet Intro
StarkNet Intro
 
PoW vs. PoS - Key Differences
PoW vs. PoS - Key DifferencesPoW vs. PoS - Key Differences
PoW vs. PoS - Key Differences
 
Smart Contract & Ethereum
Smart Contract & EthereumSmart Contract & Ethereum
Smart Contract & Ethereum
 
All About Ethereum
All About EthereumAll About Ethereum
All About Ethereum
 
Full stack development
Full stack developmentFull stack development
Full stack development
 
ELK Stack
ELK StackELK Stack
ELK Stack
 
Blockchain and Smart Contracts (Series: Blockchain Basics)
Blockchain and Smart Contracts (Series: Blockchain Basics)Blockchain and Smart Contracts (Series: Blockchain Basics)
Blockchain and Smart Contracts (Series: Blockchain Basics)
 

Semelhante a Debugging Microservices - QCON 2017

Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)
Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)
Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)QAware GmbH
 
Tungsten Fabric Overview
Tungsten Fabric OverviewTungsten Fabric Overview
Tungsten Fabric OverviewMichelle Holley
 
Spring boot microservice metrics monitoring
Spring boot   microservice metrics monitoringSpring boot   microservice metrics monitoring
Spring boot microservice metrics monitoringOracle Korea
 
Spring Boot - Microservice Metrics Monitoring
Spring Boot - Microservice Metrics MonitoringSpring Boot - Microservice Metrics Monitoring
Spring Boot - Microservice Metrics MonitoringDonghuKIM2
 
Scale and Load Testing of Micro-Service
Scale and Load Testing of Micro-ServiceScale and Load Testing of Micro-Service
Scale and Load Testing of Micro-ServiceIRJET Journal
 
Managing microservices with Istio Service Mesh
Managing microservices with Istio Service MeshManaging microservices with Istio Service Mesh
Managing microservices with Istio Service MeshRafik HARABI
 
Here Be Dragons: Security Maps of the Container New World
Here Be Dragons: Security Maps of the Container New WorldHere Be Dragons: Security Maps of the Container New World
Here Be Dragons: Security Maps of the Container New WorldC4Media
 
Red Hat and kubernetes: awesome stuff coming your way
Red Hat and kubernetes:  awesome stuff coming your wayRed Hat and kubernetes:  awesome stuff coming your way
Red Hat and kubernetes: awesome stuff coming your wayJohannes Brännström
 
Dynatrace - Red Hat workshop : Monolith to Microservices
Dynatrace - Red Hat workshop : Monolith to MicroservicesDynatrace - Red Hat workshop : Monolith to Microservices
Dynatrace - Red Hat workshop : Monolith to MicroservicesSteve Caron
 
Application cloudification with liberty and urban code deploy - UCD
Application cloudification with liberty and urban code deploy - UCDApplication cloudification with liberty and urban code deploy - UCD
Application cloudification with liberty and urban code deploy - UCDDavide Veronese
 
Vijay Oscon
Vijay OsconVijay Oscon
Vijay Osconvijayrvr
 
Build cloud native solution using open source
Build cloud native solution using open source Build cloud native solution using open source
Build cloud native solution using open source Nitesh Jadhav
 
Characterizing and contrasting kuhn tey-ner awr-kuh-streyt-ors
Characterizing and contrasting kuhn tey-ner awr-kuh-streyt-orsCharacterizing and contrasting kuhn tey-ner awr-kuh-streyt-ors
Characterizing and contrasting kuhn tey-ner awr-kuh-streyt-orsLee Calcote
 
Putting Microservices on a Diet: with Istio!
Putting Microservices on a Diet: with Istio!Putting Microservices on a Diet: with Istio!
Putting Microservices on a Diet: with Istio!QAware GmbH
 
Docker Application to Scientific Computing
Docker Application to Scientific ComputingDocker Application to Scientific Computing
Docker Application to Scientific ComputingPeter Bryzgalov
 
OpenShift Meetup - Tokyo - Service Mesh and Serverless Overview
OpenShift Meetup - Tokyo - Service Mesh and Serverless OverviewOpenShift Meetup - Tokyo - Service Mesh and Serverless Overview
OpenShift Meetup - Tokyo - Service Mesh and Serverless OverviewMaría Angélica Bracho
 
Cerberus : Framework for Manual and Automated Testing (Web Application)
Cerberus : Framework for Manual and Automated Testing (Web Application)Cerberus : Framework for Manual and Automated Testing (Web Application)
Cerberus : Framework for Manual and Automated Testing (Web Application)CIVEL Benoit
 
Cerberus_Presentation1
Cerberus_Presentation1Cerberus_Presentation1
Cerberus_Presentation1CIVEL Benoit
 

Semelhante a Debugging Microservices - QCON 2017 (20)

KrakenD API Gateway
KrakenD API GatewayKrakenD API Gateway
KrakenD API Gateway
 
Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)
Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)
Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)
 
Tungsten Fabric Overview
Tungsten Fabric OverviewTungsten Fabric Overview
Tungsten Fabric Overview
 
Spring boot microservice metrics monitoring
Spring boot   microservice metrics monitoringSpring boot   microservice metrics monitoring
Spring boot microservice metrics monitoring
 
Spring Boot - Microservice Metrics Monitoring
Spring Boot - Microservice Metrics MonitoringSpring Boot - Microservice Metrics Monitoring
Spring Boot - Microservice Metrics Monitoring
 
Scale and Load Testing of Micro-Service
Scale and Load Testing of Micro-ServiceScale and Load Testing of Micro-Service
Scale and Load Testing of Micro-Service
 
Managing microservices with Istio Service Mesh
Managing microservices with Istio Service MeshManaging microservices with Istio Service Mesh
Managing microservices with Istio Service Mesh
 
Here Be Dragons: Security Maps of the Container New World
Here Be Dragons: Security Maps of the Container New WorldHere Be Dragons: Security Maps of the Container New World
Here Be Dragons: Security Maps of the Container New World
 
Red Hat and kubernetes: awesome stuff coming your way
Red Hat and kubernetes:  awesome stuff coming your wayRed Hat and kubernetes:  awesome stuff coming your way
Red Hat and kubernetes: awesome stuff coming your way
 
Dynatrace - Red Hat workshop : Monolith to Microservices
Dynatrace - Red Hat workshop : Monolith to MicroservicesDynatrace - Red Hat workshop : Monolith to Microservices
Dynatrace - Red Hat workshop : Monolith to Microservices
 
Application cloudification with liberty and urban code deploy - UCD
Application cloudification with liberty and urban code deploy - UCDApplication cloudification with liberty and urban code deploy - UCD
Application cloudification with liberty and urban code deploy - UCD
 
Vijay Oscon
Vijay OsconVijay Oscon
Vijay Oscon
 
Build cloud native solution using open source
Build cloud native solution using open source Build cloud native solution using open source
Build cloud native solution using open source
 
Characterizing and contrasting kuhn tey-ner awr-kuh-streyt-ors
Characterizing and contrasting kuhn tey-ner awr-kuh-streyt-orsCharacterizing and contrasting kuhn tey-ner awr-kuh-streyt-ors
Characterizing and contrasting kuhn tey-ner awr-kuh-streyt-ors
 
Microservices with Spring
Microservices with SpringMicroservices with Spring
Microservices with Spring
 
Putting Microservices on a Diet: with Istio!
Putting Microservices on a Diet: with Istio!Putting Microservices on a Diet: with Istio!
Putting Microservices on a Diet: with Istio!
 
Docker Application to Scientific Computing
Docker Application to Scientific ComputingDocker Application to Scientific Computing
Docker Application to Scientific Computing
 
OpenShift Meetup - Tokyo - Service Mesh and Serverless Overview
OpenShift Meetup - Tokyo - Service Mesh and Serverless OverviewOpenShift Meetup - Tokyo - Service Mesh and Serverless Overview
OpenShift Meetup - Tokyo - Service Mesh and Serverless Overview
 
Cerberus : Framework for Manual and Automated Testing (Web Application)
Cerberus : Framework for Manual and Automated Testing (Web Application)Cerberus : Framework for Manual and Automated Testing (Web Application)
Cerberus : Framework for Manual and Automated Testing (Web Application)
 
Cerberus_Presentation1
Cerberus_Presentation1Cerberus_Presentation1
Cerberus_Presentation1
 

Último

TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
Clustering techniques data mining book ....
Clustering techniques data mining book ....Clustering techniques data mining book ....
Clustering techniques data mining book ....ShaimaaMohamedGalal
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfCionsystems
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 

Último (20)

TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Clustering techniques data mining book ....
Clustering techniques data mining book ....Clustering techniques data mining book ....
Clustering techniques data mining book ....
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Active Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdfActive Directory Penetration Testing, cionsystems.com.pdf
Active Directory Penetration Testing, cionsystems.com.pdf
 
Exploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the ProcessExploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the Process
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 

Debugging Microservices - QCON 2017

  • 2. About meIdit Levine Founder and CEO of solo.io @Idit_Levine @ilevine
  • 4. The problem A monolithic application consists of a single process An attached debugger allows viewing the complete state of the application during runtime A microservices application consists of potentially hundreds of processes Is it possible to get a complete view of the state of a such application?!
  • 8. OpenTracing A B E D C Edge service Unique ID → {context} {context} {context} {context} {context} 1. assign a unique identifier to each request at the edge service 2. store it in a context object, along with other metadata 3. propagate the context across process boundaries (in-band) 4. baggage is arbitrary K/V 5. capture timing, events, tags and collect them out of band (async) 6.re-assemble the call tree from the storage for the UI
  • 9. OpenTracing A B E D C Edge service Unique ID → {context} {context} {context} {context} {context} A B E C D TRACE SPANS
  • 10. OpenTracing Architecture spans - basic unit of timing and causality. can be tagged with key/value pairs. logs - structured data recorded on a span. span context - serializable format for linking spans across network boundaries. carries baggage, such as a request and client IDs. tracers - anything that plugs into the OpenTracing API to record information. zipKin, jaeger & lightstep. but also metrics (Prometheus) and logging.
  • 11. OpenTracing OpenTracing is a consistent, expressive, vendor-neutral APIs for popular platforms, OpenTracing makes it easy for developers to add (or switch) tracing implementations with an O(1) configuration change.
  • 13. OpenTracing uses logging - easy to output to any logging tool, even from OSS components. metrics/alerting - measure based on tags, span timing, log data. context propagation - use baggage to carry request and user ID’s, etc. critical path analysis - drill down into request latency in very high fidelity. system topology analysis - identify bottlenecks due to shared resources.
  • 14. OpenTracing limitations openTracing does not provide run-time debugging openTracing requires wrapping and changing the code no holistic view of the application state – can only see what was printed the process (repeatedly modify the application and test) is expansive Impossible to change variable values in runtime logging and printing results in performances overhead
  • 16. Squash brings the power of modern popular debuggers to developers of microservices apps that run on container orchestration platforms. Squash bridges between the orchestration platform (without changing it) and IDE. With Squash, you can: • Live debugging cross multi microservices • Debug container in a pod • Debug a service • Set breakpoints • Step through the code • View and modify values of variables • and more ...
  • 18. Squash Architecture Squash server: holds the information about the breakpoints for each application, orchestrates and controls the squash clients. Squash server deploys and runs on Kubernetes Squash client: deploys as daemon set on Kubernetes node. The client wraps as docker container, and also contains the binary of the debuggers. Squash User Interface: squash uses IDEs as its user interface. After installing the Squash extension, Squash commands are available in the IDE command palette. What vegetable scares all the bugs? Squash!” one of my 8-year old daughter's favorite riddles
  • 19. Squash Architecture: vs code extension vs code extension ➜ kubectl to present the user pod/container/debugger options vs code extension ➜ Squash server with debug config (pod/container/debugger /breakpoint) ➜ waits for debug session vs code extension ➜ connects to the debug server & transfers control to the native debug extension.
  • 20. Squash Architecture: Squash Server vs code extension ➜ Squash server Squash server ➜ relevant Squash client with debug config (pod/container/debugger /breakpoint) Squash server ➜ waits for debug session
  • 21. Squash Architecture: Squash Client Squash server ➜ Squash client Squash client ➜ container runtime interface (to obtain the container host pid) Squash client ➜ runs the debugger, attaches it to the process in the container, and sets the application breakpoints Squash client ➜ return debug session.
  • 24. We are looking for community help to add support for more debuggers, platforms and IDEs. Check out at github: https://github.com/solo-io/squash Squash: open source project
  • 26. Service MeshService mesh data plane: Touches every packet/request in the system. Responsible for service discovery, health checking, routing, load balancing, authentication/authorization, and observability. Service mesh control plane: Provides policy and configuration for all the running data planes in the mesh. Does not touch any packets/requests in the system. The control plane turns all of the data planes into a distributed system.
  • 27. Envoy – data planeOut of process architecture: developers to focus on business logic Modern C++11 code base: Fast and productive. L3/L4 filter architecture: Can be used for things other than HTTP (TCP proxy at its core) HTTP L7 filter architecture: Make it easy to plug in different functionality. HTTP/2 first! (Including gRPC and a nifty gRPC HTTP/1.1 bridge). Service discovery and active health checking. Advanced load balancing: Retry, timeouts, circuit breaking, rate limiting, shadowing, etc. Best in class observability: stats, logging, and tracing. Edge proxy: routing and TLS. The network should be transparent to applications. When network and application problems do occur it should be easy to determine the source of the problem.
  • 28. Istio – control planePilot: responsible for the lifecycle of Envoy instances deployed across the Istio service mesh. Pilot exposes APIs for service discovery, dynamic updates to load balancing pools and routing tables. Mixer: provides Precondition Checking (authentication, ACL checks and more), Quota Management and Telemetry Reporting. Istio-Auth enhance the security of microservices and their communication without requiring service code changes.
  • 30. The whole solutionStep 1: vs code extension ➜ Squash server creating a debug config (service & image) and wait for the debug session to connect. Step 2: envoy gets a curl request with squash header Step 3: ➜ envoy ask Squash server to debug itself and wait for the debug session. 1 2 3 4 5
  • 31. The whole solutionStep 4: Squash server ➜ Squash client Squash client ➜ container runtime interface (to obtain the container host pid) Squash client ➜ runs the debugger, attaches it to the process in the container, and sets the application breakpoints Squash client ➜ return debug session. Step 5: vs code extension ➜ connects to the debug server & transfers control to the native debug extension. envoy resume traffic to the app 1 2 3 4 5