Consultingwerk Continuous Deployment of OpenEdge Applications. Daniël van Doorn Senior Consultant

Similar documents
PDSOE Workspace Management and Organisation. Marko Rüterbories Senior Consultant

Mike Fechner Director

Mike Fechner, Consultingwerk Ltd.

REST in Peace Mastering the JSDO with a Dynamic ABL backend. Mike Fechner, Consultingwerk Ltd.

I m sorry, I haven t a clue. James Palmer Software Developer / Database Administrator

The OpenEdge Application Modernization Framework. Mike Fechner, Director, Consultingwerk Ltd.

REST API Documentation Using OpenAPI (Swagger)

The Backend of OE Mobile in OpenEdge Mike Fechner, Consultingwerk Ltd. PUG Challenge Americas, June 2013

OpenEdge Legacy Application Modernization by Example. Mike Fechner, Consultingwerk Ltd.

ABL Unit Testing Part 1: Test Strategy. Mike Fechner Director

Debugging with OpenEdge Architect An introduction to the IDE s integrated debugger

Integrating the Progress Rollbase Portal into OpenEdge Applications. Mike Fechner, Director, Consultingwerk Ltd.

The OpenEdge Application Modernization Framework. Mike Fechner, Director, Consultingwerk Ltd.

Continuous integration from the ground up

Integrating Progress Rollbase with OpenEdge the REST of the story. Mike Fechner, Director, Consultingwerk Ltd.

Webspeed. I am back. Enhanced WebSpeed

OpenEdge GUI for.net Adoption and Migration Strategies

UPGRADING IMIS NEWLIN

Beginner s guide to continuous integration

OpenEdge Roadmap. Rob Straight Director, OpenEdge Product Management October 25, 2018

Managing Data in an Object World. Mike Fechner, Director, Consultingwerk Ltd.

OpenEdge Architect Template Customization

LEGACY SYSTEMS MODERNIZATION SERVICES.

DEVOPS TRAINING COURSE CONTENT

WinCvs Version 1.1. Users Guide. Don Harper

How To Guide Using and Developing Custom Phases in IKAN ALM

OpenEdge 11 Strategy & Roadmap. Jarmo Nieminen Senior Solution Engineer, Nordics

Liquibase Version Control For Your Schema. Nathan Voxland April 3,

openedge 11.0 Progress OpenEdge

Technology Background Development environment, Skeleton and Libraries

White Paper(Draft) Continuous Integration/Delivery/Deployment in Next Generation Data Integration

USING APPSERVER SUPPORT IN OPENEDGE ARCHITECT

From development to production

Extending JON 2.3 Use cases

TM DevOps Use Case. 2017TechMinfy All Rights Reserved

NetIQ Privileged Account Manager 3.5 includes new features, improves usability and resolves several previous issues.

OpenEdge Management in the Real World. Paul Koufalis President Progresswiz Consulting

CSC 2700: Scientific Computing

Real World Development using OpenEdge Mobile some advanced features. Brian C. Preece Ypsilon Software Ltd

Orchestrating the Continuous Delivery Process

HP-UX Software and Patching Management Using HP Server Automation

This section describes fixed limitations for PowerCenter Connect for Web Services.

TM DevOps Use Case TechMinfy All Rights Reserved

Thomas Pelaia II, Ph.D. XAL Workshop 2012 December 13, 2012 Managed by UT-Battelle for the Department of Energy

Performing an ObserveIT Upgrade Using the Interactive Installer

#jenkinsconf. Managing jenkins with multiple components project. Jenkins User Conference Israel. Presenter Name Ohad Basan

Überraschend mehr Möglichkeiten. Orcas: Continuous Delivery for Databases. A Framework for Continuous Delivery in Database Environments.

ROLLBASE ACCESS TO ABL BUSINESS LOGIC VIA OPENCLIENT

Living with Pacific Application Server for OpenEdge (PAS for OpenEdge) Peter Judge

Polarion 18.2 Enterprise Setup

Chapter 1 - Continuous Delivery and the Jenkins Pipeline

