Note: This content is old, but Tines is used by multiple customers to manage the deployment of their production environments.
No prizes for guessing that at Tines we rely heavily on automation to power our DevSecOps program. The Tines platform is not only at the heart of our internal security, IT, and CI/CD programs, we also use it to manage customer trials. This includes automated droplet creation and destruction in Digital Ocean, automating Hubspot actions for contact and lead tracking, and even automated creation of DNS records.
In this post, we describe some of the DevSecOps design decisions we’ve made and why Tines is a great platform if you need to automate your own complex processes.
Automation is a crucial component of DevSecOps. As you can see from the above diagram, we automate interaction with the following services to support Tines trials:
Digital Ocean: used to host trial infrastructure including DNS.
Hubspot: Tracks trial creation and allows us to manage trial life cycle.
Sendgrid: Sends welcome email to trial user and updates Tines support if something goes wrong.
All customer tenants, including trial tenants, are single-tenant and have their own dedicated infrastructure. We use Digital Ocean as our primary infrastructure provider. Additionally, to interact with the Digital Ocean API we use HTTP Request Actions.
To speed up the provisioning of Community Edition tenants, Tines maintains a pool of pre-configured droplets labeled “trial-pending”. When a trial is requested (middle flow in the above diagram), Tines receives the request via a Webhook Action. After deduplicating the request, Tines takes a trial-pending droplet from the pool and begins to configure it based on the requesting user’s details (we use a simple deployment script for this). When no trial-pending droplets are available, an Event Transformation Action delays the flow while a droplet is built.
As part of the configuration process, Tines removes the “trial-pending” label and applies a “trial” label. Tines receives the deployment result via another Webhook Action (left-hand side of the diagram), once the deployment is complete. Additionally, a new “trial-pending” droplet is created and added to the pool.
The deployment script sends the details to Tines via a Webhook Action (right-hand side of the diagram) when it has been completed. Tines uses the Digital Ocean API again to apply a label and create a new DNS entry for the droplet. Finally, Tines powers off the droplet while we wait for a new trial request.
Once Tines has completed trial deployment, we use an HTTP Request Action and the Hubspot API to check if the contact already exists. If it does, we associate the new trial to the contact. If the contact is new, we add their details to Hubspot and then associate them to the new trial.
We use SendGrid to send transactional emails such as the welcome email we send when a trial is ready for the requester (sample below).
Tines welcome email automation devsecops
Additionally, if something goes wrong, for example, there are no trial-pending droplets available, Tines support are notified using an Email Action.
This is a walkthrough of how we used to manage Tines trials as part of our DevSecOps program.
*Please note we recently updated our terminology. Our "agents" are now known as "Actions," but some visuals might not reflect this.*