How we tuned the performance of our Atlassian Connect/Spring Boot applications on AWS

Hey there, everyone!

As many of you can relate, we’re avid users of Spring Boot and Atlassian Connect. Recently, we’ve been exploring how to optimize the performance of our applications on AWS. We had a lot of questions that needed to be answered: Is the sizing of our instances correct? How many database connections should we have - 20, 100 or 200? And what about HTTP threads - is 30 enough or should we aim for 300? On top of all that, how can we trigger auto scaling, and what are the critical metrics to monitor?

We put our minds to the task and ran several tests to uncover the optimal approach to these questions. And now, we are excited to share our results with you. You can check out our latest blog post, where we’ve detailed our findings and shared our insights: How we tuned the performance of Spring Boot applications on AWS.

As always, we welcome your feedback, and please let us know if you think we’ve missed any important areas. Thanks!

4 Likes

Hi @JoaoBrltYogi

That was an interesting read. I recently also went through a similar exercise when I applied for the Cloud Fortified program with my app, also hosted on AWS and also Atlassian Connect on Spring Boot, but then running in Fargate services on ECS.

A tricky thing to get right is the auto scaling policies. Initially I also used requests per target, but as the app grew it became clear that memory usage per node was a better indictor to scale up or down.
One thing that still has me thinking to even further improve the scaling, is using custom metrics. The AWS out-of-the-box metrics only allow alarming, and thus scaling, on a 5min interval. As I understand it customer metrics would allow alarming on 1 minute or even 5 second bases. But as hosting goes, there is a bill to be paid and customer metric bases alarms are not cheap the last time I looked.

1 Like