129
김성욱 정현길 Pinpoint 로 어플리케이션에 대한 Naver 수준의 가시성 확보하기

Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

김성욱정현길

Pinpoint 로어플리케이션에대한

Naver 수준의가시성확보하기

Page 2: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

• Microservice Architecture• Observability in Naver• Enhance Observability with Pinpoint• Open source Pinpoint• Open source Community• Troubleshooting Distributed Systems• How Pinpoint Works• Troubleshooting with Pinpoint• Future Plans

Index

Page 3: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Microservice Architecture

Microservice Architecture

Page 4: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Microservice Architecture

● Development

● Maintenance

● Reliability

● Scalability

● Cost

● Deployment

● Releasing

Page 5: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Microservice Architecture

● Development

● Maintenance

● Reliability

● Scalability

● Cost

● Deployment

● Releasing

Page 6: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Microservice Architecture

● Development

● Maintenance

● Reliability

● Scalability

● Cost

● Deployment

● Releasing

Microservice-based architectures facilitate continuous delivery and deployment.

Page 7: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Microservice Architecture

https://dzone.com/articles/right-strategies-for-microservices-deployment

Page 8: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Microservice Architecture

Page 9: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Microservice Architecture

Cloud Platform

Messenger

Search Engine

Cryptocurrency Market

R & D Center

Camera Mobile App

Webtoon Platform

AI Speaker

Business Platform

Video Streaming Service

Page 10: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Microservice Architecture

● Deployment Management

● Debugging

Page 11: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Microservice Architecture

● Deployment Management

● Debugging

Page 12: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Microservice Architecture

Page 13: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Microservice Architecture

Page 14: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Microservice Architecture

Page 15: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Microservice Architecture

● Deployment Management

● Debugging

Page 16: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Observability in Naver

● Deployment Management

● Debugging

Observability↑

Page 17: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Observability in Naver

Tracing

Logging Metric

Observability

Page 18: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Logging

Observability in Naver

Tracing

Metric

Observability

그리고사람

Page 19: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Observability in Naver

Tracing

Metric

Observability

Logging

Page 20: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Observability in Naver

Tracing

Logging Metric

Observability

Page 21: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Logging

Observability in Naver

Tracing

Metric

Observability

Page 22: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Logging

Observability in Naver

Tracing

Metric

Observability

Page 23: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Logging

Observability in Naver

Tracing

Metric

Observability

Page 24: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Enhance Observability

Bird Eye ViewFinding Slow TransactionsDistributed TracingDevOpsScalableMinimum Overload

Page 25: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Bird Eye View

• Server Map

Page 26: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Bird Eye View

• Server Map

Page 27: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Bird Eye View

• Server Map

Page 28: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Bird Eye View

Page 29: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Bird Eye View

Page 30: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Bird Eye View

Page 31: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Enhance Observability

Bird Eye ViewFinding Slow TransactionsDistributed TracingDevOpsScalableMinimum Overload

Page 32: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Finding Slow Transaction

• Scatter Chart

Response Timeof each

Transaction

Date & Time

Page 33: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Finding Slow Transaction

Page 34: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Finding Slow Transaction

Slow Transactions

Page 35: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Finding Slow Transaction

Page 36: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Finding Slow Transaction

Page 37: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Finding Slow Transaction

Page 38: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Finding Slow Transaction

• Malfunctioning in Real Server

Page 39: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Finding Slow Transaction

• Malfunctioning in Real Server

Page 40: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Finding Slow Transaction

• Malfunctioning in Real ServerReboot

Page 41: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Finding Slow Transaction

• Response Summary chart

• Load chart

Page 42: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Enhance Observability

Bird Eye ViewFinding Slow TransactionsDistributed TracingDevOpsScalableMinimum Overload

Page 43: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Finding Slow Transaction

Page 44: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Distributed Tracing

List of Selected Transaction

The Call Stack with Code Level

• Call Stack

Page 45: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Distributed Tracing

Page 46: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Distributed Tracing

Page 47: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Distributed Tracing

Page 48: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Enhance Observability

Bird Eye ViewFinding Slow TransactionsDistributed TracingDevOpsScalableMinimum Overload

Page 49: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

DevOps