Continuous Delivery for Cloud Native Applications

TM DevOps Use Case. 2017TechMinfy All Rights Reserved

VMware View Upgrade Guide

Effective Team Collaboration with Simulink

Linux System Management with Puppet, Gitlab, and R10k. Scott Nolin, SSEC Technical Computing 22 June 2017

Building a Data-Friendly Platform for a Data- Driven Future

Steps To Create Database Manually In Oracle 10g In Windows

Nicman Group Test Data Management 2.0 Leveraging Copy Data Virtualization Technology in QA for SQuAD. November 2016

How can you manage what you can t see?

Upgrading an ObserveIT One-Click Installation

CONTINUOUS DELIVERY IN THE ORACLE CLOUD

Best practices for OO 10 content structuring

Continuous Delivery of Micro Applications with Jenkins, Docker & Kubernetes at Apollo

CVS for Moodle Developers

Version 11 Release 0 May 31, IBM Contact Optimization Installation Guide IBM

What s Next for OpenEdge

Frequently Asked Questions

JAMS 7.X Getting Started Guide

Why PartnerDirect. Choice, flexibility, simplicity

Roundtable TSMS 10.1B Product Update Bulletin

Expert Oracle GoldenGate

Building an Effective Cloud Operating Model on AWS

Introduction: Manual Testing :

Bitte decken Sie die schraffierte Fläche mit einem Bild ab. Please cover the shaded area with a picture. (24,4 x 7,6 cm)

Upgrading to UrbanCode Deploy 7

Common Database Deployment Gotchas

Websphere Force Uninstall Application Server 7 Linux Installation

Cloud Native Applications. 主讲人 :Capital One 首席工程师 Kevin Hoffman

PhUSE Giuseppe Di Monaco, UCB BioSciences GmbH, Monheim, Germany

JenkinsPipelineUnit. Test your Continuous Delivery Pipeline. Ozan Gunalp - Emmanuel Quincerot

Seven Habits of Highly Effective Jenkins Users

Continuous Integration and Deployment (CI/CD)

Sccm 2012 Manually Remove Package From Distribution Point

@joerg_schad Nightmares of a Container Orchestration System

Ekran System v Program Overview

SBB. Java User Group 27.9 & Tobias Denzler, Philipp Oser

Version Control for PL/SQL

AccuRev Plugin for Crucible Installation and Release Notes

QUESTION: 1 An RSA SecurID tokencode is unique for each successful authentication because

Microservices with Red Hat. JBoss Fuse

Jenkins: A complete solution. From Continuous Integration to Continuous Delivery For HSBC

DevOps and DevSec with

Tips from the Trenches Preventing downtime for the over extended DBA. Andrew Moore Senior Remote DBA Percona Managed Services

Building Event Driven Architectures using OpenEdge CDC Richard Banville, Fellow, OpenEdge Development Dan Mitchell, Principal Sales Engineer

Oracle Applications in a Changing Business World. Legacy Oracle Applications Won't Be Around Forever. Will You?

How we built a highly scalable Machine Learning platform using Apache Mesos

StarTeam File Federation 1.0. User Guide

Common Configuration Management Tasks: How to Do Them with Subversion

Section 2: Developer tools and you. Alex Mariakakis (staff-wide)

Transcription:

Consultingwerk Continuous Deployment of OpenEdge Applications Daniël van Doorn Senior Consultant

Agenda About us Introduction Continuous Deployment Based on a real life case Philosophy / Goals Process Build pipeline Deployment pipeline Deployment per item Tips and best practices 2

Unit Testing ABL Applications 3

http://www.consultingwerk.de/ Consultingwerk Software Services Ltd. Independent IT consulting organization Focusing on OpenEdge and related technology Located in Cologne, Germany, subsidiaries in UK and Romania Customers in Europe, North America, Australia and South Africa Vendor of developer tools and consulting services Specialized in GUI for.net, Angular, OO, Software Architecture, Application Integration Experts in OpenEdge Application Modernization 4

