diff --git a/workshops/modernizer/README.md b/workshops/modernizer/README.md index cd4e22b..a8c2471 100644 --- a/workshops/modernizer/README.md +++ b/workshops/modernizer/README.md @@ -378,5 +378,6 @@ Ready to dive in? Check out the detailed setup guides: - **๐Ÿ”ง Backend Development** โ†’ [backend/README.md](./backend/README.md) - **๐ŸŽจ Frontend Development** โ†’ [frontend/README.md](./frontend/README.md) - **๐Ÿงช E2E Testing & Load Testing** โ†’ [cypress/README.md](./cypress/README.md) +- **๐Ÿš€ Modernizer Infrastructure Setup** โ†’ [modernizer/SELF_HOSTED_README.md](./modernizer/SELF_HOSTED_README.md) For questions or contributions, please refer to the individual README files in each directory for detailed instructions and best practices. \ No newline at end of file diff --git a/workshops/modernizer/SELF_HOSTED_README.md b/workshops/modernizer/SELF_HOSTED_README.md new file mode 100644 index 0000000..bc7b4ad --- /dev/null +++ b/workshops/modernizer/SELF_HOSTED_README.md @@ -0,0 +1,86 @@ +# ๐Ÿš€ DynamoDB Modernization Infrastructure + +> **CloudFormation Template for MySQL to DynamoDB Migration Workshop** + +A comprehensive CloudFormation template that sets up all required infrastructure components for the database modernization workshop, simulating an on-premises environment with MySQL database and providing the complete toolkit for migration to Amazon DynamoDB. + +## ๐Ÿ”ง Infrastructure Components + +This (`modernizer-db.yaml`) template creates a secure development environment based on VS Code Server, accessible through a browser and protected by user authentication. Workshop materials and utilities come pre-loaded in the environment. The database layer consists of a fully configured MySQL instance populated with sample e-commerce data, along with monitoring capabilities and secure credential management. + +Network infrastructure is configured with appropriate security groups and VPC endpoints to ensure secure communication between services. A CloudFront distribution provides fast, secure access to the development interface. + +The migration components include necessary IAM roles for DynamoDB, Glue ETL processes, and Lambda functions. An S3 bucket serves as the staging area, while pre-configured Glue connections streamline the database migration process. Docker support is included for compatibility testing across environments. + +## ๐Ÿ“‹ Prerequisites + +Before deploying this CloudFormation template, ensure you have: + +1. **AWS Account Access**: Administrative permissions in your AWS account +2. **Public IP Address**: Your current public IP address for security group configuration +3. **Region Selection**: Choose a region with support for all required services +4. **CloudFormation Knowledge**: Basic understanding of AWS CloudFormation + +## ๐Ÿš€ Deployment Instructions + +### Step 1: Deploy CloudFormation Template + +1. Navigate to the AWS CloudFormation console +2. Click "Create stack" > "With new resources" +3. Upload the `modernizer-db.yaml` file +4. Complete the parameters form with required information: + - Environment name + - Your public IP address for access control + +### Step 2: Accessing Your Development Environment. +Once your CloudFormation template is CREATE_COMPLETE, access the "Outputs" tab to retrieve your environment credentials. + +image + +Locate these two important values: + - VSCodeServerPassword - Authentication credential for your VS Code instance + - VSCodeServerURLModernizer - Direct endpoint to your cloud-based IDE + +Your values are unique to you and will differ from the above example. + +Click the VSCodeServerURLModernizer to launch your development environment. Enter the password when prompted and allow approximately 60 seconds for the environment to initialize. Any startup notifications can be safely dismissed. + +## ๐Ÿ” Infrastructure Details + +### ๐Ÿ“Š Resource Specifications + +| Component | Specification | Notes | +|-----------|---------------|-------| +| EC2 Instance | t4g.large | ARM-based for cost optimization | +| Storage | 40 GB gp3 | Encrypted EBS volume | +| MySQL | 8.0+ | Community edition | +| Network | Default VPC | VPC endpoints for optimization | +| Python | 3.13 | Latest version for compatibility | +| Node.js | v18 | LTS version for stability | + +## ๐Ÿšฎ Cleanup Instructions + +1. After executing the workshop, you would have created three DynamoDB tables: Users, Products, Categories. Please delete them using the DynamoDB AWS console as indicated in the below picture: + image + + If you prefer you can use below AWS CLI commands to delete the DynamoDB tables: + + $ aws dynamodb delete-table --table-name Categories --region us-west-2 + $ aws dynamodb delete-table --table-name Products --region us-west-2 + $ aws dynamodb delete-table --table-name Users --region us-west-2 + +3. After executing the workshop, you would have also created three Glue jobs: users_migration_job, product_migration_job, categories_migration_job. Please delete them using the Glue AWS console as indicated in the below picture: + image + + If you prefer you can use below AWS CLI commands to delete the Glue jobs: + + $ aws glue delete-job --job-name categories_migration_job + $ aws glue delete-job --job-name products_migration_job + $ aws glue delete-job --job-name users_migration_job + +4. Finally, delete the CloudFormation stack you deployed as part of this workshop. You can delete the CloudFormation stack as shown in the below picture: + image + + If you prefer you can use below AWS CLI commands to delete the CloudFormation stack: + + $ aws cloudformation delete-stack --stack-name \ No newline at end of file diff --git a/workshops/modernizer/media/CloudFormationStackOut.png b/workshops/modernizer/media/CloudFormationStackOut.png new file mode 100644 index 0000000..d879465 Binary files /dev/null and b/workshops/modernizer/media/CloudFormationStackOut.png differ diff --git a/workshops/modernizer/media/cloudFormationStackDeletion.png b/workshops/modernizer/media/cloudFormationStackDeletion.png new file mode 100644 index 0000000..ef42dfd Binary files /dev/null and b/workshops/modernizer/media/cloudFormationStackDeletion.png differ diff --git a/workshops/modernizer/media/ddbTableDeletion.png b/workshops/modernizer/media/ddbTableDeletion.png new file mode 100644 index 0000000..3dd247f Binary files /dev/null and b/workshops/modernizer/media/ddbTableDeletion.png differ diff --git a/workshops/modernizer/media/glueJobsDeletion.png b/workshops/modernizer/media/glueJobsDeletion.png new file mode 100644 index 0000000..32c88e9 Binary files /dev/null and b/workshops/modernizer/media/glueJobsDeletion.png differ