The Elements of CI/CD

POSTPONED as of 2023 until further notice.

Ship your code with confidence!

Learn how to deliver value to your customers safely, reliably, continuously. For any app, any stack, any scale, deployed anywhere.

Lambros Petrou profile pictureTaught by Lambros Petrou
The CI/CD flywheel

“I built my app. So now, where and how do I deploy it?”

A question many friends and colleagues have asked me over the years. Engineers working in big and small companies alike, all with the same problem; getting their code automatically deployed, safely and reliably, after every code change they make.

Every engineer wants to:
  • build new features and ship them in production as fast as possible
  • test their changes to avoid breaking existing features
  • not having to manually deploy on servers, clouds, and worrying of messing up
  • have a fast development feedback loop, between merging code and seeing if anything breaks
Every company wants to:
  • ship new features to satisfy their customers as fast as possible
  • avoid breaking existing features leading to customer churn
  • provide a safe platform for their engineers to experiment and test new features
  • have a developer-friendly release mechanism to attract the best engineering talent

These are the benefits you get by practicing Continuous Integration (CI) and Continuous Delivery (CD) effectively (see "The CI/CD flywheel" image at the top).

Learning how to CI/CD will give your team a productivity boost. In the long-term, you will have a competitive advantage against competitors that ship slower, break their customers more often, and continuously depend on manual processes.

I personally spent years going through existing tutorials and courses for CI/CD, but after some time I realised that a lot of them are missing the point.

Shallow material fatigue.

Most of the online resources are repetitive, and recycle the same things over and over. How many times do we need to read "whats is CI/CD?", or "top 10 tools for CI".

Courses barely scratch the surface on advanced CI/CD techniques, and mostly focus on Continuous Integration (CI) by showing you how to build your code, run tests, and then deploy to production.

But CI/CD is so much more!

Most courses don't teach.

They show you specific tools, instead of teaching principles. They focus on selling you a single product, instead of teaching you how to use any product of similar purpose. They are specific to your programming language and your tech stack, your deployment platform, and many times even your cloud provider. They are so specific that in the end you don't learn, you just watch and mirror-do.

Ultimately, they give you a fish to eat today, instead of teaching you how to fish forever.

I want you to actually learn, and that's why The Elements of CI/CD is taking a different approach!

What will you learn?

The Elements of CI/CD is a theory-meets-practice learning experience.

Each module is a combination of text, short laser-focused videos, and inline quizzes ensuring that you learn as you go. The concepts and techniques covered are timeless. They are taught in such way to be applicable to any programming language, any stack, any deployment platform.

Finally, the two self-paced workshops will provide hands-on practice to further reinforce your learnings.

Ship, Ship, Ship; but don't ship shit!

The curriculum

Please note that since I am currently still in the process of creating this course, more things will be added, and in rare occasions some things mentioned might not make the cut.

Some of the material that will be covered includes:

  • Concepts and fundamentals of Continuous Integration (CI), Continuous Delivery (CD), and Continuous Deployment (CD)
  • How teams and companies design their CI/CD pipelines and workflows
  • Multiple approval workflows for your application at each stage of the pipeline
  • Integrate monitoring and alerting into your pipelines to revert bugs that slipped into production with automatic rollbacks
  • Data and service dependency isolation between pipeline stages
  • Advanced deployment techniques like stacked waves, OneBox/weighted tiers, blue/green rollouts and more
  • When and how to integrate performance regression detection, service load testing, and security/vulnerability analysis in your pipeline
  • Different approaches to continuous delivery based on application type (mobile app, website, fixed schedule releases)
  • How to keep your application code agnostic to the CI/CD tooling for greater portability and reusability among different platforms
  • How to use observability techniques to investigate and troubleshoot issues that slipped your testing in production
  • ...and many more

In addition to the generally applicable material above there are two 100% hands-on self-paced workshops.

Workshop—The Core pipeline
You will build a fully functional pipeline implementing all the CI/CD essentials. This is called "The Core pipeline" because for many applications, especially small projects, this is all you need.

The Core pipeline diagram
The Core pipeline

