DEV Community

Cover image for Building GameHub Platform: A Steam-like Ecosystem for Students with AWS Cloud
5 1 2 2 1

Building GameHub Platform: A Steam-like Ecosystem for Students with AWS Cloud

1. Introduction

In this blog post, I’ll share my journey creating GameHub Platform, a student-focused gaming ecosystem inspired by Steam, built using a variety of AWS services.

For security reasons, I won’t reveal sensitive implementation details. Instead, I’ll provide clear architectural insights and technical highlights so you can envision and build a similar system on your own.


2. Problem Statement

At FPT University, two majors naturally complement each other: graphic design and game development. Students in graphic design create stunning 2D and 3D assets, while game developers craft engaging games. Yet, despite their synergy, these groups lacked a shared platform to collaborate, showcase, and monetize their work.

Here’s the gap GameHub Platform aims to fill:

  • Graphic design students can upload and display their game assets like images, models, and animations.
  • Game development students browse, download, and use these assets to build their games.
  • Finished games get published and sold right on the platform.

The result? A vibrant ecosystem that promotes learning, creativity, and entrepreneurship among students - a mini Steam tailored for campus talents.


3. Architecture Overview

Here’s a high-level look at the GameHub Platform’s architecture, organized into three layers:

Architecture Overview

3.1 CI/CD Pipeline

  • Source code for frontend and backend lives in GitHub.
  • On each commit, GitHub Actions builds Docker images and pushes them to Amazon ECR (Elastic Container Registry).
  • Automated deployments trigger updates to development, staging, and production environments.

3.2 Cloud Environment

  • Backend services run on Amazon EKS (Elastic Kubernetes Service), handling traffic via a Load Balancer.
  • Persistent data is stored in a combination of Amazon RDS for relational data, MongoDB Atlas for flexible metadata, and Amazon S3 for asset storage.
  • Frontend UI is served via AWS Amplify and cached globally with CloudFront CDN.
  • Security is enforced using AWS WAF, Security Groups, and network policies.

3.3 Feature Services

Additional services enrich the platform:

  • Payment Gateway integrates Stripe/PayOS for smooth transactions.
  • Student ID Verification uses Amazon Textract for automated card scanning.
  • Virus Scanning ensures uploaded files are safe using the VirusTotal API.
  • Real-time Notification Service alerts users of important events.

4. Tech Stack & Key Services Used

Choosing the right tech stack was critical to ensuring the platform could scale, stay secure, and remain cost-effective. Here’s a snapshot of the core tools and why they were chosen:

Image description

Service / Tool Category Why It Was Chosen
Next.js + TailwindCSS Front-End Framework Fast development with modern UI utilities and great SEO support.
AWS Amplify + CloudFront Front-End Hosting & CDN Low-latency global distribution for frontend assets.
.NET Core (Dockerized) Back-End API Robust, cross-platform, high-performance microservices.
Amazon ECR Container Registry Seamless integration with AWS services and CI/CD pipelines.
GitHub Actions CI/CD Pipeline Native GitHub integration, flexible YAML workflows.
Amazon EKS (Kubernetes) Container Orchestration Managed Kubernetes with scaling, high availability, and strong AWS integration.
RabbitMQ Message Broker Decouples services and handles asynchronous tasks efficiently.
Amazon RDS (MySQL) Relational Database Reliable, managed SQL database with automated backups.
Amazon ElastiCache (Redis) Caching Layer Speeds up frequent queries, reduces load on databases.
Amazon OpenSearch Log Aggregation & Search Centralizes logs for monitoring and troubleshooting.
Amazon S3 Object Storage Durable storage for game assets, screenshots, and other user uploads.
AWS WAF + Security Groups Security Protects infrastructure from malicious traffic and controls access.
Amazon Route 53 + ACM DNS & SSL Custom domain routing and free TLS certificates.
Amazon CloudWatch Monitoring & Logging Provides metrics, alarms, and insights for operational health.
AWS Lambda Event-Driven Functions Lightweight, on-demand compute for scanning, notifications, and integration.
VirusTotal API Malware Detection Automatically scans uploaded files to detect threats.
Amazon Textract Document Extraction Extracts and verifies student ID card data automatically.
Stripe / PayOS Payment Processing Secure and simple API for processing payments.
MongoDB Atlas NoSQL Data Store Flexible metadata storage for assets and user data.

A thoughtfully chosen tech stack forms the foundation for a reliable, scalable, and maintainable platform.


5. Deep Dive: Back-End Services on EKS with gRPC

To handle the platform’s complexity, the backend is split into microservices running in a Kubernetes cluster on Amazon EKS.

5.1 Microservices Breakdown

Key services include:

  • Main Service: Manages games, assets, and user interactions.
  • Payment Service: Handles all transaction-related logic.
  • Role Management: Manages user permissions and access levels.
  • Notification Service: Sends emails, in-app alerts, and push notifications.

Each service runs in its own Kubernetes pod, enabling independent scaling and easier updates.

5.2 Why Kubernetes (EKS)?

EKS was selected because:

  • It offers automatic scaling and high availability.
  • Deep integration with AWS services (IAM, CloudWatch, VPC).
  • Simplifies deployments using standard Kubernetes tooling and GitOps workflows.

This allows the platform to efficiently adapt to varying traffic from student uploads, downloads, and transactions.

5.3 gRPC for Inter-Service Communication

Instead of REST APIs, services communicate via gRPC using protocol buffers:

