5 Links — May 2019

Every month, if not every day, I learn many things from my work or my colleagues. However, I often forget what I studied and I feel pity for myself because the impression I haven’t improved yet :D

So I decided that I will take (maybe) 5 interesting links I learned at the end of the month. One reference will include context, a short description and how to discover more about that subject. By looking back, I can remember some interesting kinds of stuff I watched/read before. I hope you also see this useful :D

This is my first post in this series.

  1. Distributed tracing with OpenCensus

Link: https://opencensus.io/

This month, I researched and implemented a distributed tracing system for our team’s microservices (over 20 services). This is a huge topic that I wish I would write a separate blog. But in my two cents, if you are doing microservice stuff, your infrastructure needs a distributed tracing system. OpenCensus is a good start.

Some other references you should follow: [1]Open Tracing, [2]How not measure latency.

2. Scaling Instagram Infrastructure Talk

Link: https://www.youtube.com/watch?v=hnpzNAPiC0E

A wonderful speech from Instagram engineers has shown the evolution of Instagram infrastructure for many years. Two main points from the speech are:

  • The systematic way that Instagram engineers try to think and solve problems. Every time they see a problem, they use concrete data to understand and fix issues. In case the system doesn’t produce enough data points, they build tools and collect necessary metrics. This is a good approach rather than just struggle to brute-force all solutions space/guessing/… You named it.
  • Defined 3 metrics of scaling: scale-up, scale-out, and scale dev team. With each metric, they present a solution to improve (with some quantitative data)
Image for post
Image for post

3. JVM Intrinsic function

Link: https://stackoverflow.com/questions/45912510/does-java-jit-cheat-when-running-jdk-code/45917687#45917687

While doing some Java kinds of stuff, I come to this link. It is amazing because working with Java for a long time; I don’t know some classes such as Big Integer has a different implementation which uses Assembly behind for optimization.

Those functions have a special name intrinsic function. I admired the guy who asked this question because he tries to implement BigInteger on his own (by copy Java’s source code) but he cannot get the same performance. I didn’t think about this before.

4. Algorithms behind Modern Storage Systems

Link: https://www.infoq.com/presentations/storage-algorithms

An interesting talk with a very clear voice about modern storage system approaches including Log-Structured Merge-Tree, B-Tree, and Read-Update-Memory triangle.

Image for post
Image for post

5. Java on-heap vs off-heap

Link: https://stackoverflow.com/questions/56296509/why-is-cassandra-taking-this-much-memory-despite-xmx-heap-option

The new thing I learned from this question is the on-heap and off-heap concept in Java. This is not a real thing with me. I have written some similar ideas before (Android Heap Allocation zero-to-one). But I don’t have such a detail as this question’s answers provided. :D

Thanks.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch

Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore

Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store