March 12, 2023

Amplify

If you are looking for an end-to-end solution for a data centric application, Amplify might be for you. Amplify is aimed to be a complete solution from frontend design to authentication and even data. The service is heavily based on the GraphQL and AppSync concept. Let me dig in a bit what this means. With GraphQL you define a model or schema. That schema drives everything else. Amplify will create necessary data storage to support the schema defined, this is in the form of DynamoDB tables. Then their CLI tool will create client-side bindings in JavaScript that give you direct access to CRUD operations on your schema. It is that simple. Until it’s not.

Amplify supports relationships between types in the form of one to one, one to many, and many to many. When adding content in their UI these relationships will determine what data may be selected. All of these tables are each their own Cloud Formation stack behind the scenes. It’s a hell of a mess if you look at it, but Amplify makes it appear simple.

Now what if you want to connect an API or a lambda? Amplify provides a way to integrate that into your model. That way you can use the same simple Javascript that you are using for the data alongside your custom components.

Amplify has two ways of interaction. The first and really the driving force is the CLI. The CLI is its own Javascript client library that enables the user to perform all operations on their amplify application. There is also Amplify Studio which is a frontend website that attempts to let less technical users manage an application. The studio is severely limited in countless ways compared to the CLI, but that is to be expected.

Amplify has two concepts. It’s frontend and it’s backend. The application is actually split into two components that way. For each of those you can have several named environments as means to segregate code and configuration similar to git branches.

One of the major features that Amplify supports, is it’s integration with Figma, the UI wireframe design tool. Amplify let’s you import from Figma wireframes and convert them into usable interfaces that can be linked to your data model without knowing how to write code. For the non-technical user this is a game changer. This enables business users to dictate the requirements through the visual design and directly impact the actual application in a streamlined fashion.

Amplify lacks severely with many things. The build time when working on the schema can be up to 10 minutes or more. Studio doesn’t support half as much as you would expect. So anything beyond a simple application will force you into the CLI. Speaking of the CLI, the environments are confusing and not designed to be enterprise friendly. Environments all live in a single AWS account not allowing for cleaner isolation that you might expect. The connection between git as to what should be included in the git repo is poorly documented. I found it very difficult to handle branches and normal operations.

For a quick prototype with simple data and mostly frontend application Amplify may be a good fit. If you really want business users to drive and be able to easily dictate the frontend, you may love this. Documentation is poor and lots of random errors and failures without rhyme or reason may plague you to stay away. So I recommend keeping your eyes open for future updates at a very promising technology.