

Think of this process as an approach similar to that of Redux or Express Middleware functions. Through this model, plugins can decide to extend, change, or simply ignore the event. Plugin responses are composed together, and the final returned value is what gets rendered in the component tree. The Lattice Plugin Host will dispatch this identifier through all of the plugins which have been registered and loaded. Lattice requires constant identifier values (aka “magic strings”) to understand what is being rendered. Most extensions will choose to extend existing application functionality, which will not be universal, and requires knowledge of the host’s design. Standard identifiers are used that all Lattice-enabled applications should implement to allow plugins to universally work across different applications. Plugin modules can then provide new functionality, or change existing functionality, to the host application. By designing to rigid interfaces defined by a host application, both the plugin and host can be developed in parallel.Įxposing Functionality to Lattice as a Federated Module Plugins would be developed in a manner in which all of the context is available to them ahead of time via TypeScript declarations. Rapid Development: Reduce the development cycle by avoiding unnecessary builds and deployments.The framework must be flexible enough to register, and unregister, plugins such that the extensions only apply when necessary. Metadata Driven: Plugin modules are defined from a configuration which could be injected at any point in the application lifecycle.

Plugins should be focused on delivering their core functionality without unnecessary boilerplate and have the freedom to implement without cumbersome API wrappers. Highly Aligned, Loosely Coupled: fully align with the standard frameworks and libraries used within Netflix.These bundles could be owned by teams outside of RGT built by already adopted standards such as with Webpack Module Federation or native JavaScript Modules. Weak Dependencies: Host applications could reference modules over https to a remote bundle hosted internally within Netflix.We would leverage an approach that enabled applications to extend their core functionality using common, and familiar, React paradigms. Applications can be difficult to manage when functionality must be shared across packages.
UNIVERSAL DATABASE FRONT ENDS CODE

We needed to consolidate these tools in a way that scaled with the teams we served. We identified common design patterns and architectures scattered across various tools which were all duplicating efforts in some way or another. The Revenue and Growth Tools (RGT) team decided to set off on a journey to build tools in an abstract manner to have solutions readily available within our organization. As we continue to grow here at Netflix, the needs of Revenue and Growth Engineering are rapidly evolving and our tools must also evolve just as rapidly.
