Тёмный

Continuous Deployment or Continuous Delivery? | When To Release 

Continuous Delivery
Подписаться 205 тыс.
Просмотров 11 тыс.
50% 1

Continuous Delivery or Continuous Deployment? What is the difference and which one should you practise? In Continuous Deployment, we automatically push changes into production on every successful commit. If our Deployment Pipeline says that it is good, then it is pushed into production. This is an extremely effective release strategy for some kinds of system, but not for all. How do you know if it is right for you?
In this episode, Dave Farley explores the differences and helps you to decide which approach is best for you - continuous delivery vs continuous deployment.
--------------------------------------------------------------------------------------
🎓 CD TRAINING COURSES 🎓
If you want to learn Continuous Delivery and DevOps skills, check out Dave Farley's courses ➡️ bit.ly/DFTraining
📚 BOOKS:
📖 Dave’s NEW BOOK "Modern Software Engineering" is now available on
Amazon ➡️ amzn.to/3DwdwT3
In this book, Dave brings together his ideas and proven techniques to describe a durable, coherent and foundational approach to effective software development, for programmers, managers and technical leads, at all levels of experience.
📖 "Continuous Delivery Pipelines" by Dave Farley
paperback ➡️ amzn.to/3gIULlA
ebook version ➡️ leanpub.com/cd-pipelines
📖 The original award-winning "Continuous Delivery" book by Dave Farley and Jez Humble
➡️ amzn.to/2WxRYmxx
📧 JOIN CD MAIL LIST 📧
Keep up to date with the latest discussions, free "How To..." guides, events and online courses.
➡️ bit.ly/MailListCD
--------------------------------------------------------------------------------------
Dave Farley's Blog ➡️ bit.ly/DaveFWebBlog
Dave Farley on Twitter ➡️ bit.ly/DaveFTwitter
Dave Farley on LinkedIn ➡️ bit.ly/DaveF-LI

Наука

Опубликовано:

 

