Overview

Let's say you hear a description of an IT problem, that you'd need to come up with a new system solution for. The other party is of IT crowd as well, so the description already includes all relevant details, with a couple of needed exhaustive lists being provided as files during the session. So its a kind of a listening comprehension test as well. To keep reading more interesting we'd assume that your system solution is heading to a cloud. We want to reach broadest audience, so let public cloud provider be AWS.

In this continued series of articles about Note Web PaaS DSL, we'll show how Note Web supports you from this starting point of this scenario, all the way through to issuing first REST requests to your solution's microservices and a brief walkthrough of their implementation and deployment code. We'll deliberately leave fine persistence model definition, monitoring dashboards, alerting, caching and more advanced higher level patterns like ETL, authorization, audit, heterogeneous cloud cases, HPC workloads, etc. for later.

We'd walk through the following as these demo-articles unfold:

  • defining outlines of 3 microservices
    • one being a Spring Boot application, another - a Python Django script, the last being a TypeScript Node.js app
    • with data managed by RDS and DynamoDB
    • to be integrated by SQS and SNS in subsequent articles (but ok to setup the corresponding queues now)
  • provisioning AWS resources for all of the services, including route 53 DNS configuration under demo.paas.noteinweb.com
  • deploying the microservices to AWS ECS, EKS and BeansTalk respectively
  • blue-green deployment for the whole microservices landscape
  • quick tour of the entire solution AWS resources in NoteWeb and source code in repositories
  • undeployment of all created AWS resources

Problem Description

Sample problem description (inspired by Uber's case):

Fictious local cab operator "NextUb" runs its business with on-premises monolith style system comprised of the following modules:

  • Passenger Management - passenger profile, cab search (15 logical entities)
  • Trip Management - trip start, trip completion, trip changes (9 logical entities)
  • Driver Management - driver registration, order assignment (25 logical entities)
  • Billing, Payments, Notifications

List of logical entities with attributes for the 1st 3 modules are attached. Details to be provided later. Main system is a large Spring Boot 1.5 application. There is fairly large existing core business logic codebase (details are out of the scope of the article, but justifies the choice of technologies):

  • in Python - TensorFlow ML-based fraud-detection logic
  • in TypeScript - mostly Trip Management

Integration is through the database and REST API.

Recently NextUb has seen some raise in demand in terms of number of cab searches, number of trips and number of new driver registrations. This has caused scalability issues with Passenger and Driver Management modules.

So NextUb would like to:

  • reengineer the whole solution to microservices best practices
  • move production infrastructure to AWS

Goal of this exercise is to provision 3 skeleton microservices for Passenger, Trip and Driver Management (to later on accept core logic codebase) along with key architectural AWS resources of the entire solution in scope .

Solution Walkthrough

Please watch the video below for the actual blueprint definition and explanations.

Update on July 31, 2022: This article has been ready for publishing mid of June 2022. Its only the video recording part that's been lagging behind. Originally, the intention was to walk through in Note Web UI and show how well concept of blueprints fits such of Note Web. However, Note Web release 8 is still in workings, but Note Web PaaS DSL already generates value.
So I decided to publish whatever I can show now, but backdated to when article was ready. Also, the scope has been reduced to fit the actual coding and explanations to the timeframe of 15 minutes from 0 to database CRUD via REST operational in AWS, all generated artifacts relying on standard technologies, maintainable, as declared in video's narrative.

 

 

Conclusion

In this article we've shown how to define a simple Note Web blueprint and get one of the microservice's defined therein to store data and respond to requests from Internet all within 15 minutes.




Note In Web, Inc. © September 2022-2024; Denys Havrylov Ⓒ 2018-August 2022