Workshop—The Majestic pipeline
You will extend the Core pipeline with many of the advanced techniques taught in the course to accommodate complex application setups. If you want to take your pipeline to the next level, this workshop will show you how, in detail.

The Majestic pipeline diagram
The Majestic pipeline (just a sample)

Who should take the course?

What I observed over the years is that no matter how big or fancy the company someone works for, they can still not know the fundamentals and useful practices on CI/CD.

On one hand, established companies already have systems in-place that take care of building, hopefully testing, and deploying their applications. On the other hand, in some companies CI/CD is a luxury. As a result, many engineers do not learn how to CI/CD.

Are you:
  • a software engineer, developer, or programmer, writing code that gets deployed to real users?
  • a systems/devops engineer, or SRE, that works with CI/CD systems?
  • a business owner, indie hacker, or solopreneur, that wants to ship and iterate fast on an MVP?
  • an engineering manager, or director, that wants to influence your organisation to adopt CI/CD and start shipping features faster, without breaking production all the time?
  • just someone interested in learning CI/CD?

If you answered yes to any of the above, then this course is made for you! Step up, take the course, and boost your career.

Meet your instructor

Hi there 👋 I am Lambros, the creator and instructor of The Elements of CI/CD course.

I am a software engineer by trade, and throughout my career I always gravitated towards working and fiddling with release infrastructure.

During my early years at LOVEFiLM UK (Amazon) we did manual builds of our mobile app for 3 different platforms (Android, iOS, Amazon Fire). Sometimes facing weird inconsistencies with dependencies due to differences in the local environment, and having to do manual testing to catch them.

Later, in the Amazon Profiler team I worked with a variety of environments including serverless deployments on AWS, and multi stage environments deployed in our internal EC2-like system (Apollo). My most exciting CI/CD experience came when we launched the AWS service Amazon CodeGuru Profiler. I was one of the lead engineers designing our architecture on AWS and implementing core parts of our Infrastructure-as-Code automation. We supported gradual rollouts in waves of multiple regions, with multiple staging and production environments, and with all the bells and whistles in regards to testing, canaries in and out of production, automatic rollbacks, and more.

Most recently, in the WhatsApp Dev Infra team, I contributed to the Continuous Integration system for WhatsApp Server, specifically the jobs running on every pull-request, and the ones running continuously on master. We also built FAUSTA, a fully automated system able to detect reliability, privacy, and performance regressions of a code change.

Long story short;

I went from manual releases to fully automated multi-region deployments, made several mistakes along the way, and learnt the hard way why having a high-quality comprehensive CI/CD automation system is such a huge competitive advantage for any team, of any business, of any size.

The Elements of CI/CD is all my years of experience distilled into a nicely packaged learning experience, and I trully hope that you will love it.

I am so happy to be part of your journey in learning how to deliver value to your customers safely, reliably, continuously.

Frequently asked questions

Why should I join the waitlist?

By joining the waitlist you will get occasional updates on the progress of the course creation with some early access sneak peeks.

In addition, once the course is ready you will have the chance to buy using a special discount, just for the subscribers.

I promise no spam, and you can unsubscribe any time.

When is the course going to be ready?

The Elements of CI/CD will be released in 2023, depending on how much content I decide to include. Subscribe to the waitlist using the form above to get notified when it's out, including getting a nice discount 😉

What are the tools used in the workshops?

Even though the material of the course is generic, applicable to any language, any stack, any deployment platform, the workshops need to use actual tools and services. There are tens of CI/CD tools and services, and hundreds of platforms. I will choose a combination of tools where we can implement all the course techniques without needing expensive Enterprise plans, so that you can use the same techniques into your own projects.

I will update this section with the specific tools used later.

Can I request some topic to be covered?

Absolutely, send me an email at [email protected]. However, please keep in mind that just because you requested something it doesn't automatically mean it will be part of the course. I will ultimately decide if it fits within the rest of the course.

Can I contact you?

If you have a question for the course, or something else to say, you can send me an email to [email protected] or message me on Twitter @lambrospetrou.

© 2023-present Lambros Petrou. All rights reserved.