Giter Club home page Giter Club logo

aws-cdk-transactional-messages's Introduction

๐Ÿ“จ AWS-CDK-APIGW-SQS-LAMBDA ๐Ÿ“จ

Serverless AWS architecture to simulate the processing of transactional "messages".

  • Designed with API Gateway on top of SQS and Lambda. Equipped with Observability capabilities including detailed logs, traces and service map on X-Ray.
  • Deployed on AWS with Infrastructure as Code on CDK-Python (see ./cdk folder).
  • Logging and traces enabled with Lambda PowerTools and optimized with their latest Lambda Layer.
  • Backend processing has SQS-retries and eventual failures (SQS-DLQ) trigger a CW-Alarm and an Admin-Email is sent via a custom SNS-Topic.
  • The source code for the Lambda Function is a "dummy processing" approach, but can be extend to any business logic needs.

AWS Architecture Diagram

The AWS infrastructure solution is deployed with CDK-Python with the resources defined on the cdk folder:



Observability Results

Any transactional application requires production-level observability, and, for this architecture, it's designed as follows:

Observability: Service Map


Observability: Service Traces


Observability: CW-Alarm + SNS-Topic Email



Dependencies

AWS CDK

AWS Cloud Development Kit is an amazing open-source software development framework to programmatically define cloud-based applications with familiar languages.

My personal opinion is that you should learn about CDK when you feel comfortable with cloud-based solutions with IaC on top of AWS Cloudformation. At that moment, I suggest that if you need to enhance your architectures, it's a good moment to use these CDK-based solutions.

The best way to start is from the Official AWS Cloud Development Kit (AWS CDK) v2 Documentation.

Software dependencies

  • Visual Studio Code
    Visual Studio Code is my main code editor for high-level programming. This is not absolutely necessary, but from my experience, it gives us a great performance and we can link it with Git and GitHub easily.

  • NodeJs
    NodeJs is a JavaScript runtime built on Chrome's V8 JavaScript engine programming language. The community is amazing and lets us handle async functionalities in elegant ways.

  • Python
    Python is an amazing dynamic programming language that let us work fast, with easy and powerful integration of different software solutions.

Libraries and Package dependencies

Usage

Project deployment/destroy commands are explained in detail at ./important_commands.sh, including the necessary steps to configure CDK and do the deployments.

Special thanks

  • Big thanks to all the folks who worked hard on these awesome OpenSource projects that I'm using.

Author ๐ŸŽน

Santiago Garcia Arango

The information of this repository is based on many online resources, so feel free to use it as a guide for your future projects!

As a Senior DevOps Engineer, I am deeply passionate about implementing cutting-edge cloud-based solutions on AWS.
I firmly believe that today's greatest challenges must be solved by the expertise of individuals who are truly passionate about their work.

LICENSE

Copyright 2023 Santiago Garcia Arango.

aws-cdk-transactional-messages's People

Contributors

san99tiago avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.