AWS Bites Podcast

14. What can you do with Amplify Studio?

Published 2021-12-09 - Listen on your favourite podcast player

In this extended episode, Eoin and Luciano talk about Amplify with a particular focus on Amplify Studio, a new visual way to manage Amplify applications announced during the recent re:Invent event during Werner Vogels’ keynote.

In this episode we mentioned the following resources:

Let's talk!

Do you agree with our opinions? Do you have interesting AWS questions you'd like us to chat about? Leave a comment on YouTube or connect with us on Twitter: @eoins, @loige.

Help us to make this transcription better! If you find an error, please submit a PR with your corrections.

Eoin: Hello and welcome to another episode of AWS Bites, the weekly show where we talk about AWS and answer questions in around about five minutes. I'm Eoin and we're joined by Luciano again. And before we get started, make sure you give us a follow and subscribe so you can be notified when the next episode goes live. And today we've got a different kind of a question focused on something we didn't talk about before, which is Amplify. And the question is, what can you do with Amplify Studio? So I think we maybe did touch on Amplify once or twice just in passing, maybe when we were talking about static hosting and cloud formation versus console. But let's dive into Amplify Studio a little bit more because we had an announcement at reInvent recently and it was about Amplify Studio. But maybe it's best to start with a bit of a history of Amplify and what else Amplify does. How would you describe it, AWS Amplify?

Luciano: Yeah, Amplify is an interesting product because I think it's a little bit of a shift from AWS in many ways. Like in general, in AWS, I feel that you have always like very low control and you have to understand all the nitty gritty details. So it has been like always a little bit of a challenge for many types of developers to come and use AWS because they need to kind of approach everything at a very low level and then build up from there.

So Amplify is a shift because they try to give you like an easier environment to build applications. And I have a feeling that they are targeting primarily front end developers because front end has been really like the main thing that you still have to build on your own. And they try to abstract everything else to make your life easier. So that's why I feel that front end developers are the target users for this product. And the idea, I suppose, is that AWS wants to give front end developers all the other capabilities that they need to build a fully fledged application without having to know things like CI-CD or I don't know, cloud formation or how to create user pools incognito because all these things are nicely abstracted for you from Amplify. Yeah. And it's got a few different features, hasn't it?

Eoin: Like there's a few different ways to get started with it. So I know that there's an Amplify CLI and I think when it started, you had the Amplify SDK and the CLI. What other parts do you have? Yeah.

Luciano: Also you mentioned the CLI, you mentioned the SDK, so a client library that you can use either in a mobile... because you can build mobile and web projects. So you will have SDKs in both environments. But other components are, for instance, an integration with your Git repository, whatever that is, doesn't have to be necessarily in AWS. And that will automatically create a CI-CD pipeline for you. So you can basically get GitOps by default.

Yeah. Very nice. And the new thing that was announced recently is Amplify Studio, which is, I would say, kind of a UI and more UI friendly environments where you can do many of these things in a kind of more clicky, clicky way. For instance, you can create data models by just clicking in a UI and defining all your fields and you can select the constraints and relationship between maybe fields from a table with fields in another table. And then at the end, when you just click save, that is going to provision a DynamoDB table for you. It's going to provision GraphQL APIs to access this data. So Amplify Studio is like, okay, I don't know anything about how to provision all these different things, but I can easily explore these concepts and they are very friendly for me to create things and deploy them.

Eoin: Yeah, I can imagine with all of these things, if you're building them from scratch, like you said, AWS, you usually operate at a low level, it requires a lot of expertise. And if you look at the feature list on Amplify and the level of abstraction it provides, it's giving you authentication and data and file storage, serverless APIs with GraphQL or just REST, and then it gives you messaging, analytics, push notifications, geolocation, and even like ML features like predictions, predictive analytics, and AR and VR support, which I don't know if I'd ever use it, but it's interesting that it's there. Building all these things yourself.

Luciano: And I think the reason they also announced like a storage abstraction, so probably you'll get more and more support for applications that require, I don't know, users to upload files or to manage, I don't know, content for user that maybe you will start normally in S3 without having to know all the nuances of S3 and uploads and all these things.

