About the program
Welcome to Software Instrumentation course. This online live bootcamp is designed to help you understand the fundamental ideas behind software instrumentation and monitoring, its applicability, benefits, as well as current and future challenges.
I made a short video to explain what this course is about and how the result of final projects and challenges look like.
For more details about the syllabus, you can find it here.
Who is this course for?
This course is designed for beginner and intermediate software engineers who are interested in learning about software instrumentation and monitoring. No prior experience with software instrumentation and monitoring is required.
If you are an expert and have been working with observability tools for years, this course might not be for you.
Schedules and Duration
This course will be conducted over 4 weeks. Each week, we will have 1 live online classes. Each class will be 2-3 hours long. There might be recitation outside of the live online class, but it is optional. It will be held based on my availability.
Planned schedule can be found in registration and payment.
Class Size
The class size is limited to 10-20 participants. This is to ensure that I can give enough attention to each student.
Course Goals/Objectives
During this course, you will learn the following:
- Fundamental ideas behind software instrumentation and monitoring, its applicability, benefits, as well as current and future challenges.
- Setting up basic tech stacks for tracing, logging, and monitoring in cloud native environment such as Grafana, Fluenbit, Prometheus, Loki, Jaeger, and OpenTelemetry.
- Different instrumentation techniques to understand the performance and how your application behaves. It includes, and not limited to, logs, metrics, traces, manual instrumentation, and automatic instrumentation.
- Performing instrumentation for application consists of multiple dependencies (e.g. web application, microservices, databases, message brokers, message queues, etc.)
- Using instrumentation to diagnose performance issues, reliability issues, and business-relevant metrics.
Prerequisites
To help you get the most out of this course, you should have basic knowledge and some hands-on experience in the following areas:
- Go
- REST API
- gRPC (not required, but very basic knowledge is expected). I can share you some resources to learn gRPC if you are not familiar with it.
- Docker and containerization
- Linux and Ubuntu. See lab requirements for more details.
Database and cloud native tech stack
During this course, we are going to use, learn and discuss at least the following cloud native technologies:
- Grafana
- Grafana Loki
- Fluentbit
- Prometheus
- Jaeger
- OpenTelemetry
- Go
- Postgresql
- Docker
Communication and collaboration
We will use Discord for communication and collaboration. You will be invited to the Discord channel after you register to the course. You can use discord to share your progress, ask questions, and help each other. I will be there to help you as well.
What this course is about
Instrumentation and monitoring from software engineering perspective. We will focus on how we as software engineers can instrument our application and how we can use the data to understand our application and to improve our application performance, reliability, and business metrics.
Hands-on experience. This course is designed to be hands-on. You will be given a lot of exercises to help you understand the concepts and apply it in practice.
This course is designed to be a starting point for you to learn about instrumentation and monitoring. It is meant to give you ideas about what can be enabled by having good instrumentation and monitoring practice by using real world scenario. More often than not, you will find that the scenario is not complete and you will need to do some research to complete the exercise. This is intentional. I want you to be able to learn how to learn and how to find the information that you need to complete the exercise.
What this course is not about
Building and configuring logging and monitoring infrastructure *at scale. Logging and monitoring tooling that we will use in this course is probably not suitable for production use case at scale. But it should be enough for you to get started and learn the concepts applicable to production use case.
Deep dive into logging, tracing, and monitoring tools. We will only cover the basics of the tools that you can use to understand your application performance and behavior.
How this course is taught
This might not be the typical bootcamps where you will be listening to few hours lectures of me talking about the concepts and live demos. This bootcamp is always about you! Yes YOU! This is how the course will be taught:
You are expected to read related writeup BEFORE the upcoming live online class (if any). In several writeup, I also put references to other website. When I say it is a recommended reading, it means YOU MUST READ IT (lol). I’m not going to go with presentation style to explain stuff. So, don’t expect there will be slide that you can download after the class.
If there are any setup or software installation required, you must do it before the class. Failure to do so will result in you not being able to participate optimally in the live online class.
You will be given exercises and challenges to complete. You are expected to try the exercises and challenges BEFORE the class. The exercises and challenges are designed to help you understand the concepts and apply it in practice. Since we only have limited time during the live online session, I guarantee you that you won’t be able to complete the exercises and challenges during the live online class. So don’t think about doing it few hours before the class. When you are feeling left behind, that’s where the motivation will go away. So, please do it before the class and communicate if you face any issues in discord ASAP.
During the live online class, the class will be used to discuss issues you are facing in completing the exercises and challenges. Again, it is not a lecture. I will be your facilitator who will guide you to think through the problem and solution. Thus, you are expected to come to the class with questions and issues that you are facing when completing the challenges.
During the live online class, I will be expecting you to showcase your work. For you who are lucky enough, you will be expected to share your screen, show your works to the class, and answer questions from your peers. This is important because it will help you to learn from each other and to understand the different approaches to solve the same problem.
Outside of the class, you should help each other in the discord channel. You are expected to engage in the discord channel, ask questions, answer questions, and help each other. Absolutely I will be there to help you, but I expect you to help each other as well.
Outside of the class, when working on the exercises and challenges, you should share your small wins and progress in the discord channel. This is important to keep you motivated and to help you to learn from each other.
I know some of you might be disappointed because this class somehow is not taught the way you are expecting (by going through slide or something similar). But I believe that this is the best way for adult to learn. You will learn more by doing and by teaching others.
If you are not comfortable with these rules, I suggest you not to take it. I don’t want you to waste your time and money. But, if you are up for the challenge and believe me with this, I will help you to get the most out of this course.
WARNING: This course requires a lot of commitment to succeed. There will be a lot of reading, exercises, challenges, and sufferings especially when you are new to all of these technologies. But always remember this: “What doesn’t kill you make you stronger” :p