Breaking our own monolith

César Afonso
Dec 31, 2018 · 3 min read

If you are interested in OutSystems, you probably came across some articles from Francisco Menezes and talks from the CEO about breaking monoliths.

“A monolith is the result of building every business value and functionality into a single core application. When first building a product, a monolithic strategy has significant upsides: development moves quickly, the tech stack remains consistent, data remains in a centralized location, access to functionality is at the fingertips of every developer, and others. But as a product ages and the teams behind it get bigger, the downsides kick in. Release cycles slow considerably as changes of any kind (big or small) require a full-product release.”

Well, we also had a monolith problem with the platform itself and we had to follow the same path: break it! We needed faster release cycles!

Independent release cycles

Online services

The Mobile Apps Build Service (MABS) is a service that, in essence, abstracts a developer from all the complexity around the generation of a mobile app (XCode, SDKs, etc). This was designed, from scratch, to be loosely coupled to the rest of the platform. By following this path we got ourselves independent release cycles for MABS. MABS moves at its own speed and customers get automatic updates whenever they generate mobile apps. OutSystems Insights is another piece of software at OutSystems designed from scratch with all this in mind.

Service Studio

This is a bit more tricky. Both Service Studio and the Platform Server share lots of definitions. To illustrate (and keeping it simple), imagine that we introduced a new element in the language that only Service Studio knew about. When you published it, what would happen on the platform side? So, the full decoupling is not that easy. However, there’s no reason why Service Studio cannot get lots of “goodies” without requiring a platform release. Currently, Service Studio is scheduled to be released every week. Even further, recently, we released Service Studio Beta with automatic updates. That means you can get features in your hands automatically in no time. We release → you get an automatic update → new feature!

OutSystems UI, OutSystems Now Service, Supported plugins

Well, all Forge components, basically. These have a completely independent “life”. The release cycle for these components is as simple as publishing them in Forge.

Lifetime

Why should Lifetime be dependent on platform releases? If there’s an improvement in the mechanism to stage apps, why should it wait for a platform release? Lifetime is currently on its own release path.

These 4 above are great examples of independent release cycles at OutSystems. And this means that teams can work independently, at their own speed, releasing value faster to the hands of customers.


Originally published at www.cesarafonso.pt on December 31, 2018.

cesarafonso

www.cesarafonso.pt

César Afonso

Written by

cesarafonso

www.cesarafonso.pt