Eoin: I'm just thinking about the amount of time I've spent building these things manually from the, I suppose, raw AWS components. And of course it's really useful to know how all these things fit together, but if you're starting from scratch with AWS, I can imagine the lead time to getting all of these things up and running and understanding them is going to be many, many months realistically. So if Amplify lets you get started in hours to build this basic capability, I can certainly see the attraction of that. And so is there an AWS Amplify service? So is it doing anything special that you can't do in those raw services?

Luciano: I would probably say for the most part, no, meaning that at the end of the day, Amplify is managing a cloud formation stack for you. So if you're really curious, you can just go in your cloud formation panel and see exactly like what are all the resources that have been provisioned by your interactions with Amplify either from the CLI or the Amplify studio. So there is really no magic to it if you want, but it's still nice that you can get a lot of things done very quickly. Like if you will have to do all these things using infrastructure as code, probably it will take you much longer to ship anything to production. So I suppose it's more of a question of how much control do you want to have compared to like, do you just want to build something simple and ship it quickly? So I don't know. What do you think in terms of maybe like what kind of use cases would you use it for? Yeah, what kind of use cases?

Eoin: This is a good question. So if I look at the way it's built data models, authentication, storage as the fundamental components you can imagine using for any kind of CRUD app where you want users to sign up and log in and create something, you know, and that could be uploading images, filling out forms, adding entries. So basically CRUD apps and everything is kind of a CMS or a CRUD app at its core.

It feels like most applications are. But if you don't have very, very complex business logic at the backend, I think it seems like a reasonably good fit and you want to get started pretty quickly. So I think there's a couple of questions with stuff like this. We've learned over time to be a little bit fearful of high level abstractions in case they leak eventually or you're trying to move forward and ultimately you want to drop down to the low level components and does it make it possible and is it a reversible process?

So can you get the best of both worlds? Can you continue to use Amplify and keep customizing those components at the backend? From what I've seen with Amplify, yes and no is the answer to that. So you can add custom cloud formation, for example, which is nice. You can incorporate existing CDK components. That's a new enough feature. And you can also eject or export the application to CDK and incorporate it into a CDK pipeline.

So it's interesting to watch it evolve because I was, as Amplify, the story has emerged. I have been a bit skeptical, but I'm kind of surprised that it's keeping a good level of quality there, adding a lot of useful features. And they seem to be very serious about investing in it and supporting lots of different users coming from lots of different frameworks, technologies, working on different types of applications. So it's really trying to have a broad reach, which is ambitious, of course, but they're clearly serious about it and it was a big feature of Werner Fochel's keynote at Reinvent. So it kind of bodes well. And on that topic then, there was at the keynote, Ali Spittel was on and talking about the Amplify Studio, and I suppose that's what we're here to talk about. So I know that last year we had Amplify admin UI, and now we've got Amplify Studio. So what does Amplify Studio give you that we didn't have before?

Luciano: Yeah, I think the most impressive thing that was added is the ability to easily collaborate with designers through Figma integrations. Basically what you can do, I was playing with this a little bit yesterday, you could, as part of your Amplify project, you could have Figma project. You can, for instance, download a template that you get from AWS to easily get started, but then you design all your components in Figma and you have a process that allows you to synchronize those components back into Amplify as React components.

Of course, these React components are in a way immutable, like you are not supposed to change the code because, again, if the designer changes some details, they will be resynchronized so all your changes will be overridden, but I suppose you can wrap those components with components that will provide all the additional business logic. It is still a little bit limited, meaning there are things that are missing, like, I don't know, pagination was one that wasn't obvious how you could build it or routing, like it's not obviously described how would you build the routing. In this, probably, again, you need to wrap the components with your own custom components. So I think it's not perfect yet, but it's impressive to see, first of all, that there is a collaboration at that level with something like Figma, which is a well recognized industry tool. So AWS rather than building their own UI designing tool, I guess, they decided to create this collaboration and it's actually very smoothly integrated, like you don't have to do, I don't know, weird permission screen or stuff like that. It's very intuitively how you connect the two. But yeah, it seems like there is still a long way to go to actually make it really powerful so that you can build more complicated applications with that.

Eoin: Yeah, it seems like you still need to know what you're doing and you need to know your way around a React app. So it's still kind of aimed at front end developers and it's still React only, right? So even though Amplify supports lots of different front end frameworks, including Angular and Vue and Ionic and as well mobile front ends, so it supports Flutter, you can do React Native. So who is it aimed at then? So what kind of users, is this something for everybody or is it aimed at, you seem to mention people just getting started doing personal applications. Does it have broader appeal? Would you use it for an application that you expect to be around for five years? Yeah, that's an interesting question.

