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
Chat-GPT Auto Software Modeling (Event Storming and UML)
Code Generation & integrated with Cloud IDEs
Kubernetes Modeling and Git Deploy (Integrated with Argo)
Templates for major microservices platforms - Spring Boot, Axon, Go, Python
![templates](https://private-user-images.githubusercontent.com/487999/289039207-7d296274-059c-47f0-900e-794b93ba6817.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTM5NTM0NjksIm5iZiI6MTcxMzk1MzE2OSwicGF0aCI6Ii80ODc5OTkvMjg5MDM5MjA3LTdkMjk2Mjc0LTA1OWMtNDdmMC05MDBlLTc5NGI5M2JhNjgxNy5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNDI0JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDQyNFQxMDA2MDlaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT03YzcyY2MyZmE1MmRlY2E5NjJmNDZkNGQxZDdkN2JhZTRjNjhiNWZjYTI0NTI3ZGM3YmYxM2ZiODgxYTlhOTY3JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.GI-AM-5NIrgqJk1FB0d3r9Sbb59ybzv0TK_5an8HCeA)
Toppings for Event driven Microservices Design Patterns including Saga, CQRS, Event sourcing, GraphQL, Token-based Authz/Authn, Circuit breaker, Microfrontends etc.
![toppings](https://private-user-images.githubusercontent.com/487999/289039194-44a821fe-5ab6-4f40-b106-78f3fb849c9d.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTM5NTM0NjksIm5iZiI6MTcxMzk1MzE2OSwicGF0aCI6Ii80ODc5OTkvMjg5MDM5MTk0LTQ0YTgyMWZlLTVhYjYtNGY0MC1iMTA2LTc4ZjNmYjg0OWM5ZC5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNDI0JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDQyNFQxMDA2MDlaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1lNzJhNzVkZTkxNGQ0NDQzYzU0NDE4MDk3NmRhMjhlMzY1OTBmYWUzMjRjNjY0OTdlYWZmZjA0YjMyZGJhMjI2JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.3-Cd_pWk46wy6u3-9-ly1w7WwyxO2jITbDyD7jKL5Vg)
User-guide: https://intro.msaez.io/tool/google-drive-examples/#instructions
- (English) https://www.youtube.com/watch?v=MUN0iS3cJV8&list=PLEr96Fo5umW9w_5SmjXhOar1xRRWcZsbB&index=3
- (Korean) https://www.youtube.com/watch?v=GLT92wnRkMg
- (English) Event sourcing and Choreography - https://www.youtube.com/watch?v=XoWd0QMue7A
- (English) Saga Orchestration- https://www.youtube.com/watch?v=0AEMNgtS5XU
- (Korean):
- part1: https://youtu.be/rFdBueV-JBs?t=2379
- part2: https://youtu.be/YGpUFRJwsuY
- part3: https://youtu.be/-nPsa4r2ceQ
- Background: https://youtu.be/rFdBueV-JBs
- (Korean) https://www.youtube.com/watch?v=liV2f5ZZlY0
- (Korean) https://www.youtube.com/watch?v=rUKFP6n-d68&list=PLEr96Fo5umW8CYIuf52d06BHfpgS6Q0-X&t=160s
- (Korean) https://youtu.be/JuCN-bD7Jkk
- (English) https://youtu.be/yZMueAKEqwI
- Login to Github
- Settings -> Developer settings -> OAuth Apps -> New OAuth App
- Set Application Info
- Application Name: MSAez * Required
- Homepage URL: http://localhost:8080
- Application Description: Description
- Authorization callback URL: http://localhost:5757/oauth2/mydb/signin
- Now you can find Github Application Client ID and Secret as follows:
![image](https://private-user-images.githubusercontent.com/487999/288960478-06f6af6e-6511-4a7f-a6d5-9021ca9b9d67.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTM5NTM0NjksIm5iZiI6MTcxMzk1MzE2OSwicGF0aCI6Ii80ODc5OTkvMjg4OTYwNDc4LTA2ZjZhZjZlLTY1MTEtNGE3Zi1hNmQ1LTkwMjFjYTliOWQ2Ny5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNDI0JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDQyNFQxMDA2MDlaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0yZDBkMDAzY2I0MTdmYmU1NDdjZjRhZWUwNTdiZGM4OTA2NWU2N2ZlNDhmYjM1YjhjZTM4YTVhNTU3NDkzOWQ4JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.aUT52NbsBgIJmgs55Hjv76Ac_gBvfLONeIvEmst6BYw)
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
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.
{ "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
# Set the version of npm(macOS)
npm install -g npm@6.14.18
nvm install 14
nvm use 14
npm install
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
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
[Describe here]
- Before the installation, register GitLab Application to get OAuth ID and Secrets.
- Login to GitLab with Admin account
- Admin Area -> Applications
- Add New application Click
- Set Application
- ID & Secret issued after the registration of Application is necessary for MSAez Install, so save them. Application.
- 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
- 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
- Install Helm.
$ cd on-prem-helm
$ helm install msaez .
- 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
- Register DNS or edit hosts file and login to the Host.
- If you do not have a personal token, click GitHub Personal Access Token at the bottom to go to the Github token issuance screen.
-
Search for msa-ez in the search box and import the project.
- If nothing is found after searching msa-ez, you need to add msa-ez Organization from Github.
- 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.