Unboxing: ODC aka Project NEO

Fábio Fantato (OutSystems MVP)
valantic LCS
Published in
7 min readNov 18, 2022

Introduction

On November 15th, NextStep 2022 , the annual OutSystems Software Innovation Conference and the long awaited low-code tech event of the year goes live.

In 2021, they had announced the Project NEO, the new OutSystems cloud application platform, designed to be a combination of state-of-the-art, cloud-native architecture and modern CI/CD practices in one single product. Finally, we learnt the name of this new platform: ODC- OutSystems Developer Cloud and we were able to discover a lot of amazing things about it.

You may remember me from other conference talks, articles or the from the community. But just to refresh your mind, I am an OutSystems MVP, and I’ve been working for OutSystems #1 Partner in Customer Reviews: Do iT Lean.

We have had the opportunity to be engaged in the Early Access Program for the ODC . In this article I will highlight the main differences and benefits of this new platform from the developers, IT and architects point of view.

What is new on Developer world?

Everything you need to create, deploy and manage your applications is available in two single places: Portal and Studio.

ODC Portal + ODC Studio

In the Portal, you will have a unified console to manage applications, execute deployments, monitor your apps, domains, identity providers and manage users and access.

In the Studio, you will be able to construct your applications.

Compared to Outsystems 11 (O11), the different tools Service Center, Lifetime, Users Application and Forge are now tasks perfomed inside the ODC Portal.

NEW TERMINOLOGY

APPLICATION TYPES

APP

  • One Application = One Module (Removes the concept of module)
  • Only weak references between applications
  • Entities can only be exposed as read-only
  • Server actions can not be public
  • Only Service Actions and APIs might be used to share actions to other applications
  • Entities in different applications can only be referenced as Foreign Keys (FK) using delete rule set to Ignore

The main reason behind this changes is to promote loosely couple architectures and to promote team autonomy and lifecycle independence. Now, the application runs in different containers from the others. Ideally, they should also have isolated business-concepts.

LIBRARIES

  • Libraries have their own lifecycle and they are packaged with each consumer app
  • Consuming elements in libraries creates strong references
  • Can support different use cases such as: Integration wrapper, Style guides and themes, Reusable UI Blocks, and Auxiliary Server and Client Actions
  • In Libraries, Static entities are like enumerations not physical entities in the database
  • Different consumer applications can use different versions of the libraries, just because they will be packaged inside their containers

APPLICATIONS AND LIBRARIES INTERACTION (EXAMPLE)

CI/CD

Deployment is really fast. Now, compiling and packaging your applications is done just once. When you are performing the deployment to a new stage, you are copying the container image to it. We are really talking about seconds!

What is new in IT perspective?

ODC has a Cloud-Native container based architecture, including:

  • Cloud Agnostic + Multi-Tenant + Multi-Region + Data Isolation
  • All content is behind a CDN (Content Delivery Network) + WAF (Web Application Firewall) for external requests
  • All message data is encrypted by TLS
  • Uses NATS for secure messaging systems and internal requests

Platform

  • Stateless Services + Tenant-Segregated Data + Aurora Serveless PostgreSQL
  • Each platform service is a microservice
  • Containerized, versioned services, APIs
  • Linux container
  • Docker + AWS EKs for orchestration
  • .NET 6 Core
  • Auto-scale + Load-balancer + Automatic recovery
  • Safe platform upgrades

Runtime

  • Multiple Stages + DB per Stage + Per App Compute isolations & scale
  • Aurora serverless PostgreSQL
  • Auto-scale
  • Each App is deployed into separate container
  • Each Stage is isolated, no cross-access
  • Tenant isolation by namespace
  • All apps of the tenant share the DB

Secure-By-Design

  • Sentry capabilities
  • CDN for DDoS
  • Gateway WAF scanning for IP reputations, malicious requests (SQL Injections, etc)
  • Secure API Gateway routing
  • Secure TLS everywhere
  • AWS KMS — data encryption at-rest with per tenant encryption key
  • AWS Secrets management

Enterprise Connectivity

  • Quick and easy setup and configuration
  • Authentication, encryption and tenant isolation
  • Fine-tuned control over what dat is available
  • Highly avalable + Fault-Tolerant with SLAs

SERVICES AND TECHNOLOGIES

MODERN AUTHENTICATION TECHNOLOGIES (OPENID)

What about Application Architecture?

Last, but not least important, how can we manage our application in ODC since we don´t have modules anymore? Since the 4-Layer-canvas(4LC) does not make sense anymore, we need to rethink the way we are creating applications. We need to start thinking in a born native Domain-Driven-Architecture to be able to scale our Enterprise applications in large factories and also be prepared to expand our contexts.

Here is an example of one application (from ODC training) and how this could be reorganized with an ODC mindset.

It’s really important to think about the scenario when we are required to define the best approach.

We can take the Simplified Approach, when we have single sponsors, owner and teams or go to the Distributed Approach if we are required to create proper independence between the lifecycles and ownerships.

A Real Use Case

Here, at Do iT Lean, we have created an internal tool to manage our projects and support the Solution Architects in their daily tasks. This tool was created based on a DDD (Domain Driven Design) concept, but still has elements being implemented within a hybrid architecture.

In O11, we needed to provide this division and organization of the applications and modules.

O11

During the Early Access Program (EAP) we did some exercises using our internal tool and trying to fit our old canvas into the new ODC mindset. When we did this migration, we needed to rethink the concepts and the entire architecture.

This helped understand the benefits and possible challenges that we’ll have when we adopt the new platform. We also saw the need to create a new guide of best practices to follow when we go into these new platform.

Not only for the new projects that we will start soon, but for the oldest ones we are performing now.

ODC

BENEFITS

  • Better abstraction of the concepts
  • Easier maintenance
  • Faster Deploy without messing other applications
  • Clear concepts to everyone
  • Promote a Service-Oriented Architecture

Conclusion

ODC is just the beginning to a new era of low-code development. There are a lot of innovations in this new OutSystems Development Cloud and I am very excited about the features that are planned to go live in the near future. I am sure 2023 will be a very creative year and we have a lot of exciting innovations in the pipeline, keep your eye open for them!

Thanks for reading. I expect you to enjoy it. Please let me know your thoughts. Leave your comments. Give suggestions of topics to the next articles. I would like to hear from you. If you like, please follow my channel, share it. You can contact me via LinkedIn or OutSystems Profile.

Special thanks to Ian Berry, Maria Pereira, André Vieira and Ana Martins

Do iT Lean — OutSystems expertise you can lean on!

--

--

Fábio Fantato (OutSystems MVP)
valantic LCS

Brazilian living in Lisbon | Software Architect @ Do IT Lean | OutSystems MVP | Loves innovation, cinema, technology, cook, sightseeing and books.