Wilson Mar bio photo

Wilson Mar

Hello!

Calendar YouTube Github

LinkedIn

Generate feature-rich web and mobile apps using low-code running within a full suite of enterprise-grade utilities and services

US (English)   Norsk (Norwegian)   Español (Spanish)   Français (French)   Deutsch (German)   Italiano   Português   Estonian   اَلْعَرَبِيَّةُ (Egypt Arabic)   Napali   中文 (简体) Chinese (Simplified)   日本語 Japanese   한국어 Korean

Overview

Technical Architecture

Joao Neves, VP of Engineering at Outsystems, says that Outsystems is a “low-code platform for building enterprise-grade web and mobile apps that help you get the job done faster. It generates feature-rich web and mobile apps using low-code running within a full suite of enterprise-grade utilities and services.”

From DEMO by Pedro Oliveira:
outsystems-arch-1152x720.jpgClick for full screen

PROTIP: Outsystems runs web and mobile apps as .NET DLLs on Windows-based servers within their private cloud (as PaaS like Salesforce) or on-prem servers.

App resources are in Outsystem servers (within their cloud or on-prem), so apps are developed using their “Service Studio” IDE installed on Windows, Linux, and macOS laptops. However, “no network, no work”.

Why it’s a big deal

Its “low code” approach enables enterprises to hire less people – not only because Outsystems generates a lot of the code but also because back-end and operational features are already operational.

Types of applications (chosen from the beginnging):

  • “Traditional web apps” for older browsers, to enable slow-moving customer organizations to develop new apps.
  • “Reactive (HTML5) web apps” adapt to different screen sizes and across devices as “PWA” apps.
  • “Mobile iPhone & Android native apps” can be used offline, NOT as a PWA app.

Dev processes

PROTIP: Adopting Outsystems is like inheriting a mature organization where people have settled in what to call things and how to do things a particular way, such as the job roles and when they participate:

outsystems-whowhat-1276x571.png
Click for full screen

Outsystems provides free video classes and written docs describing its processes and tools.

PROTIP: Because a lot of what is necessary is built-in to the tool, less time is wasted arguing about the application lifecycle: what framework to use, what CI/CD to use, naming conventions, what logging, metrics, KPIs, what is a higher priority, etc. Helpful automation bakes in for all users the terminology and methodology for going to production:

outsystems-phases-1724x880.png
Click for full screen

  • DoR = Definition of Ready
  • DoD = Definition of Done
  • Within each sprint: Shape -> Build -> Accept
  • Changesets
  • CRs = Change Requests.

Outsystems CI (Continuous Integration) assumes a process which other shops can take years to instill among developers:

outsystems-ci-1486x548.png
Click for full screen

  • DEV = Development environment (contains mocks)
  • QUA = Quality Assurance environment
  • REG = Regression Testing suite (running in the QUA environment)
  • ACC = Acceptance Testing suite (running in the QUA environment)
  • PRE = Pre-production environment
  • PRD = Production environment

Observability

The Outsystems platform is instrumented, by default, to (asynchronously) collect runtime logs, errors, audit and performance events for monitoring trend analytics visualiation: Users connected, Hits/Hour, Errors/Hour, CPU, Memory, Disk, etc. It’s also used for debugging and troubleshooting.

https://itnext.io/management-of-the-outsystems-platform-useful-or-necessary-c13de3a6c413

People Strategy

PROTIP: Because the language and framework are the same in all shops, new developers can more quickly pick up where the last one left off.

Outsystem customers’ IT workforce consists largely be those who can be near end-users and focus on the business logic and user experience. There is less need for IT management and specialist “Developer Platform builders”.

Outsystems customers don’t have to find experts in bleeding-edge technologies such as AI because Outsystems had the foresight to have already been innovating it.

It’s not just about programming skill sets, to include “citizen developers” who do not program full time.

This also means that the IT workforce can be more diverse and closer to end-users.

Jobs to Roles and Certifications

PROTIP: Jobs posted often align with names of the 17 professional certifications offered by OutSystems (as of OutSystems 11):

$100, 90-minutes exams:

  • Front-end Developer Specialist
  • Web Developer Specialist
  • Mobile Developer Specialist 60 minutes
  • Security Specialist

$200, 120-minute exams:

  • Associate Developer (ODC = OutSystems Developer Cloud)
  • Associate Reactive Developer

  • Architecture Specialist

  • Professional Web Developer
  • Professional Mobile Developer
  • Professional Platform Ops Engineer
  • Professional DevOps Engineer

  • Associate Traditional Web Developer
  • Professional Traditional Web Developer
  • Expert Traditional Web Developer

  • OutSystems Certified Trainer


