Skip to content

Preparing Mandarine.ts Framework for production environments #57

@andreespirela

Description

@andreespirela

Hello Community,
Today, I am writing this issue to inform a bit about the next steps in order for Mandarine to be production ready.

MandarineTS framework has grown over the past months not only in community but also in functionalities and stability. Our community is still fairly small but that does not mean Mandarine is not moving forward in order to reach its main objective: A all-in-one solution for enterprises.

MandarineTS already has a reliable Dependency Injection System, Components, Middleware, Sessions, Template engine & other modules. We also could say that Mandarine has a reliable ORM system along with MQL (Mandarine Query Language), although this is yet to be improved but it can perfectly be used for large applications.

Case

With that said, I have to admit, I do not consider MandarineTS Framework production ready and I do not recommend it for large applications, it is perfectly fine to use it in small projects or projects with limited traffic but when it comes to the scalability of MandarineTS for production solutions, there are two things that do not make me feel well about MandarineTS in running in large scales:

  • Deno
    • We can't measure the impact of Deno in production environments because Deno is really new. Deno is only in its 1.1.1 version (2020-06-23) and it is yet to be widely used, for instance widely tested.
    • Among other things, Deno still has a lot of questions to be addressed like the multiple modules issue: What if a module goes down, what if the module of a module of a module goes down. Since Deno does not have a package manager like NPM and imports are cached but they are not directly related to our application, it is hard to define or track when a module breaks another module and ends up breaking your application too as well as many other issues you can think of related to this concept.
    • The fact that Deno is very new and its in early versions gives Mandarine a lot of impediments such as working with reliable Database modules, only if the Deno community grows to enterprise levels then Mandarine will be able to support multiple database systems.
  • Mandarine
    • Mandarine has a lot of functionalities and we can say it works in a reliable way, although, the amount of work required to make Mandarine production ready goes along with the amount of collaborators, as of right now (2020-06-23) Mandarine has 0 collaborators but me. This can be a problem as the project grows because the larger it gets the more issues will be submitted and requested.
    • In the same way as Deno, Mandarine is fairly new, it is only in its 1.1.1 version (2020-06-23) which makes measuring the impact it can have on a production environment almost impossible.
      • The fact that Mandarine is in its early versions & it is not as widely used as we would desire makes adding features and solving bugs hard since we, the collaborators, have no reports/issues to work on but our imagination which makes the process of making Mandarine grow slower than expected.
    • Many of the code Mandarine currently uses needs to be better documented and refactored.
      • This includes the creation of Unit tests.

Steps to be Production Ready

  • The creation of a Testing Framework for Mandarine. It must be able to be not only used for Mandarine internals but also for people using Mandarine.
    • Every core module in Mandarine such as Dependency Injection, Routes... must be unit-tested with this framework.
    • Integration tests should be available for core functionalities
  • MandarineTS repository must have continuous integration
  • Refactoring the code that needs to be refactored such as locating every mandarine-native module (SessionContainer, Default Web configurer, and others) in one folder.
    • Cleaning code
    • Everything in Mandarine should be a factory or a proxy, this way we can perform tests in an easier & cleaner way.
  • Add copyright header to all files
  • Add Benchmarks to documentation in order to be able to measure how good the changes we are making really are.
  • Find collaborators and impulse the use of Mandarine among both communities (JS & Typescript).
  • Evaluate and see how things evolve and develop with the use of Deno across the globe.
  • Document the life cycles of Mandarine Starter and try to make it a flexible life cycle so the user can give it a behavior.
  • Creation of an official website to offer more detailed documentation and things related to Mandarine
  • Define Standards of Mandarine not only for the collaborators but for whoever uses Mandarine out there.
  • Cache folder should be available per every release.

...

In order to achieve a Production Ready status, we need to work on the steps mentioned before, not a few of them, not only two of them, but ALL of them. All the steps mentioned are a top-priority.

Anything you would like to add? Feel free.

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentation

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions