Using abapGit and containers to extend CI/CD workflows in SAP landscapes
There’s a lot of buzz about using abapGit to enable truly distributed ABAP development. We assess its potential for DevOps in SAP environments.
If you were at any of this year’s TechEds in Las Vegas, Barcelona or Bangalore, you’ll probably have noticed the excitement around abapGit, a new open-source tool has the potential to change the way we develop in ABAP.
Originally created by Lars Hvam and his colleagues, it’s now an open-source project available on GitHub, abapGit offers something many in the SAP world have been longing for: the ability for developers to work in parallel on the ABAP code base without the need for multiple—read ‘expensive and complicated’—development tracks to avoid conflicts.
At Basis Technologies we welcome any tool that brings more speed, quality and flexibility to SAP development so we’ve recently been looking at what abapGit can do. I talk about our experience in a pair of new webinars entitled ‘Extending CI/CD Workflows in SAP Landscapes’. The first part, An Introduction to Containers and Distributed Development, introduces abapGit and container technology and explains how they could fit in an SAP development workflow. The title of part two, ‘A Live abapGit-based Workflow Demonstration’, pretty much speaks for itself. You can watch both these webinars on demand but I’ve summarized the main points in the rest of this post in case you don’t have time right now.
Distributed development is becoming the norm in a world where speed counts for everything
The business world moves ever faster, meaning developers must keep up with constant demand for software change to meet new customer needs.
That’s the driving principle behind the move to DevOps and continuous integration/continuous delivery (CI/CD) models—in which code is written, reviewed, tested and released in a continuous stream of updates.
To make that happen outside of SAP, developers author their changes in a local development environment, then merge the new code back into a central code repository. This distributed development model is now standard in environments like .Net, C# and Java, where a wealth of open source tools enable rapid code delivery with automated testing and conflict resolution.
While all this has been happening in the non-SAP world, SAP has lagged behind. ABAP teams still work together in the same monolithic code base, making true distributed development impossible (until now).
Many teams have tried to get around this by implementing multiple development tracks – the common ‘N+N’ scenario – but as every experienced SAP professional knows, this comes with its own (not insignificant) challenges. Developers working in parallel development tracks still have to wrestle with conflicts, overwrites, sequencing errors and unforeseen dependencies.
Compared with non-SAP delivery pipelines, N+N development in SAP remains relatively complex and limiting, even when using automated change orchestration and testing tools like ActiveControl and Testimony from Basis Technologies, which resolve most of the issues that slow down change in multi-track landscapes.
Enter abapGit and local development
abapGit on the other hand, offers up a new SAP development paradigm. It’s essentially a tool that allows ABAP developers to take advantage of Git, a powerful open-source version control system. abapGit allows developers to work completely independently by ‘pulling’ an individual copy of the current ABAP code base into a local development environment. Every feature or bug fix can be coded in a different local copy of that master code base, known as a ‘branch’. Changes are ‘committed’ back into the main code repository so that others can see and review them, and then ‘merged’ into the master code base when complete and approved.
Branches ensure that different developments don’t conflict and that any version of the code from any point in time can easily be retrieved. Want to see the system as it was before the last two features were added? No problem – just pull the relevant branch down to your local development environment.
It’s really a very different way of working with a lot of new things to think about, so we get into a lot more detail in the webinar recordings.
abapGit also requires a Git host platform, like GitHub or BitBucket (we use BitBucket, because it integrates well with our JIRA agile project management tool). The host takes care of operations like peer reviews, approvals, merges and conflict resolution, ensuring that any failed changes are rejected and only approved code is merged back into the master code base.
In short, developers can work faster because they work independently at their own pace, and the Git host ensures nothing gets merged back in that could break the system.
Making life easier with containers
You may be wondering how each ABAP developer could run a local copy of the main SAP code base. Isn’t that just the same as setting up an N+N landscape? Well, that’s where another new technology—containers—comes in. Containers are a way to run multiple different applications in lightweight isolated environments that use a shared operating system. Containers are quick to create – they can be built from standard images – and just as easy to destroy when you no longer need them. That means you could run a full version of, say, ECC on a personal laptop and maintain the code base locally.
Docker is the most popular container platform, and we’ve used it to provision a containerized version of an SAP box for individual developers to run on their own laptops. It only needs around 40GB of disk space and starts up in 3-4 minutes, so it’s perfectly feasible to run one on either a local laptop or small AWS instance.
Containerization opens up a lot of really interesting possibilities. It has great potential in QA for example, where an image of an ‘ideal’ test environment could be created and spun up as required for teams to ‘shift left’ and run more comprehensive tests at an earlier stage in the delivery lifecycle.
Should we start using abapGit and containers today?
Our initial investigation into using abapGit with BitBucket and Docker to enable distributed development for our main ActiveControl product has been positive so far. Not everything can be done in abapGit - it doesn’t support every SAP object, for example, and can’t currently manage configuration - but it does make development much more efficient, and a lot less costly.
However, there are important caveats to bear in mind. Git-enabled ABAP development is still a very new approach, best suited to organizations that are already confidently using distributed development elsewhere in their operations. Even then, we would recommend an exploratory approach at first, to really get a handle on the capabilities of abapGit and containers, and the new workflows and processes they enable.
Secondly, it’s important to stress that Git-enabled development does not equal DevOps for SAP. To bring the full potential of continuous integration and continuous delivery to SAP, additional tools are needed to orchestrate change and automate testing across the rest of the change delivery process.
You’ll need a way to orchestrate code developed with abapGit, code written elsewhere, and configuration changes. You might even still have an N+1 or N+2 setup for major projects. All these changes must be aligned, properly sequenced and safely deployed into QA, pre-production and production systems at the appropriate time—and that’s where SAP-specific tools like ActiveControl and Testimony come in. By automating transport deployments and enabling full regression testing, they greatly accelerate and de-risk change in SAP environments. (We discuss all this in more detail in the webinars, too.)
In summary, our experience suggests that abapGit and containers hold a lot of potential for extending CI/CD workflows in SAP, accelerating development and making SAP teams more responsive to the ever-changing needs of the business. But it’s still early days, and we’ll be interested to see how SAP customers embrace these new technologies and the results they’ll deliver.
Find out more – watch our abapGit and containers webinar
To get a deeper insight into the potential for Git-enabled development in SAP, watch our on-demand webinars, Extending CI/CD Workflows in SAP Landscapes: An Introduction to Containers and Distributed Development and Extending CI/CD workflows in SAP landscapes: A Live abapGit-based Workflow Demonstration.
Alternatively, get in touch to discuss how DevOps automation could be combined with tools like abapGit in your SAP environments.