Vertical Scaling requires you to upgrade one machine to a bigger machine with more CPU power, RAM, Hard disk storage. However, Horizontal Scaling would mean you buy multiple machines and solve the scalability issue.
1. In Vertical scaling, there involves inter process communication which are very fast and your service will perform the algorithms / calculations quickly. However, in horizontal scaling, there is an involvement of network communication which tends to slow down things depending on the network.
2. Failure: In horizontal Scaling, the system is reslient. Meaning, if there is one computer failure, there wil still be another system which will be ready to accept a request. However, in vertical scaling, there is only one single point of failure - rendering your webservice un-useable when your system fails.
3. Load Balancing is required in Horizontal scaling as we will have multiple systems in the grid, however, vertical scaling does not need any such load-balancing.
4. Data Inconsistency - In Horizontal Scaling, there is a chance of data becoming inconsistent as we are using multiple machines (although this problem can be solved to an extent, but still not completely - 100%). However, vertical scaling does not have any data inconsistency side-effects.
5. The most important and the last difference is the fact that, in vertical scaling, your biggest machine will still run into a hardware upper limit. There is only enough CPU power or enough RAM you can provide. With horizontal scaling, you will never have this issue of scaling your service as you can theoretically buy infinte number of computers.