How should be built the ideal cloud-native framework (part 1)

The ERP frameworks

  • Scalability is not really necessary, we usually only have hundreds of users (the employees). Of course, it’s important to be able to spawn several servers to horizontally scale if needed, but you shall not have to build a whole farm of servers just for your ERP.
  • Since employees only use it, the user interface should be pragmatically and intuitively designed so each resource can easily be found. We’ll call such unified interface ‘admin interface’ in the following of this post.
    It differs entirely from what a web framework usually deliver, where you want to have complete liberty of what you can design. In an ERP framework, you want to spend the less possible time coding the interface.
  • The framework must manage all security aspects. The list of the users, how they log in, the access groups, and which resources they are allowed to access, following complex rules.
  • And in general, you shall be able to program new features the fastest possible way. Developer productivity and maintainability are everything here, because it’s directly linked to the flexibility of the company itself. The ERP framework must bring all the tools needed for the developer.

The challenges of autonomous departments

What about web applications

Batteries included

  • A solid ORM which makes CRUD super easy and intuitive.
  • Database schema migrations
  • A full featured and secured API, automatically built on the ORM
  • A unified administration interface for the employees. This one is a challenge because we want to have independent services, but still want to have a centralized interface to access their data.
  • Everything we need to securely log in and define the access rights to data.
  • Being able to have a backend one can scale horizontally and confidently expose to the Internet.
  • An API which can be used by any client, like a web frontend, a mobile application, IoT etc… Using well-known standards which can easily be used by external developers.
  • Provide libraries to help build and design those web frontend, mobile application, IoT etc…
  • Use other services as potential data sources.
  • Register and publish asynchronous events with CRUD operations, to implement audit, event sourcing, and saga.
  • Provide libraries to interact with external cloud services easily, so a department can choose between internal development or the cloud service of their choice.
  • Centralize public access to services through API composition.
  • Provide a centralized authentication service, managing users and access rights.
  • Use a fast and secure protocol and architecture for inter-service communication.
  • Shall be deployed on a container orchestrator, like Kubernetes.
  • Provide a full DevOps process, including CI/CD with contract-driven testing.
  • And finally a microservice chassis, to provide the observability we need to find the source of a problem in such a complex architecture. From logging, to metrics, health checks, and distributed tracing.

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
YannickB

YannickB

19 Followers

French developer, backend/ERP software. Opensource advocate and passionate, always learning. http://empower.sh