Check out photos of this project
Check out architectural diagrams of this project
What was the problem to be solved?
Thumbwar (which is partially owned by Gunner Technology) is a social media based mobile app launched in 2014 that allows friends and followers to challenge each other to Thumbwars and track results.
Three significant problems caused us to pivot and start over completely on the app:
1) It was only available for iOS
2) We were having problems scaling the REST-based API which was backed by a Postgres database
3) Following the Cambridge Analytica fiasco, Facebook was forcing developers to re-write or abandon integration with their API, of which Thumbwar was 100% reliant upon.
What was the proposed solution?
This would allow us, also, to publish the app as an Android application as well.
Additionally, we wanted to make the app more fault tolerant, available, performant and scalable so we focused on a Serverless infrastructure on AWS.
What challenges arose during the project?
The biggest challenge was migrating the data from a relational Postgres database to the NoSQL-based DynamoDB.
Not only did we have to migrate the database, but we had to implement replication to Elastic Search via DynamoDB Streams to ensure we wouldn't lose any of the queries from the previous version of the application.
What was the project management approach to the project?
From there, we started with the first feature sprint, and from that point forward combined bugs and features in each one week sprint until we were satisfied with launching the new app and shuttering the old one.
What platform was built for this project?
We relied heavily on AWS AppSync to accomplish this.
AWS AppSync automatically updates the data in web and mobile applications in real time, and updates data for offline users as soon as they reconnect. AWS AppSync makes it easy to build collaborative mobile and web applications that deliver responsive, collaborative user experiences.
AppSync let us specify the data requirements of the application with simple code statements and iterate quickly during the prototyping and development process.
AppSync uses GraphQL, an open standard query language that makes it easy for applications to request data from the cloud.
AppSync automatically manages all the data operations for offline users. The service supports an offline programming model where application data is not only available for users who are offline, but users can also add and update app data locally as well. This makes it easy to build apps that cache important data locally for offline use, and then synchronize with the cloud when the device reconnects.
The service integrates with Amazon Cognito and AWS Identity and Access Management, allowing us to set fine-grained permissions on GraphQL operations that put strict controls on who can access the data.
AppSync makes it easy to combine data from different sources. With AppSync, we could access data in Amazon DynamoDB, trigger AWS Lambda functions, or run Amazon Elasticsearch queries and combine data from these services to provide the exact data we needed.
What did you learn from working on this project?
We learned the frustrations of trying to use DynamoDB for complex data retrieval and how to get around it with data replication to Elasticsearch.
We also learned to never hitch you wagon to a source you don't control. In this case it was Facebook who threatened to derail the whole project with changes to its API.
Why was Gunner selected for this project?
Gunner owns a significant portion of Thumbwar, so it was an easy choice.
What tools, techniques and methodologies were used on this project?