Spring Performance Workshop
Performant Backend, happy customers
You have successfully placed your product on the market and were able to help your customers. Now you are ready for the next step. You scale your business.
And you know: To scale your business, your backend must be performant.
Imagine...
your backend has grown with your business.
Going live without worries
Turning up the sales tap
Serving more customers, faster
Knowing what your backend can do
Scale vertically first, then horizontally
Your team wants to tackle performance problems with the big guns. They're betting on a microservice architecture. Kafka as middleware is introduced for event streaming. The solution migrates to Kubernetes - naturally in the cloud. The goal is to scale the backend horizontally.
This is how, or something like this, many companies experience their upscaling after market entry.
Challenge
When developers are confronted with poor performance, they scale horizontally too quickly. The effort is underestimated. This costs you a lot of money and entails high risks. Horizontal scaling is up to 10 times more expensive.
Solution
Understand your system, exploit the possibilities of vertical scaling. After that, you go horizontal.
Systematically optimize your backend
Collect performance metrics
When the need for performance optimization arises, we first see the extreme symptoms. Page construction takes a long time, the API runs into timeouts when requests are made, requests are not processed at x requests per second and exceptions are thrown.
These symptoms do not yet point to the cause of the problem. To find this, we need to establish connections in our system. Therefore, it is necessary to collect and visualize different metrics of our system.
- Use tools to visualize your metrics like Grafana or datadog to find patterns in the behavior of your application
- Monitor your system metrics: CPU Utilization, CPU Load, Memory Usage (swap), disk storage, network bandwidth usage, etc.
- Record RED metrics of your API, calls to external APIs and other services
- Implement Tracing (Open Tracing) and visualize it with Grafana Tempo, Jaeger or Sleuth
- Create load tests with JMeter or Gatling that reflect your most important business scenarios and user behavior
- Look at the JVM-specific metrics like Heap Usage and Garbage Collector Runs
- Pay attention to the file descriptors and available ports in your network
- Record the behavior of your connection and thread pools
- Compare the response and processing times of your database queries with the EXPLAIN command and the pg_stat_statements extension
- Profile your application with Flight Recordings and analyze the hot-code paths with Java Mission Control
- Analyze the behavior of your threads and the influence of context-switches on your system
- etc.
Find the bottleneck
Look for abnormalities between your system in a healthy state and under load.
Is the CPU Load higher than the number of your cores? Then you may have blocking I/O threads.
Do you see a zig-zag pattern in short-interval distances in your RAM? Maybe the garbage collector is running so often that it blocks other threads.
Do you see database queries with a long runtime? You may be doing a full-table scan instead of an indexed access to your records.
You need to discuss, argue, and guess with your team about which property affects your system. This is where the experience and deep understanding of your most experienced developers pay off.
Remedy
With each hypothesis comes an idea of how the identified bottleneck can be fixed. Consider introducing thread, object, and connection pools. Run high-latencyoperations in an asynchronous thread. Optimize your queries by introducing indexes and targeted projections. Optimize your JSON serializer to create fewer objects in memory.
Most performance problems can be quickly fixed - once you've identified them.
Repetition
In optimizing your performance, you only ever see the next wall. Only when you've removed it can you see new symptoms. That's why you iterate. Adjust your metrics, interpret the new patterns, and make new hypotheses.
![Image](workshop.jpg)
Scaling means understanding
If you've read this far, then you've noticed. To scale, deep understanding and a lot of experience are required. With the experience from systems with more than 220 million users worldwide and from coaching several teams, we developed a workshop that enables your team to scale your backend with your business.
With this workshop, we help you build the necessary competence in your team. The concept is designed to solve your acute problems with your team and to prepare them for future challenges. We will:
- Conduct preliminary interviews with the product owner and technical manager so that we really understand your problems and challenges
- Organize a training day with your team, which teaches the team what basics are necessary to solve the acute performance problems
- Take stock of the current monitoring and create a prioritized list of metrics still to be collected
- Based on the metrics, we develop hypotheses with your team about the current bottlenecks and…
- We supervise and accompany the implementation of your team
After we have gone through this process together, your team is prepared to independently recognize and solve the next performance bottlenecks - and that without enormous development effort and exploding costs in operation.
The right offer
Choose the right rate for your workshop
Basic
Perfect for start-ups with young teams. The impulse for your developers.
- Preliminary interview: 1 hour
- Basic training: 4 hours
- Practical workshop:
- Monitoring analysis:
- Load test support:
- Hands-On Mentoring: 1 Iteration
Premium
If you want to play it safe. The extensive training.
- Preliminary interview: 2 hours
- Basic training: 4 hours
- Practical workshop: 4 hours
- Monitoring analysis:
- Load test support: 1 Szenario
- Hands-On Mentoring: 2 Iterationen
Individual
Special challenge? We put together the perfect package.
- Preliminary interview: Individual
- Basic training: Individual
- Practical workshop: Individual
- Monitoring analysis:
- Load test support:
- Hands-On Mentoring:
Still have questions?
Check the FAQs
Your question wasn't answered?
Quick consultation
Call24 hours support
Write an emailYes. Once your team is in the hot phase, things get hectic. The developers are working hard to increase the system's performance. It is important for your team to know how to proceed in a structured way. Otherwise, there is a high risk of making massive architectural changes due to incorrect conclusions. These changes often cost months of development time and carry a high risk. During this time, you will not be able to scale your business further. In the worst case, you may lose customers and not have the resources for further feature development.
After your booking, we will get in touch with you as soon as possible to have an initial conversation. During this conversation, we will explain the exact procedure to you, and you will have the opportunity to ask further questions.
This appointment is not yet the "preliminary interview." In our initial conversation, we will jointly identify which people from your organization should participate in the "preliminary interview."
Teams and projects are unique. Even though the approach presented here is universally applicable, the prerequisites that a team brings are very different. Therefore, it is important that we tailor a package together that fits your situation.
There is no fixed limit on the number of participants. However, it has been shown that groups of more than 10 people no longer learn effectively and should therefore be kept smaller.
After booking, you will receive a concrete offer that specifies the payment terms. To confirm both parties' intention to carry out the workshop and to secure the event date, a deposit of 20% is required. The remaining amount will be paid upon completion.
Getting well-prepared and accurate data about the system is essential to achieve performance improvement. Therefore, we examine your current state and look into your tools. As a result, you will receive a document with our recommendations and assessments regarding your current setup. This forms the basis for support in creating the load test scenarios and iterations.
Please note that to perform this analysis, it is necessary to grant us access to your systems and source code.
Once your team has learned how to work on performance issues, we accompany them in the actual implementation in practice. The specific implementation will be agreed upon individually with you. It has proven to be effective to have regular communication with the responsible developer during the implementation phase and review the progress.
We achieve the best results in an in-person event at your premises. This creates higher participant engagement and allows for individual question clarification after the event. If you do not have suitable space for conducting the workshop, we will be happy to arrange the rental of appropriate premises for you. Please note that in this case, we will invoice the associated costs separately.
If it is not possible for you to organize an in-person event, remote execution is also possible.
Yes, if you can provide the necessary technology on-site. However, in-person participation is recommended due to better and higher participant engagement.
If the training takes place on-site, a projector with HDMI and a flipchart or whiteboard in the room are necessary. For the practical workshop, all participants need a functional computer with an up-to-date browser and a text editor. The training room needs to have guest access to a Wi-Fi network.
Book Now!
Our terms and conditions apply