Skip to content

Commit

Permalink
Added code instrumentation category
Browse files Browse the repository at this point in the history
  • Loading branch information
Gianluca Arbezzano committed Mar 30, 2020
1 parent 9e24c18 commit 60771d9
Show file tree
Hide file tree
Showing 12 changed files with 176 additions and 4 deletions.
1 change: 1 addition & 0 deletions _includes/navigator.html
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" data-toggle="dropdown" href="/blog.html" role="button" aria-haspopup="true" aria-expanded="false"></a>
<div class="dropdown-menu">
<a href="/planet/code-instrumentation.html" class="nav-link">Code instrumentation</a>
<a href="/planet/assemble-kubernetes.html" class="nav-link">Kubernetes</a>
<a href="/planet/mockmania.html" class="nav-link">MockMania</a>
<a href="/planet/docker.html" class="nav-link">Docker</a>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,4 @@ eventLink: http://2017.apiconf.it/
city: ""
links: {}

---
---
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ layout: post
title: "What is distributed tracing. Zoom on opencensus and opentracing"
date: 2018-02-18 10:08:27
categories: [post]
tags: ["distributed tracing", opentracing, opencensus, tracing, distributed
tags: [codeinstrumentation, "distributed tracing", opentracing, opencensus, tracing, distributed
system, monitoring, cloud, observability, tracing]
summary: "Distributed tracing is a fast growing concept. We increased the
distributions for our applications and the consequence is a different complexity
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ layout: post
title: "OpenMetrics and the future of the prometheus exposition format"
date: 2018-08-23 08:08:27
categories: [post]
tags: [go, open source, metrics, prometheus, influxdb, openmetrics, cncf, oss,
tags: [codeinstrumentation, go, open source, metrics, prometheus, influxdb, openmetrics, cncf, oss,
exposition format, snmp]
summary: "This post explain my point of view around prometheus exposition format
and it summarise the next step with OpenMetrics behing supported by CNCF and
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ layout: post
title: "OpenTelemetry the instrumentation library, I hope"
date: 2019-11-20 08:08:27
categories: [post]
tags: [o11y, tracing, observability, opentracing, opencensus, opentelemetry,
tags: [codeinstrumentation, o11y, tracing, observability, opentracing, opencensus, opentelemetry,
cncf]
summary: "OpenTelemetry, OpenCensus, OpenTracing, Open your heart"
changefreq: daily
Expand Down
86 changes: 86 additions & 0 deletions _posts/2020-03-29-why-code-instrumentation.markdown
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
---
img: /img/got-your-back.jpg
layout: post
title: "Why code instrumentation?"
date: 2020-03-29 09:08:27
categories: [post]
tags: [golang, codeinstrumentation, o11y, opentelemetry, opentracing, prometheus, sre]
summary: "I decided to finally create a category about code instrumentation.
Because I am a develop. And I think it matters. It is important to write better
code and more reliability application that we can learn from."
changefreq: daily
---

I am writing this blog post as a common introduction for a new category I would
like to write about consistently on my blog. If this is the first time you land
here this is my blog, and I write about everything that catches my attention but
sometime earlier sometime later on I realize I can group my posts in categories,
and that's what I am doing now.

Some of them are: [Assemble Kubernetes](/planet/assemble-kubernetes.html),
[Docker](/planet/docker.html), [MockMania](/planet/mockmania.html). This one
will be called `Code Instrumentation`.

There are a lot of people writing about observability, monitoring and I did it
for the last 3 years as well. I learned a lot along the way but what I think is
crucial is that developers has to write code that is
understandable and easy to debug where it is more valuable, in production. And
if an application or a system is hard to figure out we as a developer play a
mojor role on it.

That's why Site Reliability Engineering (SRE) is not related to ops, servers,
Kubernetes but it is something that plays its match in your code.

What's why I think SRE and DevOps are different, not at all connected.

The technologies that are leading the landscape are:

1. Prometheus but not the time series database, their client libraries and the
exposition format, now branded from the community and the Cloud Native
Computing Foundation (CNCF) as OpenMetrics
2. OpenTracing, OpenCensus and OpenTelemetry. They are part of the same bullet
points because I think about them as the consequence of each other since what
I hope is "THE LAST ONE", OpenTelemetry. They are instrumentation libraries
and specification to increase interoperability and to avoid vendor lock-in
for what concerns distributed tracing and metrics. I hope logs will jump
onboard at some point

## Prometheus and OpenMetrics

I wrote about this topic previously, so have a look there if you do not know
what I am speaking about.

I think they are worth to mention here because that's how I learned the effect
of good or bad code instrumentation, and the fact that it has to happen in your
code, when you develop it.

It has the same weight has writing a good data structure, writing solid unit
tests, or picking the right design pattern.

## OpenTelemetry (otel)

As I said I will refer to otel when I can, not because I think OpenTracing or
OpenCensus is bad, but because I do not see this as a religion, but for me it is
a technical problem, they is well spread and it has to find a good answer.

Those communities decided to merge to otel in the way they are doing, good or
bad? We can get a beer at some point and I will tell you. It is out of scope.

## What I am gonna talk about

This is a long new category introduction blog post probably but that's it. Over
the last two years I tried to share what I experienced around this topic with a
workshop called: "Application Monitoring". A lot of the articles that I will
write comes from there, and it is an attempt to share what I think worked or
failed.

## Links

* [All about Code Instrumentation](/planet/code-instrumentation.html) from my blog
* [ShopMany](https://github.com/gianarb/shopmany) is the application I developed for the workshop
* [Workshop notes](https://github.com/gianarb/workshop-observability) contains notes, exercises and solutions for the lessons I
proposed in the workshop itself
* [honeycomb](https://www.honeycomb.io/blog/) because when you speak about o11y you have to quote them!
* [My newsletter](/tinyletter.html) is probably the best way to stay in touch with the content I
create
* [Twitter](https://twitter.com/gianarb) is the best way to stay in touch with me
1 change: 1 addition & 0 deletions img/logo/openmetrics-black-stacked.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions img/logo/opentracing-black-stacked.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions img/logo/otel-black-stacked.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added img/snmp.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
52 changes: 52 additions & 0 deletions planet/code-instrumentation.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
---
layout: default
title: Code Instrumentation
summary:
img: /img/got-your-back.jpg
---
<div class="container">
<div class="row mt-3">
<div class="col-md-12">
<h2>
Code Instrumentation
<a href="/planet/code-instrumentation.xml" target="_blank"><span style="font-size: 70%;color:#F78422"><i class="fas fa-rss"></i></span></a>
</h2>
</div>
</div>

<div class="row mt-3">
<div class="col-md-10 text-left">
<blockquote class="blockquote">
<p class="mb-0">If you instrument your code, watch it deploy,
then ask “is it doing what I expect, does anything else look
weird” as a habit? You can build a system that is both
understandable and well-understood. If you can see what you’re
doing, and catch errors swiftly, it never has to become a
shitty hairball in the first place. That is a choice.</p>
<footer class="blockquote-footer">
Charity Major
<cite title="CTO Honeycomb.io"><a href="https://charity.wtf/2020/03/03/observability-is-a-many-splendored-thing/" target="_blank">OBSERVABILITY IS A MANY-SPLENDORED DEFINITION</a></cite>
</footer>
</blockquote>
</div>
</div>

<div class="row mt-3">
<div class="col-md-12 lead">
<a href="/blog/why-code-instrumentation">Read about why</a> I am grouping my articles around this expecit "Code
Intrumentation" category. Because it matters. It matters lot.
</div>
</div>

<div id="blog" class="row mt-3">
<div class="col-md-12">
<h3>Posts</h3>
{% for post in site.categories['post'] %}
{% if post.tags contains "codeinstrumentation" %}
{% include post_detail.html %}
{% endif %}
{% endfor %}
</div>
</div>

</div>
30 changes: 30 additions & 0 deletions planet/code-instrumentation.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
---
layout: null
---
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>Code Instrumentation from @gianarb</title>
<link href="http://gianarb.github.io/atom.xml" rel="self"/>
<link href="http://gianarb.github.io/"/>
<updated>{{ site.time | date_to_xmlschema }}</updated>
<id>http://gianarb.it/planet/code-instrumentation.xml</id>
<author>
<name>Gianluca Arbezzano</name>
<uri>http://gianarb.it</uri>
<email>[email protected]</email>
</author>
{% for post in site.categories['post'] %}
{% if post.tags contains "codeinstrumentation" %}
<entry>
<title>{{ post.title }}</title>
<link rel="alternate" type="text/html" href="https://gianarb.it{{ post.url }}"/>
<description>{{ post.summary | xml_escape }}</description>
<image>{{ post.img | default: '/img/assemble-kubernetes.png' }}</image>
<updated>{{ post.date | date_to_xmlschema }}</updated>
<pubDate>{{ post.date | date_to_xmlschema }}</pubDate>
<id>https://gianarb.it{{ post.url }}</id>
<content type="html">{{ post.content | xml_escape }}</content>
</entry>
{% endif %}
{% endfor %}
</feed>

0 comments on commit 60771d9

Please sign in to comment.