Unit Testing ABL Applications Daniel van Doorn Senior Consultant Started developing Progress in 1997 with version 7. Experience working in several different roles varying from developer / R&D / technical application manager / The DevOps guy to lead architect Spent the last 10 years on R&D and building development factories. 5

Continuous Deployment 6

Continuous Delivery The complete iterative process of Development Version Management Building Quality control Software package ready to deploy at any moment Continuous Deployment Really deploy at any moment Automatic (!) Deploy an environment to an empty system 7

Based on a real life case Starting conditions: Almost no version control (Round table / SVN only trunk) Monolithic application(s) from various periods in the history of OE OpenEdge TTY Linux app, Dynamics, SmartComponent Library, ADM/2, webspeed Manual build manual deployment 300 patches in prod of unknow origin Not always the most elegant solution, but a real/practical solution based on available budgets, etc. 8

Choices and decisions Build in Jenkins with Ant and PCT We need Ant and PCT to deploy on the servers. Platform independent We need the database generation and schema diff upon install Deployment using Jenkins with slaves The OpenEdge webclient executables are deployed by company wide published applications 9

Philosophy The truth is always in SCM for configuration and sources All development / build / deployment properties in one location Commits in must be always done with an issue tracker ID (JIRA, etc) Continuous integration build to give the developer feedback within 5 minutes Nightly builds with more checks, always fresh check-out, invoke unit tests Builds deliver their binaries to a software store / depot From any release to any release (downgrade must be possible) 10

(primary) Goals Easy upgrade process, eliminate manual labour (= bugs) Provable software Predictable software Install from scratch Reduce downtime Reduce TTM Prevent (the need) to access (production) servers 11

12

Prerequisites All items must be under version control Sources DF s Scripts Tools Configuration 13

One configuration file to rule them all The ultimate goal should be to have all configuration for all actions from development to deployment in one properties file. Use java properties format Nicely name your properties Write parsers to use the properties in all used technologies 14

Build pipeline No we don t do that here, there are enough sessions on CD/CI Just produce an archive with the application release The archive should contain: OpenEdge library All configuration needed to deploy and execute Installation tools The DF(s) with the latest DB schema Release bound data Audit information 15

Deployment pipeline Create the deployment jobs with Ant and PCT (Should be just re-using parts from development and build scripts) Download the binaries from the software store Update all databases and both on primary and fail over appservers / webservers, scripts and services in parallel 16

Offline deployment Pre deployment tasks Shutdown Deploy Start up Post deployment tasks Webservers Appservers Webservers Monitor Start Batches Databases Databases Batches Feed back Extract archive, Build temp databases Generate delta DF and Data Determine what to update Appservers Watch dogs Webservers Unix TTY Scripts Configuration Appservers Watch dogs Cleanup Undo 17

Online deployment Pre deployment tasks Shutdown Deploy Appservers Start up Post deployment tasks Monitor Start Batches Databases Batches Feed back Extract archive, Build temp databases Generate delta DF and Data Determine what to update Webservers Unix TTY Scripts Configuration Cleanup Undo 18

Database Deploy using Ant and PCT Build temporary database Use PCT to generate a delta Use own tool to generate delta data Always re-deploy the control scripts for starting / stopping / replication / etc. 19

Database update - Offline strategy For each database in production, build a temp-database With a special.st file to keep it as small as possible. Load the DF s and release bound master data Diff the schema s and the data with the prod instance. Dump the delta Shut down databases Update all the schema of all databases Start up all databases Load the release bound master data changes 20

