Below is an example of an Infrastructure Diagram that illustrates how our event-based reservation system might be deployed using cloud resources. This includes virtual machines, networks, containers, and external services.
graph TD
%% Cloud Platform
subgraph CloudInfrastructure[Cloud Infrastructure -e.g., AWS, Azure, GCP-]
LB[Load Balancer]
VPC[VPC -Virtual Private Cloud-]
subgraph AppLayer[Application Layer]
EC2Instance1[Virtual Machine: Reservation Service Instance 1]
EC2Instance2[Virtual Machine: Reservation Service Instance 2]
Container1[Docker Container: Wolverine Event Bus]
Container2[Docker Container: Durable Outbox]
end
subgraph DataLayer[Data Layer]
DBCluster[Managed Database Cluster]
BackupStorage[Cloud Backup Storage]
end
subgraph ExternalServices[External Integrations]
PaymentGateway[Payment Gateway]
NotificationService[Notification Service]
ResourceCatalog[Resource Catalog API]
end
end
%% Interactions
LB --> EC2Instance1
LB --> EC2Instance2
EC2Instance1 --> Container1
EC2Instance2 --> Container2
EC2Instance1 --> DBCluster
DBCluster --> BackupStorage
Container1 --> PaymentGateway
Container2 --> NotificationService
EC2Instance1 --> ResourceCatalog
Explanation of Components:
Cloud Infrastructure:
- Load Balancer (LB): Distributes incoming traffic across multiple virtual machines running the Reservation Service to ensure high availability.
- Virtual Private Cloud (VPC): Provides isolated networking for your application components, ensuring secure communication between layers.
Application Layer:
- EC2 Instances (or VM Instances): Host the Reservation Service, ensuring redundancy and scalability.
- Containers: Docker containers for components like Wolverine Event Bus and Durable Outbox, optimizing deployment flexibility and portability.
Data Layer:
- Managed Database Cluster: Stores reservation and customer data with automatic scaling and failover capabilities.
- Cloud Backup Storage: Regular backups of database data to prevent data loss during failures.
External Services:
- Payment Gateway: Processes payments securely.
- Notification Service: Sends reservation confirmation messages via email/SMS.
- Resource Catalog API: Provides real-time information about available resources.