OutSystems Developer Cloud

verschillen met OutSystems 11 (auteur: Paul Reuvers)

inSystems cloud

Eind 2022 heeft OutSystems Project Neo omgedoopt in OutSystems Developer Cloud (verder te noemen ODC). Dit is een platform in de cloud dat Kubernetes, Linux containers en microservers ondersteunt, en is gebaseerd op het fundament van Amazon Web Services (AWS) native cloud services.

In dit artikel ga ik in op een aantal verschillen tussen ODC en OutSystems 11 (verder te noemen OS11). Deze informatie is ook te vinden op de OutSystems site onder trainingen en dan From O11 to OutSystems Developer Cloud. Ongetwijfeld zijn er meer verschillen, maar dit zijn degene waar ik mijn aandacht tot nu toe op heb gericht.

Opmerking: Voor ODC kun je nog geen permanente persoonlijke omgeving aanmaken. Wel kun je het een beperkte tijd uitproberen.

Nieuwe termen

Allereerst wat nieuwe termen die bij ODC zijn geïntroduceerd.

OS11 ODC
Infrastructure Organization In OutSystems 11 wordt dit ook wel factory genoemd.
Environment Stage Gebruikelijke omgevingen/stages zijn, Ontwikkel, Test en Productie.
Module Niet aanwezig Modules bestaat niet in ODC, alleen Web Apps en Libraries.
IT user Organization user Gebruiker met toegang tot het ODC Portal en ODC Studio (IDE).
Site property Setting Settings zijn vergelijkbaar met Site Properties in OS11 en kunnen gemarkeerd worden als Secret.
Version Revision Bij publicatie van een app of library creëert ODC een nieuwe revision. Vorige revisions zijn te openen in ODC Studio en te deployen.

Apps en Libraries

In ODC is het mogelijk om Web Apps en Libraries te maken. Web Apps zijn vergelijkbaar met Reactive Web Modules in OS11. Libraries zijn ongeveer gelijk aan de Service Modules in OS11. Het concept Module bestaat niet meer in ODC, alleen Apps en Libraries.

ODC promote het concept van Library als een “First-class Citizen”. Het geeft je de mogelijkheid om herbruikbare elementen te maken en in te sluiten.

Data

Database Server – In ODC wordt Aurora PostgreSQL gebruikt.

Aggregates – Blijft in principe hetzelfde, alleen de onderliggende database is anders. OutSystems raadt aan om Aggregates in plaats van SQL queries te gebruiken.

SQL Queries – Als je zelf queries schrijft, doet dit dan voor Aurora PostgreSQL (zie migratie “Playbook” van AWS). Hieronder een paar voorbeelden van veel gebruikte queries.

OS11 (SQL Server) ODC (Aurora PostgreSQL)
SELECT SELECT * FROM {Employee} SELECT {Employee}.* FROM {Employee}
INSERT INSERT INTO {Employee}
({Employee}.[Name])
VALUES (“John Smith”)
INSERT INTO {Employee}
([Name])
VALUES (“John Smith”)
UPDATE UPDATE {Employee}
SET {Employee}.[Name] = “John Smith”
WHERE {Employee}.[Id] = 2
UPDATE {Employee}
SET [Name] = “John Smith”
WHERE {Employee}.[Id] = 2
LIKE … WHERE {Employee}.[Name]
LIKE “%John%”
… WHERE caseaccent_normalize( {Employee}.[Name] collate “default” )
LIKE caseaccent_normalize( “%John%” )
TOP/LIMIT SELECT TOP 10 {Employee}.*
FROM {Employee}
SELECT {Employee}.*
FROM {Employee}
LIMIT 10
Concatenate text … WHERE {Employee}.[Name]
= “First” + “Last”
… WHERE {Employee}.[Name] = “First” \|\| “Last”
Random records SELECT {Employee}.*
FROM {Employee}
ORDER BY NEWID()
SELECT {Employee}.*
FROM {Employee}
ORDER BY RANDOM()
Compare Time data types … WHERE {Entity}.[Time] > “11:01:41” … WHERE {Entity}.[Time]::time > “11:01:41”

Static Entities – Afhankelijk van waar de Static Entity is gemaakt, is deze qua gedrag anders. Is de Static Entity gemaakt in een Web App, dan is deze gekoppeld aan een database tabel, soortgelijk in OS11. Als je een Static Entity maakt in een Library dan bestaat de gelinkte database tabel niet. In plaats daarvan fungeert deze als een enumerator. In beide gevallen kun je de Static Entity gebruiken in Aggregates en SQL queries.

Identifiers in Static Entities – In OS11 heb je de mogelijkheid om Auto Number te gebruiken. Dit is niet beschikbaar in ODC. Nu moet je een Identifier-waarde specificeren wanneer je een Static Entity maakt. ODC Studio wijst automatisch een ID toe die je desgewenst kunt aanpassen. Deze manier voorkomt mogelijke problemen met data management, waar het hetzelfde record een andere identifier heeft in verschillende omgevingen van OS11.

Gebruikers en Rollen

Isolation – Rollen zijn gedefinieerd in een app en kunnen niet naar Public gewijzigd worden.
Om te controleren of een gebruiker een specifieke rol heeft, of om een rol toe te wijzen of in te trekken, kun je een wrapper maken voor de gewenste functionaliteiten d.m.v. Service Actions. Een aanbevolen manier, om de impact van runtime performance te reduceren, is om een rol met dezelfde naam te maken in meerdere apps, om vervolgens in ODC deze rollen toe te wijzen aan de gebruikers.

