0% found this document useful (0 votes)
3 views

Deployable Multi-Service Application Using Docker and AWS

The document outlines a project to develop and deploy a multi-service blog platform using Docker and AWS, focusing on skills in containerization, service orchestration, and cloud deployment. Key components include User, Blog, and Comment services with specified endpoints, PostgreSQL for data storage, and requirements for Dockerization, AWS deployment, and environment management. Deliverables include a codebase, deployment guide, live deployment URL, and comprehensive documentation, with a 48-hour completion timeline.
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views

Deployable Multi-Service Application Using Docker and AWS

The document outlines a project to develop and deploy a multi-service blog platform using Docker and AWS, focusing on skills in containerization, service orchestration, and cloud deployment. Key components include User, Blog, and Comment services with specified endpoints, PostgreSQL for data storage, and requirements for Dockerization, AWS deployment, and environment management. Deliverables include a codebase, deployment guide, live deployment URL, and comprehensive documentation, with a 48-hour completion timeline.
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 3

Deployable Multi-Service Application Using Docker

and AWS
Objective

Develop and deploy a multi-service blog platform using Docker containers and AWS. The
project aims to evaluate your skills in containerization, service orchestration, backend
development, and cloud deployment.

Project Overview

You are required to build a simple blog platform with the following services:

1. User Service
○ Handles user authentication and profile management. The service must use JWT
for authentication and secure password storage with hashing algorithms such as
bcrypt. You can use third-party libraries for JWT integration and bcrypt for
password hashing.
● Exposed Endpoints:
○ POST /register/: Register a new user.
○ POST /login/: Authenticate a user.
○ GET /users/<id>: Retrieve user details.
○ PUT /users/<id>: Edit an existing blog post.
○ DELETE /users/<id>: Delete a specific blog post.
2. Blog Service
○ Manages blog posts. The service should support pagination for listing blog posts
to ensure scalability. Utilize third-party libraries for built-in pagination utilities.
● Exposed Endpoints:
○ POST /blogs/: Create a new blog post.
○ GET /blogs/: List all blog posts.
○ GET /blogs/<id>: Fetch a specific blog post.
○ PUT /blogs/<id>: Edit an existing blog post.
○ DELETE /blogs/<id>: Delete a specific blog post.
3. Comment Service
○ Handles comments for blog posts. Comments should be implemented as a flat
structure initially, with the option to extend for nested comments in the future.
Consider using third-party libraries to implement nested structures.
● Exposed Endpoints:
○ POST /comments/: Add a comment to a blog post.
○GET /comments?post_id=<id>: List comments for a specific blog
post.
4. Database Service
○ Use PostgreSQL to store data for all services. Each service should use its own
schema to maintain separation of concerns.

Project Requirements

1. Dockerization:
○ Write a Dockerfile for each service (User, Blog, Comment).
○ Use efficient multi-stage builds to reduce image size.
2. Service Orchestration:
○ Create a docker-compose.yml file to define and orchestrate the services.
Include volume definitions for persistent data storage, especially for PostgreSQL.
○ Ensure the services communicate with each other over Docker networks.
3. AWS Deployment:
○ Deploy the application on AWS using EC2 instance.
○ Utilize the following AWS resources:
■ EC2 for running containers.
■ PostgreSQL for database management.
4. Environment Management:
○ Use .env files for managing environment variables (e.g., database credentials).
Provide separate .env files for local development and production environments.

Deliverables

1. Codebase:
○ Backend code for User, Blog, and Comment services.
○ Dockerfile for each service.
○ docker-compose.yml file.
2. Deployment Guide:
○ A step-by-step document explaining:
■ How to build and run the project locally using Docker Compose.
■ How to deploy the project to AWS.
3. Live Deployment:
○ Provide a public URL for the deployed application on AWS. Ensure the URL is
secured with HTTPS.
○ Ensure the endpoints are functional.
4. Documentation:
○ Clear API documentation for all endpoints.
○ Explain any trade-offs or design decisions made.

Evaluation Criteria

1. Docker Skills:
○ Correct and efficient Dockerfile creation.
○ Proper use of Docker Compose for orchestration.
2. AWS Deployment:
○ Successful deployment of the application with functional endpoints.
○ Use of appropriate AWS services for deployment.
3. Code Quality:
○ Clean, modular, and well-documented code.
4. Documentation:
○ Comprehensive and easy-to-follow setup and deployment instructions.

Submission Guidelines

● Submit your code via a GitHub repository link.


● Provide the live application URL and any necessary credentials for testing.
● Ensure the README file contains clear instructions for both local and AWS deployment.

Timeline

You have 48 hours to complete and submit the project after receiving the assignment.

Good luck!

You might also like