The software development process starts with the basic analysis of requirements, which is then developed into a viable architecture by the software architect, and next into component level designs by the development team. The cloud software architectures are built upon fundamentals of distributed software architecture. The difference from an on-premise architecture is the requirement that the core of the software must be deployed remotely in a public or private cloud, making the best use of powerful distributed infrastructure and management tools. The application can be a native app or a browser-based web application remotely accessing business logic on a cloud or data center via API like ReST, SoAP, RPC, or event messaging. Monolithic architecture styles are used for developing native applications which run their internal processes completely on a host operating system with minimal or no external data sources as input. These architectures also aimed towards making the software components modular, portable, and maintainable. For instance, the microkernel architecture. The distributed architectural styles are directly applicable for cloud software, while some aspects of the monolithic architecture patterns may be used internally in the component designs. All architectural styles are likely to have pros and cons, and it is better to understand the trade-offs based on requirements. The impact of these trade-offs can be reduced with a hybrid architecture. With the adoption of Agile software development processes, the development of an architecture should also be an iterative process. Starting with an initial set of requirements, architects can define the architectural goals and refine them further with feedback from relevant stakeholders and development teams.