Modern Process Orchestration

SAUG Melbourne Conference Nov. 2015

Sascha Wenninger (@sufw)

This presentation is online:

http://slides.BlueT.com.au/saug2015po

About Me

Integration guy

Member of Blue T

SAP Mentor and tweeter

Burger aficionado

Context

MMG

Growing, mid-sized global mining company

Multi-year investment in Enterprise IT systems

Some very important interfaces

Small team: efficiency & skills

Challenges

Balance

Modern vs. Practical
Quality vs. Budget
Solid vs. Nimble

Some Ideas

Innovation Tokens

"Choose Boring Tech"

Boring ≠ Bad

Use new/unproven tech only where it matters

Optimise Globally (Architecture! ☺)

You should really read this!

DevOps

One team.

Dev to improve Ops

Ops Experience to improve Dev

Mappings

Graphical Mapping

  • Drag & Drop
  • "default" choice
  • Looks Simple
Image courtesy of Daniel Graversen
Image courtesy of Jason Scott

However...

  • Gets unwieldy, quickly
  • Not documentable without other tools
  • Context-Hell is always near

XSLT

Portable

Standard language

Used by most middleware systems

Collaboration! :-)

Documentable

Tools: Debug!

Tools: Unit Tests

e.g. using XSpec

  • Define input XML
  • XPath assertions on output, and/or
  • Expected XML output


    
        
            
                
                    USD
                    AUD
                    1.20613
                    M
                    2014-12-10
                
                
                    CAD
                    HKD
                    7.07113562438128
                    ZYFC
                    2014-12-10
                
                ...
            
        
    

            




    
        
            
                USD
                AUD
                1.20613
                M
                2014-12-10
            
            
                USD
                TND
                1.8566
                M
                2014-12-10
            
            ...
        
    

            

Watch a Demo by the creator Jeni T

Tools: StackOverflow

Image courtesy of Geek & Poke

Performance

In most cases a non-issue

Used to be dicey before 7.10

AusPost's "POSLog" interface used only XSLT for 1m+ messages/day

Challenges

Grouping: The Muenchian Method

First Name Last Name Last Name First Name
Marie Curie Becquerel Henri
Henri Becquerel Curie Marie
Pierre Curie Pierre

Basically the GROUP BY clause in SQL...

XSLT 1.0




    
        
        ,

Adapted from template solution by Jeni T.

XSLT 2.0

Makes many things much simpler!

Supported in a limited way from PI 7.31 SP11

Alternative: Java wrapper.

XSLT 2.0



    ...

            

And lots of other improvements...

XSLT 2.0

Now supported in 7.31 and later!

Source Control

Needed a way to address shortcomings of the ESR:

  • conflicts with concurrent edits
  • visibility/blame
  • non-code artefacts (e.g. scripts)
Image courtesy of xkcd

Started simple

Initial learning curve

Discipline required

Be Polite: Pull Requests

Possibilities

Code reviews before merging into master

Offshore development: Only trusted devs have merge rights

Avoid edit conflicts

What's Next?

An SAP tool for Github code review!

Alerting

"Monitoring is Still a Big Issue" - IFG for PI Survey

SAP Standard

Traditional Alert Framework

Since 7.3: also Component-Based Message Alerting & SolMan

Difficult to set up; very sparse documentation

SolMan as central monitor, polls other systems for alerts

Lots of noise & false positives

IFG Survey

25% adoption

Barriers:

  1. 20%: org issues
  2. 15%: lack of skills

MMG's Journey

Alert Framework

CBMA

Custom Solution

Alert Framework

Challenges

Brittle

Noise

Email == Spam

CBMA

Challenges

Brittle

Noise

Email == Spam

More Complex! :-(


                [null]1 message failed for "DEFAULT_ALERTRULE" on "MMG_SAPERP_PRD010" {
"Component": "MMG_SAPERP_PRD010",
"ErrCat": "Application",
"ErrCode": "ABAP.APPLICATION_ERROR",
"ErrLabel": "2000",
"ErrParams": {},
"ErrText": "Application has thrown an exception",
"FromParty": "",
"FromService": "SUNGARD_AVANTGARD_PRD",
"Interface": "AccountingDocumentAvantGardTreasuryJournalBulkCreateRequest_In",
"MonitoringUrl": "http://host:port/sap/bc/gui/sap/its/webgui/SE61_DISPTXT?~transaction=*SXI_SHOW_MESSAGE%20MSGGUID=56D34B27536511E4B7A700000C5922FA",
"MsgId": "56D34B27536511E4B7A700000C5922FA",
"Namespace": "http://mmg.com/p2m/sap_appl",
"RuleId": "d42a9af9fdc53609843f5a1d9f211911",
"Timestamp": "2014-10-14T05:45:54Z",
"ToParty": "",
"ToService": "MMG_SAPERP_PRD010"
}
            

Custom Build!

Aims

Simple

Manual monitoring

Email

Noise

Email

Benefits

Chat

Mobile app & push notifications

Searchable history

Freemium

Initial Design

Challenges

Difficult to keep track

Who watches the watcher?

Design

Benefits

Issue tracking

De-duplication

On-call rosters

Cheap

Eliminated manual monitoring

Gotta Spend 'Em Sometimes!

Try it yourself!

With a simple XSLT to transform CBMA alerts to OpsGenie API messages.

Thank You!


Find this presentation at
http://slides.BlueT.com.au/saug2015po


sascha@BlueT.com.au

+61 403 933 472

@sufw

Blue T Logo