Eventually every software needs to be deployed in production and that's where the real challenge is!
Deciding upon the deployment strategy for any system requires a careful consideration of various factors, such as scalability (number of users now and in future), Service Level Agreements (SLAs), fault tolerance, monitoring, backup, recovery, and many more. All these factors are also known as Non-Functional Requirements (NFRs).
Though many of these factors can be incorporated in the deployment strategy but the architecture and design of software plays an important role in meeting the NFRs.
For example, you can increase hardware to support the growing number of users but there is a limit to how much computing ...