A typical software system rarely consists of just the code. Engineering non-trivial systems means working with a wide variety of system components.
The following diagram describes typical components in a modern microservices architecture deployment:
The following sections describe each component in more detail.