Distributed Systems
What is a distributed system?
A distributed system, as its name implies, is a system which its components are located on different places (servers) on a network, these can be physical servers or virtual like a containers, but they are configured to reach the communication between them and the final user won't be able to distinguish that they are located on several servers, the user only will see a unique unity of work. A common example is the famous architecture of microservices.
Advantages
Fiability: Being distributed, You don't have all infrastructure in a single machine, this includes its copies, it means that if a machine fails, -it doesn't matter- because in this moment another machine goes on to start functionality.
Scalability: In case that your application does a lot of processes, you will be able to scale your infrastructure easily without wasting resources in modules that's no need it.
Performance: You can distribute all your tasks between different servers, thus if you need more performance in a specific module, you can solve this issue easily because you will only need to replicate as many instances as necessary.
Disadvantages
Latency: Derived from communication between many services, you need to remember they can be in different machines and this can cause this latency.
Observability: As your company grows, you will have more services with many different actions, and this will be more complex. You will need to be careful to organize your information and so, improve the observability in your services.
Change of mentality: You must use different new techniques to design systems and to program them.