How does Dittofi host your software applications?dittofi
In this article we take a look at how Dittofi hosts your software applications.
In Dittofi’s frontend, when users click the “Build Code” button the Dittofi platform takes your visual designs & transforms these designs into custom code. At the same time, Dittofi pushes your app’s code through a deployment pipeline that launches your app into a live enterprise grade hosting environment.
The Dittofi hosting environment runs inside Amazon Web Services (AWS) & makes use of a range of AWS services that have been carefully selected & pre-configured so that your app runs in a low cost, secure & highly scalable way.
This approach to app deployment is known as “one-click app deployment” since it enables you to deploy your app in a single click. The approach speeds up the deployment process, lowers the cost of app development & reduces the risk of human error, making it easier to launch new applications or update existing ones.
But how does Dittofi’s one-click app deployment actually work? What does the final hosting set up look like for apps? And is one click deployment really a “scalable” way to host your software application?
How Dittofi’s one-click app deployment actually works
When you click “Build Code” inside Dittofi, this kicks off a code deployment pipeline. The deployment pipeline takes the visual designs that you’ve created & transforms these into a custom code base for your app.
The deployment pipeline is run using AWS lambdas. There are five main lambdas that are used in the deployment pipeline. These are listed below, along with an explanation of what each lambda does.
- Frontend lambda: The frontend lambda is used to generate the frontend code for your app. The lambda generates a React app & copies the code into Amazon S3 & Amazon EFS.
- Backend lambda: The backend lambda is used to generate the backend code for your app. The lambda generates Google GO code & copies the code into Amazon EFS & onto an Amazon ECS instance that is automatically configured using Docker.
- Global styles lambda: The global styles lambda is used to generate a set of global styles for your app. These styles are optional & can be overridden by inline CSS & the use of custom classes. The styles are copied to Amazon S3 & Amazon EFS.
- Flyway DB lambda: This lambda generates the database schema for your app. The lambda runs each time you update the schema for your app, either by adding columns, creating relationships, adding new tables and so on.
- PDF to HTML lambda: This lambda is used only when your app includes the PDF to HTML event inside of your application.
Each app gets its own private set of lambdas. This ensures that the code generation & deployment operates at a constant speed since.
As noted above, once the code has been generated, the lambdas write all of the code for the customer app to Amazon’s Elastic File Service (EFS) where it is stored. All of the backend code then gets simultaneously copied over to Amazon’s Elastic Container Service (ECS), where docker is used to configure this container. Frontend code is moved into Amazon S3 which is accessible through a Cloudfront distribution & Route 53.
Several other Amazon Services are provisioned at the same time, and all these services are combined together to create the final setup for your app, which is shown in the next section.
What the final hosting setup looks like for Dittofi apps
A diagram of your finished application architecture is shown below – you get all of this in just one click.
When you click “Build Code” your code is automatically deployed onto the above architecture. As you can see from the diagram, Dittofi makes use of several services from AWS. These services are listed below, with a short description of what they do & why we chose these services to power your app.
- Amazon Elastic File Service (EFS): After the custom generated code for your app has been generated by the lambdas, it is immediately written to EFS. One of the main benefits of this approach is that fully distributed & no code for your app is permanently stored in the customer system or Dittofi servers.
- Amazon S3: Amazon S3 is used to serve your apps web frontend, store images & any other files that are uploaded to your app. As with EFS, the main benefit of this approach is that the application is fully distributed which makes the solution faster & more resilient.
- Amazon Elastic Container Service (ECS): Your backend code runs inside of a Docker container. The container is automatically run on ECS, which enables your app for high availability. This means that if something goes wrong with your application, ECS will simply create a new container for your app to run in without any disruption or data loss for your end users. In addition, Amazon ECS will automatically scale your apps containers to meet increase user demand for your app.
- Cloudfront: Cloudfront is used to provisions the URL that will serve the frontend of the app from S3. Cloudfront is a fast, highly secure content delivery service. A couple of benefits to using Cloudfront are (1) your app will be protected using HTTPS meaning that your content is securely protected, (2) Cloudfront caches the pages for your app around the world, meaning that the frontend of your app can be quickly accessed no matter where in the world your users are & (3) protection from denial of service (DDoS) attacks by default & from all layer three & four network attacks.
- Amazon Route 53: Amazon Route 53 is a highly available & scalable Domain Name System (DNS) web service. Route 53 is used to register your apps domain name, it also connects your users to your app when they hit the domain name and finally, it runs health checks to ensure that your domain is working.
- ECS Caddy: Also running inside ECS you get Caddy for your apps webserver. This acts as a weberver for frontends & a reverse proxy for backends. We put this inside of ECS so that you get all the benefits provided by ECS e.g. high availability & scalability.
- Amazon Relational Database Service (RDS): Each customer has their own database that runs on Amazon RDS which is a fully managed database provided by Amazon.
Sign up for free & experience Dittofi’s one-click deployment.
For an on premise solution contact email@example.com.