Software architecture refers to the high-level structures of a software system and the discipline of creating such structures and systems. Each structure comprises software elements, relations among them, and properties of both elements and relations. The architecture of a software system is a metaphor, analogous to the architecture of a building. It functions as a blueprint for the system and the developing project, laying out the tasks necessary to be executed by the design teams. 1
Related Topics
- Domain-Driven Design (DDD) : Domain-Driven Design is an approach to software development that centers the development on programming a domain model that has a rich understanding of the processes and rules of a domain.
- Cloud-Native Architecture : Cloud-native architecture is an architecture or system that has been built specifically to run in the cloud.
- Microservices : Microservices is an architectural style that structures an application as a collection of loosely coupled services, which implement business capabilities.
- RESTful API - Web Services : REST is acronym for REpresentational State Transfer.
- Python REST API : Python Representational state transfer (REST) is a software architectural style that defines a set of constraints to be used for creating Web services.
- Anatomy of a Micro Framework : A microframework is a term used to refer to minimalistic web application frameworks. It is contrasted with full-stack frameworks.
- Micro-Frameworks : A microframework is a term used to refer to minimalistic web application frameworks, PHP, Python.
- Model-View-Controller : The MVC architecture pattern turns complex application development into a much more manageable process.
- Model-View-ViewModel : The Model is somewhat similar to MVC but here we have ViewModels which are passed to the view and all the logic is in the ViewModel and hence no controller is there.
- GraphQL : GraphQL is a query language for your API, and a server-side runtime for executing queries using a type system you define for your data.
- Postman : Postman is an API platform for building and using APIs
Resources
- Fundamentals of Software Architecture: An Engineering Approach - Although salary surveys worldwide regularly identify software architect as one of the top ten best jobs, no decent guides exist to help developers become architects. Until now. This practical guide provides the first comprehensive overview of software architecture's many aspects. You'll examine architectural characteristics, architectural patterns, component determination, diagramming and presenting architecture, evolutionary architecture, and many other topics.
- Software Architecture - The Difference Between Architecture and Design
- Software Architecture: The Most Important Architectural Patterns You Need to Know
Books
Clean Architecture - Building upon the success of best-sellers The Clean Coder and Clean Code, legendary software craftsman Robert C. "Uncle Bob" Martin shows how to bring greater professionalism and discipline to application architecture and design.
As with his other books, Martin's Clean Architecture doesn't merely present multiple choices and options, and say "use your best judgment": it tells you what choices to make, and why those choices are critical to your success.
Fundamentals of Software Architecture: An Engineering Approach - This practical guide provides the first comprehensive overview of software architecture's many aspects. You'll examine architectural characteristics, architectural patterns, component determination, diagramming and presenting architecture, evolutionary architecture, and many other topics.
Patterns of Software Architecture
Architecture patterns help define the basic characteristics and behavior of an application.
Enterprise Application Architecture
The main topic areas are: how to layer an enterprise application, how to organize domain logic, how to tie that logic to a relational database, how to design a web-based presentation, some important principles in distributed design, and handling of what we call "offline concurrency" - concurrency that spans transactions.2
Cloud-Native Architecture
Cloud-native architecture is an architecture or system that has been built specifically to run in the cloud. Cloud-native architectures have the benefit of more flexibility over legacy systems that were built to run on particular hardware infrastructure and may be difficult to migrate to the cloud later.3
API's
Application Programming Interface (API) is a software interface that allows two applications to interact with each other without any user intervention. API is a collection of software functions and procedures. In simple terms, API means a software code that can be accessed or executed. API is defined as a code that helps two different software’s to communicate and exchange data with each other. 4
- A RESTful API - Web Services - is based on representational state transfer (REST) technology, an architectural style and approach to communications often used in web services development.5
- GraphQL is a query language for your API and a server-side runtime for executing queries using a type system you define for your data. GraphQL isn't tied to any specific database or storage engine and is instead backed by your existing code and data. 6
Postman
Postman is an API platform for building and using APIs. Postman simplifies each step of the API lifecycle and streamlines collaboration so you can create better APIs—faster. 7
Microservices
Microservices - also known as the microservice architecture - is an architectural style that structures an application as a collection of loosely coupled services, which implement business capabilities. The microservice architecture enables the continuous delivery/deployment of large, complex applications. It also enables an organization to evolve its technology stack. 8