mhausenblas / noteless

A e2e demo of serverless technologies

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

noteless

The noteless serverless demo is available online through this page and allows you to analyze pictures for certain command words ("go", "stop", "on", "off", "left", "right", "up", "down", "to"). First, you'd capture a picture that contains some text and then you can view the results of the analysis.

Capture

You capture pictures containing text, ideally using your phone's camera:

screenshot capture

Once you have captured a few text fragments, you move on to the analysis stage.

Analyze

You analyze by applying predefined OPA Rego rules and if noteless recognizes a command like up or go it will list it:

screenshot analytics

Background

Architecture

This is a serverless end-to-end demo with an architecture as follows:

noteless architecture

noteless uses the following serverless AWS services:

  1. Amazon Rekognition for detecting text in images
  2. AWS Lambda for the capture/frontend processing
  3. Amazon EKS on AWS Fargate for the event-driven analytics part with an Open Policy Agent Rego-based set of rules.
  4. Amazon S3 for storing the captured images and Amazon DynamoDB to persist the detected text in JSON format.

Deploy yourself

If you want to try it out yourself, deploying the demo in your own environment, the source code is available via mhausenblas/noteless. Kudos go out to Mike Rudolph for mikerudolph/aws_rekognition_demo which served as a starting point for this demo.

First, create an S3 Bucket for the Lambda code and provide it as an input for the Makefile as NOTELESS_BUCKET when you run make up. This sets up the Lambda functions, the DynamoDB table, and the S3 data bucket.

For the container part: run first create-eks-fargate-cluster.sh to set up the EKS on Fargate cluster and then create-alb.sh for the ALB Ingress controller. Finally, execute launch-backend.sh to launch the Kubernetes deployment and service. TBD: patching frontends …

About

A e2e demo of serverless technologies

License:Apache License 2.0


Languages

Language:Go 41.8%Language:Shell 20.4%Language:JavaScript 16.6%Language:CSS 10.5%Language:HTML 5.4%Language:Makefile 4.7%Language:Dockerfile 0.6%