Skip to content

Commit b08680c

Browse files
author
Paul Cleary
committed
Release 0.9.0
1 parent 459a707 commit b08680c

File tree

2 files changed

+28
-30
lines changed

2 files changed

+28
-30
lines changed

README.md

Lines changed: 27 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
## Development Status
2-
We are actively working on version 0.9 that will offer several improvements over both the API and module
3-
implementations. 0.8.x is being used in several projects currently, and we will continue to enhance
4-
0.8.x for the foreseeable future while 0.9 work takes place.
5-
6-
If you want to work on 0.9, feel free to reach out!
2+
Released 0.9.0! A lot of updates here. Many things are not backward compatible
3+
with 0.8.x, in particular the configuration. See the `sample` for information
4+
on usage and configuration changes.
75

86
### Availability
97
We have requests in to deploy to a public repo, that should be available shortly
@@ -14,20 +12,20 @@ written by Michael Bevilacqua-Linn discusses our experiences at Comcast implemen
1412

1513
## Money: Distributed Tracing Made Simple
1614
### Money makes it simple to trace across threads and systems
17-
Money is a modular distributed tracing platform that can be seamlessly incorporated into modern applications. *It's
15+
Money is a modular distributed tracing platform that can be seamlessly incorporated into modern applications. *It's
1816
purpose is to provide a foundation for operational analytics through distributed tracing.*
1917

2018
Money is built on Scala and Akka, to be non-blocking from the core. It is purposefully un-opinionated, keeping undesired pull-through dependencies to a minimum.
2119

2220
Money modules build on the core, so implementing tracing is a snap. From Apache Http Components to Spring 4, from thread pools to Scala Futures, Money has modules to support a wide range of architectures.
2321

