Ampt vs. Nitric
Nitric is a framework that empowers developers to build complete cloud applications on their preferred cloud platform, combining infrastructure declaration and application code in one place. Ampt is a development platform tailored for rapidly building cloud applications using JavaScript or TypeScript. Both serve the purpose of simplifying cloud application development but operate in different ways and cater to different specific needs. These are the main differences between the two:
- Cloud Provider Support: Nitric is provider-agnostic, capable of deploying to multiple cloud providers such as AWS, Google Cloud, and Azure. Ampt is a platform, which currently runs on AWS.
- Language Support: Nitric provides multiple libraries for TypeScript/JavaScript, Python, Go, C# .NET and Java, allowing developers to choose their preferred language. Currently Ampt supports TypeScript and JavaScript.
- Infrastructure Provisioning: Nitric uses Pulumi by default for provisioning cloud resources, but also allows the use of custom providers. Ampt uses a hosted provisioning engine via their online platform. While resources deployed with Nitric are statically determined at deployment, Ampt is able to reallocate resources between AWS services at runtime to optimize applications.
- Local Simulation: Nitric provides a fully offline local cloud simulation tool, allowing you to test your applications locally before deploying them. This is a feature that Ampt does not offer. However, for local development Ampt deploys and syncs your application to the cloud via a sandbox environment, allowing for rapid testing of local changes.
- Open Source: As an open-source framework, Nitric does not require a platform or subscription to deploy applications. Ampt is a hosted platform which requires an account and provides both free and paid offerings.
Code Comparison
To get a deeper understanding of the differences, let's see the same app built in both Nitric and Ampt.
Nitric
hello.ts
import { api } from '@nitric/sdk'const helloApi = api('main')helloApi.get('/hello/:name', async (ctx) => {const { name } = ctx.req.paramsctx.res.body = `Hello ${name}`})
Ampt (Experimental)
hello.ts
import { api } from '@ampt/api'const helloApi = api('main').router('/hello')helloApi.get('/:name', async (event) => {const { name } = event.paramsreturn event.status(200).body(`Hello ${name}`)})
Differences
Nitric | Ampt | |
---|---|---|
Language | Your choice | JavaScript / TypeScript |
Lines of code | 9 | 9 |
Cloud Infrastructure | Inferred, Static | Inferred, Dynamic |
Extensibility | Custom providers can be created | None |
Local development | Built-in local simulator with instant hot reloading and offline support | Active project synchronization to a cloud sandbox with a local proxy |
Cloud providers | AWS, Azure, GCP and Custom providers | Ampt Platform (AWS) |
Provisioning engine | Pulumi by default, other custom providers can be created | Hosted provisioning engine |
Last updated on Oct 30, 2024