Grant Roles – In ODC kun je een nieuwe rol, nadat een rol is aangemaakt in ODC Studio en een app is gepublished, toewijzen aan de gebruikers in ODC Portal. Hiervoor dien je “organization administrator” te zijn. In OS11 werd dit uitgevoerd in de Users app.

Zie ook:
Reuse elements across apps
Secure your app with end-user roles

Portal / consoles

Unified Portal – Als administrator gebruik je ODC Portal om alles te beheren. In OS11 heb je LifeTime om het infrastructuur te beheren, Service Center om een omgeving te beheren en zelfs een Users app voor het standaard gebruikers beheer. Met ODC Portal is alles dus gecentraliseerd. Vanuit hier kun je de diverse omgevingen beheren, alsmede deployments, applicaties, configuraties en de gebruikers met hun permissies. Tevens kun je de applicatie-logs analyseren.

Forge – De Forge is in ODC Portal geïntegreerd. Vanuit hier kan je applicaties vanuit de Forge rechtstreeks installeren in de ontwikkelomgeving.

Gebruikersbeheer

Organization User – ODC heeft 1 type gebruiker, de Organization User; er is geen verschil tussen eind gebruikers en IT gebruikers. Een Organization User heeft bepaalde permissies om toegang te krijgen (of niet) tot het organization account in de ODC Portal alsmede permissies om apps te gebruiken door middel van de toegewezen rollen.

Deployments

Onafhankelijk – Elke app word onafhankelijk gedeployed in ODC. Voordat deployment plaatsvindt, zal de impactanalyse de afhankelijkheden controleren met andere apps, zodat er geen afhankelijkheden missen op de doelomgeving.

Snelheid – Een app deployen in ODC duurt enkele seconden. Wanneer de container met de app gedeployed wordt naar een andere omgeving, wordt de app niet opnieuw gecompileerd wat het proces versnelt.

Gelijktijdigheid – Het is mogelijk om deployments van meerdere apps gelijktijdig te starten. Dit geeft gebruikers de mogelijkheid om hun apps naar de gewenste omgeving te brengen zonder dat er gewacht wordt op andere deployments of dat andere gebruikers hier last van hebben.

Libraries – Het is niet mogelijk om Libraries te deployen. Een library wordt bij een app container gevoegd en deze container wordt dan naar de doel omgeving gedeployed.

Configuration

Settings – In ODC zijn de Site Properties vervangen door Settings. Het is niet mogelijk om de Settings programmeerbaar te wijzigen d.m.v. bijv. een Assign. De waarde van een Setting kan via het ODC Portal gewijzigd worden, in de app configuratie waar deze gedefinieerd is en rechtstreeks via ODC Studio tijdens het ontwikkelen.
Belangrijk om te weten is dat een Setting die gedefinieerd is in een Library, in elke app die deze library gebruikt onafhankelijk gewijzigd kan worden.
Wanneer je Settings met Site Properties vergelijkt dan heeft Settings een additionele eigenschap die Is Secret genoemd wordt. Dit kan je gebruiken om gevoelige informatie te beschermen, zoals bijv. wachtwoorden of API Sleutels.

Monitoring

Logs – Alle Logs zijn gecentraliseerd in ODC, in de Logs sectie binnen de Monitoring tab. Logs kunnen gefilterd worden d.m.v. ernst (errors, warnings of information). Dit biedt de mogelijkheid om alle logs van iedere omgeving op 1 plek te controleren. Filtering op app is mogelijk.

Activities – Activity types (bijv. client actions) worden nu gelogd onder de Activity Tab. Je kunt filteren op activity type en van iedere component de performance controleren en begrijpen.

Share this

Contact

Heb je vragen of opmerkingen? Aarzel niet om contact op te nemen. Dat kan via de algemene contactgegevens, rechtstreeks met de genoemde contactpersoon op een van de detailpagina’s, of via onderstaande knop.

25 maart 2024

APEX World 2024 – ’n impressie

APEX World, iets wat je als Oracle APEX developer wilt meemaken. Dit is voor Ab Rahou de 2e keer dat hij APEX World bezocht, de eerste keer in het KNVB sportcentrum en nu in de Eenhoorn Amersfoort. In deze blog post geeft Ab een impressie van zijn bezoek.

13 december 2024

Start Edwin Vielvoije

Ons Oracle team groeit verder. Begin 2025 start Edwin Vielvoije bij inSystems. Edwin werkt nu ruim 16 jaar met en bij Oracle, met name rond het Oracle Health Insurance platform. Naast zijn technische bagage heeft hij ook diverse andere rollen vervuld binnen Oracle Nederland.

Opdrachten uitgevoerd voor

RAVU
Darling
CB Logistics
Multi Tank Card
VTTI
Gemeente Gouda
Ministerie van Economische Zaken, Landbouw & Innovatie
Arval BNP Paribas
Rabobank
Universiteit Tilburg
VION Food Group
GVB
Greenchoice
Ziggo
ING Bank
Van Iperen Groeispecialisten
Bank Mendes Gans
UBR Uitvoeringsorganisatie Bedrijfsvoering Rijk
Rechtspraak
Rendo
Eneco
Politie
Altran
Oracle University
Syntrus Achmea Real Estate & Finance
DICTU
BMW
Ahold
Cannock
SVB
JUVA
TenneT
ASR Nederland
TU Eindhoven
IBM
RIGD LOXIA
inSystems KLM
Allianz
Telegraaf Media Groep
Gemeente Den Haag
CBR
Nederlandse Spoorwegen
PC Uitvaart
Leaseplan
Thales
VAA ICT Consultancy
Alphabet
Stedin
WVDB Adviseurs Accountants
Gemeente Apeldoorn
MN Services
Fokker
Provincie Utrecht