Feature Benefit
Performance Compact binary format for faster serialization.
Low Latency Efficient use of HTTP/2 improves speed.
Strong Typing Protobuf contracts reduce errors.
Bi-directional Supports streaming data and advanced RPCs.

This ensures fast, reliable, and maintainable communication inside the Kubernetes cluster.

5.4 Security

  • gRPC traffic is confined to the private VPC network.
  • Kubernetes Network Policies restrict service-to-service access.
  • Public-facing endpoints are secured with authentication and AWS WAF rules.
  • IAM and Kubernetes RBAC policies enforce least privilege access.

6. Feature Services

Beyond core gameplay and asset management, GameHub Platform integrates specialized services to boost security and usability:

6.1 VirusTotal for Malware Scanning

Before any game or asset is published, it is scanned via the VirusTotal API to detect viruses or malware. This protects the community from harmful content and builds trust in the platform.

6.2 Amazon Textract for Student ID Verification

Users upload photos of their student ID cards. Amazon Textract extracts textual data, which is then cross-checked against the university’s database to verify enrollment status. This helps gatekeep student-only features.

6.3 Payment Gateway Integration

Payments are handled via Stripe or PayOS, offering students an easy and secure way to buy and sell games and assets.

6.4 Notification Service

Real-time alerts via email and in-app notifications keep users informed about new assets, transactions, and platform updates.

6.5 Storage and Asset Management

Amazon S3 provides scalable, secure storage for all uploaded content, backed by lifecycle policies and encryption.


7. Conclusion & Lessons Learned

Building GameHub Platform was a rewarding journey that taught me a lot about cloud architecture, container orchestration, and integrating multiple AWS services to build a real-world application.

Key takeaways:

  • Modular microservices running on Kubernetes offer flexibility and scalability.
  • Using gRPC improves performance and maintainability for internal APIs.
  • Cloud-native services like Amazon Textract and VirusTotal APIs add critical security layers.
  • Automating deployments with CI/CD pipelines accelerates delivery and reduces errors.

If you’re inspired to build your own cloud-native platform or want to learn more about AWS, Kubernetes, and modern microservices design, feel free to reach out. I’m happy to share insights or collaborate!


Let’s keep innovating and building great things together!

You can contact me at:
📧 vbachdoan@gmail.com
🔗 LinkedIn Profile: vuongbd2007

Thank you for reading and happy coding! 🚀

Heroku

Build AI apps faster with Heroku.

Heroku makes it easy to build with AI, without the complexity of managing your own AI services. Access leading AI models and build faster with Managed Inference and Agents, and extend your AI with MCP.

Get Started

Top comments (2)

Collapse
 
bernert profile image
BernerT

Can you explain more about how you keep students’ uploaded assets organized and manage versioning on S3?

Collapse
 
bachdoanvuong profile image
Vuong Bach Doan • Edited

Below I explain about how we manage S3 buckets for uploaded assets and games on platform:

Bucket Structure:

We use two separate S3 buckets to store games and assets:

  • gamehub-platform-games-abc: stores developer's game packages
  • gamehub-platform-games-asset-abc: stores developer's assets (e.g., images, audio, fonts)

Upload Process:

The upload process consists of three main phases:

  1. Init – Generate a presigned URL
  2. Multipart Upload – Upload file parts via the presigned URLs from the client side
  3. Finalize – Complete the multipart upload to merge all parts into a single object

We have an API service running in a Kubernetes Pod, responsible for handling upload requests and returning presigned URLs. The actual upload is performed directly from the client using these URLs.

S3 Folder Structure:

Each user has a dedicated folder based on their user ID. Example paths:

  • gamehub-platform-games-abc/<user_id>/<game_id>/<game_name>.exe
  • gamehub-platform-assets-abc/<user_id>/<assets_id>/<assets_name>.png

User ID verification is implemented in the API service to ensure that users can only upload or interact with objects under their own user ID directory.

Versioning:

  • We have S3 versioning enabled, primarily for data backup purposes.
  • Game packages uploaded to the platform always represent the latest version.
  • If a developer wants to upload a different version of a game, they create a new object with a new key instead of updating an existing object—distinguishing between “update game” and “create another version.”

Why use two separate buckets instead of folders in one bucket?

  • We want to separate the logic for handling games vs. assets.
  • For the games bucket, we plan to implement an automatic malware scanning rule (e.g., for viruses or ransomware) since executable files are more risky.
  • For the assets bucket, since assets are generally safe media files (images, fonts, etc.), intensive scanning isn’t necessary.
  • We have RBAC (Role-Based Access Control) implemented, and different Moderator roles may have different levels of access. For example:

    • Some Moderators may only view the Games bucket
    • Others may only view the Assets bucket Using separate buckets allows us to apply distinct S3 Bucket Policies and IAM Roles for better access control and security.

Best Practices for Running  Container WordPress on AWS (ECS, EFS, RDS, ELB) using CDK cover image

Best Practices for Running Container WordPress on AWS (ECS, EFS, RDS, ELB) using CDK

This post discusses the process of migrating a growing WordPress eShop business to AWS using AWS CDK for an easily scalable, high availability architecture. The detailed structure encompasses several pillars: Compute, Storage, Database, Cache, CDN, DNS, Security, and Backup.

Read full post

👋 Kindness is contagious

Explore this insightful piece, celebrated by the caring DEV Community. Programmers from all walks of life are invited to contribute and expand our shared wisdom.

A simple "thank you" can make someone’s day—leave your kudos in the comments below!

On DEV, spreading knowledge paves the way and fortifies our camaraderie. Found this helpful? A brief note of appreciation to the author truly matters.

Let’s Go!