SASjs - the DevOps Framework for SAS

Allan Bowe

4GL Apps - about

  • UK Company
  • SAS Subcontractor
  • Focus on SAS Solutions

4GL Apps - Products

  • Data Controller for SAS
  • SASensei ( https://4gl.uk -> win a T-shirt )
  • SASjs

4GL Apps - Solutions

  • SAS App Modernisation (AF/SCL + SAS/Intrnet)
  • SAS App Migration (STP web apps to Viya)
  • SAS App Manifestation & Support

4GL Apps - Customers

  • UK (Department of Work & Pensions, Lloyds List Intelligence)
  • Germany (Der Touristik, Siemens Healthineers)
  • US, Italy (SAS Institute)
  • Sweden (AFA, SKR)
  • Belgium (Allianz)
  • Denmark, Netherlands, and Canada in pipeline

Demo - Data Controller

Challenges with Traditional SAS Projects

  • Scattered Artefacts > Hard to navigate - changes are lost
  • Shared Environment > Edits affect everyone
  • Single Server > Migration Management

🤬🤬🤬 The absence of a standardised framework makes for inconsistent project delivery and on-boarding struggles for new developers

SASjs Workflow

Why Do SAS Developers ❤️ It?

  • Use preferred IDE > VS Code / Sublime / Vim
  • Access to the terminal > Shell scripts, Python
  • Access to local applications > GIT GUI / Doxygen

Why Do SAS Admins ❤️ It?

  • Nothing to install or provision on the SAS server
  • No SSH nor special permissions needed anywhere
  • Nothing to configure, except:
    • Optional: Access to the target folder
    • Optional: Client / Secret (Viya)
    • Optional: SAS 9 setting for encoded passwords

Why Do Project Leads ❤️ It?

  • Faster to on-board new developers
  • Ability to work on multiple features in parallel
  • Complete visibility of what is being developed

SASjs Stats

  • 100% MIT open source
  • Over 55k downloads
  • ~ 20 contributors
  • 35 Repositories

SASjs Framework

  1. An Opinionated Approach - which led to the development of:
  2. A Collection of Tools for SAS Solution Development
    • @sasjs/core - Macro library
    • @sasjs/server - Web Server & REST API for Base SAS
    • @sasjs/vscode-extension - both VS Code and VSCodium
    • @sasjs/cli - CI/CD and Automated Deployment

SASjs Core

  • ~250 macros for application development
  • Documentation + Tests
  • Base SAS, Viya, Metadata, SASjs Server

https://core.sasjs.io

SASjs Server

A Web Server and REST API for Base SAS. Can run in Desktop or Server mode

  • SASjs Drive for content
  • SASjs Studio for code execution
  • SASjs AppStream for deployed Apps
  • Python, R, JS, SAS runtimes / Stored Programs
  • Multi-user auth, LDAP, Permissions, SSL, Load Balancing

https://server.sasjs.io

SASjs VS Code Extension

  • Works on all SAS Platforms
  • Supports VS Codium, Theia
  • Run SAS code & fetch log
  • Sync local/remote dirs
  • Includes sasjs/lint
  • Target Manager

SASjs CLI - Execution

  • sasjs run > Execute arbitrary SAS code
  • sasjs job execute > Run a Job
  • sasjs flow execute > Run a collection of Jobs

SASjs CLI - Deployment

  • sasjs cbd > Compile, Build, & Deploy
    • Compiled Jobs / Services / Tests
    • Freeform Logical Content (syncFolder path)
    • Freeform Physical Content (syncDirectories array)

SASjs CLI - Extra Goodies

  • sasjs lint -> capture SAS coding issues prior to git push
  • sasjs doc -> generate HTML docs for an entire SAS project
  • sasjs test -> deploy self-contained tests for Jobs, Services & Macros

SASjs Framework - Extra Goodies

  • Seed apps to kick start a project (Angular, React, Vanilla JS, Electron, Jobs-only, Docs-only)
  • SASjs/utils library - import features directly into your own products
  • Support Channel - https://matrix.to/#/#sasjs:4gl.io

Allan Bowe, Chief SAS App Officer

📅 https://4gl.uk/book
💬 https://matrix.to/#/@allan:4gl.io
🔗 https://www.linkedin.com/in/allanbowe/