IntelliSense like “Auto Connections” feature in Q-Cloud

Background

When you develop code for cloud infrastructure, you select various resources and wire them together by defining dependencies and properties. This effort is complex and time consuming as each of the popular tools and languages (Cloud Formation, ARM, Terraform, and Pulumi) have a different method to define dependencies.

This is true of any development effort where the language, schema, types of resources and their dependencies needs to be understood. Even though pre-defined and reusable templates and features such as IntelliSense make it relatively easier to develop code, the additional resources that are being added or updated in the code also need to be considered.

With a No Code platform, the emphasis is on minimizing users clicks and actions and intelligently completing all the aspects of the compose action where possible. Q-Cloud (a No Code platform for cloud infrastructure deployment) makes it much easier to define all the required dependencies using the “Auto Connections” feature. This feature is like IntelliSense in an IDE where a language service assists the front end and provides intelligent code completions.

Infrastructure as Code (IaC) and how dependencies are defined

As you may know Pulumi and Terraform are two popular tools for IaC. Let’s look at a few examples with both Pulumi and Terraform and explore how dependencies are defined.

The following is an example using Pulumi and of defining your resources in an index.ts (Typescript) file.

In this example the aws.ec2.Vpc resource is defined as a main constant (or a variable). When the subnet constant is defined, it refers to the vpc as main.id and defines it as vpcId. This definition and reference let Pulumi know that the subnet is attached to the vpc.

 

import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
const main = new aws.ec2.Vpc("vpc_test", {
   cidrBlock: "10.0.0.0/16",
});
const subnet =new aws.ec2.Subnet("public1", {
   vpcId: main.id,
   cidrBlock: "10.0.1.0/24",
   tags: {
       Name: "Public Subnet 1",
   },
});

 

Here is a similar example using Terraform.

You start by creating a .tf file and define a resource for AWSVPC. The following block of code defines the AWS VPC as a resource (shown as are source called ‘aws_vpc’) and defines its property of address space and a tag. When you add a subnet resource (aws_subnet), you want it to be associated with the vpc resource. Here you define the dependency as a prefix of the parent resource (in this case aws_vpc) and declare it as a variable with the use of.id. You now define the properties of the subnet with cidr_block and tags as shown below:

 

resource "aws_vpc" "vpc_test" {
cidr_block       ="10.0.0.0/16"
tags = {
   Name ="VPC Test"
 }
}
resource "aws_subnet" "public" {
 vpc_id     = aws_vpc.vpc_test.id
 cidr_block ="10.0.0.0/24"
tags = {
  Name ="Public Subnet"
 }
}

Below is an example of a Terraform file with many additional resources defined. The connections or dependencies are all highlighted:

An example .tf file

 

You get the idea on how each of these resources are interconnected by defining dependencies. Without these dependencies, the program has no way of knowing how to deploy each of these resources.

Imagine the complexities when deploying a landing zone (with gateway, routing table, routes, security groups etc.) and having to define each resource with all the required dependencies.

In programming parlance, the development complexity is reduced by using pre-defined templates and IDE with IntelliSense code completion features to make it a bit easier and avoid having to define the connections manually.

 

Auto Connections in Q-Cloud

Q-Cloud maintains a list of all possible connections for many of the well-known resources and patterns and assists a user when composing the infrastructure.

A canvas or a guided wizard is used in Q-Cloud to compose the desired infrastructure. The following graphic shows a dialog box where Q-Cloud displays a list of all the resources and the possible connections for the resources on the canvas under “Available Connections”:

Auto Connections in Q-Cloud

With a single click, Q-Cloud automatically connects each of the resources on the canvas. Once the connections are made, you define properties for the required resources and initiate the deployment.   Q-Cloud generates all the required code automatically as part of the deployment process.

If a particular connection is not available in the pre-defined package, Q-Cloud will learn from the manual connections the user has made for successful deployments. This capability will allow the newly learned connection to be part of the Auto Connection list for subsequent deployments.

Summary

Q-Cloud is a cloud infrastructure deployment platform that allows a user to compose the infrastructure, visualize, and deploy without having to write any infrastructure code.

Q-Cloud uses the Pulumi automation API that is exposed as a REST API to other components in Q-Cloud. The Auto Connection feature is developed using functions in a Pulumi program and a proprietary canvas functionality in Q-Cloud.

In summary, Q-Cloud reduces complexity and the effort required for infrastructure deployments resulting in considerable savings.

Q-Cloud is now available in AWS Marketplace:

https://aws.amazon.com/marketplace/pp/prodview-w37ahxg6xcgri/?ref=_ptnr_appmodzwebsite

If you have any questions or need help, please contacts us at info@appmodz.net