Database update - Online strategy It s not hard Educate the developers to not delete or change database objects Create a new ticket and leave the deletion for a major release update PCTLoadSchema can handle online schema changes (More to come in OE V12!) (https://knowledgebase.progress.com/articles/article/p79975) 21

Progress libraries Put a date and or hash in the file name (but start with something human readable, to be nice to your colleagues) Enables you to place a new library next to the old one Let old sessions naturally die 22

PAS Appservers Re-deploy all configuration from the properties file Deploy all files part of the application not in the library Put the new library in place Trim appserver agents 23

Classic Appservers / Webspeed brokers Add the new pl. Update configuration files Update ubroker.properties Trim appserver agents 24

Parsing the ubroker.properties file Load the file in a longchar Break up the lines by chr(10) Find the line with [UBroker.AS/WS.&1] Add all lines in the section to a variable Then find the next empty line. Do a replace of the block by the new configuration from the properties file Keep the ident(!) and don t forget the empty line Containing o.a. the PROPATH with the new library 25

Web Client A client consists of three packages: Boot Loader Installer Client Use C:\Users\<User>\Appdata\MyProduct to install the application The only thing going in the company.msi factory is 1.r an icon and shortcut The boot loader starts a new OpenEdge process with the installer 26

Web client II Upon install the release hash is stored in the local history. When the hash differs from the server hash a new version will be downloaded and installed. Check if there is already an instance of the application running for this environment Tip! Put the environment name in the command line parameter We did not want incremental updates And however it s a nice product, we did not have budget for Riverside PDO (http://riverside-software.fr/pdo.html ) 27

UNIX TTY Add the new pl Redeploy the configuration files Redeploy the application start script with new PROPATH 28

The installer checks if the app is already running (Tip always add the environment name to the short cut starting the app) System.Diagnostics.Process:GetProcesses(). 29

Windows service wrapper for never ending processes Windows Service wrapper https://github.com/kohsuke/winsw Executable with start stop install and uninstall options 30

Docker Docker is slowly getting adopted in the OpenEdge world It will be available shortly for PAS appservers Configure the docker image in the build Place image in a software store / depot (i.e. https://hub.docker.com/ ) Moves the configuration from deployment to build 31

Correction programs / conversion programs Just keep those out of the automated deployment. It makes deployment over complicated and almost certainly incremental Create a special correction product to deploy and execute corrections 32

Feedback loop Have something monitor your production. Log files (** / Error / invalid / unable / mismatch / SYSTEM-ERROR ) Database status / replication status Configure it! Set alerts Try to get the errors really down to 0 Ignored errors are worse than no DevOps tool at all 33

How to get there / road map

Tips and best practices Read Java properties in OpenEdge 35

Tips and best practices Create an Ant library with makros Re-use those macros Keep you product build and deployment scripts as small as possible Do not put configuration in an Ant script, put it in the properties file Use TargetProducts csv in property file Use contrib to do a for each over the products Execute all possible items in parallel Do not store passwords or environment data in the properties file Inject those properties during deployment from an alternate source 36

Tips and best practices II Make sure all production like environments have the same architecture Ports / file / folder locations All parts of the deployment pipeline must fully function stand alone If you really must, create a pipeline to deliver some.r s as patch Always clean up patches automatically on deployment(!) Use Windows service wrapper to run the Jenkins slave as a service Use crontabl to run the Jenkins slave on UNIX Not happy with the java process? Only activate the service in time window 37

Tips and best practices III Tag / Name your release with a suffix _unstable / _unstable_nightly _Beta ( Beta version -> SIT system) _RC (Release Candidate -> UAT system) _GA (General Available -> PROD system) (https://en.wikipedia.org/wiki/software_release_life_cycle) Create nodes / slaves in Jenkins and bind build jobs to a specific node Use property expansion, never repeat a property value Parallelize the deployment jobs using jenkinsfile for pipeline Parallelize as much in a job as possible 38

Tips and best practices IV Everything that uses the same DB schema must be in one branch / stream Don t create a dependency hell when everything is based on the same crc Build deploy (combined) products Database package + database tools Framework Client + Installer + Application Client Framework Appserver + Application Appserver + Appserver tools and scripts 39

Tips and best practices V Keep Ant references to OpenEdge tools platform independent Tell Jenkins not to kill all child processes when the job is finished BUILD_ID=dontKillMe 40

Questions 41

Go raibh maith agat Dank u! 非常感谢! Teşekkür ederim! Qatlho! Thank you! Merci beaucoup! Danke! Mulțumesc foarte mult شكرا Grazie mille!! Большое спасибо! ขอบค ณมาก Ευχαριστώ πολύ! 42

43