When you see or hear CI/CD spelled out, what’s the first thing that comes into your mind? If it is pipelines and DevOps and tools and YAML scripts and automation of all of these, there is no surprise. In recent years, especially in the Business Central community, CI/CD became synonymous with automating code integration using DevOps. And – let’s make it clear – it’s not wrong. But it’s not the whole story. It’s just one side of this big, important medal, that CI and CD are. Unfortunately, for most of us, it’s also the less important side of it.
The other side, much more important, is development work, practices, and principles. Much more than a set of tools to automate tests and builds, CI/CD is a philosophy, a lifestyle of a development team. Just like using kanban boards doesn’t make you agile, neither does a build pipeline mean you have CI/CD. And just like having kanban will help you be better at agile, the pipelines will help you be better at CI/CD, but if you are not doing CI/CD at every step of your development process, if you are not making CI/CD a part of how you think and act with every line of code you write, then the tools themselves won’t help much.
How much time do you spend on merging and solving merge conflicts? Do you feel that code review of pull requests is frequently taking too much time, and that very often people approve pull requests without really reviewing everything, simply because it would take unreasonable time to do it thoroughly? Do you spend more time figuring out root causes of problems and solving those problems, than developing new features? Do you often wonder if your code is even going to work properly once it’s integrated into the main branch, simply because you spent too much time working detached in the isolated world of your feature branch? Does it happen that you need to integrate work from another person’s unfinished feature branch to make your in-development feature branch work, and then you end up solving the same merge conflicts over and over again?
These are the symptoms of bad development practices. And these are the symptoms that continuous integration philosophy seeks to eliminate. And guess what? There are simple things you can do to eliminate them, and make your development process smooth and streamlined, day in, day out.
This webinar talks about continuous integration and continuous delivery from this other, often overlooked perspective, and puts it into an even more important perspective: AL. How can we, as AL developers, improve our everyday development practices to achieve the goals of CI and CD, and how can we literally translate the philosophy of continuous integration into AL code, every day?
This webinar will be as much about practices and principles, as it will be about code. There will be a lot of code examples to follow, and there will be hands-on practices that you can do on your own time, that will help you adopt continuous integration techniques applied daily by developers in languages like C#, Java, C++ and others, into your daily work as an AL developer.
This webinar is not about building or maintaining pipelines or configuring DevOps.
The webinar will cover the following topics:
- Brief overview of the history of continuous integration and continuous delivery and how they have influenced the advancement of development processes and best practices.
- Inherent problems with doing development on long-running feature branches, and importance of short-lived branches and increased frequency of committing and integrating the code into the main branch.
- Importance of team communication and making code changes obvious and available to everyone while they are being developed, rather than after development is completed.
- Techniques of making work in progress available to other team members without causing conflict or breaking the build.
- Techniques of writing code that’s easier to test and easier to maintain.
- Coding and delivery practices that help you deliver features gradually and in a controlled way, rather than through a big-bang approach.
- Demystifying continuous integration and delivery concepts such as humble objects, feature flags, keystone interfaces, branching by abstraction, dark release, canary release, and putting them into context of AL and Business Central app development.
Who should attend?
AL developers, and AL development team leaders, that are looking for practical ways to improve their development process through industry best practices.
The webinar is organized in two sessions:
|May 17, 2021||Introduction into CI/CD and continuous integration best practices|
This session explains the continuous integration and delivery processes and practices, how they have shaped the best development practices over the past twenty years.
It addresses the importance of short-lived branches as opposed to long-lived branches, and addresses techniques that make short-term branches possible.
From practical AL angle, this session focuses on humble objects, keystone interfaces, branching by abstraction, and techniques of writing code that’s easy to test.
|May 18, 2021||Continuous delivery best practices|
This session focuses on the continuous delivery part both from conceptual and practical aspect. It explains the importance of short feedback loops and controlled release of new features.
Then, it focuses on practical aspects and presents different ways of managing and maintaining feature flags with AL, as well as how to use delivery techniques such as dark releases and canary releases to control the gradual delivery process.
All sessions start at 16:00, Central European Time (UTC+1) and they last around 75 minutes each. They are delivered over Microsoft Teams, they will be recorded and all attendees will receive access to the recordings.
The price for attending this webinar is 250€ + applicable VAT. If you are paying as a company, VAT is not invoiced (EU reverse charge rules apply). If you are paying as a private person, then Croatian VAT is applied at rate of 25%.
All attendees of my previous webinars have 15% discount.