Serverless Image Processing Workflow

Project Description

Create a system where a user uploads an image and a backend process resizes it and generates a thumbnail, using gRPC for inter-service communication.
• Python Client: A script to upload images to an S3 bucket and make a gRPC request to a Go service to initiate processing.
• Go Backend: A microservice that receives the gRPC request, coordinates the S3 operations, and potentially triggers a Lambda function.
• AWS Services:
o Amazon S3 as the storage bucket for raw and processed images.
o AWS Lambda to perform the actual image resizing (Python is good for image libraries) once S3 upload is complete, triggered by an S3 event notification.
o Amazon Rekognition could be integrated to add a feature like celebrity recognition after processing.
Key Skills Demonstrated
• Microservices Architecture: Designing and implementing modular services.
• gRPC & Protocol Buffers: Defining efficient, high-performance API contracts between services using Protocol Buffers and leveraging gRPC's speed and strict contracts.
• Polyglot Programming: Demonstrating proficiency in both Go (backend) and Python (client/serverless functions).
• Cloud Services Integration: Utilizing various AWS services like S3, DynamoDB, Lambda, ECS/Fargate, and SQS.
• Containerization & Orchestration: Using Docker and potentially orchestrators like ECS or Kubernetes on EC2 to deploy and manage services.
• Infrastructure as Code (IaC): Using tools like AWS CloudFormation or the AWS CDK to provision the AWS resources, demonstrating a modern DevOps approach.



PROJECT 2) TITLE
• Containerized: Kubernetes
• Project tracker: Jira
• Logging system: Prometheus
• Messaging & task queuing: Amazon SQS
• Programming language: Python Flask, ReactJS, Golang
• Microservice: Apache Kafka, gRPC
• CI/CD pipeline:
• Automation:
• Database: DynamoDB

Technologies Used

py