Outsystems The Company

79% of employees would recommend the company to a friend – high among all employers.

“One of the fastest-growing B2B software companies in the world,”

Among the Forbes top cloud computing employers four years in a row.

Outsystems’ website at outsystems.com lists the company at 55 Thomson Place, 2nd Floor, Boston, MA 02210 Tel: +1 617 837 6840

On https://www.linkedin.com/company/outsystems/ Outsystems lists jobs in Lisbon, Portugal and Bengaluru, Karnataka, India

The company was founded in 2001 by current CEO (Stanford graduate) Paulo Rosado. https://www.outsystems.com/blog/posts/interaction-design-team/

His “The Small Book of the Few Big Rules”

  • We grow, change, and innovate, and give our teams the space to be proactive and creative.
  • We care about growth and development. Vertical career progression is obvious, and we also encourage lateral moves, joining different teams, and mastering new skills.
  • Global colleagues who are as smart, hardworking, and driven as you.
  • Our DNA is disrupting the status quo. It is why our company exists.
  • We “Ask Why” a lot. It helps us connect our individual work to the bigger picture and often uncovers a better, more agile way.

The company was a pioneer in transitioning to working in C# on macOS laptops and Linux servers.

? 1,500 employees in 17 countries.

? 1,200 customers in 60 countries.

? 350 partners in 55 countries.

  • https://indigo.pt/outsystems-low-code

? 350,000 community members.

? 1,000,000 downloads of its free version.

? 1,000,000 apps built with Outsystems.

? 1,000,000,000 end-users of apps built with Outsystems.

? 11,000,000,000 transactions per month.

? 1,000,000,000,000 USD in transactions per year.

? 1,000,000,000,000 USD in revenue per year.

Their Job Board lists jobs worldwide.

Competition

Here we compare the 2019 vs. 2023 ratings by Forrester:

2019 2023
outsystems-forrester-2019.png outsystems-forrester-2023.png

Click on image to enlarge

Outsystems’ own comparison with other low-code platforms:

Mendix.com is a PaaS and more a direct competitor. Gartner has Mendix as a leader in its 2023 Magic Quadrant for “Enterprise Low-Code Application Platforms”.

Developer agency Marutitech explains why they named Outsystems the #1 low-code platform.

Outsystems cautions that

“Many organizations that invest in no-code platforms get push-back from IT and developers due to the inherent limitations enforced by no-code architecture, forcing the IT devs to re-write the applications.”

Outsystems developers can extend app functionality by writing custom code in Java, SQL, C#, CSS, HTML, and JavaScript.

Like Outsystems, Salesforce is a PaaS. But Salesforce is more expensive and very complex.

Microsoft’s PowerApps is a SaaS (browser-based). But PowerApps is more expensive and overly complex.

ServiceNow has gained in favor with Forrester.

Best No Code App Builder


Pricing

Outsystems provides a free developer edition (ODC = OutSystems Developer Cloud), with no time limits to build a single app for up to 100 users. $4,000/month for up to 1000 users. $10,000/month for unlimited users and support.

Mendix charges $1,817/month for a single app in production for up to 10 users. $5,375/month for unlimited apps, $7,825/month for advanced features.

Outsystems charges $1,135/month for up to 3 apps in production.

A 30-day trial edition is available for temporary access to a production environment.

Versions

In documentation, “O11” means Outsystems 11, the paid version.

https://success.outsystems.com/support/release_notes/

  • Microsoft .NET Framework 4.8 (supported since Platform Server 11 – Release Oct.2019 CP2) or Microsoft .NET Framework 4.7.2
  • Microsoft Build Tools 2015
  • .NET Core 3.1 Runtime & Hosting Bundle for Windows

ODC (Outsystems Developer Cloud)

In documentation, ODC = OutSystems Developer Cloud, the free version.

ODC is a single-user environment used to develop and deploy web applications that access data in the cloud.

VIDEO: Using a link in their own URL-shortener service, outsyste.ms/DecodedCC Personal Edition is a free single-developer single application for less than 10 users, on ____.outsystemscloud.com.

Outsystems removes barriers to entry for learning, and creates a large community of developers around the world on their free ODC (Outsystems Developer Cloud) edition.

Toolset

