This section looks closely at the architecture of the Cruddur microblogging platform. The diagrams below show how the system uses modern cloud services to stay scalable, reliable, and low-cost.

Figure 1: High-level Cruddur architecture, click to view full size.

Figure 2: VPC networking with public and private subnets.

Figure 3: React frontend on S3 delivered via CloudFront.

Figure 4: ALB routing traffic to ECS Fargate backend services.

Figure 5: CI/CD pipeline built with AWS CodePipeline.

Figure 6: CodePipeline source, build, and deploy stages.

Figure 7: DynamoDB for messaging with Lambda stream processing.
Architectural Overview
Cruddur is built as a modern, scalable, and low-cost web application. The user interface (frontend) is separate from the business logic (backend).
- The frontend is a React application that users open in their browser.
- The backend is a Python Flask application. It handles tasks like creating posts, managing user data, and sending messages. It runs in Docker containers on AWS Fargate, which manages the server infrastructure for you.
- Data lives in two databases, chosen by data type:
- PostgreSQL (RDS): For structured data like user profiles and posts.
- DynamoDB: For real-time chat messages, which need very fast reads and writes.
- Security uses AWS Cognito for user sign-in and sign-up.
Why This Architecture?
This design was chosen for several key reasons:
- Scalability: AWS Fargate and serverless parts let the application scale on its own to handle more users and traffic, with no manual work.
- Reliability: Services run across multiple AWS Availability Zones and use managed services like RDS and DynamoDB. This keeps the application available even when parts fail.
- Cost-Effectiveness: With a serverless-first approach, you pay only for the resources you use. That costs less than running servers 24/7.
- Maintainability: With the frontend and backend separate, different teams can work on each one on its own. Containers keep the environment the same from development to production.