13 March 2023
Can you design your serverless app visually & save time without compromising on quality? AWS Application Composer takes on the challenge
The AWS environment is as powerful as it is complex. It allows you to run highly efficient serverless applications without a hitch and having to worry about the infrastructure – but you’ve got to configure it first. If only the barrier-to-entry was lower! If only there was some kind of tool that one could use to get by before you really wrap your head around it all! Oh wait, there is one – it’s the AWS Application Composer! Or is it?
As big fans of cloud solutions, we always keep tabs on the latest developments in the AWS ecosystem. One of the very latest is a tool called AWS Application Composer.
So let’s take a closer look at Amazon’s latest attempt at making the AWS environment easier to navigate. In this article, you’ll find out:
- How AWS Application Composer makes it easier to design serverless apps, complete with practical exercises.
- Where is its place in the rich ecosystem of AWS technologies.
- If it is powerful enough to use in commercial projects and has the potential to generate meaningful production time and cost savings.
Let’s get started.
AWS Application composer overview – what is it really about?
But before we get to that, we need to make sure we’re all on the same page when it comes to serverless applications.
The basics – serverless apps and AWS
Serverless applications are software built or run on cloud computing platforms, such as AWS or GCP. The serverless term refers to the fact that the cloud provider manages the underlying infrastructure and servers required to run the application. It means that developers can focus on writing the code for the application rather than figuring out how to run it.
AWS Application Composer is a low-code web-based tool that helps users to compose and configure AWS serverless applications using pre-built components. The composer streamlines the infrastructure-building process by providing an intuitive, drag-and-drop interface for connecting the various AWS services that make up a serverless application.
Speaking of services, it would be useful to define the AWS application composer’s place among the many AWS serverless-related offerings more precisely.
The app composer and its place in the AWS environment
AWS offers various AWS serverless services such as:
- AWS Lambda functions
It’s a serverless computing service that lets you run code without provisioning or managing servers. You can deploy the code as a .zip file or container image. AWS Lambda Function can be attached to specific events, such as a cron scheduler or HTTP request, and will automatically respond to them.
- AWS Step Functions
AWS Step Functions (or AWS SFN) is a service that allows you to build automated processes, orchestrate microservices or create machine learning pipelines. It connects with other services, including the AWS Lambda Functions. AWS SFN provides a Workflow Studio – a simple drag-and-drop interface that helps to design workflows quickly.
- Amazon DynamoDB
Amazon DynamoDB is a serverless, key-value NoSQL database. It offers built-in security, continuous backups, and the tools to import or export data.
AWS Application Composer’s role is to help developers overcome the difficulties of building serverless applications on AWS. It does it in two ways:
- By simplifying the process of configuring and integrating different AWS services, which can be complex and time-consuming.
The immense number of AWS services such as Lambda, Step Functions, or DynamoDB means that the configuration has a high entry threshold and it takes a long time to learn how it works and integrates. Not only is AWS Application Composer a good way to make it easier, but it might also serve as a stop-gap measure for less experienced AWS users.
Pretty much everyone who uses AWS knows that the CloudFormation template used to define AWS services or the relations between them is not the easiest tool to use. The AWS Application Composer makes using it much more user-friendly. You don’t need to bother yourself with how the CloudFormation looks, whether you made a typo somewhere, or added the correct indents. All of this will be generated by the Composer.
- By making it easier to set up the infrastructure that meets project requirements.
Usually, when we start setting up a new project infrastructure, we split the process into two steps. The first one is to design infrastructure visually, which helps us to see how services connect. It’s also much easier to discuss the setup among the teammates that way.
The next step is to write that infrastructure as the code. The AWS Application Composer combines those steps into one – we design infrastructure visually and it automatically generates the code.
That means we do not have to know what exactly the IaaC (Infrastructure as a Code) looks like and write it ourselves. It speeds up setting up infrastructure, making the whole process easier for the developers.
What does the AWS Application Composer exactly have to offer?
AWS Application Composer features
AWS App Composer allows for putting together your infrastructure using predefined components. It combines various AWS services, including the aforementioned AWS Lambda, Amazon DynamoDB as a NoSQL Database service as well as AWS S3 – a fully managed object storage service.
AWS Application Composer allows for exporting infrastructure as a code (IaaC) as a CloudFormation template, which can be then consumed by other services such as AWS SAM.
App composer vs AWS SAM
AWS SAM (Serverless Application Model) is a framework for composing, building, and deploying serverless applications on AWS. Although AWS SAM and Application Composer have some similarities, as they both aim to simplify the process of composing serverless applications on AWS, they are designed for different use cases.
In general, AWS Application Composer streamlines the creation of serverless infrastructure by working with a broad selection of AWS services. With a centralized platform for building and configuring serverless apps, AWS Application Composer simplifies the management of the entire development lifecycle for such applications on AWS. This tool can significantly reduce the complexity and effort required to build and deploy serverless apps. AWS Application Composer is thus a high-level tool with the capacity to generate IaaC that other tools or services can process. AWS SAM is one of those tools – it lets us deploy IaaC with code directly to AWS to build a complete application.
As you can see, we can combine both services. AWS Application Composer generates a CloudFormation. We can then use AWS SAM to process that to create an IaaC configuration. This enhances the development experience and makes the deployment process easy.
Will low-code solutions really change the way we develop software, providing productivity benefits without compromising on quality? Will they put some developers out of jobs? Find out our point of view on low-code development.
Who is it for?
AWS Application Composer is designed for developers, cloud architects, or people who wish to start their cloud journey and are about to deploy their first application on AWS.
When it comes to developers, let’s be honest, the majority of them are not very experienced with DevOps practices. And there’s a good reason for that – creating infrastructure is a difficult and highly specialized job, especially if you want to use the Infrastructure as a Code approach. You have to learn Terraform or CloudFormation. You might also need AWS Cloud Development Kit (CDK), which allows for writing infrastructure code in popular languages such as TypeScript. Still, you need to learn about special types of infrastructure elements, types, options, connections, and more. That’s a lot of new stuff to learn when all you want is to just check things out.
If you are a cloud architect, you want to create services to test your ideas quickly. That’s what AWS Application Composer can definitely do. You can focus on a problem-solution type of design, omitting technical aspects of connecting services at an early stage of cloud development.
Budding cloud practitioners
Since this group also lacks DevOps knowledge, they will use the tool much like developers do. AWS Application Composer will encourage them to dabble in cloud development. It can significantly lower the barrier-to-entry to the cloud. With AWS Application Composer you can create services and connect them together without having to dive deep into technical details.
In this case, Application Composer is the perfect tool for creating infrastructure. Just drag and drop pieces of infrastructure, connect, and voilà! You will receive a ready-to-use CloudFormation template with configured services.
Who is it NOT for?
You should not for a second think of AWS Application Composer as a golden hammer.
At the time of writing, it’s still in public preview. It means that it doesn’t have a lot of features. It only provides basic components and a very simplified configuration. Furthermore, you won’t be able to use it to create production-ready configurations. At this point, it’s really only adequate for some demos and spikes.
Indeed, it may feel very limiting for experienced DevOps engineers – those who wrote a lot of custom CloudFormation or terraform files. If you are one, you might get really irate about how little you can do with your configurations!
Let’s do some AWS app composer projects
If you are still interested in what the Application Composer can do, let’s do some simple exercises.
We’re going to provide the infrastructure for two separate projects.
Static website deployment project
Static websites are the right thing for individuals or businesses who need a simple cost-effective online presence. These websites are pre-built and served as-is to the user’s browser, so they don’t require a backend server to process and generate content on the fly as dynamic websites do.
AWS can host static websites, providing a reliable and scalable option for deploying sites to the cloud. By using services such as Amazon S3, users can store and serve their static site files.
Let’s create a new project with AWS Application Composer.
In the first step, you can choose if you would like to create a blank project or load an existing one. You also have the option to synchronize a project with your local file.
You are ready to build an infrastructure. To host the static website on the S3, you need to configure that service – let’s drag it to the canvas.
Clicking on the “Details” button on the selected resource opens the right-side properties sidebar where you can manage service options.
Let’s activate static website hosting. If you’d like, you can also set the bucket logical id as well – it’ll be a part of the bucket name. Checking “Activate static website hosting” will display a new property that you can manage – a reference to the index document. Let’s keep the default one and save the changes.
Saving changes will regenerate the IaaC template, which you could review in the “Template” tab or in your local template file (in case you’ve enabled the synchronization with local files). There’s not a lot of code – it’s only an S3 bucket.
Now it’s time to deploy the infrastructure. Unfortunately, there’s no way to push it directly from the AWS Application Composer. This is something that hurts a lot, especially when you need to display something that doesn’t need any code with logic. That means you’re reliant on using other tools to expose it. In this case, it’s going to be AWS SAM.
When the deployment is done, you can check the infrastructure on AWS. Everything looks promising. The S3 bucket is created. It is marked as a static website with public access allowed. Unfortunately, the policy statements are missing. What’s more, the user will not be able to visit the site until you add it manually.
To-do REST API project
With that experience out of the way, you can build something more complex such as REST API, which is something virtually every project needs.
AWS offers several services to host REST API, including Amazon API Gateway and AWS Lambda. Let’s take a look at these two.
With Amazon API Gateway, you can use RESTful architecture to define endpoints that will handle HTTP requests and direct them to the appropriate AWS Lambda functions for processing. The result of the lambda function is then returned to the client.
Other than exposing REST API and processing data, you also need some kind of database. Amazon DynamoDB should do the job just fine.
Here is an example infrastructure design for a to-do REST API built in AWS Application Composer:
Pretty simple, isn’t it? Indeed – until we do not have to check the configuration! AWS Application Composer is not keen on deleting anything, so if you connect and reconnect the lambda function with DynamoDB a few times, some of the records may end up duplicated.
Check out the screen below:
What’s more, it seems that the deploy button is missing. You still need to write the logic in lambdas, but the APP Composer did save a lot of time – if you look at the IaC template, you will see that there are hundreds of ready-made definition lines there:
For data-heavy AWS-based projects, check out our data lake case study, which involved AWS services such as Athena, Lake Formation as well as Lambda, bringing easier data exploration and new BI dashboards to the business.
Do we like the Application Composer?
The latest AWS tool offers a very promising approach to creating infrastructure. It can simplify the whole process and allow less experienced developers to come up with safe and well-optimized infrastructure. It also simplifies the process of learning and testing new solutions. In short – yes, we do like it.
However, it should not suggest that the tool doesn’t have some problems. There are also a lot of features that it could use, but they are simply not there at this moment. Let’s go over those issues.
As we mentioned, Application Composer is not suitable for building a production environment. But there are more specific issues that we found:
- Issues with updates
Sometimes when you update the component in the editor, it creates additional, unnecessary files. We also encountered problems with duplicated env variables and IAM roles.
- No manual!
We found this one to be particularly troublesome. If you connect services in an improper manner, you will receive information that this connection is not supported. The same thing happens when you connect two services that should normally work together, but the Application Composer doesn’t support it yet. As a result, inexperienced users may draw wrong conclusions about these types of connections. The tool urgently needs proper documentation that states what’s supported and why.
- Missing configurations
When it comes to some components, we found out that the Application Composer-backed configuration is not sufficient. Take the S3 component mentioned above as an example. It allows you to create config for static websites, but since the bucket policy is missing, you have to add it manually.
- Only basic components
This is a problem if you want to build something more complex. But this is a preview, so we are sure there will be more components and services available in the future.
There are a few things that we would like to see in the future. The AWS Application Composer would definitely provide a more complete experience if it included the following features:
- Running SAM deploys directly
It would be nice to deploy infrastructure directly from the Composer. Now we have to download or sync the project and then deploy it manually. For some use cases, it would be easier to run it directly from the AWS Console.
- Templates directory
It has to do with the previous complaint. If we had the option to run SAM directly from AWS, we could then have a directory with templates. The user could use it to set up an environment in a few seconds.
AWS Application Composer – that’s where things stand right now
And that’s about it! We can’t wait for AWS Application Composer to grow to the point that it would warrant a more thorough tutorial! For now, it seems that a quick glance or two will more than suffice to figure out the key takeaways:
- AWS Application Composer is a tool that helps us to design simple infrastructure quickly.
- It’s not production-ready yet, because it lacks some important configurations and other more advanced features we pointed out earlier.
- The idea itself is very promising – being able to automate the writing of a bulk of serverless infrastructure code definitely has a future. It’s what developers and cloud engineers want – both the beginners and the pros. In its current state, however, AWS Application Composer is mostly useful to the former.
We keep our fingers crossed for the next updates and highly recommend checking the tool out on your own!
Develop scalable and business-ready serverless apps with our teams
Use the most optimal tools for your use case to achieve the best performance and price efficiency.