DABL has elements found across PaaS, iPaaS, FaaS, and SaaS platforms. Applications running in DABL benefit from having a managed event-driven system with built-in authorization and API management. You can also integrate and call external APIs within your application by adding the API call to your application workflows. To deploy your application, all you have to do is push your compiled code to the service. We take care of executing and running all the components for you - from the UI down to the core backend. All applications deployed in DABL come with an out-of-the-box UI that allows you to test and demo your application even if you have only built your backend code. You can even begin to engage your users through the DABL UI as a way to get very early feedback while you think through the UX and consider the features your users need.
Infrastructure as a Service (like AWS, GCP, and Azure) providers give users the ability to manage a virtual set of components traditionally found in a data center. IaaS is largely unopinionated - developers can build just about anything that they need and run it in IaaS. However, developers are responsible for building all the code that manages both the infrastructure and all the components of the application. Often when provisioning IaaS, organizations over-provision infrastructure that they may not use when idle or struggle to burst when activity peaks. Managing applications running in IaaS often requires skilled DevOps engineers to work side by side with core application engineers to ensure all components are built to work together. Daml is a full application development framework that allows developers to focus solely on describing the business logic and behavior of their applications. DABL is an opinionated environment designed specifically for Daml applications. When used together, a developer can build and deploy a complete application backend from a single Daml file. The Daml framework and DABL environment will use that file to generate everything you need including database schema, APIs, and managed authenticated access to the application. Managing a Daml application in DABL is reduced to turning components on and off, deploying new code and integrations, and upgrading features as you iterate over time. Your team will never need to wrestle with complicated DevOps requirements or infrastructure concerns.
Platform as a Service is another level up of abstraction over IaaS for the developer. Most PaaS platforms offer the next layer of commonly required components like operating systems, databases, and a set of developer tools. PaaS platforms tend to be more opinionated than the IaaS layer since they are made to aid developers in application development - sometimes very specific types of applications or problems. Developers using PaaS are writing less code and have fewer DevOps requirements than those using IaaS but they still have plenty to account for. Applications built for PaaS still have to account for scaling their application across servers, components, and many other components. To help alleviate, there is often a wealth of modules and integrations that are built to run side by side with the developer’s application in the PaaS environment. DABL aspires to follow in the early footsteps of Heroku - which at the time was a purpose-built cloud experience around the Ruby language. In many ways, Heroku helped complete the value prop of Ruby and jointly created a great web development experience for developers. Applications built for DABL have a higher level of abstraction as the developer is completely unaware of the underlying infrastructure and many of the key modules required for a developer’s application are directly built into the service (eg authorization).
Integration Platform as a Service is a fast-growing category of cloud service purpose-built for building and deploying integrations in the cloud. Notably, these services are often used to help connect legacy enterprise applications to key cloud services like Salesforce. iPaaS services include tools for helping users build custom integrations as well as use those made by other users of the platform. iPaaS is typically used to help bridge the gap between old and new technologies across a variety of deployment footprints which is why it is sometimes thought of as a hybrid cloud solution purpose-built to help make on-premise systems accessible in the cloud. Integrating with 3rd party and legacy APIs is a critical component of any successful new application. However, when integrating with many APIs, it can become difficult to manage and maintain over the lifetime of your application. DABL makes it possible to include calling external APIs in a simple Daml application call without having to build an extra normalization or aggregation layer for your integrations. This means adding new APIs to your application is as easy as writing them into your core workflows without having to learn how to add and support them from your infrastructure.
Function as a Service (or sometimes referred to as a serverless) is a model where the cloud provider is responsible for running and executing your code. FaaS has traditionally been used for edge computing services and processes that lend themselves well to simple functions and straightforward transformations. Serverless applications are typically stateless and are connected to some external persistent store or event-driven system. The serverless experience has been a strong inspiration to the DABL team. We appreciate the simplicity of thinking about processes as a series of discrete functions and state changes. We are also big fans of empowering developers to focus on the code that differentiates their applications and not getting buried in the weeds of getting your code to run. DABL is a serverless experience for more stateful applications. This means you can build the next eBay or Airbnb with a serverless experience from top to bottom without any external persistent store or extra components. Applications running in DABL benefit from connecting to serverless or function-as-a-service systems to enhance the functionality and automation of the application running in DABL. A few of our early users have even integrated their DABL application into AWS Lambdas with great results.