30 июл 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 31   
@alessandrofardin9517
@alessandrofardin9517 3 года назад
We are working on an long run embedded (eco-)system. We introduce new features over the time. We Simply can't deploy our new features on the customer devices. We are in our journey to use and implements a full functional Continuous delivery process. But we now release internally every week, Just 2 years ago we was releaseing every 2 or 3 month. The difference in product quality and team morale Is huge!
@ContinuousDelivery
@ContinuousDelivery 3 года назад
Working so that your software is always working makes a huge difference to teams. Congratulations!😁 😎
@machintrucGaming
@machintrucGaming 3 года назад
I was recommended this channel after your cyberpunk video. I must say this is interesting content
@ContinuousDelivery
@ContinuousDelivery 3 года назад
I am pleased that you like it, thanks.
@lucasterable
@lucasterable 3 года назад
Yeah. CP2077's fiasco might have the positive side effect of increasing awareness toward software development best practices and principles.
@xouat
@xouat 3 года назад
Same here!
@zpinacz
@zpinacz 3 года назад
This is so interesting and well compressed source of knowledge about practicalities in software development. I am enjoying other videos of yours also. The parts around your particular experiences with past projects are especially interesting, please post more of those if possible :)
@gronkymug2590
@gronkymug2590 Год назад
The first principles approach is the best approach :) I like your thinking. I have seen people writing about doing deployments straight to production and running all their tests there. Everything behind smart feature flagging. Some add canary deployment to make sure that adding new feature in its off state did not break anything and if they find it did (on a small number of requests), then they revert the change. Canary deployments seem to be also useful in releasing changes which relate to new version of compatible packages. Same goes for feature flag canary releases. Turn a feature flag ON for small number of users (or just testers at first) and you can test everything in production (in theory). Eventually every system is tested in production anyway, so maybe sometimes there is a little point of having anything more than just one environment (production) to release to. I wonder what is your view on this kind of releases and for what kind of projects they could work the best.
@AnthonySherritt
@AnthonySherritt Год назад
Thanks!
@brattonross
@brattonross 3 года назад
Hi Dave, firstly I just want to say thank you for producing these videos. I got recommended your channel after your Cyberpunk video and I feel like I've stumbled upon something great! Secondly, I was going to leave a comment asking how you would recommend practicing CD when you are not able to automatically deploy to your production environment, but I think this video answered my question. The software that I build at my job is almost always deployed manually because of the constraints of the production environments, which has made it feel like we can't truly practice CD. After watching this video I feel that the answer is to continuously deploy to an environment that we control, and have people from inside the company use it. We have actually already started to take this approach, now we just need to get people to use it.
@ContinuousDelivery
@ContinuousDelivery 3 года назад
First thanks for the thanks😎 Second, yes, I think you have the right answer. I describe Continuous Delivery as working so our software is always releasable, so that means, exactly as you say, keeping, in effect, your own version of a production environment, that you can deliver changes to and evaluate them in. This gives you great feedback on the quality of your work, and so is an extremely valuable tool in driving the development process. The second step gives different feedback, feedback on your product ideas rather than the quality of your work, so the more frequently you can go intro production the better you learn what your customers value (or not) in your products. If for some reason you can't go into production frequently, you can sometimes simulate this second effect by putting the release candidates that you regularly and frequently create (through Continuous Delivery) into some form of "fake production". I did some work with Siemens Healthcare, and there were some regulatory constraints that prevented them from frequently deploying to real live clinical settings, but they were allowed to deploy as often as they liked for non-clincical users, so people using medical scanners for research or as part of a beta program where there weren't real patients being treated. So they did that, they released into a dedicated "mini-prod" envirionment and gathered feedback that way.
@llothar68
@llothar68 3 года назад
Yeah, i do the same, we even created our own color theme and launch icons for the in house deployed application. This and a different config directory default is the only source code difference to the general available software.
@tyronecriss5041
@tyronecriss5041 3 года назад
This information is very helpful outside of programming and development as well. After hearing about your approach to game development, you could honestly plan out a lot of other tasks and or goals in this mindset. Appreciate the content!
@ContinuousDelivery
@ContinuousDelivery 3 года назад
Cool, thanks!
@TokyoXtreme
@TokyoXtreme 3 года назад
I’m looking over your video list like a kid in a candy store. Yum, yum!
@ContinuousDelivery
@ContinuousDelivery 3 года назад
Thanks
@seyofori
@seyofori 3 года назад
Delightful explanation. I'm looking forward to implement this in my own projects. At which point would a UI review occur in the process of we decide to go with continuous deployment? 🤔
@veryrichgoldman
@veryrichgoldman 3 года назад
I would like this ideas but I'll be switching to Azure Certificaiton Channels for now haha
@jimhumelsine9187
@jimhumelsine9187 3 года назад
Can you please restate definitions for Release, Deploy and Delivery? I'm still a bit confused among them, especially the distinction between Deploy and Delivery. I view one as pushing code with new features. I view the other as activating activating those new features, which are pushed in a deactivated mode. The activation mechanism may be something like a Feature Flag. I had viewed Deploy as pushing the code, and Delivery has activating the feature in that code, but now I'm not quite sure. And maybe even your definitions are different that my examples. Additional clarification here would be appreciated. Thanks.
@jimhumelsine9187
@jimhumelsine9187 3 года назад
I consulted your Continuous Delivery book: "This bears repeating. Each check-in should be considered a deployable release. No commit should every be partial, as in, this is the first commit, but it requires additional commits to work. Assume the product will be released without the additional commits. If new or updated behavior is substantial and requires multiple commits, to reduce risk of changing too much, then the earlier commits must be inaccessible code, either because there's no way to access it or a feature flag keeps it deactivated. Code that is not executed can be released." This is from The DevOps Handbook: "In the last five years, there has been confusion around the terms continuous delivery versus continuous deployment-and, indeed, my own thinking and definitions have changed since we wrote the book. Every organization should create their variations, based on what they need. The key thing we should care about is not the form, but the outcomes: deployments should be low-risk, push-button events we can perform on demand. When all developers are working in small batches on trunk, or everyone is working off trunk in short-lived feature branches that get merged to trunk regularly, and when trunk is always kept in a releasable state, and when we can release on demand at the push of a button during normal business hours, we are doing continuous delivery. Developers get fast feedback when they introduce any regression errors, which include defects, performance issues, security issues, usability issues, etc. When these issues are found, they are fixed immediately so that trunk is always deployable. Continuous delivery is the prerequisite for continuous deployment-just as continuous integration is a prerequisite for continuous delivery. Continuous deployment is likely applicable in the context of web services that are delivered online. However, continuous delivery is applicable in almost every context where we desire deployments and releases that have high quality, fast lead times and have highly predictable, low-risk outcomes, including for embedded systems, COTS products, and mobile apps."
@PeterGfader
@PeterGfader 3 года назад
“Deployed”: A technical concern that applies in the domain of the team and means the functionality is introduced in Production. “Released”: A business term that defines functionality being available to an end-user.
@ContinuousDelivery
@ContinuousDelivery 3 года назад
It is confusing. I use the words in the following way: Deploy - The technical act of copying some new software to a host environment and getting it up-and-running and so ready for use. In context with 'Continuous' as in 'C. Deployment' I use it to mean 'automating the decision to release' - If you pipeline passes, you push the change to production with no further actions. Release - Making a new feature available for a user to use. (Note: we can deploy changes, that aren't yet ready for use by a user, when we make them available to a user, with or without a new deployment, we release them - I plan to do a video on strategies for this). Delivery - In context with 'Continuous' I mean this in a broader context. for me 'Continuous Delivery' makes most sense as used in the context of the Agile Manifesto - 'Our highest priority is the early and continuous delivery of valuable software to our users'. So it is about a flow-based (continuous) approach to delivering value. That means that the practices need to achieve CD are the practices needed to maintain that flow of ideas - so it touches on all of SW dev. I know that this is an unusually broad interpretation, but it is the one that makes the most sense to me, and the one that I find helps me to understand what to do if I am stuck trying to help a team to deliver. There is, as far as I know, one place where my language is a bit inconsistent. I tend to talk about working towards "Repeatable, Reliable Releases", if I were willing to drop the alliteration and speak more accurately that should be "Repeatable, Reliable Deployments". I hope that helps a bit?
@PeterGfader
@PeterGfader 3 года назад
@@ContinuousDelivery Here is my 2min take on it. ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-RBQz9QhFfdc.html I appreciate any feedback!
@PeterGfader
@PeterGfader 3 года назад
@@ContinuousDelivery I am also not always very consistent in my language. But I see a large benefit if people understand this distinction, and if teams can actually cope technically with this. "Release On Demand" FTW!
@trblemayker5157
@trblemayker5157 3 года назад
Lol you should do more Cyberpunk criticism videos. Nobodies on youtube are gaining views and so should you.
@TokyoXtreme
@TokyoXtreme 3 года назад
The Cyberpunk video led me to discover this information goldmine.
@ContinuousDelivery
@ContinuousDelivery 3 года назад
Welcome to the channel, I am pleased that you like it.
Далее
Why Pull Requests Are A BAD IDEA
19:13
Просмотров 226 тыс.
How To Build Big Software With Small Agile Teams
16:00
IQ Level: 10000
00:10
Просмотров 2,6 млн
PAINFUL Software Release Cycles Are NO JOKE
21:50
Просмотров 15 тыс.
Continuous Deployment vs. Continuous Delivery
5:35
Просмотров 86 тыс.
How to design a modern CI/CD Pipeline
9:59
Просмотров 107 тыс.
When Test Driven Development Goes Wrong
21:11
Просмотров 72 тыс.
How To Manage Remote Development Teams
16:45
Просмотров 25 тыс.
The WORST Way to Develop Software
15:16
Просмотров 21 тыс.
The Difference Between DevOps and Continuous Delivery
13:32