ServiceCutter / ServiceCutter

A Structured Way to Service Decomposition
Apache License 2.0
74 stars 19 forks source link

Importing Data #23

Closed ajcollett closed 3 years ago

ajcollett commented 3 years ago

Hello!

I am working on the MSc and wanted to make use of ServiceCutter. I feel like I am missing something though, in trying to figure out how to generate the JSON files.

I am wanting to generate this from code, or a DB, but I am struggling to find the right path to that. I thought I'd ask in case you have any direction?

I looked quickly at MySQL workbench but that doesn't seem to export to JSON (unless I am missing that).

Are these models (use case and ERM) created from scratch? Or exported from some tooling?

I do understand that these might be created by hand for each application, but I wanted to check in case I am missing something!

gysel commented 3 years ago

Hi!

The JSON format is a custom format we designed for the Service Cutter. You can find several examples in the Samples folder, the schema definitions are in JSON_Schemas.

The idea of generating such JSON files from existing databases or other machine readable artifacts is certainly an idea we had as well but did not implement due to time constraints in our project.

Does this answer your question?

ajcollett commented 3 years ago

Thank you @gysel , I really appreciate the response!

It seems to me a lot of the research and tooling in this field is very young, would you agree?

Since my MSc is on the topic of breaking up Monoliths into smaller bits for Micro service deployments, can you suggest anywhere to look?

I have already spent time with the paper and application from Mazlami, which seems quite nice!

See here: https://www.semanticscholar.org/paper/Extraction-of-Microservices-from-Monolithic-Mazlami-Cito/4c7f5a5d95b8f872e1142f5037f12d88f62381b6

Repos: https://github.com/gmazlami/microserviceExtraction-frontend https://github.com/gmazlami/microserviceExtraction-backend

But other than that, and Service Cutter, I can't seem to find much regarding static analysis tooling.

Maybe that generation of the JSON can become something I can work on. Not sure yet...

gysel commented 3 years ago

It seems to me a lot of the research and tooling in this field is very young, would you agree?

I would probably agree, yes - even though I have not done any research on the topic recently.

You should certainly also look at @ContextMapper developed by @stefan-ka. He has been working on similar topics for quite a while now.

stefan-ka commented 3 years ago

Hi @ajcollett

I don't know if this is a possibility for you, and if you are interested in Strategic Domain-driven Design (DDD), but @ContextMapper can generate the Service Cutter input files from its Context Mapper DSL (CML) models.

You find all information on how to create a CML model on our website https://contextmapper.org/. Once you have a CML model, you can generate the Service Cutter input files via our VS Code extension or Eclipse Plugin. But, you can also do it programmatically, by using @ContextMapper's Java (standalone) library. Here an example (you just have to replace generator object with the corresponding Service Cutter input files generator; I could provide a better example if you need one). In addition: @ContextMapper's discovery-library supports you in creating CML models from existing code or from whatever you want to reverse engineer the model.

By using the two libraries mentioned, you could write a Java program that generates the Service Cutter files automatically.

Your code or DB --discovery-library--> CML model --generator--> Service Cutter input files

But as I said, if Domain-driven Design is not the meta-model you want to go for, its maybe easier to write your own generator customized to your use case :)

Best regards, Stefan

@gysel: thanks for mentioning us ;)

ajcollett commented 3 years ago

Thank you all for the replies @stefan-ka @gysel. It's been very helpful.

I am mainly focused at pooling the tooling into one program/set of resources, and improving some efficiency, so it can be used to analyse more repositories/code.

Thus, it doesn't actually matter what meta-model the tooling is focused on, if I can add it to give a "user" more options, I am keen!

So yes, I will be looking very closely at ContextMapper (Thanks for all the info and links!), it sounds very promising.

If you know of anyone or any other tools I can chat to/look at (even older tools) please do let me know. I'll be interested in taking a look.

That seems to solve this "issue", so I'll close it now. Should I update you both if I get anywhere that you might find interesting?

ajcollett commented 3 years ago

*note: When I talk about efficiency, I am not referring to Service Cutter, but the other tools I am looking at:-P

gysel commented 3 years ago

Should I update you both if I get anywhere that you might find interesting?

Yes, please!

stefan-ka commented 3 years ago

Definitely, yes! Thanks, @ajcollett!