2422
## Why is it different?
25-
Money was inspired by inspired by [Google Dapper](http://research.google.com/pubs/pub36356.html)
23+
Money was inspired by inspired by [Google Dapper](http://research.google.com/pubs/pub36356.html)
2624
and [Twitter Zipkin](http://twitter.github.io/zipkin/); however there are some subtle yet fundamental differences
2725
between those systems and Money, the biggest one being...
2826

2927
### Spans start and end within a single process
30-
In Dapper, a Span can encompass the communication between a client and a server. Let's use an example of an
28+
In Dapper, a Span can encompass the communication between a client and a server. Let's use an example of an
3129
*Order System* calling an *Inventory Management System*. With Dapper, you could have the following:
3230

3331
- *span-name* - GetInventory
@@ -40,8 +38,8 @@ In Dapper, a Span can encompass the communication between a client and a server.
4038

4139
The idea being that everything can be calculated when the data is at rest.
4240

43-
In Money, it is theoretically possible to do the same, but by default we always extend a span when the server
44-
starts processing. We do this because we like to record important notes by default, namely the *span-duration* and
41+
In Money, it is theoretically possible to do the same, but by default we always extend a span when the server
42+
starts processing. We do this because we like to record important notes by default, namely the *span-duration* and
4543
the *span-success*. Using the example above, with Money we would get:
4644

4745
- *app-name* - OrderSystem
@@ -74,59 +72,59 @@ more data will be generated
7472
Here are some advantages:
7573

7674
- You can use Money as a basis for operational analytics. Money generates 3 important stats: latency, throughput and error rate.
77-
We find that these are the most important stats in analyzing system performance and capacity. You could calculate
75+
We find that these are the most important stats in analyzing system performance and capacity. You could calculate
7876
these at rest in Dapper; but we believe that these can be understood more quickly to support real-time monitoring
7977
- You can very quickly integrate with monitoring tools. As opposed to having to calculate metrics at rest in Dapper and Zipkin,
8078
you can publish span data directly to Graphite (for instance), and create charts immediately. This is a very strong advantage
81-
to calculating metrics at the source. Money actually comes with a *Graphite Emtitter* out-of-the box. Given that
79+
to calculating metrics at the source. Money actually comes with a *Graphite Emtitter* out-of-the box. Given that
8280
money is pluggable, it is quite trivial to integrate with many other systems.
83-
- In distributed system calls, it is important to know that the server "succeeded" or "failed", allowing you to more quickly
84-
focus your troubleshooting efforts when things go wrong. For example, if the server succeeded, then we can direct our
81+
- In distributed system calls, it is important to know that the server "succeeded" or "failed", allowing you to more quickly
82+
focus your troubleshooting efforts when things go wrong. For example, if the server succeeded, then we can direct our
8583
efforts toward the client or the network
8684
- Less calculation is needed on the data - we have basic measures that we can use for calculations, allowing us
8785
to process data and perform analytics faster
8886

8987
### We don't sample...yet
9088
I can see rocks starting to fly here, and I understand. Money was not built in its present incarnation to support
91-
systems which generate 10s of millions of events per second. Money was built to use distributed tracing as a foundation
89+
systems which generate 10s of millions of events per second. Money was built to use distributed tracing as a foundation
9290
for operational analytics.
93-
91+
9492
We were much more interested in creating a standard set of metrics that we could use as a basis to perform operational analytics.
9593
As such, for us, every event does matter as we can build aggregates very easy (even success).
9694

97-
We have been able to instrument systems that do generate many millions of events per hour with success, but Money did
98-
not have the same considerations that went into the Dapper design. Being able to process our base metrics gets us
99-
closer to real-time understanding of processing; distributing the calculations to the origin systems gave us a lot of
95+
We have been able to instrument systems that do generate many millions of events per hour with success, but Money did
96+
not have the same considerations that went into the Dapper design. Being able to process our base metrics gets us
97+
closer to real-time understanding of processing; distributing the calculations to the origin systems gave us a lot of
10098
flexibility and speed in processing the data at rest.
10199

102100
> We are committed to support sampling and are evaluating designs...ideas are welcome. Look for basic sampling to be added shortly
103101
104102
### We do not provide a backend like Zipkin
105103
Zipkin comes with an entire infrastructure built around Scribe and Cassandra that actually allows you to see data. This
106-
is super cool, and something we aspire to complete. We have looked at Spark Streaming and Akka Cluster Sharding as
104+
is super cool, and something we aspire to complete. We have looked at Spark Streaming and Akka Cluster Sharding as
107105
implementation mechanisms (and have some prototype / experimental code to that end), but we have not yet gotten our act
108106
together.
109107

110-
One of the main advantages of Money is that it provides usable operational analytics out-of-the-box; whether
108+
One of the main advantages of Money is that it provides usable operational analytics out-of-the-box; whether
111109
reporting to Graphite, exposing data via JMX, and/or aggregating logs in Logstash. As such, we have been able to gain
112110
key insight into traces and performance using standard open source tools; here are some examples:
113111

114-
- Splunk / LogStash - we use log aggregators to perform metrics across systems at rest. The nice thing about log
115-
aggregators is that you can not only see your metrics, but you can also look at all of the log entries that happend
112+
- Splunk / LogStash - we use log aggregators to perform metrics across systems at rest. The nice thing about log
113+
aggregators is that you can not only see your metrics, but you can also look at all of the log entries that happend
116114
for a single Span
117115
- Graphite / Prometheus - we use common analytic systems for monitoring and altering on Money data
118116

119117
## Should I use Money?
120118
This depends on the scale of your implementation. Money _tries_ to serve a wide range of implementations.
121119

122-
Certainly, if you want to implement an application that is serving 1000s or 10000s of request per second per JVM, Money
120+
Certainly, if you want to implement an application that is serving 1000s or 10000s of request per second per JVM, Money
123121
should work for you. You can easily funnel data into your log aggregator or other reporting system and start
124122
getting the benefits immediately.
125123

126-
If your implementation is in the order of 50000+ RPS with lots of spans, then things will get difficult
124+
If your implementation is in the order of 50000+ RPS with lots of spans, then things will get difficult
127125
as you will have to manage a lot of data. Spooling span events to disk and sending them as you can is one approach.
128126
You can use FluentD, Heka, PipeD or something else to eventually get the data off of disk. Theoretically it is possible,
129-
but without sampling, Money is generating a ton of data. If you are not using that data for analytics, you can
127+
but without sampling, Money is generating a ton of data. If you are not using that data for analytics, you can
130128
filter it out (or contribute back a sampling feature); either way, it becomes a challenge.
131129

132130
## I don't need no docs, gimme Money!
@@ -136,10 +134,10 @@ Add a dependency as follows for maven:
136134
```xml
137135
<dependency>
138136
<groupId>com.comcast.money</groupId>
139-
<artifactId>money-core</artifactId>
140-
<version>0.8.11</version>
137+
<artifactId>money-core_2.12</artifactId>
138+
<version>0.9.0</version>
141139
</dependency>
142-
```
140+
```
143141

144142
## User Guide
145143
[Money Documentation](https://github.com/Comcast/money/wiki)

build.sbt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ def aspectjProjectSettings = projectSettings ++ Seq(
185185

186186
def basicSettings = Defaults.itSettings ++ SbtScalariform.scalariformSettings ++ Seq(
187187
organization := "com.comcast.money",
188-
version := "0.9.0-SNAPSHOT",
188+
version := "0.9.0",
189189
scalaVersion := "2.12.6",
190190
resolvers ++= Seq(
191191
"spray repo" at "http://repo.spray.io/",

0 commit comments

Comments
 (0)