WIP.5 Week 1

This commit is contained in:
Florian 2025-10-27 14:23:36 +01:00
parent 32f100a8e2
commit 6ba8b0d2af
3 changed files with 250 additions and 2 deletions

View File

@ -0,0 +1,229 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>AWS Architecture Diagram</title>
<style>
body {
margin: 0;
padding: 20px;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
}
.container {
background: white;
border-radius: 12px;
padding: 30px;
box-shadow: 0 20px 60px rgba(0,0,0,0.3);
max-width: 1200px;
width: 100%;
}
.title {
text-align: center;
color: #232f3e;
font-size: 24px;
font-weight: bold;
margin-bottom: 20px;
}
.region {
border: 3px solid #FF9900;
border-radius: 8px;
padding: 20px;
background: #fff8f0;
}
.region-label {
background: #FF9900;
color: white;
padding: 8px 16px;
border-radius: 4px;
display: inline-block;
font-weight: bold;
margin-bottom: 15px;
}
.vpc {
border: 2px solid #147eba;
border-radius: 6px;
padding: 20px;
background: #f0f8ff;
}
.vpc-label {
background: #147eba;
color: white;
padding: 6px 12px;
border-radius: 4px;
display: inline-block;
font-size: 14px;
font-weight: bold;
margin-bottom: 15px;
}
.subnet {
border: 2px dashed #34a853;
border-radius: 6px;
padding: 15px;
margin: 10px 0;
background: white;
}
.subnet.private {
border-color: #d93025;
}
.subnet-label {
font-weight: bold;
color: #232f3e;
margin-bottom: 10px;
font-size: 14px;
}
.service-box {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
padding: 12px;
border-radius: 6px;
margin: 8px 0;
font-size: 13px;
box-shadow: 0 2px 8px rgba(0,0,0,0.2);
}
.service-box.alb {
background: linear-gradient(135deg, #FF9900 0%, #FF6600 100%);
}
.service-box.ecs {
background: linear-gradient(135deg, #FF9900 0%, #CC7A00 100%);
}
.service-box.rds {
background: linear-gradient(135deg, #527FFF 0%, #3E5FCC 100%);
}
.service-box.s3 {
background: linear-gradient(135deg, #569A31 0%, #3E7023 100%);
}
.service-box.monitoring {
background: linear-gradient(135deg, #FF4F8B 0%, #CC3E6E 100%);
}
.service-box.jenkins {
background: linear-gradient(135deg, #D24939 0%, #A63828 100%);
}
.arrow {
text-align: center;
color: #232f3e;
font-size: 20px;
margin: 5px 0;
}
.flow-grid {
display: grid;
grid-template-columns: 1fr;
gap: 10px;
}
.environments {
background: #f5f5f5;
border-radius: 6px;
padding: 15px;
margin-top: 20px;
text-align: center;
font-weight: bold;
color: #232f3e;
}
.icon {
display: inline-block;
margin-right: 8px;
}
</style>
</head>
<body>
<div class="container">
<div class="title">🏗️ AWS Architecture Diagram</div>
<div class="region">
<div class="region-label">📍 AWS REGION (eu-west-1)</div>
<div class="vpc">
<div class="vpc-label">🔒 VPC (10.0.0.0/16)</div>
<div class="flow-grid">
<!-- Public Subnet -->
<div class="subnet">
<div class="subnet-label">🌐 Public Subnet (AZ-a)</div>
<div class="service-box alb">
<span class="icon">⚖️</span>
<strong>Application Load Balancer</strong>
</div>
<div class="service-box alb">
<span class="icon">🌉</span>
NAT Gateway
</div>
</div>
<div class="arrow">↓ HTTPS (443)</div>
<!-- Private Subnet AZ-a -->
<div class="subnet private">
<div class="subnet-label">🔐 Private Subnet (AZ-a)</div>
<div class="service-box ecs">
<span class="icon">📦</span>
<strong>ECS Cluster</strong> (3 EC2 nodes)
</div>
<div class="service-box ecs">
<span class="icon">🐳</span>
Microservices (Containers)
</div>
<div class="service-box ecs">
<span class="icon">🗂️</span>
ECR for images (central)
</div>
</div>
<div class="arrow">↓ Private Network</div>
<!-- Private Subnet AZ-b -->
<div class="subnet private">
<div class="subnet-label">🔐 Private Subnet (AZ-b)</div>
<div class="service-box rds">
<span class="icon">💾</span>
<strong>Amazon RDS</strong> (MySQL, Multi-AZ)
</div>
<div class="service-box rds">
<span class="icon"></span>
Automated Backups (14 days)
</div>
</div>
<div class="arrow"></div>
<!-- S3 -->
<div class="service-box s3">
<span class="icon">🪣</span>
<strong>Amazon S3</strong><br>
Images, logs, backups, versioning & replication
</div>
<div class="arrow"></div>
<!-- Observability -->
<div class="service-box monitoring">
<span class="icon">📊</span>
<strong>Observability Stack</strong><br>
• Prometheus & Grafana<br>
• CloudWatch / X-Ray
</div>
<div class="arrow"></div>
<!-- Jenkins -->
<div class="service-box jenkins">
<span class="icon">🔧</span>
<strong>Jenkins</strong> (EC2 instance)<br>
• Build & Push to ECR<br>
• Deploy to ECS Cluster
</div>
</div>
</div>
<div class="environments">
🎯 Environments: STAGING / PRODUCTION<br>
<small>(Each has 3 ECS nodes, same structure)</small>
</div>
</div>
</div>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 227 KiB

View File

@ -69,7 +69,7 @@ This project will migrate the Spring PetClinic Microservices demo from its local
|----|----|----|
| **Developers** | Continuous Integration | Each merge must trigger automated build, test, and image creation. |
| | Local to Cloud Parity | Development environment must mirror AWS setup. |
| **DevOps Engineers** | Automated Deployment | CI/CD pipeline must deploy microservices to Dev, Staging, and Prod environments automatically. |
| **DevOps Engineers** | Automated Deployment | CI/CD pipeline must deploy microservices to Staging and Prod environments automatically. |
| | Test Automation | Integration tests must run automatically in CI/CD pipeline. |
|| Infrastructure as Code | All AWS resources defined through configuration files |
| | Monitoring & Alerts | Centralized logging, metrics, and tracing for all microservices. Automated alerting for service downtime or threshold breaches. |
@ -128,7 +128,7 @@ This project will migrate the Spring PetClinic Microservices demo from its local
|----|----|
| **Cloud Architect** | Design AWS target architecture, network, and IAM structure |
| **DevOps Engineer** | Build CI/CD pipelines, container orchestration, monitoring setup |
| **Dev Lead** | Containerize services, modify configs for cloud compatibility |
| **Dev Lead** | Containerize services, modify configs for cloud compatibility |
| **Database Engineer** | Migrate data from local RDBMS to AWS RDS, manage schema updates |
| **Security Team** | Set up access and roles for services |
| **Everyone** | Validate deployments, pipeline runs, rollback testing |
@ -299,3 +299,22 @@ This project will migrate the Spring PetClinic Microservices demo from its local
| | | Prioritize restoring RDS, Config Server, and API Gateway. |
| **Disaster Recovery Plan** | Cold standby in alternate region | No live duplication to save cost.|
| | | Periodic replication of backups and images to secondary region. |
## Architecture Diagram
<p align="center">
<img src="assets/week1/aws-architecture-diagram.png" alt="Main Menu"/>
</p>
## Solutions stack
| **Layer** | **Technologies / Services** |
|----|----|
| **Application Layer** | Spring Boot microservices |
| **Runtime / Platform Layer** | Docker, Amazon ECS, Amazon ECR |
| **CI/CD Layer** | Jenkins, Gitea |
| **Infrastructure Layer** | Terraform, Ansible, Amazon EC2 (for Jenkins), VPC, subnets, security groups |
| **Database / Storage Layer** | Amazon RDS (MySQL), Amazon S3, Amazon EBS |
| **Observability Layer** | Prometheus, Grafana, CloudWatch |
| **Security Layer** | AWS IAM, Security Groups, HTTPS via ALB, Secrets Manager |
| **Continuity & Recovery Layer** | RDS automated snapshots, S3 versioning/replication, multi-AZ RDS, Terraform for redeploy |
| **Network & Delivery Layer** | Application Load Balancer (ALB), Route 53 (DNS), NAT Gateway, Internet Gateway |