# Day 14:AWS Application integration

* **Application Integration** involves connecting and enabling communication between independent applications, often facilitated by intermediary systems to ensure they work together seamlessly. In the context of cloud computing, especially with AWS, application integration has become crucial as systems and services tend to be more loosely coupled. AWS provides a variety of services tailored to facilitate these integrations.
    
    #### Common Systems and Design Patterns for Application Integration
    
    1. **Queueing**
        
        * **What is a Messaging System?** A messaging system enables asynchronous communication and decouples processes by transmitting messages or events between producers (senders) and consumers (receivers).
            
        * **Queueing System**: A type of messaging system where messages are stored in a queue until consumed. This system is simple, non-real-time, and requires pulling messages rather than reacting to them.
            
            * **Example**: **Simple Queue Service (SQS)** - A fully managed queuing service for decoupling and scaling microservices and serverless applications. Common use case includes queuing transaction emails for events like sign-ups or password resets.
                
    2. **Streaming**
        
        * **What is Streaming?** Streaming involves continuous data flow where multiple consumers can process events in real-time. Events persist in the stream for an extended period, allowing for complex operations.
            
            * **Example**: **Amazon Kinesis** - AWS’s managed solution for collecting, processing, and analyzing streaming data.
                
    3. **Pub/Sub (Publish/Subscribe)**
        
        * **What is Pub/Sub?** In a pub/sub system, messages are sent to an event bus and categorized into groups. Subscribers to these groups receive messages in real-time without having to pull for them.
            
            * **Example**: **Simple Notification Service (SNS)** - A fully managed pub/sub messaging service that enables the decoupling of microservices and distributed systems.
                
    4. **API Gateway**
        
        * **What is an API Gateway?** An API Gateway is a service that manages the entry point for APIs, handling tasks such as throttling, logging, routing, and request/response formatting.
            
            * **Example**: **Amazon API Gateway** - Creates secure APIs for accessing backend services, providing a front door for applications.
                
    5. **State Machines**
        
        * **What is a State Machine?** An abstract model defining transitions between states based on conditions.
            
            * **Example**: **AWS Step Functions** - Coordinates multiple AWS services into serverless workflows, providing visual orchestration of steps, error handling, and logging.
                
    6. **Event Bus**
        
        * **What is an Event Bus?** An event bus receives events from various sources and routes them to targets based on predefined rules.
            
            * **Example**: **Amazon EventBridge** - A serverless event bus service for real-time data streaming and application integration. It supports default, custom, and SaaS event buses.
                
    
    #### Application Integration Services
    
    * **Simple Notification Service (SNS)**: A pub/sub messaging service that sends notifications in various formats (email, SMS, HTTP/s) to subscribers.
        
    * **Simple Queue Service (SQS)**: A queuing service that decouples and scales microservices, allowing applications to pull messages from queues.
        
    * **Step Functions**: A state machine service that coordinates AWS services into serverless workflows with features for data sharing and task orchestration.
        
    * **EventBridge (formerly CloudWatch Events)**: A serverless event bus service for connecting applications and routing events from AWS services and third-party applications.
        
    * **Kinesis**: A real-time streaming data service for collecting and processing large streams of data from multiple sources.
        
    * **Amazon MQ**: A managed message broker service using Apache ActiveMQ for traditional message queuing.
        
    * **Managed Kafka Service (MSK)**: A fully managed service for Apache Kafka, enabling real-time streaming data pipelines and applications.
        
    * **API Gateway**: A fully managed service for creating, publishing, and securing APIs, routing requests to backend services.
        
    * **AppSync**: A fully managed GraphQL service that allows querying data from various sources with a unified API.
        
    
    These services and patterns offer various approaches to application integration, each suited to different use cases and requirements in cloud environments.
