Mind map
Software architecture
Map content
Software architecture
Types
- CLIENT - SERVER
- What is it?
- is a distributed application structure that partitions task or workload between the providers of a resource or service, called servers, and service requesters called clients. In the client-server architecture, when the client computer sends a request for data to the server through the internet, the server accepts the requested process and deliver the data packets requested back to the client. Clients do not share any of their resources.
- Characteristics
- Client
- Always initiates requests to servers.
- Waits for replies.
- Receives replies.
- Usually connects to a small number of servers at one time.
- Usually interacts directly with end-users using any user interface such as graphical user interface.
- Usually connects to a small number of servers at one time.
- Receives replies.
- Waits for replies.
- Always initiates requests to servers.
- Server
- Always wait for a request from one of the clients.
- Serves clients' requests then replies to the clients with the requested data.
- A server may communicate with other servers in order to serve a client request.
- If additional information is required to process a request (or security is implemented), a server may request additional data (passwords) from a client before processing a request.
- End users typically do not interact directly with a server, but use a client.
- If additional information is required to process a request (or security is implemented), a server may request additional data (passwords) from a client before processing a request.
- A server may communicate with other servers in order to serve a client request.
- Serves clients' requests then replies to the clients with the requested data.
- Always wait for a request from one of the clients.
- Client
- Types
- 1-tier architecture
- 2-tier architecture
- 3-tier architecture
- What is it?
- LAYERS
- What is it?
- Components within the layered architecture pattern are organized into horizontal layers, each layer performing a specific role within the application
- Although the layered architecture pattern does not specify the number and types of layers that must exist in the pattern, most layered architectures consist of four standard layers:
- presentation
- business
- database
- persistence
- What is it?
- MONOLITHIC
- What is it?
- Monolith means composed all in one piece. The Monolithic application describes a single-tiered software application in which different components combined into a single program from a single platform.
- Components
- Authorization
- responsible for authorizing a user
- Presentation
- responsible for handling HTTP requests and responding with either HTML or JSON/XML (for web services APIs)
- Business logic
- the application’s business logic.
- Database layer
- data access objects responsible for accessing the database.
- Application integration
- integration with other services (e.g. via messaging or REST API). Or integration with any other Data sources.
- Notification module
- responsible for sending email notifications whenever needed.
- Authorization
- Benefits
- Simple to develop
- Simple to test
- Simple to deploy
- Simple to scale horizontally
- Simple to deploy
- Simple to test
- Simple to develop
- Disadvantage
- Large and Complex Applications
- Slow Development
- Unscalable
- Unreliable
- Inflexible
- Unreliable
- Unscalable
- Slow Development
- Large and Complex Applications
- What is it?
- SOA
- What is it?
- Style of software design where services are provided to the other components by application components, through a communication protocol over a network.
- Major roles
- Service provider
- Service consumer
- Components
- Application fronted
- Service
- Contract
- Implementation
- Business Logic
- Data
- Interface
- Service repository
- Service bus
- Guiding Principles
- Standardized service contract
- Loose coupling
- Abstraction
- Reusability
- Autonomy
- Discoverability
- Composability
- What is it?
- MICROSERVICES
- What is it?
- Microservice architecture, or simply microservices, is a distinctive method of developing software systems that tries to focus on building single-function modules with well-defined interfaces and operations.
- Characteristics
- Focuses on decoupling and bounded context
- Systematic Change creates new service
- Focuses on continuous delivery and DevOps
- Uses the simple messaging system for communication
- Use lightweight protocols such as HTTP, REST etc.
- Provides independent data storage
- Philosophy
- Componentization to perform the single functionality
- Organized as per business capabilities
- Focuses on products, not process
- Service is elastic, resilient, composable, minimal, and complete
- Decentralized governance and data management
- What is it?
- DISTRIBUTED
- What is it?
- In distributed architecture, components are presented on different platforms and several components can cooperate with one another over a communication network in order to achieve a specific objective or goal.
- Basis
- Reliability
- Transparency
- Failure
- Access
- Persistence
- Location
- Technology
- Migration / Relocation
- Replication
- Concurrency
- Availability
- Advantages
- Resource sharing
- Openness
- Concurrency
- Scalability
- Fault tolerance
- Scalability
- Concurrency
- Openness
- Resource sharing
- Disadvantages
- Complexity
- Security
- Manageability
- Unpredictability
- Manageability
- Security
- Complexity
- What is it?
- CLIENT - SERVER
Information
- Description
- Informática Mind Map on Software architecture, created by Andrea Quintero on 19/05/2020.
- Created by
- Andrea Quintero
- Views
- 0
- Rating