Bottlenecks and what to do about them

When you work with complex systems such as web servers, database servers, third party API providers and analytics, you can easily get bogged down by all the different places where your system can fail.

This article will not go into detail on each subject, but serve as a starting point for further exploration.

Let’s disassemble the parts and see what you can do to alleviate your potential issues:

Profile your code

Depending on which language you develop in, there are several different tools available to you. Here is a list for some of the most common languages:

Javascript

  • Chrome Developer Tools
  • Firefox Developer Tools

C#

Go, Python or Ruby

Profile your database calls

There are several ways to go about this. You can purchase easy to use tools or go the open source road:

  • One of the paid products are appdynamics, which is now part of cisco
  • An open-source way could be to add a slow_query_log (MySQL) option to you database and then review the result to figure out where a potential bottleneck could be located.
  • If you like a an easy tool, but still be in control yourself, then have a look at Percona Toolkit — which has professional developed performance tools for mySQL and MongoDB

Optimise with microservices

Micoservices are a way to break down your solution into a collection of smaller components and use them as loosely coupled services. This will give your solution better resilience and flexibility. Breaking the code into smaller components will also provide the opportunity for outsourcing part of the development and / or use 3rd party providers, while maintaining the same development paradigm. Microservice are often associated with container solutions such as lxc/lxd and docker. You can read more about microservices @ What are microservices? — this does not necessarily need to be the case, you can easily start of by providing this from a more traditional server platform.

Control your hosting solution: dedicated vs. shared vs. private cluster

I know there has been numerous articles about the differences between shared vs. dedicated, but try to compare these solutions with a dedicated private cluster and you will discover several benefits:

1. You decide if there should be any form of over provisioning, not your provider

2. If a piece of hardware breaks, another part of the system will take over and the broken part can be replaced without invoking an emergency service window

3. You are in full control of the environment and can spin up or take down vm’s and / or containers when it suits your business. There is also an API, that enables you to control the process from your code / DevOps solution

Conclusion

The general idea is how to ship better products and do it faster. All the above-mentioned issues are things that you need to manage in your project. We are here to help you navigate safely through the infrastructure-part and make sure that you have the best support available. See www.adeodc.com