Horizontal scaling means that you scale by adding more machines into your pool of resources where Vertical scaling means that you scale by adding more power (CPU, RAM) to your existing machine.
Vertical scaling can essentially resize your server with no change to your code. It is the ability to increase the capacity of existing hardware or software by adding resources. Vertical scaling is limited by the fact that you can only get as big as the size of the server.
Horizontal scaling affords the ability to scale wider to deal with traffic. It is the ability to connect multiple hardware or software entities, such as servers, so that they work as a single logical unit. This kind of scale cannot be implemented at a moment’s notice.
Having said that I would like to give you an easy example to understand it better :
Let’s assume you are going to holiday trip with your team. Actual problem is there are 50 members in your team & travel agent has sent only one bus having capacity of 25 passengers. What you will do? You need at least 2 buses. What you can do is either you can ask for two buses or you can ask for double-decker bus which can carry 50 passengers at a time . Conclusion is you need to scale the basic resource (bus). If you choose option of double-decker then it is called ‘Vertical Scaling’ as you haven’t increased the number of buses, you just increased the capacity of a bus. If you have opt for two buses then it is ‘Horizontal Scaling’ as you have increased the number of buses (resources).
Note : Vertical scaling is called as scaling up and horrzontal scaling is called as scaling out. These are very important concepts in cloud computing and Databases 😉