Can be used as HealthCheck

• Realtime Active Thread Chart

Page 50: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

DevOps

Page 51: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

DevOps

Page 52: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

DevOps

Page 53: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

DevOps

Page 54: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

DevOps

Clean =

Page 55: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

DevOps

• Heap, Non-Heap Memory• JVM/SYSTEM CPU• JVM GC• TPS, Active Thread• Response Time• File Descriptor• Direct/Mapped Buffer• Data Source

Basic Info of the Instance

• Inspector

Page 56: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Enhance Observability

Bird Eye ViewFinding Slow TransactionsDistributed TracingDevOpsScalableMinimum Overload

Page 57: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Scalable

collectorcollectorcollectorcollector Hbase

Application

agent

Application

agent

70 billion Span Chunk

(trace segment) per day

.

.

.

• Fully functioning in Naver

Application

agent

Page 58: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Scalable

collectorcollectorcollectorcollector Hbase

70 billion Span Chunk

(trace segment) per day

63 region server17 CollectorsApplication

agent

Application

agent

.

.

.

• Fully functioning in Naver

Application

agent

12,000+ Pinpoint Agent

Page 59: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

12,000+ Pinpoint Agent

Scalable

collectorcollectorcollectorcollector Hbase

70 billion Span Chunk

(trace segment) per day

63 region server17 CollectorsApplication

agent

Application

agent

.

.

.

• Fully functioning in Naver

Application

agent

Peek TPS : 870K Write TPS : 1M1,800+ Application

Page 60: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

12,000+ Pinpoint Agent

Scalable

collectorcollectorcollectorcollector Hbase

x 470 billion Span Chunk

(trace segment) per day

63 region server17 CollectorsApplication

agent

Application

agent

.

.

.

• Fully functioning in Naver

Application

agent

Peek TPS : 870K Write TPS : 1M1,800+ Application

Page 61: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Enhance Observability

Bird Eye ViewFinding Slow TransactionsDistributed TracingDevOpsScalableMinimum Overload

Page 62: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Minimum Overload

• Execute Integration Tests Periodically

- Less than 3% difference in performance

- Sampling ‘No-Agent’, ‘5%’, ‘100%’

Page 63: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Open Source Pinpoint

2012.07 DevelopmentStart

2014.01 First useof Pinpoint

2014.12 90% teams switched fromcommercial APM

2015.01 Startingopen source

2017.12 Reached5000 stars

Page 64: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Open Source Pinpoint

Page 65: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Open Source Pinpoint

Page 66: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Open Source Pinpoint

• Lost of Top 10 IT companies in China• Global enterprises in Korea• Various IT companies in USA• Companies in Financial Industry

Page 67: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Open Source Community

Page 68: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Open Source Community

Page 69: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Open Source Community

Page 70: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Open Source Community

Page 71: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Open Source Community

Page 72: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Open Source Community

Page 73: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Open Source Community

Page 74: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Open Source Community

Page 75: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Open Source Community

GOOD HOSTING!!!!

Page 76: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Open Source Community

Page 77: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Open Source Community

Page 78: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Open Source Community

Page 79: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Open Source Community

Page 80: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Open Source Community

Page 81: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Microservice Challenges

More areas that can fail

99% success rate over 10 components -> 90.5% success rate

Network error much more relevant

Increase in latency

1s 99th percentile over 10 components -> approx. 80th percentile

Observability greatly reduced

Individual servers does not tell the whole story

Traditional way of troubleshooting no longer works

Page 82: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Troubleshooting Microservices

USER ApiGateway Shopping-API

Auth. etc

Page 83: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

USER ApiGateway Shopping-API

Your API is slow

Troubleshooting Microservices

Page 84: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Troubleshooting Microservices

Page 85: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Troubleshooting Microservices

USER ApiGateway

Order

Product

Shopping-API

Page 86: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Troubleshooting Microservices

USER ApiGateway

Order

Product

Shopping-API ???

??? ???

???

???

???

???

Page 87: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Troubleshooting Microservices

USER ApiGateway

Order

Product

???

??? ???

???

???

???

???

GET /shopping/products/12345

POST /shopping/orders

Distributed Transactions

Shopping-API

