Nowadays, most software companies will split features and functions of a site, mobile app or system into small separate services. In doing so, they move away from the traditional monolithic software development notion, where most of the functionality of a system is found in one place. Why are they doing that? Flexibility and maintainability is the answer. You can write the services in any language you want. You can deploy and upgrade independently depending on load and many other factors. However, if you decide to split your services in that way you ought to be very good at integrating (e.g. via token-based authentication) and monitoring the services. Think about this before you develop your next website, app or system!