You can manage servers manually but it&#x27;s kind of like supporting applications without tests. You&#x27;re going to spend an order of magnitude more time dealing with problems especially if you ever need to add a new server. You can get away with manually managing servers until you&#x27;re responsible for ~50 servers. At that point you&#x27;re going to need to invest in automation.<p>For automation it&#x27;s best to use either configuration management like Puppet, Chef, Salt or to invest time in orchestration tools like Ansible. Ansible is probably the easiest to get started with as it&#x27;s just yaml configuration files. In general, while you can use code-based tools like Fabric, you&#x27;ll spend a lot of time rewriting functionality that already exists in ansible. Please note that most orchestration tools let you write OS-specific code whereas configuration management is great if you&#x27;re managing 2 or more different OS&#x27;. If you do need to manage Red Hat and Ubuntu consider standardizing on one platform or using a configuration management tool<p>Honestly, PAAS like Heroku are great if you just want to work on building applications. They take care of the complex stuff, including making sure that your infrastructure is secure. And if&#x2F;when you&#x27;re ready to manage servers yourself you can move from them pretty easily.