System Integration Architecture And Styles PDF
Document Details
Uploaded by Deleted User
Tags
Summary
This document provides an overview of system integration and architecture, describing different styles, components, and their benefits and challenges. It includes core concepts like system integration, architecture styles, layers, and the benefits and disadvantages of using different styles of this.
Full Transcript
Lesson 1- Introduction to System Integration and Architecture System Key aspects of System Integration: An array of components designed to 1. Interoperability accomplish a specific objective. Sub-systems 2. Data Integration are combined t...
Lesson 1- Introduction to System Integration and Architecture System Key aspects of System Integration: An array of components designed to 1. Interoperability accomplish a specific objective. Sub-systems 2. Data Integration are combined to form a complete system 3. Process Integration guided by the project manager's objectives 4. Interface Management 5. Middleware key aspects of a system: 6. Legacy System Integration 1. Component 7. Commercial-Off-The-Shelf (COTS) 2. Interrelationships Integration 3. Boundaries 8. Scalability and Flexibility 4. Environment 9. Security and Compliance 5. Purpose 6. Inputs and outputs 7. Feedback Types of System Integration: 8. Subsystems 1. Horizontal Integration: Linking systems 9. Open vs Closed System across different. organizational departments or functions to create a Systems Thinking unified system. This often involves using An approach to problem- solving that views enterprise service buses (ESBs) or "problems" as parts of an overall system middleware solutions. rather than focusing on individual components 2. Vertical Integration: Integrating or events. systems at different levels within a single department or business unit. This key concepts and principles of systems can streamline processes within a thinking: specific domain, such as integrating 1. Holistic view manufacturing execution systems with 2. Interconnections and Interdependencies enterprise resource planning (ERP) 3. Feedback Loops systems. 4. Dynamic Complexity 3. Star Integration: Also known as 5. Emergence spaghetti integration, this approach 6. Boundaries and Environment connects each system to every other 7. Leverage Points system, resulting in a complex web of 8. Non-linearity connections. This method is less efficient and can lead to maintenance System Integration challenges. System integration is the process of linking together different computing systems and software applications physically or functionally to act as a coordinated whole. 4. Point-to-Point Integration: Directly System Architecture connecting two systems to share data and System architecture defines the high-level functionality. This method is straightforward structure of a system, revealing its but can become unwieldy as the number of organization as a collection of interacting systems increases. components. Elements include components, 5. Common Data Format: Implementing a connectors, systems, properties, and styles. common data format that all systems use, simplifying data exchange and integration. System architecture refers to the conceptual model that defines the structure, Benefits of System Integration behavior, and more views of a system. It Improved Efficiency: Streamlined processes serves as a blueprint for both the system and automated workflows reduce manual and the project developing it, defining how effort and increase operational efficiency. the system components interact with each Enhanced Data Quality: Consistent and other and with external systems. accurate data across systems lead to better decision-making. Key Components of System Architecture: Cost Savings: Reducing redundancy and 1. Components manual processes can save significantly. 2. Connections Better Customer Experience: Integrated 3. Interfaces systems can provide a seamless and consistent 4. Data Flow customer experience, improving satisfaction 5. Subsystems and loyalty. 6. Standards and Protocols Increased Agility: Organizations can 7. Constraints respond more quickly to market or business environment changes with integrated systems. Types of System Architecture 1. Monolithic Architecture: A single-tiered Challenges of System Integration software application where all components Complexity: Integrating multiple systems can (UI, business logic, and data access) are be complex, especially when dealing with tightly integrated and run as a single legacy systems or systems from different service. vendors. Cost: Integration projects can be costly in 2. Layered Architecture : Organizes the terms of time, resources, and financial application into layers (e.g., presentation, investment. business logic, data access), where each Security Risks: Ensuring data security and layer has a specific responsibility and compliance during integration is a significant interacts only with the layer directly below challenge. it. Change Management: Managing the change process and ensuring that employees adapt to new integrated systems can be difficult. 3. Service-Oriented Architecture (SOA): A Efficiency and Performance: Optimizes design where software components are resource use and data flow, leading to provided as services, which can be reused improved system performance and efficiency. and combined across different systems and Benefits of System Architecture applications. Maintainability and Extensibility: Promotes 4. Microservices Architecture: An evolution modularity and separation of concerns, making of SOA, where the application is built as a it easier to update, maintain, and extend the collection of small, independent services that system over time. communicate through APIs and can be deployed independently. Risk Management: Identifies potential risks and constraints early in the development 5. Client-Server Architecture: A model process, allowing for proactive mitigation where client devices request services or strategies. resources from a central server, which processes these requests and sends back the appropriate responses. Example of System Architecture Consider a modern e-commerce platform. 6. Event-Driven Architecture: A system The system architecture might include design that relies on the production, the following: detection, and consumption of events, where Presentation Layer: Handles user services react to events as they occur. interfaces, such as web and mobile applications. 7. Distributed Architecture: A model where Business Logic Layer: Manages order multiple, interconnected components or nodes processing, payment handling, and operate across different locations but inventory management. function as a single system, often to improve Data Access Layer: Interfaces with performance and scalability. databases and external data sources. Integration Layer: Connects with Benefits of System Architecture third-party services, such as payment Clarity and Understanding: Provides a gateways and shipping providers. clear and comprehensive view of the system, facilitating communication among stakeholders and aiding in decision- making. Scalability and Flexibility: Well-designed architecture allows the system to scale and adapt to changing requirements and technologies. Lesson 2- System Development Life Cycle (SDLC) Information Systems Project Sources What is a Project? Projects originate from problems, opportunities, A project is a temporary endeavor to create and directives. Problems hinder business goals, a unique product or service. Key attributes opportunities improve business operations, and include a unique purpose, temporariness, directives impose new requirements. resource requirements, and uncertainty. Key Aspects of Information Systems Projects Projects can vary in size, scope, and 1. Objective complexity. 2. Scope 3. Stakeholders Elements of a project 4. Phases 1. Goals and Objectives: What the project 5. Technological Components aims to achieve. 6. Outcomes 2. Scope: Defines the boundaries of the project, Stakeholders including what will be delivered, and what is The term “stakeholder’ refers to the people or excluded. groups affected by a software development project. Stakeholders exist both within the 3. Resources: Includes time, budget, people, organization and outside of it. tools, and techniques needed to complete the Importance of Project Environment project. Risk Management: Understanding the project environment helps identify risks early, allowing 4. Stakeholders: All individuals or groups who for the development of mitigation strategies. have an interest in the success of the project. Strategic Alignment: Ensures that the project 5. Project Plan: A formal, approved document aligns with both the strategic objectives of the that guides both project execution and project organization control which outlines the project goals, schedule, risks, scope, milestones, and resources. Resource Allocation: Helps in planning and allocating resources effectively based on 6. Risk Management: Identifying, assessing, and environmental analysis. managing risks to the project’s success. Stakeholder Engagement: Better stakeholder management by understanding their influence 7. Project Management: The application of and expectations from the project. knowledge, skills, tools, and Adaptability and Flexibility: Prepares the project team to adapt to environmental changes and unexpected challenges. Organizational Structures Project Success Factors Basic Structures Organizations typically use According to the Standish Group's "CHAOS four structures: 2001" report, key factors for IT project 1.Functional: Groups with similar tasks and success include executive support, user skills. involvement, experienced management, clear objectives, and a formal methodology. 2.Divisional: Focus on customer or product groups. Factors that Contribute to the Success of a Project: 3.Matrix: Combines function and product team Clear Goals and Objectives grouping. Stakeholder Engagement Effective Project Management 4.Project-based: Teams organized around Competent Project Team specific projects. Adequate Resources Risk Management Project Life Cycle Communication Project life cycles include concept, Quality Control development, implementation, and support Adaptability phases. Successful navigation through these Performance Monitoring phases ensures project continuity and success. Structured and Phase-Gated Process Project Closure Organizational Analysis Analyze organizations using four frames: 1.Structural: Roles, responsibilities, and coordination. 2.Human Resources: Harmony between PLC vs SDLC organizational and personal needs. The project life cycle (PLC) focuses on the phases, processes, tools, knowledge and skills 3.Political: Power dynamics and conflict of managing a project, while the system management. development life cycle (SDLC) focuses on creating and implementing the project's 4.Symbolic: Culture and meaning in events. product 3. Design: Create architecture and design for the software. 4. Implementation (Coding): Develop the software by writing code. 5. Testing: Conduct testing to identify and fix bugs. 6. Deployment: Deploy the software in the System Development Life Cycle production environment. A process used by software developers to design, develop, and test high-quality 7. Maintenance: Provide ongoing support and software. updates. Ensures a structured and systematic SDLC Models approach to software development, minimizing Waterfall Model risks and maximizing efficiency. The Waterfall model is one of the earliest and most traditional approaches to software development. It's a linear and sequential model that divides the software development process into distinct phases, each of which must be completed before the next one begins. Phases of the Software Development Life Cycle 1.Planning: Identify the scope, purpose, and resources required for the project. 2. Requirements Gathering: Collect detailed requirements from stakeholders. Characteristics of the Waterfall Model Disadvantages of the Waterfall Model 1. Sequential Phases - The Waterfall model Inflexibility to Changes: The most follows a strict sequence where each phase significant drawback of the Waterfall model must be completed before moving on to the is its inflexibility. Once a phase is completed, next. There’s no overlapping or iterative it’s difficult to make changes without starting process between phases. over from that phase. 2. Documentation-Driven - Each phase Late Testing: Testing only occurs after the produces a set of deliverables or implementation phase is complete, which documentation, such as requirements means that any issues or bugs found can be specifications, design documents, test plans, costly and time-consuming to fix. etc. This documentation is essential for the successful transition to the next phase. High Risk for Long Projects: The Waterfall model assumes that all requirements can be 3 Inflexible Structure - The model is quite understood and documented upfront, which is rigid. Once a phase is completed, it's rarely the case in longer, more complex challenging to go back and make changes projects. Lack of Customer Involvement: The model Advantages of the Waterfall Model typically involves customers only Simplicity and Ease of Use: The Waterfall model is easy to understand and simple to implement. When to Use the Waterfall Model: The requirements are well understood, Well-Defined Stages: The model’s phases clear, and unlikely to change. are well-defined, making it easy to manage the progress of the project. The technology stack is stable and well- known. Emphasis on Documentation: The heavy reliance on documentation ensures that each The project is short-term and small in phase is properly documented and traceable. scope. Ideal for Smaller Projects: For small Strict adherence to timelines and projects with well-defined requirements that budgets is crucial. are unlikely to change, the Waterfall model can be very effective. Agile Model 4. Cross-Functional Teams: Agile teams are The Agile model is a modern and flexible typically small, self-organizing, and cross- approach to software development that functional, meaning that they include members emphasizes iterative progress, collaboration, and with diverse skills (e.g., developers, testers, adaptability. Agile is designed to accommodate designers). This promotes collaboration and changes throughout the development process, ensures that each iteration can deliver a allowing for more dynamic and responsive complete product increment. project management. 5. Continuous Improvement: Agile encourages continuous improvement through regular to discuss what went well, what didn’t, and how processes can be improved. Phases of the Agile Model 1. Concept/Initiation 2. Iteration Planning 3. Design and Development 4. Testing 5. Review and Feedback 6. Release/Deployment Characteristics of the Agile Model 7. Retrospective 1. Iterative and Incremental Development: Agile development is both iterative (repeating Advantages of the Agile Model cycles) and incremental (small pieces of the Flexibility and Adaptability: Agile’s iterative software are delivered in stages). Instead of approach allows for changes to be made at delivering a complete product at the end, the any point in the development process, making project is divided into small, manageable units it ideal for projects where requirements may called "iterations" or "sprints.“ evolve over time. 2. Customer Collaboration: In Agile, the Customer Satisfaction: Regular customer customer or end-user is actively involved involvement and the delivery of working throughout the development process. Regular software after each iteration lead to higher feedback from the customer ensures that the customer satisfaction. software evolves in alignment with their needs. Improved Quality: Continuous testing and 3. Adaptive Planning: Agile projects embrace feedback help identify and fix defects early, change. Unlike the rigid planning in traditional leading to a higher-quality product. models, Agile allows for adjustments to be made even late in the development process, ensuring that the project can adapt to changing requirements. Reduced Risk: By breaking the project When to Use the Agile Model into smaller iterations, Agile reduces the risk Requirements are expected to change or of project failure. Problems can be addressed evolve during the development process. as they arise, rather than being discovered The project involves complex, innovative, or late in the process. creative work that benefits from regular feedback. Team Empowerment and Collaboration: The customer wants to be closely involved Agile promotes a collaborative environment throughout the development process. where team members are empowered to The project can be broken down into small, make decisions and take ownership of their incremental deliverables work. Popular Agile Methodologies Scrum: It organizes development into time- Disadvantages of the Agile Model boxed iterations called "sprints," typically Less Predictability: Because Agile is lasting 2-4 weeks. Scrum emphasizes roles flexible and adaptable, it can be harder to (e.g., Scrum Master, Product Owner) and predict timelines and costs upfront. This can ceremonies (e.g., daily stand-ups, sprint be challenging for projects with strict reviews). deadlines or fixed budgets. Kanban: Focuses on visualizing the workflow Requires Close Collaboration: Agile relies and managing work in progress (WIP). It uses on close collaboration between the a Kanban board to track tasks through development team and stakeholders. If different stages, promoting continuous delivery communication is lacking, the process can and improvement. break down. Extreme Programming (XP): XP emphasizes Scope Creep: The flexibility of Agile can technical excellence and continuous sometimes lead to scope creep, where improvement. It includes practices like pair additional features and requirements are programming, test driven development (TDD), added, potentially leading to delays and and frequent releases. increased costs. Lean Development: Lean focuses on Requires Experienced Teams: Agile is eliminating waste, improving efficiency, and most effective when implemented by delivering value to the customer. It emphasizes experienced teams who are comfortable with optimizing the whole development process and self-organization and rapid decision-making. reducing bottlenecks. Inexperienced teams may struggle with the lack of structure. V-Model Documentation-Driven: Like the Waterfall The V-Model, also known as the Verification model, the V-Model is documentation and Validation model, is a software development intensive. Each phase produces deliverables process that extends the traditional Waterfall that serve as inputs for the next phase and model by emphasizing the relationship between provide the basis for testing. development phases and corresponding testing phases. It’s called the "V-Model" because the Verification and Validation: Verification process is depicted in a V-shape, where each involves evaluating whether the product development stage on the left side of the "V" development s on the right track and aligns has a corresponding testing phase on the with the requirements. right side. Phases of the V-Model 1. Requirements Gathering and Analysis (Corresponding Testing: Acceptance Testing) 2. System Design (Corresponding Testing: System Testing) 3 High-Level Design (Corresponding Testing: Integration Testing) 4. Low-Level Design (Corresponding Testing: Unit Testing) 5. Coding (Base of the V) Advantages of the V-Model Early Detection of Defects: By integrating Characteristics of the V-Model testing activities into every phase of Sequential Phases with Corresponding development, defects can be identified and Testing: The V-Model is a linear and addressed early in the lifecycle, reducing the sequential approach where each phase must cost and effort required to fix them. be completed before the next one begins. However, every development phase has a Clear and Well-Defined Stages: The V- corresponding testing phase, ensuring that Model’s structure is straightforward and easy to verification and validation occur throughout understand. The clear phases and corresponding the project. testing activities make project management and progress tracking easier. Emphasis on Early Testing: Testing is planned early in the project lifecycle. Each Emphasis on Validation and Verification: testing phase is designed to validate the Ensures that each phase of development is results of the corresponding development verified and validated against the requirements, phase, ensuring issues are detected as early reducing the risk of developing software that as possible. doesn’t meet user needs. High Level of Documentation: Extensive Spiral Model documentation at each phase provides a The Spiral Model is a risk-driven software clear record of the project’s progress and development process model that combines the decisions, which is useful for maintenance iterative nature of prototyping with the and future projects. systematic aspects of the Waterfall model. Developed by Barry Boehm in 1986, the Spiral Disadvantages of the V-Model Model is particularly useful for large, complex, Inflexibility to Change: The V-Model is and high-risk projects, where requirements inflexible. Once a phase is completed, it is are not well understood from the beginning and difficult and costly to go back and make may evolve over time. changes, making it less suitable for projects with evolving requirements. High Risk for Long-Term Projects: The V- Model assumes that all requirements can be gathered and understood upfront, which is not always feasible in long-term or complex projects. No Working Software Until Late in the Process: Since the V-Model is linear, working software is only available after the coding phase, which occurs late in the process. This Characteristics of the Spiral Model can delay the identification of usability or Risk-Driven Approach: The Spiral Model functional issues. places a strong emphasis on risk analysis and management. At each iteration, risks are Heavy Documentation: The emphasis on identified, assessed, and mitigated, which helps documentation can lead to significant overhead in reducing project uncertainties. When to Use the V-Model Iterative Development: The Spiral Model is The requirements are well-defined, fixed, iterative, meaning that the software is and unlikely to change. developed in repeated cycles or "spirals." Each The technology stack is stable and well- spiral represents a phase of the project, and understood. the software is refined with each iteration. High levels of reliability and quality are critical. Combination of Models: The Spiral Model The project is relatively short-term with integrates elements from the Waterfall model clear objectives. and prototyping. It combines the linear steps of the Waterfall model with the cyclical nature of iterative development, allowing for flexibility and adaptability. Customer Involvement: The Spiral Model Advantages of the Spiral Model encourages continuous customer involvement Risk Management: The Spiral Model’s throughout the development process. Customers emphasis on risk analysis helps identify and provide feedback at the end of each spiral, mitigate risks early in the project. This is which helps in refining requirements and particularly valuable for complex and high- improving the product. risk projects. Phases of the Spiral Model Flexibility and Adaptability: The iterative 1. Planning: In this phase, the project nature of the Spiral Model allows for changes objectives, scope, requirements, and constraints and refinements at each stage of development. are defined. Initial planning involves This flexibility makes it easier to determining the overall system requirements accommodate evolving requirements. and identifying potential risks. Each subsequent spiral refines the planning based on feedback Customer Involvement: Continuous and lessons learned. customer involvement ensures that the final product meets user needs and expectations. 2. Risk Analysis: Risk analysis is the core of This reduces the risk of delivering a product the Spiral Model. During this phase, potential that doesn’t align with customer requirements. risks are identified and analysed, and strategies to mitigate or eliminate these risks Improved Quality: By iteratively refining are developed. This phase helps in deciding the software and addressing issues as they whether to proceed with the project, revisit arise, the Spiral Model can lead to higher- the design, or abandon the project if the risks quality products. are too high. Structured Approach: Despite its flexibility, 3. Engineering and Development: This phase the Spiral Model maintains a structured involves the actual design and development of approach the software. Depending on the level of detail required, this may include system design, Disadvantages of the Spiral Model coding, unit testing, and integration. In early Complexity: The Spiral Model can be complex spirals, this phase might focus on creating to implement and manage. It requires careful prototypes or proofs of concept, while later planning, expertise in risk management, and a spirals will focus on refining the software and disciplined approach to ensure that each phase adding more features. is executed effectively. 4 Evaluation and Feedback: At the end of Cost and Time: Due to its iterative nature each spiral, the developed product is evaluated, and emphasis on risk analysis, the Spiral Model and feedback is gathered from stakeholders, can be more expensive and time-consuming including customers. than other models, especially for smaller projects. Requires Expertise: The success of the DevOps Model Spiral Model depends heavily on the experience The DevOps model is a modern approach to and expertise of the project team, particularly software development and IT operations that in risk analysis and management. Inexperienced emphasizes collaboration, automation, and teams may struggle to implement the model continuous delivery. It aims to bridge the gap effectively. between development (Dev) and operations (Ops) teams, fostering a culture of collaboration and Not Suitable for All Projects: The Spiral shared responsibility. By integrating and Model is best suited for large, complex projects automating processes, DevOps enables with significant risks. For small projects Spiral organizations to deliver software faster, with Model may not be justified. higher quality, and with greater reliability. When to Use the Spiral Model Large and Complex Projects: Projects that involve significant complexity and require a high level of control and risk management. High-Risk Projects: Projects where there are significant uncertainties, such as new technology, unproven concepts, or critical requirements. Projects with Evolving Requirements: Characteristics of the DevOps Model Projects where requirements are not fully 1. Collaboration and Communication understood at the outset and may change as 2. Continuous Integration and Continuous the project progresses. Delivery (CI/CD) 3. Automation Projects Requiring Prototypes: Projects 4. Infrastructure as Code (IaC) that benefit from iterative prototyping and 5. Monitoring and Feedback feedback loops to refine the final product. 6. Agility and Iteration Phases of the DevOps Model 7. Operate: In the operate phase, the software 1. Plan: Teams define the project’s scope, set runs in production. Teams monitor the application goals, and plan the development process. This and infrastructure to ensure stability, phase includes requirements gathering, project performance, and availability. Automated management, and prioritizing features. monitoring tools help detect issues early and ensure the system runs smoothly. 2. Code: Developers write the application code using best practices, such as version 8. Monitor: Continuous monitoring collects data control (e.g., Git). Code changes are frequently on application performance, user behaviour, and committed to a shared repository, enabling system health. continuous integration. Advantages of the DevOps Model 3. Build: The build phase involves compiling Faster Delivery: DevOps enables faster the code and converting it into executable software releases, reducing time-to-market. software. Automation tools, like Jenkins, Continuous integration and continuous delivery are often used to automate the build process, (CI/CD) pipelines automate many aspects of the ensuring consistency and efficiency. development 4. Test: Automated testing is conducted to Improved Quality and Reliability: Automated ensure that the code is functional and free of testing and continuous monitoring improve the bugs. This can include unit tests, integration quality and reliability of software. By identifying tests, and performance tests, among others. and addressing issues early in the development Continuous testing allows for immediate process, teams can reduce the risk of defects in feedback on code quality. production. 5. Release: Once the software passes all Increased Collaboration: DevOps fosters a tests, it is prepared for release. This phase culture of collaboration between development, involves packaging the software, preparing it operations, and other stakeholders. This leads to for deployment, and ensuring that it meets all better communication, shared goals, and a more release criteria. cohesive team. 6. Deploy: The deployment phase involves Scalability and Flexibility: The use of moving the software to production Infrastructure as Code (IaC) and automation environments. DevOps encourages automated, tools makes it easier to scale infrastructure and reliable, and repeatable deployment processes, applications to meet changing demands. often using tools like Kubernetes or Docker for containerization and orchestration. Enhanced Security: DevOps can include practices like DevSecOps, where security is integrated into every stage of the development lifecycle. Challenges of the DevOps Model Choosing the Right SDLC Model Cultural Shift: Implementing DevOps requires Factors to consider: Project size, a significant cultural shift within an complexity, timeline, and stakeholder organization. Teams need to adopt new ways of requirements. working, embrace automation, and collaborate Pros and cons of each model. more closely, which can be challenging in Case studies or examples. environments with entrenched silos. Case Studies or Examples Complexity: DevOps introduces new tools, Agile Model – Example: Spotify: Spotify processes, and practices that can add uses an Agile model, specifically a version complexity to the development process. of Scrum, to deliver new features and Managing this complexity requires careful updates rapidly. The model allows Spotify to planning, training, and the right expertise. continuously innovate and respond to user feedback quickly. Tool Integration: DevOps involves integrating various tools for automation, monitoring, testing, Waterfall Model – Example: NASA: and deployment. Ensuring these tools work NASA has traditionally used the Waterfall seamlessly together can be challenging, model for its projects. Given the critical especially in large organizations with diverse nature of space missions, detailed planning technology stacks. and a sequential approach to development are essential. Security Concerns: While DevOps can enhance security, the speed and frequency of Spiral Model – Example: Boeing: Boeing deployment can also introduce risks if security used the Spiral model for the development is nor properly integrated into the process. of complex aerospace systems. The emphasis on risk management and iterative When to Use the DevOps Model refinement was crucial for such high-stakes Organizations looking to improve collaboration projects. and communication between development and operations teams. DevOps Model – Example: Amazon: Projects requiring frequent updates and fast Amazon’s adoption of DevOps allows it to delivery cycles, such as web and mobile deploy changes to production every few applications. seconds. Companies adopting cloud computing, microservices, and containerization, where Best Practices in SDLC automation and scalability are crucial. Clear and continuous communication among Teams that need to maintain high availability stakeholders. and reliability in production environments. Proper documentation at every phase. Environments where agility and the ability to Regular testing and quality assurance. quickly respond to changing market demands Adoption of automation tools and techniques. are important. Lesson 3- Architectural Patterns and Style This pattern has 4 layers. Architectural Styles Presentation layer high- level strategies that provide an Business layer abstract framework for a family of systems. Application layer They improve partitioning and promote design Data layer reuse by solving recurring problems. Consider architectural styles as the theme or aesthetic that guides the design of buildings or homes. Architectural Patterns More concrete and specific to a particular problem or module within the system. They provide a structured solution to architectural Microservices Architecture issues, detailing how components and The collection of small services that are interactions should be structured for specific combined to form the actual application is the functionality. Architectural patterns are similar concept of microservices pattern. Instead of to software design patterns but operate at a building a bigger application, small programs higher level of abstraction. are built for every service (function) of an application independently. And those small Architectural Styles vs. Architectural Patterns programs are bundled together to be a full- Architectural styles provide a broad fledged application framework and can be seen as a general philosophy of a system’s design. Architectural patterns address specific design problems that may arise within this framework. Types of Software Architecture Patterns Layered Architecture Event-Driven Architecture In this pattern, they are separated into Event-Driven Architecture is an agile approach layers of subtasks and they are arranged one in which services (operations) of the software above another. Each layer has unique tasks to are triggered by events. When a user takes do and all the layers are independent of one action in the application built using the EDA another. Since each layer is independent, one approach, a state change happens and a can modify the code inside a layer without reaction is generated that is called an event. affecting others. Service-Oriented Architecture The Service-Oriented Architecture (SOA) style involves designing software systems as a collection of loosely coupled services. Each service represents a specific business capability and can be independently developed, deployed, and scaled. Key Characteristics: Loose coupling between services Emphasis on service discovery and interoperability Promotes scalability and flexibility Choosing the Right Architecture 1. Scalability: How well the system need to scale with the increasing load? 2. Performance: Are there any specific performance requirements such as low latency? 3. Availability: Does the system need to be fault- tolerant? 4. Security: What are the security requirements of the system and what are the potential threats? 5. Budget: What are the budget constraints for the development and the maintenance of the system? 6. Tools and Technology Stack: What technology and tools will be required? Lesson 4- Middleware and Integration Technologies What is Middleware? Integration Platform as a Service (iPaaS): It is a software that allows organizations to This is a cloud-based solution that connects share data between disparate systems that do applications through API integrations, which not communicate easily are basically sets of instructions that applications use to talk to each other. It serves as a “software glue” that ties different applications together By using middleware, you can: Integration middleware is a software tool that Facilitate app development: Middleware acts as a bridge between different systems or solutions take care of the complex communication applications, allowing them to connect and share between programs, freeing you up to focus on data. building the core functionality of your apps. Why Middleware? Speed up time to market: No more waiting for Middleware enables applications running across custom integrations to be built. Middleware lets multiple platforms to communicate with each you connect applications quickly and efficiently. other Break down data silos: Middleware allows Miiddleware shields the developer from information to flow freely between your different dependencies on Network Protocols, OS and systems, giving you a comprehensive view of your hardware platforms data. Benefits of Implementing Integration Middleware Tools Categories of Middleware Integration tools: Enterprise Service Bus (ESB): The middleware of this kind acts as a central communication hub, letting all your applications connect and send data to each other Main Types of Integration Middleware Data integration middleware Solutions: Data integration middleware, such as enterprise service buses (ESBs), provides tools to integrate Application programming interface (API) and manage data across different systems. It middleware ensures that data from various sources is API middleware provides developers with accessible and can be shared efficiently across tools to create, manage, and expose APIs for the enterprise. their applications. This type of application integration middleware facilitates the Device middleware connection between different software Device middleware platforms are designed for systems by allowing them to communicate developing applications specific to hardware through predefined interfaces. environments. It provides the necessary tools and frameworks to build and deploy applications Application server that can interact with hardware devices. An application server is a software framework used to create and run enterprise- Embedded middleware level applications. It provides an environment Embedded integration middleware acts as an for deploying and managing applications, intermediary for communication between handling various services such as security, embedded systems, operating systems, and transaction processing, and resource applications. It facilitates the integration of management. embedded applications with other software components. Application integration middleware This type of integration middleware tools, Game engines often referred to as enterprise application Middleware in game development, known as integration (EAI), enables the integration of game engines, provides frameworks for graphics, various systems and applications within an physics, scripting, and networking. Game engines enterprise. EAI middleware acts as a central enable developers to build complex games with hub, allowing different software components to advanced features and interactive capabilities. communicate and share data seamlessly. Message-oriented middleware (MOM) Content-centric middleware MOM middleware solutions enable the Content-centric middleware operates similarly exchange of messages between distributed to publish/subscribe systems. It uses a systems or components. MOM supports provider-consumer model to facilitate the different messaging protocols and manages the exchange of specific content between systems. routing and delivery of messages. Examples This type of integration middleware tools is include message queues and message brokers, particularly useful in scenarios where content which ensure reliable and ordered message delivery needs to be optimized based on delivery. consumer requests. Object request broker (ORB) How Integration Middleware Works? ORB middleware, based on the Common Object At its core, integration middleware solution Request Broker Architecture (CORBA), allows facilitates communication through common applications to send requests and receive messaging frameworks such as JavaScript responses from objects in a distributed Object Notation (JSON), Representational environment. ORBs facilitate communication State Transfer (REST), Extensible Markup between software components without requiring Language (XML), Simple Object Access knowledge of their location or user interface. Protocol (SOAP), and web services. These frameworks enable different applications and services to exchange data efficiently. Portals Portal middleware integrates content and capabilities from various applications into a The work of integration middleware cannot be single, unified interface. Enterprise portal possible without the following servers enable front-end integration and aspects: interaction between devices and back-end systems, creating a cohesive user experience. configuration and interoperability, security and data protection, traffic management Remote procedure call (RPC) and scalability. RPC integration middleware tools allow one application to execute a procedure in another Integration Middleware Tools at Work: Use application, either on the same machine or Cases by Industry: across a network. This type of middleware Recruiting enables synchronous or asynchronous Lead management communication between systems, mimicking E-commerce. local procedure calls. Healthcare Supply chain management Robotic middleware Robotic middleware platforms manage the complexity of building and operating robots. They provide tools for robot control, simulation, and integration of robotic hardware, firmware, and software from different manufacturers. Transaction processing (TP) middleware TP middleware supports the execution of transactions across a distributed network. Transaction processing monitors (TPMs) are well- known examples, ensuring that data transactions are completed accurately and efficiently.