Software Architecture
Implementing an Enterprise Architecture framework helps to transform fragmented business processes and disparate applications into an integrated IT environment supportive of the business strategy and responsive to frequent market changes.
Architecture Categories
Micro-services
Use lightweight protocols to inter-connect and reuse smaller components
- Modular Design
- Self-contained Logic
- Dynamic Scalability
- Master Data Partitioning
- Automated Deployment
- Autonomous Operation
Service-oriented
Enable discrete units of functionality with remote access and management
- Message Exchange
- Standard Protocols
- Common Data Formats
- Lightweight Endpoints
- Distributed Resources
- Service Governance
Event-driven
Design loosely-coupled message sources and scalable event channels
- Message Brokering
- Stream Processing
- Data Aggregation
- State Management
- Event Correlation
- Active Diagnostics
Architecture Components
Micro-services Architecture
Fine-grained Application and Infrastructure Components
Micro-services Architecture (MSA) structures an application as a collection of small, loosely-coupled services that communicate over lightweight protocols. Each micro-service fulfills one business purpose, and can be managed independent of other similar system components. Micro-services can have a positive effect on the flexibility and cost-efficiency of your IT environment, as long as you approach them in the right way.
Software applications tend to become more complex as their scale increases. Splitting them into micro-components will help achieve faster initial delivery and ease of ongoing maintenance, which is worthwhile only if the overall system stability, performance and safety are not undermined. In many cases, great efforts have been made to adopt micro-services patterns without understanding how the costs and benefits will apply to the specifics of the problem at hand. Delivering smaller, isolated components can get a lot harder for developers and operators — in this case, it requires more serious delivery expertise, more effective automation and more granular monitoring.
Real-world systems often have poorly defined boundaries, where some components need to maintain state or dependency on each other. The art of micro-service design implies bringing the benefits of loose coupling while maintaining the rigour of dependency management, service interoperability and cluster operation.
micro
MSA is ideal for large-scale systems facing the risk of growing in size beyond the initial boundaries, given the frequency and volume of anticipated changes.
Micro-services can be deployed as isolated entities on a common distributed platform, not affecting any other systems.
Smaller components with common capabilities can be easily replaced rather than maintained, and reused as part of other solutions.
Micro-platform
The primary component of a Micro-services Platform is a programming framework that helps developers create, package, compose and test micro-services.
Container Platform
Container Platform is an orchestration engine for automating the process of developing, packaging, deploying and managing system containers.
Cloud Management
Cloud Management tools provide an ability to automate the installation and configuration of system and application packages in the cloud environment.
Release Automation
Release Automation tools enable the process of packaging and deploying an application or incremental update througout their delivery lifecycle.
Service-oriented Architecture
Distributed and Accessible Application Service Endpoints
Service-oriented Architecture (SOA) helps leverage existing IT investments, achieve process automation agility and accurately express business intelligence. It can impact and transform the outlook of an organization — from business strategy to technology landscape to operational processes and procedures.
The basic principles of application services are independent of vendors, products and technologies: they logically represent business activities with specified outcomes, they are self-contained, define a usage contract for their consumers and may consist of other underlying services with similar characteristics.
SOA integrates distributed, separately-maintained software components that follow open standards to easily connect and cooperate over a network. Service-based concepts augment characteristics of traditional distributed computing platforms, to the extent of completely redefining business processes and the underlying technology infrastructure. SOA has proven to revolutionize enterprise environments by leveraging advancements in web services technology and realizing the architectural principles of autonomy, modularity and interoperability.
service
SOA is a paradigm for exchanging value between independently acting participants — service producers and consumers.
Participants and stakeholders make legitimate claims to ownership of resources that are made available within the SOA ecosystem.
Behavior and performance of the participants are subject to rules of engagement, which are captured in a series of service policies and contracts.
Web Services Stack
A Web Services Stack is an implementation of networking protocols that is used to define, locate, publish and make services interact with each other.
Application Server
An Application Server is a software platform part of enterprise middleware stack, that provides runtime environment for web applications.
API Management
API Management is the process of publishing application service endpoints, documenting their interfaces, and managing their access and usage at runtime.
Identity Provider
Cloud-based Identity Providers enable the right individuals to access the right digital resources at the right time, and for the right business reason.
Event-driven Architecture
High-throughput Event Streaming and Processing
Event-driven Architecture (EDA) allows to handle complex application component interactions, where multiple subscribers can listen to changes in the system state (events) triggered by the respective publishers. Physical implementation of conduits in which events are transmitted (event channels) is typically based on asynchronous communication technologies, such as Message-oriented Middleware (MOM).
Building systems around EDA simplifies horizontal scalability in distributed computing models, making them capable of processing high volume of state changes and more resilient to failure.
Modern methods of Event Stream Processing (ESP) have become a foundation of business agility, customer experience improvement and operational efficiency. The goals of such processing typically include identifying meaningful patterns within event streams, detecting relationships between multiple events, creating event hierarchies, and aggregating relevant information for further analysis in support of decision-making.
An event-driven approach, where changes in state are monitored as they happen in real time, lets an application respond in a more timely fashion, provide better throughput and have greater flexibility than a system of inter-dependent logic components. Compared to web services and batch processors, event streams provide even better loose coupling and scalability, with a benefit of state management and scenario simulation.
event
EDA is best suited for high-performance, large-volume information dissemination to decoupled systems and data repositories.
Event emittance logic is not concerned about the presence or engagement of event consumers, processing pipelines and downstream destinations.
Real-time event stream processing enables immediate response to business service and operational environment activities, while aggregating historical data for predictive analytics.
Message Broker
Message Broker is an asynchronous messaging platform that integrates heterogeneous systems, providing reliability, transactions and ordering.
Stream Processing
Stream Processing is the technique of applying mathematical algorithms to the event data which is transformed, joined and analyzed in real time.
Event Analytics
Event Analytics is the practice of gathering, processing, analyzing and interpreting data from various systems to predict potential issues and future trends.
Event Monitoring
Event Monitoring is the process of collecting system activity data, such as usage or performance metrics, to generate reports and deliver critical alerts.