WIP.5 Week 1
This commit is contained in:
parent
32f100a8e2
commit
6ba8b0d2af
229
assets/week1/aws-architecture-diagram.html
Normal file
229
assets/week1/aws-architecture-diagram.html
Normal 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>
|
||||
BIN
assets/week1/aws-architecture-diagram.png
Normal file
BIN
assets/week1/aws-architecture-diagram.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 227 KiB |
23
week1.md
23
week1.md
@ -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 |
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user