VIDEO: Outsystem’s tooling components:

  • Platform Server is the server component that runs the application stack visible to end-users. It runs on Windows Server, Linux, or macOS. It is a .NET application that manages the application stack and provides services such as authentication, monitoring of logging and security, and user management. It also schedules tasks at specific times from a queue.

    Each environment has its own Platform Server.

    The Platform Server is managed by a web-based application “LifeTime”.

  • LifeTime automates DevOps processes to enable a centralized management of authentication permissions and deploys within environments from development to QA and production —- on the cloud or on-premises. LifeTime performs dependency analysis across environments to generate an impact analysis how a version deployment might affect applications.

    All applications built with OutSystems are automatically instrumented to collect runtime monitoring information. So, with LifeTime, it is possible to monitor the performance of apps and take action even before users notice an application is slow.

  • Experience Builder is a drag-and-drop tool to create prototypes of the user experience (UX) of the application. A prototype is a mock-up of the application’s UI, which can be used to gather feedback from end-users and stakeholders.

  • Service Studio is the drag-and-drop IDE for creating the application stack: the data model, application logic, UI, business process flows, integrations, and security policies. Its AIFusion uses machine learning from all customers to suggest next steps, auto-fill fields, and search for answers to “how-to” questions and other information – within the IDE.

  • Workflow Builder is a drag-and-drop tool used by business experts, analysts, and process owners to define the business logic of their application and create business process flows which can be evolved in Service Studio.

  • Forge is the marketplace of reusable BSD-licensed open-source and proprietary components that can be included in applications built with OutSystems. It is a marketplace of entire applications, components, connectors and templates created by OutSystems and its developer community.

    PROTIP: Using other developers’ components not only minimizes errors and testing efforts, but also saves time otherwise spent arguing about decisions incorporated in the example.

  • Integration Studio is used to create components that integrate with third-party systems and microservices. Developers use Visual Studio to code integration components with a standard .NET C# compiler. The generated DLLs are sent to the Platform Server.

  • Service Center provides an operational console to manage the Platform Server and the deployment of applications to different environments (Dev, QA, Prod). It is used to manage:

    • Batch job scheduling
    • Taking applications offline and online
    • Configuring environment-wide and application-specific properties, web service end-points, and database connections
    • Reverting to a previous version of the application

  • Architecture Dashboard provides an integrated, bird’s eye “heat map” view of technical debt across an organization’s entire portfolio of applications and the interdependencies between modules. It automatically classifies module, then performs code and runtime analysis and recommends solutions for improving the performance, security, architecture, and user experience of applications. It produces detailed reports on what best practices are being violated, their impact, and how to fix them. Its guided refactoring capability identifies opportunities for refactoring and code duplication.


Integration Builder

Surface data from enterprise systems like SAP ERPs and Salesforce CRM, etc. for use accross OutSystems applications.


