Introduction
In the Cloud Computing module, our team undertook an exciting project to develop a cloud-based online book library application. By leveraging the scalability and flexibility of Amazon Web Services (AWS), we built a secure and efficient platform that allowed users to browse and manage books seamlessly.
Key Concepts Covered:
- Amazon Web Services (AWS): AWS provides on-demand cloud computing services, including computing power, storage, and networking resources.
- Amazon Linux & Ubuntu Server: We utilized both Amazon Linux and Ubuntu Server to deploy and manage our application.
- Amazon Elastic Compute Cloud (EC2): EC2 instances were used to run our web server and database.
- Amazon Relational Database Service (RDS): RDS was employed to manage and scale our relational database for storing book and user information.
- Virtual Private Cloud (VPC) & Subnets: VPC allowed us to create a secure and isolated network environment for our application, with subnets to segment the infrastructure.
- Elastic Load Balancer (ELB): ELB intelligently distributed user traffic across web servers to prevent overloads and ensure performance.
- Amazon Simple Storage Service (S3): S3 provided scalable storage for book cover images and other assets.
- Amazon CloudFront: CloudFront is a Content Delivery Network (CDN) that distributed content globally, improving load times for users by caching assets closer to them.
Architecture Overview:
Our application followed a two-tier architecture, consisting of:
- A web server to handle user interactions and book library management.
- A relational database to store books and user data.
The entire infrastructure was migrated to AWS, where we leveraged VPC to create an isolated and secure network. Within this VPC, we set up subnets to ensure proper segregation of resources.
Load Balancing:
To ensure optimal performance, we deployed an Elastic Load Balancer (ELB) to manage incoming traffic. The ELB distributed user requests evenly across multiple web server instances, preventing overloads on any single server and ensuring that the application remained responsive under heavy load.
Object Storage with S3 and Content Delivery with CloudFront:
To manage book cover images, we used Amazon S3, an object storage service that is cost-effective and scalable. By storing images on S3, we ensured that our platform could efficiently handle growing amounts of content. Additionally, we employed Amazon CloudFront to deliver these images quickly to users around the globe. CloudFront cached the images at edge locations, reducing latency and ensuring a fast, responsive user experience.
Security Considerations:
Security was a top priority in our project. We implemented strong password policies, SSH key authentication for secure access to our EC2 instances, and configured the RDS database to use a non-default port for added security.
My Role and Contribution:
As the team member with the most experience in Linux administration, I ended up taking on the majority of the work for the project. I led the deployment of the application on Amazon EC2 instances running Ubuntu Server, which involved:
- Setting up the Linux instances and configuring the necessary services.
- Troubleshooting and resolving connection issues between the RDS database endpoints and the web server instances.
- Debugging database code errors and optimizing configurations to ensure the application ran smoothly.
Throughout the project, I took on a leadership role, often having to resolve issues and ensure the application was deployed successfully, as my teammates lacked the necessary experience to handle the more technical aspects of the setup.
Conclusion:
This cloud computing project was a fantastic learning experience, not only for me but also for my teammates who were relatively new to server-side deployment on Linux. My experience with AWS and Linux administration was instrumental in successfully overcoming the technical challenges of deploying and managing our cloud-based book library application.
Overall, the project was a success, demonstrating the power and flexibility of AWS services to build a scalable, secure, and performant web application.
Sources:
- None