Skip to content

msa-ez/platform

Repository files navigation

MSAez (Microservices made easy) Platform

MSA Easy (https://www.msaez.io/) is a comprehensive tool designed to assist in the analysis, design, implementation, and operation of microservices. It enables business experts and developers to collaboratively analyze and design software using domain-driven design and event-storming techniques. Furthermore, it facilitates the automatic generation of the "Clean-code". Throughout this entire process, ChatGPT can provide automation support and guidance on how to effectively utilize this platform.

Chat-GPT creates User Stories

image

Chat-GPT Auto Software Modeling (Event Storming and UML)

image

Code Generation & integrated with Cloud IDEs

image

Kubernetes Modeling and Git Deploy (Integrated with Argo)

image

Templates for major microservices platforms - Spring Boot, Axon, Go, Python

templates

Toppings for Event driven Microservices Design Patterns including Saga, CQRS, Event sourcing, GraphQL, Token-based Authz/Authn, Circuit breaker, Microfrontends etc.

toppings

User Guide

User-guide: https://intro.msaez.io/tool/google-drive-examples/#instructions

Tutorial Videos

Google Docs Example

Axon Framework Example

Multi-tenancy Support and Token-based Authn/Authz

Mock Generation

Unit Testing

ChatGPT based auto modeling

ChatGPT based auto implementation & debugging


Running on Docker Compose (with Github)

Register MSAez as a Github OAuth Application

  1. Login to Github
  2. Settings -> Developer settings -> OAuth Apps -> New OAuth App
  3. Set Application Info
  4. Now you can find Github Application Client ID and Secret as follows:
image

Set those client ID and Secret with following command and run:

DB_HOST=localhost \
CLIENT_ID={{ Github OAuth Client ID }} \
CLIENT_SECRET={{ Github OAuth Client Secret }} \
docker-compose up -d

If there's pull error please hit this: docker logout ghcr.io

Now you can navigate to localhost:8080

Settings for AI-aided Model Generations by Chat GPT

To set Open AI token, we need to visit Acebase. Navigate to http://localhost:5757/webmanager/

Login with following info:

  • DB Name: mydb
  • User: admin
  • Password: 75sdDSFg37w5

Set the Token encoded above in JSON format as shown below.

image

{ "tokens": {"openai": "BASE64-ENCODED-OPENAI-TOKEN"}}

** Note: Your token must be encoded with base64:

echo "[OPEN-AI-TOKEN]" | base64

And Try to auto-generate Event-storming model with this guide: https://intro.msaez.io/tool/chat-gpt/#generating-business-model-utilizing-openai


Setting Development Environment

# Set the version of npm(macOS)
npm install -g npm@6.14.18

nvm install 14
nvm use 14
npm install

Run the frontend

create a file '/public/static/env.txt' and paste it:

VUE_APP_DB_HOST=localhost
VUE_APP_DB_PORT=5757
VUE_APP_DB_NAME=mydb
VUE_APP_MODE=onprem
VUE_APP_DB_HTTPS=false
VUE_APP_GIT=github

and run this script in the terminal:

npm run serve

Navigate to localhost:8080

Run the Acebase DB

cd acebase

export CLIENT_ID=<Github OAuth Client ID>
export CLIENT_SECRET=<Github OAuth Secret>

node main.js

Navigate to the Acebase admin portal: localhost:5757

Register Github App and Set the Open API tokens

[Describe here]


Install MSAez on Kubernetes with GitLab

  • Before the installation, register GitLab Application to get OAuth ID and Secrets.

Install GitLab firstly

Gitlab Install Guide

Register MSAez as a GitLab Application

  1. Login to GitLab with Admin account
  2. Admin Area -> Applications Pasted image 20231110122240
  3. Add New application Click
  4. Set Application Pasted image 20231110122407
  5. ID & Secret issued after the registration of Application is necessary for MSAez Install, so save them. Application.

Install MSAez

  1. Installation of MSAez is running in on-prem-helm folder within the source code of [MSAez SourceCode](https://github.com/msa-ez/platform).
$ git clone https://github.com/msa-ez/platform.git

  1. Edit the value of Helm chart
# /on-prem-helm/values.yaml
replicaCount: 1
image:
  repository: ghcr.io/msa-ez # Image Registry
  eventstorming: evenstorming:v1.0.7 # Eventstorming-tool Image URL
  acebase: acebase:v1.0.7 # Acebase Image URL

provider: github # github or gitlab

gitlab: 
  url: gitlab.handymes.com # Gitlab URL

oauth: 
  id: "" # Gitlab Application OAUTH ID
  secret: "" # Gitlab Application OAUTH Secrets

db:
  https: true
  host: acebase.handymes.com # DB URL
  port: 443 # fixed
  name: mydb # fixed
  1. Install Helm.
$ cd on-prem-helm
$ helm install msaez .
  1. Check the Service.
# Pod, Service
root@theia-build:/home/kimsanghoon$ kubectl get all
NAME                                     READY   STATUS    RESTARTS   AGE
pod/acebase-6c7c8598fd-6fgkp             1/1     Running   0          9d
pod/eventstorming-tool-8554ffc55-h94vd   1/1     Running   0          23h

NAME                         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
service/acebase              ClusterIP   10.233.15.103   <none>        80/TCP    21d
service/eventstorming-tool   ClusterIP   10.233.19.127   <none>        80/TCP    21d
# Ingress
root@theia-build:/home/kimsanghoon$ kubectl get ing
NAME                     CLASS   HOSTS                  ADDRESS           PORTS     AGE
acebase                  nginx   acebase.handymes.com   000.000.000.000   80, 443   21d
eventstorming-tool-ing   nginx   msa.handymes.com       000.000.000.000   80, 443   21d
  1. Register DNS or edit hosts file and login to the Host.

Importing Code Templates to GitLab

※ The basic template must be created as a sub-project of a root account.

  1. Select New project image

  2. Select import project image

  3. Select GitHub image

  4. Enter Personal Access Token, then Authenticate image

  • If you do not have a personal token, click GitHub Personal Access Token at the bottom to go to the Github token issuance screen.
  1. Search for msa-ez in the search box and import the project. image

    • If nothing is found after searching msa-ez, you need to add msa-ez Organization from Github.

Roadmap

  • Legacy Modernization:

Beginning with the input of existing legacy assets, like current codebases or database schemas, the tool identifies and extracts key Business Objects, such as Aggregates or Entities, and delineates APIs with their respective Commands.

After that, MSAez, takes the lead in creating a new, optimized model. This model is not only tailored to align with the modernized architectural design but is also primed for generating code that is compatible with cloud-native applications.

  • Automated Coding, System Testing, and Code Debugging:

With the incorporation of ChatGPT, MSAez elevates its functionality by automating the implementation of business logic and test codes in the default generated code. Additionally, ChatGPT aids in automatically detecting and resolving bugs within the generated code, ensuring it successfully passes all necessary tests. This automation streamlines the coding and testing processes, significantly reducing the time and effort required for development and debugging.

  • Integration with the Backstage Platform:

MSAez can be integrated as a plugin into the Backstage platform (https://backstage.io/ - a de-facto standard in developer portal platform), enabling BizDevOps professionals to consolidate various tools used throughout the Biz-Dev-Ops lifecycle. This integration allows for a seamless incorporation into Backstage's developer experience, enhancing workflow efficiency and tool management.