Service Studio IDE

  1. The 304 MB download for macOS is NOT available via HomeBrew. So you’ll have to manually download, invoke, and drag the 755 MB ServiceStudio.app into your /Applications folder.

    VIDEO REMEMBER: Dismiss the downloader in Finder.

    TODO: A Selenium script to open the IDE and click on the “Sign In” button?

  2. PROTIP: For quick access, in macOS Finder to folder /Applications, drag the ServiceStudio.app to the Dock at the edge.

  3. On initial opening, enter your macOS password and press “Always Allow” to pop-up modal message “Service Studio wants to use your confidential information stored in “Chromium Safe Storage” in your keychain.

  4. Login using your Outsystems account email and password.

    WARNING: The IDE requires constant connection to Outsystems’ server. It was not designed to work offline.

  5. At the upper-right of the IDE is a “tab” to reach each layer. Click on it for the “widgets” and toolbox associated with that layer:

    outsystems-ids-layers-451x100.png
    Click for full screen

    This numbering is my usual order of creation:

    1. Data is where the data model of the application is defined: Entity Diagrams, Database Entitiels, In-memory Structures, Client Variables, Site Properties, Resources (images, documents, etc.), and Extensions (integrations with external systems).

    2. Processes is where the user’s workflow steps are defined.

    3. Logic is where business logic of the application is defined: Client Actions, Server Actions, Integrations to SOAP/APIs, Roles, Exceptions (Security policies)

    4. Interface is where the user interface (UI) of the application is defined: UI Flows, Images, Themes (base look an feel), Scripts (<a target=”_blank” href=”https://learn.outsystems.com/training/journeys/mobile-developer-679/demo-how-to-use-javascript-in-logic/o11/344>”JavaScript</a> and external JavaScript) for client-side logic, and Styles for CSS.

  6. PROTIP: Having several monitors plugged in helps with productivity.

  7. If you want to create iOS mobile apps, get a $100/year Apple Developer Program account

    https://developer.apple.com/programs/enroll/

    PROTIP: Use the Authy app for 2FA.

  8. Sign-in at https://developer.apple.com/account


Data Layer

Physical databases can be defined in the IDE.

Outsystems Entity SQL database
Entity Table
Attributes Columns (Data Types)
Id Primary Key
Reference Attribute Foreign Key
Index Index
Record or Instance Row or Tuple

A sample Entity Schema:
outsystems-entities-606x536.png
Click for full screen

Data types (such as Integer) are automatically inferred from Entity names entered (such as “Id” or “Number”).

Entity actions: Create, Get (Read), Update, Delete (not quite CRUD)

Static Entities are a predefined list of records (like an enumeration). Static means values cannot be changed. Attributes (such as color) can be added.

Databases supported

Each logical database connection is a separate “Extension” for which is a C#z DLL.

Sample apps use Microsoft’s “Northwind” database.

Entity Data and Entities and Data can be bootstraped from an Excel spreadsheets.

Interaction with external databases (over the internet) uses SQL queries to a relational database. Outsystems enables connection to:

  • SQL Server / Azure SQL Database
  • Oracle
  • iDB2
  • MySQL

  • MongoDB
  • PostgreSQL?

Outsystems does not support NoSQL databases such as MongoDB or Cassandra.

  • GraphQL API - have GraphQL schema specification?

    CAUTION: Outsystems does not have native connection with GraphDB (Neo4j). But one can venture to create a connection like the PostGreSQL database using the SDK: https://www.outsystems.com/forums/discussion/14992/the-postgresql-database-connector-by-ardoric/

    • https://www.outsystems.com/forums/discussion/75623/how-to-connect-outsystems-with-neo4j/

Processes


Logic (Business Logic)

In logic flows that run on screen, client, or server are individual “Actions”. Only server actions can be called from other actions and have output parameters.

TUTORIAL on how to create a logic flow.

APIs supported

Please confirm:

  • REST API - have Swagger/OpenAPI specifications?
  • SOAP API - have WSDL specifications?

  • gRPC API - have protobuf specification?
  • Kafka API - have Kafka schema specification?
  • AMQP API - have AMQP schema specifications?
  • MQTT API - have MQTT schema specifications?
  • WebSockets API - have WebSockets schema specification?
  • WebHooks API - have WebHooks schema specification?
  • OData API - have OData schema specifications?

  • XML API - have XML schema specifications?
  • JSON API - have JSON schema specifications?
  • CSV API - have CSV schema specifications?

Interface (UI)

widgets are the building blocks of the user interface (UI) of the application.

An aggregate is a visual element that fetches data from more than one entity - with a SQL query with filters, and sorting.

Widgets

Internals

The C# language is used to generate code.

Outsystems started out with Windows Server and SQL Server, but created C# for transitioning to support Linux and Oracle on macOS laptops.

  1. The IDE is called “Service Studio”.

  2. Publishing involves an XML file sent to the Platform Server. It’s then compiled into DLL files.

    Outsystems creates static native mobile apps which require update within the app store. Many users delay updating their apps.

    Publish mobile apps directly to Aooke App Store and Google Play.

    CAUTION: Outsystems are NOT like apps which can be updated without going through the app store.

  3. The Platform Server is a .NET application.

    Platform Services include: Authentication, Logging, Monitoring, Security, and User Management. Scheduling of tasks at specific times from a queue.

  4. Different environments are stood up without hassle.

    Mobile Application Build Service (MABS) is used to build mobile apps for iPhone and Android phones.

  5. Web and mobile application executables are generated and deployed by the Platform Server component.

    The LifeTime too manages the deployment of applications to different environments (Dev, QA, Prod).

  • https://www.slideshare.net/OutSystemsNeo/introduction-to-outsystems-architecture-aug-07-2021

Architecture Canvas process

  1. Organize
  2. Assemble (rather than Develop or Plan)
  3. Disclose

Keep concepts with different lifecycles apart.

pip install outsystems-pipeline

Logging

Depending on the version:

  • Errors — errors that have occurred in the system or in the applications

  • General — several matters that take place in the system, such as removed items and slow queries that appears

  • Integrations — all incoming and outgoing API calls

  • Mobile Apps — all traffic to and from a mobile App is showed here

  • Environment Health — provides the status of the main functions of the platform

  • Security — specifies the security issues that have occurred

  • Service Actions — gives messages about the REST-based request within the platform

Naming Conventions

  • MTh = Mobile Theme

Alexa app


References

https://www.linkedin.com/pulse/outsystems-security-developer-helped-hacker-tech-lead-lucas-soares-f7u2e/

https://learning.oreilly.com/library/view/rapid-application-development/9781800208759/ BOOK: Rapid Application Development with OutSystems By Ricardo Pereira


More about Azure

This is one of a series about Azure cloud: