CASE STUDY
COMPLETE GRAPHICAL USER INTERFACE DEVELOPMENT WITH MULTIPLE 3RD PARTY INTEGRATIONS FOR ATARI
ABOUT ATARI
Atari is a multi-platform, global interactive entertainment and licensing company. The original innovator of video gaming, founded in 1972, Atari owns and/or manages a portfolio of more than 200 games and franchises, including world renowned brands like Asteroids®, Centipede®, Missile Command®, Pong®, Test Drive®, Backyard Sports®, Ghostbusters®, and Rollercoaster Tycoon®. Atari capitalizes on these powerful properties by delivering compelling games online (i.e. browser, Facebook® and digital download), on smartphones and tablets and other connected devices. The Company also develops and distributes interactive entertainment for video game consoles from Microsoft, Nintendo and Sony.
Atari VCS (code named Ataribox) is the latest home video game console produced by Atari, SA. The system was first revealed in June 2017 and pre-orders should have begun on May 30, 2018 however it was delayed until 2020. While its physical design is intended to pay homage to the Atari 2600, the new Atari VCS is expected to play modern games and streaming entertainment via a Linux-based operating system that will allow users to download and install other compatible games onto it. The system shares a name with Atari, Inc.'s 1977 Video Computer System, usually shortened to VCS, which was renamed to the Atari 2600 in late 1982.
CHALLENGES
- Initial pit stops during the implementation with the GUI and OS
- Complexity in GUI
- Difficulty in handling multiple vendors
- Difficulty in Managing backend services, user management and content management.
- Delay in Processing pre-orders
THE
SOLUTION
HOW [x]cube LABS
LEVERAGED AWS TECH
Atari VCS development leverages several AWS services to enhance its functionality and ensure smooth operations. Here is an overview of how these services are utilized:
AWS Lambda
AWS Lambda is utilized for multiple purposes in our project. It is employed for extracting OS files and obtaining precise OS file versions. Additionally, Lambda functions are used to manage WebSocket connections and store the associated data into DynamoDB. The serverless nature of AWS Lambda allows us to execute code in response to specific events and handle tasks efficiently without managing infrastructure.
AWS DynamoDB
DynamoDB serves as the primary database for our WebSocket connections and user notifications. It provides a highly scalable and fully managed NoSQL database solution, allowing us to store and retrieve WebSocket connections and user-related data with low latency. DynamoDB's seamless scaling capability ensures that our application can handle varying workloads without compromising performance.
AWS API Gateway
AWS API Gateway is utilized to configure all API endpoints that interface with Lambda functions. These endpoints play a crucial role in managing WebSocket connections and chat messages. API Gateway provides an easy way to create, publish, maintain, and monitor APIs, enabling smooth communication between different components of our application.
AWS CloudFront
AWS CloudFront is employed to improve the performance and distribution of static assets, such as S3 files, web URLs, and media files. By leveraging CloudFront's global content delivery network (CDN), we ensure that these assets are distributed efficiently to users, reducing latency and improving overall user experience.
AWS S3
Amazon S3 (Simple Storage Service) is used as the primary storage solution for various types of files in our application. It stores zip files, OS files, and media files in separate buckets. S3 provides scalable, secure, and durable object storage, ensuring that our files are readily available when needed and protected from data loss.
AWS EC2
AWS EC2 is commonly used for deploying various types of applications, including Node.js applications. allowing scalability and flexibility for hosting and running apps. It provides security features, load balancing, and auto-scaling to ensure high availability and performance.
Atari VCS development relies on a robust architecture powered by various AWS services. These services not only enhance performance and scalability but also ensure the efficient storage and retrieval of data critical to the application's functionality. The seamless integration of AWS services allows us to focus on delivering an exceptional user experience while leveraging the benefits of cloud computing and serverless architecture.
Here's more information on how AWS Lambda is utilized in our project to facilitate the extraction of OS files and obtain precise OS file versions.
ON-DEMAND FILE EXTRACTION
AWS Lambda enables us to trigger file extraction operations on demand, which means the function runs only when needed. This ensures that we do not consume unnecessary resources when there are no file extraction requests.
SCALABILITY
AWS Lambda automatically scales the function to handle varying workloads. This scalability is crucial when multiple users simultaneously request OS file extraction, as Lambda efficiently manages the execution of functions in parallel.
COST-EFFICIENCY
AWS Lambda follows a pay-as-you-go pricing model, which means we only pay for the compute time used during each file extraction. This cost-efficiency is advantageous, especially when file extraction requests are sporadic or infrequent.
SEAMLESS INTEGRATION
AWS Lambda seamlessly integrates with other AWS services, such as Amazon S3 (Simple Storage Service) or Amazon EFS (Elastic File System), where the OS files are stored. This integration streamlines the process of fetching the required OS files and their associated versions.
SECURITY
AWS Lambda operates within a secure environment, ensuring that the file extraction process adheres to strict security standards. This is crucial when dealing with sensitive OS files that may contain confidential information.
EASY MAINTENANCE
With AWS Lambda, we do not need to manage underlying infrastructure, as AWS handles the server provisioning and maintenance. This reduces administrative overhead and allows our team to focus on core development tasks.
EVENT-DRIVEN PROCESSING
AWS Lambda can be triggered by various events, such as API requests, scheduled events, or file uploads. This flexibility allows us to extract OS files and retrieve their versions based on specific event triggers.
Additionaly, In our project, DynamoDB is also a key component that serves as a reliable and scalable database to manage Saved Socket Connections. These connections are essential for facilitating WebSocket connections, enabling real-time communication between clients and the server. DynamoDB's flexible and highly available nature makes it an ideal choice for handling the dynamic and frequent connections associated with WebSocket implementations.
Here's more information on how DynamoDB is utilized in our project:
REAL-TIME COMMUNICATION
WebSockets are widely used for real-time communication between clients and the server. When a user establishes a WebSocket connection, a corresponding entry is created in DynamoDB to represent the connection. This allows the server to keep track of connected users and ensures seamless data exchange.
QUICK DATA RETRIEVAL
DynamoDB's key-value store structure allows for fast data retrieval. This is crucial for efficiently managing and updating WebSocket connections, ensuring low latency and optimal performance during real-time interactions.
SCALABILITY
DynamoDB is fully managed by AWS, and it automatically scales to handle varying workloads. This is particularly beneficial in WebSocket scenarios, where the number of connections can fluctuate based on user activity. DynamoDB's ability to scale seamlessly ensures that our application can accommodate a large number of concurrent WebSocket connections without compromising performance.
HIGH AVAILABILITY
DynamoDB replicates data across multiple Availability Zones, making it highly available and fault-tolerant. This ensures that even if one Availability Zone experiences issues, the WebSocket connections stored in DynamoDB remain accessible and resilient.
PERSISTENCE
Since WebSocket connections are ephemeral, DynamoDB serves as a persistent storage layer for maintaining the state of connected users. If a WebSocket connection is interrupted or disconnected, the user's state can be easily restored from DynamoDB when they reconnect, allowing for a seamless user experience.
OPTIMIZED COSTS
DynamoDB's pay-as-you-go pricing model means that we only pay for the read and write capacity we consume, making it a cost-efficient choice for our WebSocket connections.
SIMPLIFIED DATA MODEL
DynamoDB's simple and schema-less data model allows us to easily store and retrieve connected user information without the need for complex table schema management. This simplifies development and accelerates time-to-market.
The authentication and authorization layer in our application is implemented using AWS Identity and Access Management (IAM) along with AWS CloudWatch for event triggering and application log storage.
With AWS IAM, we ensure secure access to AWS resources by defining fine-grained permissions and policies for individual users or groups. This ensures that only authorized users can perform specific actions within our application and access sensitive data.
AWS CloudWatch plays a crucial role in monitoring and logging events within our application. We use CloudWatch to trigger events based on predefined conditions, enabling us to automate certain processes and take necessary actions in real-time. Additionally, CloudWatch logs are used to store application logs, providing valuable insights into system performance and helping us identify and resolve issues efficiently.
By leveraging these AWS services, we enhance the security and reliability of our application, ensuring that only authenticated users have access to resources and that critical events are promptly logged and monitored for proactive management. This robust authentication and authorization layer, coupled with CloudWatch for event handling and log management, contributes to a seamless and secure user experience in our application.
TECH
STACK
GUI - Client Side: Unity
Backend: NodeJS
Back ofce Dashboard: ReactJS
Repo: GitHub, GitLab
On May 29, 2020, Atari announced the first batch of 500 production units are ready to exit the factory by midJune, and expected all 10,000 VCS units would be delivered to backers by the end of 2020.