This is a POC and nothing more. It is not intended to be used in production and is not a complete solution. It is a proof of concept to showcase server side abstractions and what we can build ontop of what exsisits in AWS.
Abstract is a proof of concept abstraction over AWS networking with the focus on ECS. It takes a standard ECS task definition and creates the necessary networking infrastructure to support it. This includes VPC, subnets, security groups, and an ALB. Abstract is broken into two main components: the client and the server. The client has very little logic and reads the task definition from a file and passes it to the server via grpc. The server is responsible for creating the networking infrastructure and is written in Go. The point of this POC is showcase server side abstractions and what we can build ontop of what exsisits in AWS. The server is designed to be a generic abstraction over AWS networking and can be extended to support other AWS services besides ECS.
As this is a moc of a larger system, the design is very simple. The client reads the task definition from a file and passes it to the server via grpc. The server then creates the necessary networking infrastructure to support the task definition. From the task definition, we can make assumptions about the networking infrastructure that is needed. For example, we can assume that the task definition will need a VPC, subnets, security groups, ports to expose etc. As this POC and runs locally you will need to have AWS credentials set up on your machine, in a production this would not be true.
To run the POC, you will need to have the following installed:
- Go
- AWS credentials
To run the server:
cd server && go run main.go
In a new terminal, run the client:
cd client && go run main.go