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.
- Distributed tracing with OpenCensus
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.
2. Scaling Instagram Infrastructure Talk
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)
3. JVM Intrinsic function
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
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.
5. Java on-heap vs off-heap
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