SAP, DevOps && Cx
SAP InsideTrack Timisoara, April 2018
Prerequisites, current state and a look into the foreseeable future

#sitTSR
About me
- Technical Guidance Unit @ msg systems
- organizer and speaker at #itconsapcj, now at it's 6th edition. www.itconferencesap.com
- Interests & Background:
- #CloudNative, #CloudFoundry
- #ABAP, #BOPF, #S4HANA
https://people.sap.com/victor.ionescu
@ivictor88 ( <-- look here for slides )



ionescuv.github.io

Why DevOps?
(A Developer Perspective)
How far into your project lifecycle are developers involved?

https://raygun.com/blog/software-testing/
The Result

Endless Documentation that is:
-
Always Incomplete
-
Never up-to-date

The Result
The Go-Live

a.k.a. High stress-levels, Weekend work & Emergency Conference Calls
An Alternative: Some Guiding Principles

Everybody is responsible for the delivery
- i.e. RUNNING software, in PRODUCTION
- not some KB of source code saved on a disk

Build quality in
- Test-Driven-Development
- Automated feature tests


Automate everything
Reliable software delivery
- Practice the delivery
"If it hurts do it more often"
- Automate the recovery
- Infrastructure
- Configuration
- Tests
- Delivery Pipelines
Scenario 1: Continuous Delivery on the SAP Cloud Platform
What it looks like
- Develop locally
- Push to SCM
- Every change produces a releasable software version
git
CI/CD Pipeline
v.1.1.0

read that again:
Every change produces a releasable software version
"Trust is built in drops and lost in buckets"
DevOps principles..
..in practice





- no silos
- shared responsibility


Test Pyramid in Practice

- unit tests
- integration tests
- contract tests
- e2e tests


The Anatomy of a CD Pipeline
Scenario 2:
A look into the S/4 world
Constraints in a classical ABAP environment..
- No "offline" (or local) development
- heavyweight systems
- Constraints of the software delivery process (transports)
Dev
Prod
Transport Route
local IDE
Netweaver
Netweaver
Test
Netweaver
local IDE
local IDE
Unstable dev. environment, ill-suited for automated test execution (except unit test)
rigid software delivery
no rollback
snowflake environments
Stage?
on-the-fly environment creation not feasible
But newer solutions bring other opportunities

..and momentum is slowly rising..

One potential approach, many open questions...
Dev
Test
git
pull
static code check
unit tests / int. tests
deploy to staging
release
Staging
ABAP container
Transport Route
Netweaver
Netweaver
(or ABAP container?)
(or not?)
triggered by?
CI/CD Pipeline
local IDE
Full-stack support
Dev
Test
git
Staging
Netweaver
Netweaver
CI/CD Pipeline
local IDE
local IDE
(UI5)
ABAP & UI5 resources
end-to-end tests on the UI

Hybrid Scenarios
Given..
- S/4HANA On Premise
- Side-by-Side Extensions on SAP Cloud Platform

Netweaver
S/4HANA OnPremise
SAP Cloud Platform
Side-by-Side
Extensions
.. How is Cx still achievable?
CTS+ and MTAs
- OnPrem - Cloud "binding"
- MTAs attached to TRs
- CTS+ handles deployment

Netweaver
S/4HANA OnPremise
SAP Cloud Platform
Side-by-Side
Extensions

Transport:
- ABAP
- UI5
- MTAs

> ctsattach -a MTA -f archive.mtar -sid DEV


Prod
Clustered transports
Test
Test
Prod

Dev
Dev
Netweaver
Netweaver
Netweaver
SCP sub-account
SCP sub-account
SCP sub-account
DEV cluster
TEST cluster
PROD cluster
cCTS
Further reading: open SAP Course
"Cloud Native Operations"


ABAP
MTA

Conclusion
- Internalize the Principles



2. Apply them to your context
3. Find the right tools to enable you
Further Reading
- SAP CI/CD Best Practices / Tutorial:
https://www.sap.com/germany/developer/tutorials/ci-best-practices-intro.html
- openSAP: Cloud-Native Operations
https://open.sap.com/courses/cp4
- SAP S/4 SDK Delivery Pipeline:
https://github.com/SAP/cloud-s4-sdk-pipeline
- abapGit:
https://github.com/larshp/abapGit
- Continuous Integration in ABAP:
https://blogs.sap.com/2017/11/11/continuous-integration-in-abap-using-jenkins/
Applying DevOps principles in SAP environments
By Victor Ionescu
Applying DevOps principles in SAP environments
- 3,111