Page 88: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Troubleshooting Microservices

@honest_update 트위터

www.slideshare.net/alvarosanchezmariscal/stateless-authentication-for-microservices

Page 89: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

So what do we need?

Context

Identify as part of the same request within a single service instance

Identify as part of the same transaction within distributed service instances

Context propagation across thread, or process boundary

Order

Timestamp not enough

Distributed Nodes - time skew

Asynchronous Processing - delayed execution

Structure

Order - 1 dimensional

Call tree requires depth as well

Page 90: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Pinpoint

Call Stack Trace

Traces everything that happens in a single instance

Context propagated via thread-local

Order and structure inherently provided by emulating the call stack

Distributed Transaction Trace

Stitches multiple call stacks under the same transaction

Context propagated via RPC

Order and structure via parent-child relationship of distributed call stacks

Page 91: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Server Map

Page 92: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Server Map

Page 93: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Server Map

Page 94: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Server Map

Page 95: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Server Map

Page 96: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Distributed Call Tree

Page 97: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Distributed Call Tree

Page 98: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Distributed Call Tree

HttpClient.execute()

Page 99: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Distributed Call Tree

HttpClient.execute()

Page 100: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Distributed Call Tree

HttpClient.execute()

Tomcat.receive()

Tomcat.receive()

Page 101: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Distributed Call Tree

FRONT-WEB

BACKEND-WEB

Page 102: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

How it all works

Call Stack Trace

Distributed Transaction Trace

Page 103: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Call Stack Trace

invoke(); -> doGet(); -> demo2();

Page 104: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Call Stack Trace

invoke(); -> doGet(); -> demo2();

doGet() {

demo2();

}

demo2() {

}

invoke() {

doGet();

}

Page 105: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Call Stack Trace

invoke() {

doGet();

}

invoke(); -> doGet(); -> demo2();

doGet() {

demo2();

}

demo2() {

}

invoke() {

doGet() {

demo2() {

}

}

}

Page 106: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Call Stack Trace

invoke() {

doGet();

}

invoke(); -> doGet(); -> demo2();

doGet() {

demo2();

}

demo2() {

}

invoke() {

doGet() {

demo2() {

}

}

}demo2()

doGet()

invoke()

Page 107: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Depth

Call Stack Trace

demo2()

doGet()

invoke()

Sequence

0

1

2

Page 108: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Call Stack Trace

Sequence

0

1

2

Depth

0

1

2demo2()

doGet()

invoke()

Page 109: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Call Stack Trace

Sequence

0

1

2

Depth

0

1

2demo2()

doGet()

invoke()

Sequence

0

1

2

Depth

0

1

1demo2()

doGet()

invoke()

Page 110: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Call Stack Trace

foo() {

fooInterceptor.before();

fooInterceptor.after();

}

Page 111: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Call Stack Trace

invoke() {

invokeInterceptor.before();

doGet() {

doGetInterceptor.before();

demo2() {

demo2Interceptor.before();

demo2Interceptor.after();

}

doGetInterceptor.after();

}

invokeInterceptor.after();

}

Page 112: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Call Stack Trace

invoke() {

invokeInterceptor.before();

doGet() {

doGetInterceptor.before();

demo2() {

demo2Interceptor.before();

demo2Interceptor.after();

}

doGetInterceptor.after();

}

invokeInterceptor.after();

}

Seq. Event Depth

3

2

1

0 invoke() 0

before()

Increment sequence

Push on to the call stack

push

Page 113: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Call Stack Trace

invoke() {

invokeInterceptor.before();

doGet() {

doGetInterceptor.before();

demo2() {

demo2Interceptor.before();

demo2Interceptor.after();

}

doGetInterceptor.after();

}

invokeInterceptor.after();

}

Seq. Event Depth

3

2

1 doGet() 1

0 invoke() 0

before()

Increment sequence

Push on to the call stack

push

Page 114: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Call Stack Trace

invoke() {

invokeInterceptor.before();

doGet() {

doGetInterceptor.before();

demo2() {

demo2Interceptor.before();

demo2Interceptor.after();

}

doGetInterceptor.after();

}

invokeInterceptor.after();

}

Seq. Event Depth

3

2 demo2() 2

