DEV Community

Muhammad
Muhammad

Posted on

Any tips on DevOps or how to scale an app that has massive users

Top comments (1)

Collapse
 
recursivefaults profile image
Ryan Latta

In my experience, scale for web applications comes from three areas.

  1. Vertical (Adding more memory, cpu, bandwidth)
  2. Horizontal (Adding more nodes)
  3. Correcting bottlenecks in code/design

DevOps as an idea and practices will allow you to accomplish these with increased safety and speed. A core belief in it is, "If it hurts, do it more." So, to accomplish any of these scaling techniques you will have to actually do it, suffer, try to remove the pain, and repeat.

Now I gave numbers to those scaling options for a reason. Throwing more resources at the machines responsible is often easiest, but it won't carry you far. This also depends on where the application is hosted and other factors. Do some analysis to find out where the application is starving itself and see if you can give it more of that resource.

Horizontal scaling is next up because it often requires that the application is built in a way to allow it. The thing to pay attention to when scaling horizontally is the state inside the system. Sessions and caches are typical sore spots for horizontal scales, as are databases. Also to horizontally scale, your networking topology will get more complex with load balancers and proxies.

Lastly, correcting bottlenecks in code and design. This is number three because it is a difficult skill to actually find bottlenecks for many, and it takes a lot of time to do it well. Even though I rank this one last I want it to remain at the forefront of any team's mind. If you have an application that is written to perform poorly, that is exactly what you are scaling and essentially burning money. Learning to detect hotspots is a valuable skill. Start practicing now.