Luciano: I guess it depends on how standard I'm going to say is your application. And by that, I mean, I don't know, is it just managing CRUD type of data? So you can just define your entities and then you just need to have easy ways to, I don't know, create, update, delete. I think if that's your use case, probably you can get a long way with Amplify for the features you get right now. I can also see more sophisticated use cases where, I don't know, maybe you have data models that are more dynamic or where you need to have, I don't know, integrations maybe with external services where maybe Amplify, it will be, maybe you'll need to work around, let's say the limitations of Amplify and maybe the solution is not going to come so easily.

Maybe we'll become more as a blocker than as an enabler in that case. But definitely, I don't know, I can see it being very useful for either an MVP where you just want to prototype something very, very quickly to see if it makes sense as a business or if you're doing a small site project or a personal utility application where, I mean, you are not opening it up to a big public. You just need something that works for a specific need that you might have. Probably Amplify is a big win because we'll give you a much faster time to actually use in the product. I am a little bit skeptical on enterprise type of applications, mainly because there are some important missing features. For instance, the ability to deploy into a private network, a private DPC or SAML authentication is another thing that it wasn't obvious how to do it. Maybe it is possible, but the default authentication system doesn't seem to provide an option for that. So maybe, again, something you could bend Amplify to be able to achieve, but it doesn't seem easily supported.

Eoin: Actually, this is an area where I think Amplify could really win if they added a few features like that because I can see lots of enterprises out there who are struggling to get the time and the people to be able to build custom applications for line of business applications or applications that integrate existing data sources. I think if you have AD integration for authentication, internal hosting, like you say, and the ability to integrate into some existing APIs and integrate systems together in a lightweight way with adding some of these features like storage and data behind them, I think you could end up with something really powerful that would be adopted and gain a lot of popularity in enterprise. So while it might feel like something that's suitable for startups or for people building the MVP of a SaaS application, I think that's actually where it could really shine in the future if we get those kind of features. Is there anything else that you can see in the future direction of Amplify then? Because I guess I feel, as you alluded to, with these UI components that have recently been announced, it's like giving you that automated front end capability in collaboration with designers. It kind of feels like it's just the start though. You can't build a full UI application automatically with Amplify yet. Is that where it's going?

Luciano: I would expect this to be definitely one of the next milestones for the Amplify team to allow designers and developers to work together even more closely by defining not just the shape of the components, but also how the components come together and the interactions between the components. So again, navigation, signup, pagination, all these kind of things, I think they will come in the next releases.

But also we probably mentioned that already, right now you can only integrate with the data models that you define in Amplify or at least in an easy way. I think it might make sense for Amplify to also show easy way to also integrate with data sources that are not in your Amplify project. For instance, other APIs that maybe exist in your enterprise or other external APIs or even things that are not classically exposed to a REST or a GraphQL API. Maybe you just want to interact with, I don't know, even a SOAP system. Right? Yeah, exactly. So in an enterprise, I can definitely see that still happening a lot. Some random FTP servers. It might be nice to have that too. So yeah, those things will make it Amplify closer, I suppose, to a low code type of solution. Yeah.

Eoin: That's really interesting. I think this is, we're probably getting to the end of our time here and going a little over as usual, but I think one of the things that I feel about this is that from your perspective and my perspective, we're looking at Amplify from our existing bias of understanding how to use CloudFormation. We've got a comfort level with AWS that just comes from using it over the course of many years, but we're probably not the primary target audience for Amplify.

So really interested to know what other people are doing with it. So this is one where user feedback and listener feedback is really going to help us to shape how we talk about this kind of thing in future. So if people have used Amplify either to build applications from scratch or to augment existing applications, maybe you're doing something really interesting and quirky with Amplify, we'd love you to give us a message on Twitter or in the comments on YouTube and let us know what you think. And we'd really like to follow up on it. It doesn't have to be, we don't have to cover it all in this episode. So please, and also please share it if you know other people using Amplify, share links to the podcast and make sure to follow and subscribe because we'll come back to this in the future I feel because I feel like there's definitely a lot more to happen. Okay, so let's wrap it up. Thanks very much for listening everybody. And we'll talk to you on the next episode of AWS. Bye. Bye. schemes.