1 doGet() 1

0 invoke() 0

before()

Increment sequence

Push on to the call stack

push

Page 115: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Call Stack Trace

invoke() {

invokeInterceptor.before();

doGet() {

doGetInterceptor.before();

demo2() {

demo2Interceptor.before();

demo2Interceptor.after();

}

doGetInterceptor.after();

}

invokeInterceptor.after();

}

Seq. Event Depth

3

2

1 doGet() 1

0 invoke() 0

after()

Pop off the call stack

Buffer to write queue

pop

Write Queue

demo2()

Page 116: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Call Stack Trace

invoke() {

invokeInterceptor.before();

doGet() {

doGetInterceptor.before();

demo2() {

demo2Interceptor.before();

demo2Interceptor.after();

}

doGetInterceptor.after();

}

invokeInterceptor.after();

}

Seq. Event Depth

3

2

1

0 invoke() 0

after()

Pop off the call stack

Buffer to write queue

Write Queue

demo2()

pop

doGet()

Page 117: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Call Stack Trace

invoke() {

invokeInterceptor.before();

doGet() {

doGetInterceptor.before();

demo2() {

demo2Interceptor.before();

demo2Interceptor.after();

}

doGetInterceptor.after();

}

invokeInterceptor.after();

}

Seq. Event Depth

3

2

1

0

after()

Pop off the call stack

Buffer to write queue

Write Queue

demo2()

pop

doGet() invoke()

Page 118: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Call Stack Trace

Sequence

0

1

2

Depth

0

1

2demo2()

doGet()

invoke()

Page 119: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Distributed Transaction Trace

Node 1 Node 2

Node 4

Node 3RPC 2

RPC 1

RPC 3

Find out the relationship between nodes connected by RPCs for a given transaction

Trace tag added to each requests

- HTTP : HttpHeader

Page 120: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Distributed Transaction Trace

Node 1 Node 2

Node 4

Node 3RPC 2

RPC 1

RPC 3

TraceId

- TransactionId

- SpanId

- Parent SpanId

TxId = Node1^Time^1

SpanId = 1

Parent SpanId = -1

TxId = Node1^Time^1

SpanId = 2

Parent SpanId = 1

TxId = Node1^Time^1

SpanId = 3

Parent SpanId = 2

TxId = Node1^Time^1

SpanId = 4

Parent SpanId = 2

Page 121: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Distributed Transaction Trace

Node 1 Node 2

Node 4

Node 3RPC 2

RPC 1

RPC 3

TransactionId (TxId)

Globally unique ID for a single transaction

TxId = Node1^Time^1

SpanId = 1

Parent SpanId = -1

TxId = Node1^Time^1

SpanId = 2

Parent SpanId = 1

TxId = Node1^Time^1

SpanId = 3

Parent SpanId = 2

TxId = Node1^Time^1

SpanId = 4

Parent SpanId = 2

Page 122: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Distributed Transaction Trace

Node 1 Node 2

Node 4

Node 3RPC 2

RPC 1

RPC 3

TxId = Node1^Time^1

SpanId = 1

Parent SpanId = -1

TxId = Node1^Time^1

SpanId = 2

Parent SpanId = 1

TxId = Node1^Time^1

SpanId = 3

Parent SpanId = 2

TxId = Node1^Time^1

SpanId = 4

Parent SpanId = 2SpanId, Parent SpanId

Id used to encode parent-child relationship between nodes

Page 123: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Distributed Call Tree

Page 124: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Troubleshooting with Pinpoint

USER ApiGateway Shopping-API ???

Let’s troubleshoot our system using Pinpoint

(There’s a link @ www.github.com/naver/pinpoint)

Page 125: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Troubleshooting with Pinpoint

Page 126: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Future plans

Page 127: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Future Plans

Page 128: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Future Plans

Page 129: Pinpoint 로어플리케이션에대한 2_1630_2.pdf · 2019-10-30 · • Microservice Architecture • Observability in Naver • Enhance Observability with Pinpoint • Open source

Thank you

Homepage : https://naver.github.io/pinpointGithub : https://github.com/naver/pinpointTwitter : https://twitter.com/Pinpoint_APM E-mail : [email protected], [email protected]

Q & A