Strategy planning
“Initiate by thinking about the software characteristics ideally before thinking about tangible solutions and technical building blocks.
Before considering deployment strategy, decide on the structure and behavior of the software system and characterize aspects of the building blocks based on functional and non-functional requirements. You should also take into consideration technical and organizational limitations that you will discover along the way.
Gather the knowledge about the system and grow architectural design gradually. Do not define final architecture at the early stage of development, because the first shot will most probably be wrong. Define requirements like performance, scalability, portability, and other non-functional aspects carefully. They can make design and implementation more complicated and sometimes conflict with each other. Document and discuss all non-functional requirements with stakeholders to identify the most vital quality attributes and make trade-offs where necessary.
Design the system to run on a variety of processes. Use microservices to decompose a complex application into small and independently deployable processes. It will help you to recognize all the variations and graduations between a unified process and microservices. As a result, you will be able to examine every building block of the system and whether you would need to segregate them into separate processes.”
- Sam Cohen, CEO at Goldtreeway.com