Monday, December 31, 2018

Breaking our own monolith

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!

OutSystems Overview

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 from the rest of the platform. By following this path we got ourselves independent release cycles for MABS. MABS moves at its own speed as needed 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. So, 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 Overview

OutSystems UI, OutSystems Now Service, Supported plugins
Well, Forge components, basically. These have a completely independent "life". The release cycle for these components is as simple as publishing them in Forge.

Why should Lifetime be dependent on platform releases? If there's an improvement in the mechanism to stage apps, what does that have to do with Service Studio or Platform Server? It doesn't. And Lifetime currently is on it's 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 and developers.