In discussing Development Platforms for mobile and web applications, there are two new interesting brands to examine. Firebase is Google’s offering, and AWS Amplify is being touted by Amazon. Both have distinct advantages and disadvantages, but they share the same goals - to satisfy developers and, at the same time, provide a good user experience.
Similarities between AWS Amplify and Firebase
AWS Amplify and Firebase are both development platforms designed for building secure and scalable mobile and web applications. They attempt to make it easy to authenticate users, store data and user metadata securely, authorise access to data selectively, and integrate machine learning.
Some features from AWS Amplify and Firebase
- Realtime App
Realtime applications, as the name suggests, require realtime updates of data to be displayed dynamically to the user. Some common examples include chat apps, monitoring the position of the online taxi/ride share, or playing online games where the player's position is updated on each screen. AWS Amplify and Firebase both have features to provide realtime services.
AWS Amplify has at least two services to handle realtime apps - AWS AppSync and Amazon DynamoDB. AWS AppSync allows us to build applications that easily to scale up, including real-time updates for mobile and web applications. In addition, AWS AppSync provides local data access when the device is offline and synchronises data with conflict resolution that is easily adjusted when the device is back online. Amazon DynamoDB provides NoSQL database with fast and predicatable performance offering seamless scalability.
Firebase has a service called Cloud Firestore to handle realtime apps, keeping user data synchronised across the client-side app and offering offline support for mobile and web. This enables us to build responsive applications that function regardless of network latency or Internet connectivity. Cloud Firestore also offers seamless integration with other Firebase and Google Cloud Platform products, including Cloud Functions.
Authentication is the process by which a user obtains access rights to an entity. Users log into a system, the system recognises the user ID and accepts it, and access is granted to network resources in accordance with the authorisation that the user receives. Both AWS Amplify and Firebase have features that make implementing this authentication process easy.
Amazon Cognito is a feature that can be used on AWS Amplify, supporting identity management and access standards such as Oauth 2.0, SAML 2.0 and OpenID Connect. Integration with social media service providers such as Google, Facebook, Amazon and Microsoft Active Directory is also available, and this greatly simpifies the authentication process.
Firebase features Firebase Authentication. While it supports many of the same standards as AWS Amplify (like OAuth 2.0 and OpenID Connect), the integration of social media service providers is more diverse than AWS Amplify, suporting Twitter, Github, Facebook, Google and so on. Firebase Authentication also easy to implement in code.
- Machine Learning
Machine learning is a branch of artificial intelligence that allows the development of systems based on data. Nowadays, making best use of data is a very important consideration for majority of the business, allowing them to make the right strategic calls. AWS Amplify and Firebase both have services that facilitate machine learning.
AWS Amplify uses the Amazon Machine Learning service and provides features such as Amazon Personalize (that provides recommendations and personalisation), and Amazon Recognition (identifying objects, people, text, scenes and activities in images and videos). Amazon Machine Learning offers many more features as well, such as Amazon Forecast, Amazon Translate, and Amazon Lex. All offer advantages to developers and users.
Firebase offers the ML Kit for Firebase which is like Amazon Machine Learning in concept, but has more features. For example, there is Barcode Scanning with the ability to encode with the 2D standard format (which doesn't require a network connection), and Face Detection which can identify key facial features by examining the contours of detected faces. There are many other interesting features.
Firebase Pros and Cons
- Firebase is easy to use and doesn't have a high learning curve. For example, to add authentication or login features takes only a few hours. This convenience makes it easier to avoid convoluted code.
- Firebase generally has more features than AWS Amplify.
- Firebase may be, in my opinion, the better choice for small and medium-sized projects and companies.
- Firebase may not be a good choice for building “big data” projects that require millions of database transactions per second (such as e-commerce), since the costs may well become prohibitive.
AWS Amplify Pros and Cons
- Amplify offers many cloud features that can be utilised to improve existing applications.
- Amplify can use GraphQl to simplify data processing, a feature not supported by Firebase.
- Prices are more manageable and can be adjusted according to usage.
- AWS in general has a learning curve that is actually higher than for AWS Amplify itself, and there are some features that are quite difficult to implement.
In the end, the best solution will come down to the developer and the nature of the project. It is not JUST about the features offered by each platform, but how useful they are for the stakeholders. Based on the official documentation of each, my impression is that features offered by AWS Amplify may be more ‘to the point’ than Firebase. Firebase offers many features, but often they are still in beta versions. Learning curve is very important nowadays, with tight competition among companies to release products as soon as possible. In this criterion, Firebase seems more reliable than AWS Amplify because of its lower learning curve. Firebase is suitable for small-scale projects with a lean team, because it is quite fast to implement. AWS Amplify, in contrast, is suitable for more mature and large-scale enterprises because of its more stable features.
For a junior programmer, learning curve is very important. In the learning process, it is vital to know the fundamentals very well and a low learning curve is helpful. Firebase Documentation is easy to read for a beginner. However, AWS Amplify may be needed for bigger and more demanding projects in the future.
W. Helga Aplhandito Sitanggang - Junior Programmer