Infrastructure vs Circuit

Cyan-highlighted panels are infrastructure panels, and green-highlighted panels are circuits. This distinction is one of the most important concepts in Coreograph:

  • infrastructure panels are used to define resources

  • circuit panels are used to define functions

Infrastructure Panels

The resources of an application are the cloud service entities it makes use of to do its work. Some typical resources are S3 buckets, Lambdas, IAM Roles, DynamoDB tables, Cognito User Pools, CloudWatch logs, and so on.

At the end of the day, the infrastructure panels are compiled into a CloudFormation template. This CloudFormation template is used to launch, update, and terminate the application, and to dispose of its resources when it is no longer needed. CloudFormation is a powerful AWS service for deploying applications over their whole lifecycle.

the infrastructure panels of the Polly example are taken from the Coreograph Pattern library. For example, the panel named LambdaBackedApiGatewayApi is taken from the pattern LambdaBackedApiGatewayApi. You can load that pattern into its own browser window by clicking on the above link. Infrastructure patterns are common and useful combinations of AWS resources that are suited for a particular purpose. The pattern LambdaBackedApiGatewayApi, for example, combines an API Gateway API with a Lambda function and the IAM structures that are needed to permit the combination to be used. Many of the patterns in Coreograph were inspired by similar combinations in the AWS CDK, others by AWS reference architecture material, but some are structures of our own creation e.g. in the area of networking. Configuring resources is difficult; patterns provide working starting points for your applications, and our examples make heavy use of them.

Circuit Panels

The functions of an application are the executable logic that act on the resources. Some typical actions are retrieving an object from an S3 bucket, writing a log message to CloudWatch, modifying a record in DynamoDB. Functions perform network communications to converse with AWS services.

Functions can be described as dataflow diagrams as they are in this example. Dataflow diagrams are a graphical representation of the function with boxes, called nodes, that perform operations on data, and links, called wires, that carry data between the nodes.

Text Panels

Functions can also be described as conventional text, in several programming languages. At present the system supports writing functions in Python and Javascript. There is a wealth of examples and open source material written in these popular languages.

Coreograph provides a language called Transparency that is tightly integrated with its dataflow model. This language compiles to native machine instructions, offers direct access to operating system functionality and integration with low-level programming languages like C++. Functions can be written directly in Transparency as well.

The Polly examples does not have any text panels, but here is an example of one from the EventBridgeETL example:

007

Open this project in a separate browser tab by clicking on the link above. In this project, the final two panels are python panels. They contain functions written in Python. In this case, the functions are taken from AWS example material.

Now let’s return to the Polly example to continue our exploration.