CINXE.COM

Continuous Delivery - InfoQ

<!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml"> <head> <!-- Google Optimize Anti-flicker snippet (recommended) --> <style>.async-hide { opacity: 0 !important} </style> <style>.promo{background:#222528;position:fixed;z-index:1001!important;left:0;top:0;right:0;max-height:48px;min-height:48px;padding-top:0!important;padding-bottom:0!important}.promo,.promo p{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.promo p{font-size:.8125rem;line-height:1rem;color:#fff;margin-bottom:0;margin-top:0;margin:0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;font-weight:700}@media only screen and (max-width:650px){.promo p{font-size:.6875rem}}.promo span{overflow:hidden;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}.promo a{color:#fff!important;text-decoration:underline!important}.promo a.btn{background:#d0021b;padding:7px 20px;text-decoration:none!important;font-weight:700;margin-left:10px;margin-right:10px;white-space:nowrap;border-radius:5px}@media only screen and (max-width:650px){.promo a.btn{font-size:.6875rem;padding:7px 10px}}.promo.container{padding-top:8px;padding-bottom:8px}@media only screen and (min-width:1050px){.promo.container{padding-top:0;padding-bottom:0}}.promo .actions{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.promo .actions__left{-ms-flex-preferred-size:100%;flex-basis:100%;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.promo .actions__right{-ms-flex-preferred-size:40px;flex-basis:40px;margin-top:0;margin-bottom:0;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.promo.hidden{display:none}.promo.show{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.promo.show .container__inner{-webkit-box-flex:1;-ms-flex:1;flex:1}.promo.fixed{position:fixed}.promo.show+header.header{margin-top:48px}.header{background:#fff;-webkit-box-shadow:0 1px 0 #dde2e5;box-shadow:0 1px 0 #dde2e5}.header .actions__left,.header__bottom__events{max-width:100%!important;margin:0}.header .header__events-all{margin:0;display:-webkit-box;display:-ms-flexbox;display:flex;position:relative}.header .header__events-all .header__event-slot{-webkit-box-flex:1;-ms-flex:1 100%;flex:1 100%;border-right:1px solid #dde2e5;margin-top:3px;margin-bottom:3px;padding-left:15px;text-align:left;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-right:5px;min-width:300px}.header .header__events-all .header__event-slot:hover{text-decoration:none!important}.header .header__events-all .header__event-slot img{min-width:40px;height:40px}.header .header__events-all .header__event-slot div{margin-left:10px}.header .header__events-all .header__event-slot span{font-weight:700!important;font-size:.75rem;margin-bottom:0!important;margin-top:0;display:block;line-height:1.125rem;text-align:left}.header .header__events-all .header__event-slot p{font-weight:400;font-size:.625rem;line-height:130%!important;color:#495057!important;margin:0}@media only screen and (min-width:1050px){.header .header__events-all .header__event-slot p{font-size:.625rem}}.header .header__events-all .header__event-slot:first-child{padding-left:0}.header .header__events-all .header__event-slot:last-child{padding-right:0;border-right:0}@media only screen and (min-width:1050px){.header__bottom,.header__middle,.header__top{position:relative;white-space:nowrap}}.header__top{padding:10px 0}@media only screen and (min-width:800px){.header__top{padding:5px 0}}.header__bottom{padding:5px 0;z-index:29;max-width:100%}.header__bottom a{font-size:.8125rem}.header__bottom .trending{margin-left:0;margin-right:0}.header__bottom .actions{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.header__bottom .actions__left{max-width:calc(100% + 8px)}@media only screen and (min-width:800px){.header__bottom .actions__left{max-width:calc(100% + 24px)}}.header__bottom .actions__right{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;display:none}@media only screen and (min-width:1050px){.header__bottom .actions__right{display:-webkit-box;display:-ms-flexbox;display:flex}}.header__middle{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}@media only screen and (min-width:1050px){.header__middle{-ms-flex-wrap:nowrap;flex-wrap:nowrap}}.header__top .actions__left{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-line-pack:center;align-content:center}@media only screen and (min-width:1050px){.header__top .actions__right{max-width:430px}}.no-style.header__nav li:nth-child(3){font-weight:700}.no-style.header__nav li:nth-child(3) a{color:#0e5ef1!important}.header__bottom__events::after{background:-webkit-gradient(linear,left top,right top,color-stop(0,rgba(255,255,255,0)),to(#fff));background:linear-gradient(90deg,rgba(255,255,255,0) 0,#fff 100%);content:'';position:absolute;height:60px;right:10px;width:25px}@media only screen and (min-width:1050px){.header__bottom__events::after{display:none}}.contribute-link{font-weight:400;font-size:.6875rem;color:#000!important;position:relative;padding-left:10px}.contribute-link:hover{color:#00791d!important;text-decoration:none!important}.contribute-link::before{content:'';width:1px;height:12px;position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);background:rgba(0,0,0,.1);left:-1px}.my-0{margin-top:0!important;margin-bottom:0!important}.header__desc.my-0{margin-left:0}.header__bottom__events .actions__left{max-width:100%!important;overflow-x:scroll;-ms-overflow-style:none;scrollbar-width:none;display:block;scroll-behavior:smooth;min-width:100%}.header__bottom__events .actions__left::-webkit-scrollbar{display:none}.header__bottom__events .actions__left:-webkit-scrollbar-thumb{background:#fff}.logo{line-height:1rem}.header{position:relative;z-index:41;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.header .input:focus,.header input[type=password]:focus,.header input[type=text]:focus{border:1px solid #00791d}.header a:not(.button):not(.login__action):not(.active){text-decoration:none;color:#222}.header a:not(.button):not(.login__action):not(.active):hover{text-decoration:underline;color:#222}.header__items{display:none;-ms-flex-wrap:wrap;flex-wrap:wrap}@media only screen and (min-width:1050px){.header__items{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.header__items nav{position:relative;background:0 0;padding:0;left:0;top:0;line-height:inherit;display:block;-webkit-box-shadow:none;box-shadow:none;max-width:100%;max-height:80px}}.header__items>div{width:100%;margin-bottom:32px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column nowrap;flex-flow:column nowrap}@media only screen and (min-width:552px){.header__items>div:not(:nth-last-child(-n+2)){margin-bottom:32px}}@media only screen and (min-width:552px) and (max-width:1050px){.header__items>div{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0;-ms-flex-preferred-size:calc(99.7% * 1/2 - (32px - 32px * 1/2));flex-basis:calc(99.7% * 1/2 - (32px - 32px * 1/2));max-width:calc(99.7% * 1/2 - (32px - 32px * 1/2));width:calc(99.7% * 1/2 - (32px - 32px * 1/2))}.header__items>div:nth-child(1n){margin-right:32px;margin-left:0}.header__items>div:last-child{margin-right:0}.header__items>div:nth-child(2n){margin-right:0;margin-left:auto}}@media only screen and (min-width:800px) and (max-width:1050px){.header__items>div{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0;-ms-flex-preferred-size:calc(99.7% * 1/4 - (32px - 32px * 1/4));flex-basis:calc(99.7% * 1/4 - (32px - 32px * 1/4));max-width:calc(99.7% * 1/4 - (32px - 32px * 1/4));width:calc(99.7% * 1/4 - (32px - 32px * 1/4))}.header__items>div:nth-child(1n){margin-right:32px;margin-left:0}.header__items>div:last-child{margin-right:0}.header__items>div:nth-child(4n){margin-right:0;margin-left:auto}}@media only screen and (min-width:1050px){.header__items>div{margin-bottom:0!important;margin-right:0!important;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}.header__items .language__switcher{display:none}.header__items .language__switcher .li-nav.active>a,.header__items .language__switcher>li.active>a{color:#fff!important}.header__items .language__switcher .li-nav.active>a:hover,.header__items .language__switcher>li.active>a:hover{color:#fff!important;background:#0e5ef1}.header__items .language__switcher .li-nav:hover>a,.header__items .language__switcher>li:hover>a{color:#fff}.header+main{display:block;min-height:210px;-webkit-transition:margin .15s ease;transition:margin .15s ease;margin-top:0!important}.header--hide .header+main{margin-top:50px}.header--hide .header__toggle{opacity:0;top:20px;visibility:hidden}.header--hide .header__logo{max-height:0}.header--hide .header__middle,.header--hide .header__top{max-height:0;overflow:hidden;padding-top:0;padding-bottom:0;border-color:transparent}.header--hide .header__bottom .vue-portal-target{top:3px;right:0;bottom:auto;left:auto;position:absolute}.header__middle,.header__top{-webkit-transition:all .15s ease;transition:all .15s ease}.header__middle{border-bottom:1px solid rgba(0,0,0,.1);z-index:33}.header__middle .vue-portal-target{width:100%}@media only screen and (min-width:1050px){.header__middle .vue-portal-target{display:none}}@media only screen and (min-width:1050px){.header__middle{line-height:5.75rem;text-align:left;padding:0;z-index:30}.header__middle .widget__heading{display:none}}.header__top>.actions__left{display:none}@media only screen and (min-width:1050px){.header__top>.actions__left{display:-webkit-box;display:-ms-flexbox;display:flex}}.header__top>.actions__right{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;margin-right:0;margin-top:0;margin-bottom:0;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.header__top>.actions__right .dropdown__holder{width:calc(100vw - 16px);max-height:80vh}@media only screen and (min-width:600px){.header__top>.actions__right .dropdown__holder{width:auto}}.header__top>.actions__right>*{margin:0}.header__top>.actions__right .search{display:none}@media only screen and (min-width:1050px){.header__top>.actions__right>*{display:-webkit-box;display:-ms-flexbox;display:flex;white-space:nowrap}.header__top>.actions__right .search{display:block}}.header__top .user__login{display:block}.header__top .user__login>.button,.header__top .user__login>button{border-top-right-radius:0;border-bottom-right-radius:0}@media only screen and (min-width:1050px){.header__top{position:relative;right:auto;width:100%}}.header__logo{max-width:165px;position:absolute;top:8px;overflow:hidden;-webkit-transition:all .1s ease;transition:all .1s ease;z-index:32;line-height:2.25rem;height:36px;width:100px;margin-left:50px;-ms-flex-preferred-size:190px;flex-basis:190px}@media only screen and (min-width:800px){.header__logo{top:4px}}@media only screen and (min-width:1050px){.header__logo{position:relative;top:0;overflow:visible;margin-right:20px;margin-left:0;line-height:3.125rem;height:50px}.header__logo>*{width:165px}}@media only screen and (min-width:1280px){.header__logo{margin-right:30px}}.header__desc,.header__more>button{text-transform:capitalize;color:#666;letter-spacing:0;font-size:0;font-weight:400;line-height:1.5rem;vertical-align:top;font-smoothing:antialiased;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI Variable","Segoe UI",system-ui,ui-sans-serif,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";-webkit-transition:font-size .15s ease-in-out;transition:font-size .15s ease-in-out}@media only screen and (min-width:1050px){.header__desc,.header__more>button{font-size:.6875rem}}.header__desc{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;position:relative;width:auto}.header__topics{white-space:nowrap;float:right;position:relative}.header__topics *{display:inline-block;vertical-align:top}.header__topics a{font-size:.8125rem}@media only screen and (min-width:1050px){.header__topics{float:none}}.header__more{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;vertical-align:top}.header__more:before{left:-12px}.header__more:after,.header__more:before{content:'';width:1px;height:12px;position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);background:rgba(0,0,0,.1)}.header__more:after{right:-12px}.header__more:hover{cursor:pointer;color:rgba(0,0,0,.75)}.header__user{display:inline-block;vertical-align:top;white-space:nowrap;margin-left:8px}@media only screen and (min-width:1050px){.header__user{margin-left:0}}.header__user>div{display:inline-block;vertical-align:top}.header__user-nav a:not(.button){text-transform:uppercase;font-size:.75rem;font-weight:600}.header__user-nav a:not(.button):not(.active){opacity:.5}.header__user-nav a:not(.button):not(.active):hover{opacity:.75}.header__user-nav a:not(.button):hover{text-decoration:none}.header__user-nav a:not(.button).active{color:#222;cursor:default;text-decoration:none}.header__user-nav a:not(.button):before{margin-right:0}.header__user-nav a:not(.button):not(:last-child){margin-right:16px}@media only screen and (min-width:1050px){.header__user-nav a:not(.button):not(:last-child){margin-right:32px}}@media only screen and (min-width:1050px){.header__user-nav+.header__topics{margin-left:56px}}.header__search{display:none;vertical-align:top;margin-right:0}@media only screen and (min-width:1050px){.header__search{display:inline-block}}.header__search,.header__user{line-height:inherit}.header__nav{border-bottom:1px solid rgba(0,0,0,.1)}@media only screen and (min-width:800px){.header__nav{border-bottom:0}}.header__nav .button{margin-left:0}.header__nav .button__more{margin-right:20px}.header__nav .li-nav,.header__nav>li{-webkit-transition:all .15s ease;transition:all .15s ease}@media only screen and (min-width:1050px){.header__nav .li-nav,.header__nav>li{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle;position:static;border:none;min-height:65px}.header__nav .li-nav:hover.has--subnav .nav .li-nav,.header__nav .li-nav:hover.has--subnav .nav>li,.header__nav>li:hover.has--subnav .nav .li-nav,.header__nav>li:hover.has--subnav .nav>li{white-space:normal}.header__nav .li-nav:hover.has--subnav .nav__subnav,.header__nav>li:hover.has--subnav .nav__subnav{opacity:1;top:100%;visibility:visible;-webkit-transition-delay:.25s;transition-delay:.25s}.header__nav .li-nav:hover.has--subnav .nav__category,.header__nav>li:hover.has--subnav .nav__category{width:100%}.header__nav .li-nav:hover.has--subnav .nav__category:after,.header__nav .li-nav:hover.has--subnav .nav__category:before,.header__nav>li:hover.has--subnav .nav__category:after,.header__nav>li:hover.has--subnav .nav__category:before{-webkit-transition-delay:.25s;transition-delay:.25s;opacity:1}}@media only screen and (min-width:1080px){.header__nav .li-nav:not(:last-child),.header__nav>li:not(:last-child){margin-right:23px;margin-left:23px}}@media only screen and (min-width:1280px){.header__nav .li-nav:not(:last-child),.header__nav>li:not(:last-child){margin-right:23px;margin-left:23px}}@media only screen and (min-width:1338px){.header__nav .li-nav:not(:last-child),.header__nav>li:not(:last-child){margin-right:23px;margin-left:23px}}.header__nav .li-nav>a,.header__nav>li>a{font-size:.875rem;line-height:1.5rem;padding:12px 0;color:#000;display:inline-block;max-width:100%;position:relative;z-index:61;white-space:normal}@media only screen and (min-width:1050px){.header__nav .li-nav>a,.header__nav>li>a{padding:8px 0 0;font-weight:700}}.header__nav .li-nav>a:after,.header__nav .li-nav>a:before,.header__nav>li>a:after,.header__nav>li>a:before{content:'';position:absolute;bottom:-1px;left:50%;width:0;height:0;opacity:0;-webkit-transform:translateX(-50%);transform:translateX(-50%);border-style:solid;border-width:0 5px 5px 5px;-webkit-transition:opacity .15s ease-in-out;transition:opacity .15s ease-in-out;border-color:transparent transparent #fff transparent}.header__nav .li-nav>a:before,.header__nav>li>a:before{left:50%;bottom:0;border-width:0 6px 6px 6px;border-color:transparent transparent #f5f7f8 transparent}@media only screen and (min-width:1050px){.header__nav .li-nav>a,.header__nav>li>a{font-size:1rem}}@media only screen and (min-width:1800px){.header__nav .li-nav>a,.header__nav>li>a{font-size:1.125rem}}.header--open{overflow:hidden}@media only screen and (min-width:600px){.header--open{overflow:visible}}.header--open .content-items{max-height:215px;margin:12px 0 24px}.header--open .search{margin-top:16px;display:block}.header--open .header__toggle:before{z-index:10}.header--open .header__toggle>span:nth-child(1){top:50%;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.header--open .header__toggle>span:nth-child(2){opacity:0}.header--open .header__toggle>span:nth-child(3){top:50%;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.header--open .header__items,.header--open .header__items .language__switcher{display:-webkit-box;display:-ms-flexbox;display:flex}.header--open .header__top{z-index:100;position:absolute;left:0;right:8px;background:#fff}@media only screen and (min-width:800px){.header--open .header__top{right:20px}}.header--open .header__top .search{display:none}.header--open .header__logo{z-index:101}.header--open .header__middle{padding-top:60px}.header--open .header__bottom{display:none}.header--open .header__container{max-height:90vh;overflow-x:hidden;overflow-y:auto}@media only screen and (min-width:1050px){.header--open .header__container{overflow:visible}}.header .subnav{position:absolute;-webkit-box-shadow:0 5px 25px 1px rgba(0,0,0,.15);box-shadow:0 5px 25px 1px rgba(0,0,0,.15);background:#fff;visibility:hidden;line-height:1.75rem;max-width:100%;width:100%;left:0;opacity:0;overflow:hidden;border:1px solid #f5f7f8;border-radius:2px;-webkit-transition:all .15s ease-in-out;transition:all .15s ease-in-out;top:105%;z-index:60;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch}.header .subnav .subnav__categories{-webkit-box-flex:0;-ms-flex:0 1 280px;flex:0 1 280px;padding:24px 0;background:#f5f7f8;margin-right:0!important}.header .subnav .subnav__categories>li{display:block;font-size:.9375rem;padding:2px 48px 2px 24px}.header .subnav .subnav__categories>li a{display:block;font-weight:700}.header .subnav .subnav__categories>li:hover{background:#e1e1e1}.header .subnav .subnav__heading{margin-bottom:20px}.header .subnav .subnav__content{position:relative;-ms-flex-item-align:start;align-self:flex-start;padding:24px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}@media only screen and (min-width:1050px){.header .subnav .subnav__content{padding-left:32px;padding-right:32px;margin:0 auto;-webkit-box-flex:1;-ms-flex:1 1 600px;flex:1 1 600px}}.header .subnav .subnav__content .heading__container{-ms-flex-preferred-size:100%;flex-basis:100%}.header .subnav .subnav__content:before{content:'';position:absolute;left:0;top:0;bottom:-100%;width:1px;background:rgba(0,0,0,.1)}.languagesEdition .active{font-weight:700}.header__more.dropdown:after{content:'';display:inline-block;vertical-align:middle;-ms-flex-item-align:center;-ms-grid-row-align:center;align-self:center;background-repeat:no-repeat;background-position:center;margin-bottom:2px;width:7px;height:7px;-webkit-transition:-webkit-transform .15s ease;transition:-webkit-transform .15s ease;transition:transform .15s ease;transition:transform .15s ease,-webkit-transform .15s ease;background-color:#fff!important;background-size:contain}.header__more.dropdown button{color:#000!important;margin-right:-20px;padding-right:20px;z-index:1000}.header__more.dropdown .dropdown__holder{width:165px}.header__more.dropdown .dropdown__content{padding:13px;padding-top:5px;padding-bottom:5px}.header__more.dropdown .languagesEdition li{border-bottom:1px solid #e6e6e6}.header__more.dropdown .languagesEdition li:last-child{border:0}.logo__data{display:none;color:#666;font-size:.6875rem}@media only screen and (min-width:1050px){.logo__data{display:block;line-height:.8125rem}}.container{padding-left:12px;padding-right:12px;margin:0 auto;min-width:320px;-webkit-transition:padding .15s ease-in-out;transition:padding .15s ease-in-out}@media only screen and (min-width:600px){.container{padding-left:16px;padding-right:16px}}@media only screen and (min-width:800px){.container{padding-left:20px;padding-right:20px}}@media only screen and (min-width:1250px){.container{padding-left:60px;padding-right:60px}}@media only screen and (min-width:1400px){.container{padding-left:20px;padding-right:20px}}.container.white{background:#fff}.container__inner{max-width:1290px;margin:0 auto;-webkit-transition:max-width .15s ease-out;transition:max-width .15s ease-out}.search{display:block;position:relative;z-index:33;width:100%;max-width:100%;margin:0}.search:before{position:absolute;top:50%;right:24px;-webkit-transform:translateY(-50%);transform:translateY(-50%);margin-right:0;z-index:34}.search__bar{display:block;border-radius:2px;position:relative;z-index:33}.search__bar #search{margin-bottom:0;max-width:100%;background:#fff}.search__go{top:50%;right:0;bottom:0;left:auto;position:absolute;-webkit-transform:translateY(-50%);transform:translateY(-50%);z-index:32;-webkit-appearance:none;-moz-appearance:none;appearance:none;width:36px;height:36px;line-height:2.25rem;-webkit-box-shadow:none;box-shadow:none;display:block;background:0 0;border:0;font-size:0}@media only screen and (min-width:600px){.search__go{z-index:35}}.header #search,.search__go:hover{cursor:pointer}.header #search{height:36px;position:relative;max-width:100%;background-color:#f5f7f8!important}@media only screen and (min-width:600px){.header #search{font-size:.8125rem;min-width:165px;max-width:100%;opacity:1}}.header #search:hover{cursor:auto}@media only screen and (min-width:1050px){.header #search{margin-left:auto;border-top-right-radius:0;border-bottom-right-radius:0;border-right:0}.header #search:focus{min-width:215px}}.header #search:focus{cursor:auto}.header #search .field__desc{display:none}.header #searchForm{width:100%;margin-top:8px}.header #searchForm:before{right:8px}@media only screen and (min-width:600px){.header #searchForm{margin-top:16px}}@media only screen and (min-width:1050px){.header #searchForm{margin-top:0}}</style> <script>(function(a,s,y,n,c,h,i,d,e){s.className+=' '+y;h.start=1*new Date; h.end=i=function(){s.className=s.className.replace(RegExp(' ?'+y),'')}; (a[n]=a[n]||[]).hide=h;setTimeout(function(){i();h.end=null},c);h.timeout=c; })(window,document.documentElement,'async-hide','dataLayer',4000, {'GTM-W9GJ5DL':true});</script> <script type="text/javascript"> var loggedIn = false; if (loggedIn) { var userCountryId = ''; } </script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('config', 'G-VMVPD4D2JY'); //CookieControl tool recomendation // Call the default command before gtag.js or Tag Manager runs to // adjust how the tags operate when they run. Modify the defaults // per your business requirements and prior consent granted/denied, e.g.: gtag('consent', 'default', { 'ad_storage': 'denied', 'ad_user_data': 'denied', 'ad_personalization': 'denied', 'analytics_storage': 'denied' }); if((typeof loggedIn != "undefined") && loggedIn){ window.dataLayer.push({'logged_in': 'true'}); } else { window.dataLayer.push({'logged_in': 'false'}); } window.dataLayer.push({'show_queryz': ''}); </script> <!-- Google Tag Manager --> <script> var gtmProfile="GTM-W9GJ5DL"; (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer', gtmProfile);</script> <!-- End Google Tag Manager --> <title>Continuous Delivery - InfoQ</title> <link rel="canonical" href="https://www.infoq.com/continuous_delivery/"/> <link rel="alternate" href="https://www.infoq.com/continuous_delivery/" hreflang="en"/> <link rel="alternate" href="https://www.infoq.com/jp/Continuous_Delivery/" hreflang="ja" /> <link rel="alternate" href="https://www.infoq.com/br/Continuous_Delivery/" hreflang="pt" /> <link rel="alternate" href="https://www.infoq.com/fr/Continuous_Delivery/" hreflang="fr" /> <link rel="alternate" href="https://www.infoq.com/Continuous_Delivery/" hreflang="x-default" /> <meta http-equiv="pragma" content="no-cache" /> <meta http-equiv="cache-control" content="private,no-cache,no-store,must-revalidate" /> <meta http-equiv="expires" content="0" /> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <meta name="copyright" content="&copy; 2006 C4Media" /> <meta name="google-site-verification" content="0qInQx_1WYOeIIbxnh7DnXlw1XOxNgAYakO2k4GhNnY" /> <meta name="msapplication-TileColor" content="#ffffff"/> <meta name="msapplication-TileImage" content="/styles/static/images/logo/logo.jpg"/> <meta property="wb:webmaster" content="3eac1729a8bbe046" /> <meta content="width=device-width,initial-scale=1" name="viewport"> <meta http-equiv="X-UA-Compatible" content="IE=10, IE=edge"> <link rel="stylesheet" type="text/css" media="screen" href="https://cdn.infoq.com/statics_s2_20250213201535/styles/style.css"/> <link rel="stylesheet" type="text/css" media="print" href="https://cdn.infoq.com/statics_s2_20250213201535/styles/print.css"/> <link rel="preload" type="text/css" href="https://cdn.infoq.com/statics_s2_20250213201535/styles/style_en.css" as="style" onload="this.onload=null;this.rel='stylesheet'"> <link rel="preload" href="https://cdn.infoq.com/statics_s2_20250213201535/styles/icons.css" as="style" onload="this.onload=null;this.rel='stylesheet'"> <link rel="preload" type="text/css" media="screen" href="https://cdn.infoq.com/statics_s2_20250213201535/styles/style_extra.css" as="style" onload="this.onload=null;this.rel='stylesheet'"> <noscript> <link rel="stylesheet" type="text/css" href="https://cdn.infoq.com/statics_s2_20250213201535/styles/style_en.css"/> <link rel="stylesheet" href="https://cdn.infoq.com/statics_s2_20250213201535/styles/icons.css"> <link rel="stylesheet" type="text/css" media="screen" href="https://cdn.infoq.com/statics_s2_20250213201535/styles/style_extra.css"/> </noscript> <link rel="stylesheet" type="text/css" href="https://cdn.infoq.com/statics_s2_20250213201535/styles/fonts/font.css"/> <link rel="shortcut icon" href="https://cdn.infoq.com/statics_s2_20250213201535/favicon.ico" type="image/x-icon" /> <link rel="apple-touch-icon" href="https://cdn.infoq.com/statics_s2_20250213201535/apple-touch-icon.png"/> <script type="text/javascript"> var device='desktop'; var InfoQConstants = {}; InfoQConstants.language = 'en'; InfoQConstants.countryCode = ''; InfoQConstants.pageUrl = (typeof window.location != 'undefined' && window.location && typeof window.location.href != 'undefined' && window.location.href) ? window.location.href : "URL_UNAVAILABLE"; InfoQConstants.cet='AlKv2czJ2bo5biaH'; InfoQConstants.userDetectedCountryCode = 'SG'; InfoQConstants.bpadb = 'bFQDdOL5mULx7hUXhswX'; </script> <script type="text/javascript" src="https://cdn.infoq.com/statics_s2_20250213201535/scripts/combinedJs.min.js"></script> <script type="text/javascript"> var JSi18n = JSi18n || {}; // define only if not already defined JSi18n.error='Error'; JSi18n.login_unverifiedAccount='Unverified account'; JSi18n.contentSummary_showPresentations_1=''; JSi18n.contentSummary_showPresentations_2=''; JSi18n.contentSummary_showPresentations_3=''; JSi18n.contentSummary_showInterviews_1=''; JSi18n.contentSummary_showInterviews_2=''; JSi18n.contentSummary_showInterviews_3=''; JSi18n.contentSummary_showMinibooks_1=''; JSi18n.contentSummary_showMinibooks_2=''; JSi18n.login_sendingRequest='Sending request ...'; JSi18n.bookmark_saved='<q>&nbsp;&nbsp;&nbsp;Saved&nbsp;&nbsp;&nbsp;&nbsp;</q>'; JSi18n.bookmark_error='<q style=color:black;>&nbsp;&nbsp;&nbsp;Error&nbsp;&nbsp;&nbsp;&nbsp;</q>'; JSi18n.categoryManagement_showpopup_viewAllLink_viewAllPrefix='View All'; JSi18n.categoryManagement_showpopup_viewAllLink_viewAllSuffix=''; JSi18n.categoryManagement_showpopup_includeExcludeLink_Exclude='Exclude'; JSi18n.categoryManagement_showpopup_includeExcludeLink_Include='Include'; JSi18n.login_invalid_email='Please specify a valid email'; JSi18n.login_email_not_found = 'No user found with that email'; JSi18n.content_datetime_format='MMM dd, yyyy'; // used by frontend JSi18n.FE = { labels: { follow: "Follow", followTopic: "Follow Topic", unfollow: "Unfollow", unfollowTopic: "Unfollow Topic", following: "Following", followers: "Followers", like: "Like", liked: "Liked", authors: "Peers", users : "Users", topics: "Topics", hide: "Hide Item", hidden: "%s was hidden on your profile page.", undo: "Undo", showLess: "Show less", showMore: "Show more", moreAuthors: "And %s more", bookmarked: "Content Bookmarked", unbookmarked: "Content Unbookmarked", characterLimit: "Characters Remaining" } } var usersInPage = JSON.parse('[{\"url\":\"\/profile\/Rafal-Gancarz\",\"followedByCurrentUser\":false,\"id\":\"36538747\",\"ref\":\"author-Rafal-Gancarz\",\"minibio\":\"Principal Architect &amp; Engineer\",\"bio\":\"\",\"followers\":211,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/VGGiv73VTaHCfNhwSlbDjeGIhcJRJsQj.jpeg\",\"name\":\"Rafal Gancarz\"},{\"url\":\"\/profile\/Rags-Srinivas\",\"followedByCurrentUser\":false,\"id\":\"45723890\",\"ref\":\"author-Rags-Srinivas\",\"minibio\":\"\",\"bio\":\"\",\"followers\":265,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/t4nyfgw1THkp4wMZ9EZ59RGJx8Hf9Rk8.jpg\",\"name\":\"Rags Srinivas\"},{\"url\":\"\/profile\/Solomon-Hykes\",\"followedByCurrentUser\":false,\"id\":\"126643698\",\"ref\":\"author-Solomon-Hykes\",\"minibio\":\"Engineer & founder\",\"bio\":\"\",\"followers\":3,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/71a09fed24204b4ce16612068ae6da77.jpeg\",\"name\":\"Solomon Hykes\"},{\"url\":\"\/profile\/Simona-Pencea\",\"followedByCurrentUser\":false,\"id\":\"126660134\",\"ref\":\"author-Simona-Pencea\",\"minibio\":\"\",\"bio\":\"\",\"followers\":0,\"imgSrc\":\"\",\"name\":\"Simona Pencea\"},{\"url\":\"\/profile\/Bryan-Finster\",\"followedByCurrentUser\":false,\"id\":\"126469311\",\"ref\":\"author-Bryan-Finster\",\"minibio\":\"Distinguished Engineer @Defense Unicorns\",\"bio\":\"\",\"followers\":10,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/ed73929d22c59ca3b26a53864da227db.jpg\",\"name\":\"Bryan Finster\"},{\"url\":\"\/profile\/Tom-Wanielista\",\"followedByCurrentUser\":false,\"id\":\"126631114\",\"ref\":\"author-Tom-Wanielista\",\"minibio\":\"\",\"bio\":\"\",\"followers\":0,\"imgSrc\":\"\",\"name\":\"Tom Wanielista\"},{\"url\":\"\/profile\/Graham-Jenson\",\"followedByCurrentUser\":false,\"id\":\"126558686\",\"ref\":\"author-Graham-Jenson\",\"minibio\":\"\",\"bio\":\"\",\"followers\":2,\"imgSrc\":\"\",\"name\":\"Graham Jenson\"},{\"url\":\"\/profile\/Renato-Losio\",\"followedByCurrentUser\":false,\"id\":\"126467140\",\"ref\":\"author-Renato-Losio\",\"minibio\":\"Cloud Expert | AWS Data Hero \",\"bio\":\"\",\"followers\":645,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/ptroF8HdI2vWXm0NDaKeS0JdiPxMOAra.jpg\",\"name\":\"Renato Losio\"},{\"url\":\"\/profile\/Charity-Majors\",\"followedByCurrentUser\":false,\"id\":\"101756406\",\"ref\":\"author-Charity-Majors\",\"minibio\":\"Co-founder and CTO at Honeycomb\",\"bio\":\"\",\"followers\":26,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/UjTPksdmO3480ZJHE08EvFfdzM1bGxUW.jpeg\",\"name\":\"Charity Majors\"},{\"url\":\"\/profile\/Darshan-Shivashankar\",\"followedByCurrentUser\":false,\"id\":\"126627574\",\"ref\":\"author-Darshan-Shivashankar\",\"minibio\":\" Founder and CEO of APIwiz\",\"bio\":\"\",\"followers\":0,\"imgSrc\":\"\",\"name\":\"Darshan Shivashankar\"},{\"url\":\"\/profile\/David-Rant\",\"followedByCurrentUser\":false,\"id\":\"126628366\",\"ref\":\"author-David-Rant\",\"minibio\":\"Engineering Lead at Gearset\",\"bio\":\"\",\"followers\":1,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/52bf5e8863ed893114778d67ebe2d2d2.jpg\",\"name\":\"David Rant\"},{\"url\":\"\/profile\/Daniel-Bryant\",\"followedByCurrentUser\":false,\"id\":\"39485652\",\"ref\":\"author-Daniel-Bryant\",\"minibio\":\"InfoQ News Manager | Building Platforms at Syntasso\",\"bio\":\"\",\"followers\":2593,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/tSe5dczMaSGtRUm18VkTR2tcF4W3SogA.jpg\",\"name\":\"Daniel Bryant\"},{\"url\":\"\/profile\/Chris-Swan\",\"followedByCurrentUser\":false,\"id\":\"63268344\",\"ref\":\"author-Chris-Swan\",\"minibio\":\"Engineer, Atsign\",\"bio\":\"\",\"followers\":1763,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/8PE76nOujWAoCM8yqLn9Hfv2HqW3VlIP.jpg\",\"name\":\"Chris Swan\"},{\"url\":\"\/profile\/Jesse-McCrosky\",\"followedByCurrentUser\":false,\"id\":\"126637484\",\"ref\":\"author-Jesse-McCrosky\",\"minibio\":\"Head of Sustainability & Social Change |Thoughtworks Finland\",\"bio\":\"\",\"followers\":0,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/c72798e67d055b5795b2a7625df0ed5b.jpg\",\"name\":\"Jesse McCrosky\"},{\"url\":\"\/profile\/Jonathan-Allen\",\"followedByCurrentUser\":false,\"id\":\"343314\",\"ref\":\"author-Jonathan-Allen\",\"minibio\":\"Software Architect\",\"bio\":\"\",\"followers\":1731,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/Wk_C09_mzwK23YkTkKMXResJv3LKUN5D.jpg\",\"name\":\"Jonathan Allen\"},{\"url\":\"\/profile\/Alex-Matyushentsev\",\"followedByCurrentUser\":false,\"id\":\"126575729\",\"ref\":\"author-Alex-Matyushentsev\",\"minibio\":\"\",\"bio\":\"\",\"followers\":3,\"imgSrc\":\"\",\"name\":\"Alex Matyushentsev\"},{\"url\":\"\/profile\/Clare-Liguori\",\"followedByCurrentUser\":false,\"id\":\"126555758\",\"ref\":\"author-Clare-Liguori\",\"minibio\":\"Principal Software Engineer at Amazon Web Services\",\"bio\":\"\",\"followers\":3,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/5eb3c61265e71050d68e657468868a56.jpeg\",\"name\":\"Clare Liguori\"},{\"url\":\"\/profile\/Luca-Minudel\",\"followedByCurrentUser\":false,\"id\":\"101764260\",\"ref\":\"author-Luca-Minudel\",\"minibio\":\"\",\"bio\":\"\",\"followers\":9,\"imgSrc\":\"\",\"name\":\"Luca Minudel\"},{\"url\":\"\/profile\/Monica-Beckwith\",\"followedByCurrentUser\":false,\"id\":\"62671158\",\"ref\":\"author-Monica-Beckwith\",\"minibio\":\"\",\"bio\":\"\",\"followers\":1716,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/QhDv7pXEUK1sdLsYArFmnLxecH4rYhAc.jpg\",\"name\":\"Monica Beckwith\"},{\"url\":\"\/profile\/Suhail-Patel\",\"followedByCurrentUser\":false,\"id\":\"125781073\",\"ref\":\"author-Suhail-Patel\",\"minibio\":\"Staff Engineer @Monzo\",\"bio\":\"\",\"followers\":46,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/4f44a7a14a17b523eac0cf95d2735edb.jpg\",\"name\":\"Suhail Patel\"},{\"url\":\"\/profile\/Sonya-Moisset\",\"followedByCurrentUser\":false,\"id\":\"126440623\",\"ref\":\"author-Sonya-Moisset\",\"minibio\":\"\",\"bio\":\"\",\"followers\":1,\"imgSrc\":\"\",\"name\":\"Sonya Moisset\"},{\"url\":\"\/profile\/Dominick-Blue\",\"followedByCurrentUser\":false,\"id\":\"126629716\",\"ref\":\"author-Dominick-Blue\",\"minibio\":\"Senior Site Reliability Engineer\",\"bio\":\"\",\"followers\":4,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/6117b8146bd6a2249fcf4a5e9e70b0cf.jpg\",\"name\":\"Dominick Blue\"},{\"url\":\"\/profile\/No\u00E9mi-V\u00E1nyi\",\"followedByCurrentUser\":false,\"id\":\"126660133\",\"ref\":\"author-No\u00E9mi-V\u00E1nyi\",\"minibio\":\"\",\"bio\":\"\",\"followers\":1,\"imgSrc\":\"\",\"name\":\"No\u00E9mi V\u00E1nyi\"},{\"url\":\"\/profile\/Steef~Jan-Wiggers\",\"followedByCurrentUser\":false,\"id\":\"87551248\",\"ref\":\"author-Steef~Jan-Wiggers\",\"minibio\":\"Cloud Queue Lead Editor\",\"bio\":\"\",\"followers\":698,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/BhZx03k3Hj0pZVXmTzGqItwZxtJ06oIb.jpeg\",\"name\":\"Steef-Jan Wiggers\"},{\"url\":\"\/profile\/Satrajit-Basu\",\"followedByCurrentUser\":false,\"id\":\"126652824\",\"ref\":\"author-Satrajit-Basu\",\"minibio\":\"Chief Architect at TCG Digital\",\"bio\":\"\",\"followers\":2,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/a3788308c37afd1243559bb3430daac4.jpg\",\"name\":\"Satrajit Basu\"},{\"url\":\"\/profile\/Conor-Barber\",\"followedByCurrentUser\":false,\"id\":\"126656621\",\"ref\":\"author-Conor-Barber\",\"minibio\":\"\",\"bio\":\"\",\"followers\":2,\"imgSrc\":\"\",\"name\":\"Conor Barber\"},{\"url\":\"\/profile\/Thomas-Betts\",\"followedByCurrentUser\":false,\"id\":\"80977916\",\"ref\":\"author-Thomas-Betts\",\"minibio\":\"Laureate Application Architect at Blackbaud\",\"bio\":\"\",\"followers\":976,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/pSqI6HrU3k9rmmVjwS34OHG0bOMYiE6a.jpg\",\"name\":\"Thomas Betts\"},{\"url\":\"\/profile\/Sergio-De-Simone\",\"followedByCurrentUser\":false,\"id\":\"72028228\",\"ref\":\"author-Sergio-De-Simone\",\"minibio\":\"\",\"bio\":\"\",\"followers\":628,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/NovciOoQOAYWqYqRQBFo97SuMm0xbUiC.jpg\",\"name\":\"Sergio De Simone\"},{\"url\":\"\/profile\/Nikolaus-Huber\",\"followedByCurrentUser\":false,\"id\":\"126587872\",\"ref\":\"author-Nikolaus-Huber\",\"minibio\":\"Software Architect at Reservix GmbH\",\"bio\":\"\",\"followers\":2,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/e1e726f76b03d8686106e73977f5a014.jpeg\",\"name\":\"Nikolaus Huber\"},{\"url\":\"\/profile\/Vladyslav-Ukis\",\"followedByCurrentUser\":false,\"id\":\"95860478\",\"ref\":\"author-Vladyslav-Ukis\",\"minibio\":\"Head of R&amp;D\",\"bio\":\"\",\"followers\":24,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/MSMMmTcoQwi7dvPVMgUteRAItvmPdUxR.jpg\",\"name\":\"Vladyslav Ukis\"},{\"url\":\"\/profile\/Johan-Janssen\",\"followedByCurrentUser\":false,\"id\":\"126464202\",\"ref\":\"author-Johan-Janssen\",\"minibio\":\"Architect at ASML\",\"bio\":\"\",\"followers\":400,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/Fb4eZ0mtvMf6MhsmBIhsUVueV4xAs2FD.jpg\",\"name\":\"Johan Janssen\"},{\"url\":\"\/profile\/Robert-Krzaczy\u0144ski\",\"followedByCurrentUser\":false,\"id\":\"126582423\",\"ref\":\"author-Robert-Krzaczy\u0144ski\",\"minibio\":\"Software Engineer\",\"bio\":\"\",\"followers\":41,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/gxKcOyTFSnCa5wfyzXEMPeP3UL4D1nwX.jpg\",\"name\":\"Robert Krzaczy\u0144ski\"},{\"url\":\"\/profile\/Stefan-Prodan\",\"followedByCurrentUser\":false,\"id\":\"126463227\",\"ref\":\"author-Stefan-Prodan\",\"minibio\":\"Principal Engineer at Weaveworks\",\"bio\":\"\",\"followers\":3,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/60c796027da91209df3bc9fa851e44ac.jpeg\",\"name\":\"Stefan Prodan\"},{\"url\":\"\/profile\/InfoQ\",\"followedByCurrentUser\":false,\"id\":\"126461259\",\"ref\":\"author-InfoQ\",\"minibio\":\"ACCELERATING THE SOFTWARE SIDE OF HUMAN PROGRESS\",\"bio\":\"\",\"followers\":285,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/3a8e7391f8fe97e0727a8c950c042569.jpg\",\"name\":\"InfoQ\"},{\"url\":\"\/profile\/Karsten-Silz\",\"followedByCurrentUser\":false,\"id\":\"4927376\",\"ref\":\"author-Karsten-Silz\",\"minibio\":\"Full-Stack Java Developer &amp; Contractor\",\"bio\":\"\",\"followers\":306,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/p6zmOdOcqXiRj09iiZNeDZap7f0IglQW.jpg\",\"name\":\"Karsten Silz\"},{\"url\":\"\/profile\/Ben-Linders\",\"followedByCurrentUser\":false,\"id\":\"55454401\",\"ref\":\"author-Ben-Linders\",\"minibio\":\"Trainer \/ Coach \/ Adviser \/ Author \/ Speaker &#64;BenLinders.com\",\"bio\":\"\",\"followers\":668,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/Dwyu3y5agoDZV9jPKwQcwQ6oYv7gVeR4.jpg\",\"name\":\"Ben Linders\"},{\"url\":\"\/profile\/Holly-Cummins\",\"followedByCurrentUser\":false,\"id\":\"114725059\",\"ref\":\"author-Holly-Cummins\",\"minibio\":\"Senior Principal Software Engineer, Red Hat\",\"bio\":\"\",\"followers\":458,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/cRsuGlFgKyGmGfEHvafpMO63CxbrEm22.jpg\",\"name\":\"Holly Cummins\"},{\"url\":\"\/profile\/Craig-Risi\",\"followedByCurrentUser\":false,\"id\":\"126583909\",\"ref\":\"author-Craig-Risi\",\"minibio\":\"Software Architect | Game Designer| Writer | Speaker\",\"bio\":\"\",\"followers\":12,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s2_20250213201535\/images\/profiles\/4eedfa30bc8c34995c3dbb7fcc18bb8e.jpg\",\"name\":\"Craig Risi\"}]'); var topicsInPage = JSON.parse('[{\"followers\":9521,\"url\":\"\/architecture-design\",\"followedByCurrentUser\":false,\"name\":\"Architecture & Design\",\"id\":\"6816\"},{\"followers\":3720,\"url\":\"\/culture-methods\",\"followedByCurrentUser\":false,\"name\":\"Culture & Methods\",\"id\":\"6817\"},{\"followers\":5139,\"url\":\"\/ai-ml-data-eng\",\"followedByCurrentUser\":false,\"name\":\"AI, ML & Data Engineering\",\"id\":\"16690\"},{\"followers\":7326,\"url\":\"\/Net-Core\",\"followedByCurrentUser\":false,\"name\":\".NET Core\",\"id\":\"15683\"},{\"followers\":5012,\"url\":\"\/Java9\",\"followedByCurrentUser\":false,\"name\":\"Java9\",\"id\":\"7097\"},{\"followers\":13363,\"url\":\"\/MachineLearning\",\"followedByCurrentUser\":false,\"name\":\"Machine Learning\",\"id\":\"5449\"},{\"followers\":20665,\"url\":\"\/microservices\",\"followedByCurrentUser\":false,\"name\":\"Microservices\",\"id\":\"15274\"},{\"followers\":1981,\"url\":\"\/Cloud\",\"followedByCurrentUser\":false,\"name\":\"Cloud\",\"id\":\"7451\"},{\"followers\":4741,\"url\":\"\/Devops\",\"followedByCurrentUser\":false,\"name\":\"DevOps\",\"id\":\"6043\"},{\"followers\":11570,\"url\":\"\/reactive-programming\",\"followedByCurrentUser\":false,\"name\":\"Reactive Programming\",\"id\":\"15453\"},{\"followers\":438,\"url\":\"\/Continuous_Delivery\",\"followedByCurrentUser\":false,\"name\":\"Continuous Delivery\",\"id\":\"6399\"},{\"followers\":3800,\"url\":\"\/development\",\"followedByCurrentUser\":false,\"name\":\"Development\",\"id\":\"6815\"}]'); var userContentLikesInPage = []; var userCommentsLikesInPage = []; var currentUserId = 2; </script> <meta name="keywords" content="Continuous Delivery,Continuous_Delivery"/> <meta name="description" content="Continuous delivery tools like Spinaker, Jenkins, DevOps and more."/> <link rel="alternate" type="application/rss+xml" title="RSS" href="https://feed.infoq.com/Continuous_Delivery/"/> <meta name="ifq:pageType" content="CATEGORY_PAGE"/> <script type="text/javascript"> InfoQConstants.pageType = 'CATEGORY_PAGE'; window.isIndexPage = true; </script> <link rel="image_src" href="https://cdn.infoq.com/statics_s2_20250213201535/styles/static/images/logo/logo-big.jpg" /> <meta property="og:image" content="https://cdn.infoq.com/statics_s2_20250213201535/styles/static/images/logo/logo-big.jpg"/> <script type="text/javascript" src="https://cdn.infoq.com/statics_s2_20250213201535/scripts/infoq.js"></script> <script type="text/javascript"> document.addEventListener('DOMContentLoaded', function() { if (!window || !window.infoq) return infoq.init() }) </script> </head> <body > <!-- Google Tag Manager (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-W9GJ5DL" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Google Tag Manager (noscript) --> <div class="intbt"> <a href="/int/bt/" title="bt">BT</a> </div> <script type="text/javascript"> var allCountries = [{"id":3,"name":"Afghanistan"},{"id":244,"name":"Åland"},{"id":6,"name":"Albania"},{"id":61,"name":"Algeria"},{"id":13,"name":"American Samoa"},{"id":1,"name":"Andorra"},{"id":9,"name":"Angola"},{"id":5,"name":"Anguilla"},{"id":11,"name":"Antarctica"},{"id":4,"name":"Antigua and Barbuda"},{"id":12,"name":"Argentina"},{"id":7,"name":"Armenia"},{"id":16,"name":"Aruba"},{"id":15,"name":"Australia"},{"id":14,"name":"Austria"},{"id":17,"name":"Azerbaijan"},{"id":31,"name":"Bahamas"},{"id":24,"name":"Bahrain"},{"id":20,"name":"Bangladesh"},{"id":19,"name":"Barbados"},{"id":35,"name":"Belarus"},{"id":21,"name":"Belgium"},{"id":36,"name":"Belize"},{"id":26,"name":"Benin"},{"id":27,"name":"Bermuda"},{"id":32,"name":"Bhutan"},{"id":29,"name":"Bolivia"},{"id":254,"name":"Bonaire, Sint Eustatius, and Saba"},{"id":18,"name":"Bosnia and Herzegovina"},{"id":34,"name":"Botswana"},{"id":33,"name":"Bouvet Island"},{"id":30,"name":"Brazil"},{"id":104,"name":"British Indian Ocean Territory"},{"id":28,"name":"Brunei Darussalam"},{"id":23,"name":"Bulgaria"},{"id":22,"name":"Burkina Faso"},{"id":25,"name":"Burundi"},{"id":114,"name":"Cambodia"},{"id":46,"name":"Cameroon"},{"id":37,"name":"Canada"},{"id":52,"name":"Cape Verde"},{"id":121,"name":"Cayman Islands"},{"id":40,"name":"Central African Republic"},{"id":207,"name":"Chad"},{"id":45,"name":"Chile"},{"id":47,"name":"China"},{"id":53,"name":"Christmas Island"},{"id":38,"name":"Cocos (Keeling) Islands"},{"id":48,"name":"Colombia"},{"id":116,"name":"Comoros"},{"id":39,"name":"Congo (Democratic Republic)"},{"id":41,"name":"Congo (People\u0027s Republic)"},{"id":44,"name":"Cook Islands"},{"id":49,"name":"Costa Rica"},{"id":43,"name":"Cote D\u0027Ivoire"},{"id":97,"name":"Croatia"},{"id":51,"name":"Cuba"},{"id":253,"name":"Curaçao"},{"id":54,"name":"Cyprus"},{"id":55,"name":"Czech Republic"},{"id":58,"name":"Denmark"},{"id":57,"name":"Djibouti"},{"id":59,"name":"Dominica"},{"id":60,"name":"Dominican Republic"},{"id":213,"name":"East Timor"},{"id":62,"name":"Ecuador"},{"id":64,"name":"Egypt"},{"id":203,"name":"El Salvador"},{"id":87,"name":"Equatorial Guinea"},{"id":66,"name":"Eritrea"},{"id":63,"name":"Estonia"},{"id":68,"name":"Ethiopia"},{"id":72,"name":"Falkland Islands (Malvinas)"},{"id":74,"name":"Faroe Islands"},{"id":71,"name":"Fiji"},{"id":70,"name":"Finland"},{"id":75,"name":"France"},{"id":80,"name":"French Guiana"},{"id":170,"name":"French Polynesia"},{"id":208,"name":"French Southern Territories"},{"id":76,"name":"Gabon"},{"id":84,"name":"Gambia"},{"id":79,"name":"Georgia"},{"id":56,"name":"Germany"},{"id":81,"name":"Ghana"},{"id":82,"name":"Gibraltar"},{"id":88,"name":"Greece"},{"id":83,"name":"Greenland"},{"id":78,"name":"Grenada"},{"id":86,"name":"Guadeloupe"},{"id":91,"name":"Guam"},{"id":90,"name":"Guatemala"},{"id":249,"name":"Guernsey"},{"id":85,"name":"Guinea"},{"id":92,"name":"Guinea-Bissau"},{"id":93,"name":"Guyana"},{"id":98,"name":"Haiti"},{"id":95,"name":"Heard Island and McDonald Islands"},{"id":96,"name":"Honduras"},{"id":94,"name":"Hong Kong"},{"id":99,"name":"Hungary"},{"id":107,"name":"Iceland"},{"id":103,"name":"India"},{"id":100,"name":"Indonesia"},{"id":106,"name":"Iran"},{"id":105,"name":"Iraq"},{"id":101,"name":"Ireland"},{"id":245,"name":"Isle of Man"},{"id":102,"name":"Israel"},{"id":108,"name":"Italy"},{"id":109,"name":"Jamaica"},{"id":111,"name":"Japan"},{"id":250,"name":"Jersey"},{"id":110,"name":"Jordan"},{"id":122,"name":"Kazakhstan"},{"id":112,"name":"Kenya"},{"id":115,"name":"Kiribati"},{"id":243,"name":"Kosovo"},{"id":120,"name":"Kuwait"},{"id":113,"name":"Kyrgyzstan"},{"id":123,"name":"Laos"},{"id":132,"name":"Latvia"},{"id":124,"name":"Lebanon"},{"id":129,"name":"Lesotho"},{"id":128,"name":"Liberia"},{"id":133,"name":"Libya"},{"id":126,"name":"Liechtenstein"},{"id":130,"name":"Lithuania"},{"id":131,"name":"Luxembourg"},{"id":143,"name":"Macau"},{"id":139,"name":"Macedonia"},{"id":137,"name":"Madagascar"},{"id":151,"name":"Malawi"},{"id":153,"name":"Malaysia"},{"id":150,"name":"Maldives"},{"id":140,"name":"Mali"},{"id":148,"name":"Malta"},{"id":138,"name":"Marshall Islands"},{"id":145,"name":"Martinique"},{"id":146,"name":"Mauritania"},{"id":149,"name":"Mauritius"},{"id":238,"name":"Mayotte"},{"id":152,"name":"Mexico"},{"id":73,"name":"Micronesia"},{"id":136,"name":"Moldova"},{"id":135,"name":"Monaco"},{"id":142,"name":"Mongolia"},{"id":246,"name":"Montenegro"},{"id":147,"name":"Montserrat"},{"id":134,"name":"Morocco"},{"id":154,"name":"Mozambique"},{"id":141,"name":"Myanmar"},{"id":155,"name":"Namibia"},{"id":164,"name":"Nauru"},{"id":163,"name":"Nepal"},{"id":161,"name":"Netherlands"},{"id":8,"name":"Netherlands Antilles"},{"id":156,"name":"New Caledonia"},{"id":166,"name":"New Zealand"},{"id":160,"name":"Nicaragua"},{"id":157,"name":"Niger"},{"id":159,"name":"Nigeria"},{"id":165,"name":"Niue"},{"id":158,"name":"Norfolk Island"},{"id":118,"name":"North Korea"},{"id":144,"name":"Northern Mariana Islands"},{"id":162,"name":"Norway"},{"id":167,"name":"Oman"},{"id":173,"name":"Pakistan"},{"id":180,"name":"Palau"},{"id":178,"name":"Palestinian Territory"},{"id":168,"name":"Panama"},{"id":171,"name":"Papua New Guinea"},{"id":181,"name":"Paraguay"},{"id":169,"name":"Peru"},{"id":172,"name":"Philippines"},{"id":176,"name":"Pitcairn"},{"id":174,"name":"Poland"},{"id":179,"name":"Portugal"},{"id":177,"name":"Puerto Rico"},{"id":182,"name":"Qatar"},{"id":183,"name":"Reunion"},{"id":184,"name":"Romania"},{"id":185,"name":"Russian Federation"},{"id":186,"name":"Rwanda"},{"id":193,"name":"Saint Helena"},{"id":117,"name":"Saint Kitts and Nevis"},{"id":125,"name":"Saint Lucia"},{"id":251,"name":"Saint Martin"},{"id":175,"name":"Saint Pierre and Miquelon"},{"id":229,"name":"Saint Vincent and the Grenadines"},{"id":247,"name":"Saint-Barthélemy"},{"id":236,"name":"Samoa"},{"id":198,"name":"San Marino"},{"id":202,"name":"Sao Tome and Principe"},{"id":187,"name":"Saudi Arabia"},{"id":199,"name":"Senegal"},{"id":248,"name":"Serbia"},{"id":189,"name":"Seychelles"},{"id":197,"name":"Sierra Leone"},{"id":192,"name":"Singapore"},{"id":252,"name":"Sint Maarten"},{"id":196,"name":"Slovakia"},{"id":194,"name":"Slovenia"},{"id":188,"name":"Solomon Islands"},{"id":200,"name":"Somalia"},{"id":239,"name":"South Africa"},{"id":89,"name":"South Georgia and the South Sandwich Islands"},{"id":119,"name":"South Korea"},{"id":255,"name":"South Sudan"},{"id":67,"name":"Spain"},{"id":127,"name":"Sri Lanka"},{"id":190,"name":"Sudan"},{"id":201,"name":"Suriname"},{"id":195,"name":"Svalbard and Jan Mayen"},{"id":205,"name":"Swaziland"},{"id":191,"name":"Sweden"},{"id":42,"name":"Switzerland"},{"id":204,"name":"Syria"},{"id":220,"name":"Taiwan"},{"id":211,"name":"Tajikistan"},{"id":221,"name":"Tanzania"},{"id":210,"name":"Thailand"},{"id":209,"name":"Togo"},{"id":212,"name":"Tokelau"},{"id":216,"name":"Tonga"},{"id":218,"name":"Trinidad and Tobago"},{"id":215,"name":"Tunisia"},{"id":217,"name":"Turkey"},{"id":214,"name":"Turkmenistan"},{"id":206,"name":"Turks and Caicos Islands"},{"id":219,"name":"Tuvalu"},{"id":223,"name":"Uganda"},{"id":222,"name":"Ukraine"},{"id":2,"name":"United Arab Emirates"},{"id":77,"name":"United Kingdom"},{"id":224,"name":"United States Minor Outlying Islands"},{"id":226,"name":"Uruguay"},{"id":225,"name":"USA"},{"id":227,"name":"Uzbekistan"},{"id":234,"name":"Vanuatu"},{"id":228,"name":"Vatican City (Holy See)"},{"id":230,"name":"Venezuela"},{"id":233,"name":"Vietnam"},{"id":231,"name":"Virgin Islands (British)"},{"id":232,"name":"Virgin Islands (U.S.)"},{"id":235,"name":"Wallis and Futuna"},{"id":65,"name":"Western Sahara"},{"id":237,"name":"Yemen"},{"id":241,"name":"Zaire"},{"id":240,"name":"Zambia"},{"id":242,"name":"Zimbabwe"}]; var gdprCountriesIds = [196,194,191,184,179,174,161,148,132,131,130,108,101,99,97,88,77,75,70,67,63,58,56,55,54,37,23,21,14]; </script> <section data-nosnippet class="section container subscribe-box hidden"> <div class="container__inner"> <div class="actions"> <div class="actions__left"> <h2>InfoQ Software Architects' Newsletter</h2> <span><p>A monthly overview of things you need to know as an architect or aspiring architect.</p> <p><a href="https://www.infoq.com/software-architects-newsletter#placeholderPastIssues">View an example</a></p> </span> <div class="newsletter__subscribe"> <form class="form gdpr" name="dataCollectCampaignNewsletterForm" id="dataCollectCampaignNewsletterForm" action="#" onsubmit="dataCollectNewsletter.saveSubscription(); return false;"> <div class="field newsletter__mail input__text input__no-label input__medium email"> <label for="email-dataCollectnewsletter-infoq" class="label field__label">Enter your e-mail address</label> <input id="email-dataCollectnewsletter-infoq" name="footerNewsletterEmail" placeholder="Enter your e-mail address" class="input field__input" type="email"/> <input type="text" name="emailH" id="input_email_h_d" aria-required="false" style="display:none !important" tabindex="-1" autocomplete="off"/> <input type="hidden" id="fnt_d" name="fnt_d" value="AlKv2czJ2bo5biaH"/> <input type="hidden" id="dataCollectNewsletterType" name="dataCollectNewsletterType" value="regular"/> <input type="hidden" id="cmpi_d" name="cmpi_d" value="4"/> </div> <div class="hidden"> <span class="input__select field country"> <label for="input-dataCollect-newsletter-country" class="label field__label">Select your country</label> <select id="input-dataCollect-newsletter-country" class="select field__input"> <option value="" class="select__option">Select a country</option> </select> <p class="input__message field__desc"></p> </span> <span class="input__checkbox field hidden"> <input type="checkbox" id="gdpr-consent-campaign"> <label for="gdpr-consent-campaign" class="label"><span>I consent to InfoQ.com handling my data as explained in this <a href="https://www.infoq.com/privacy-notice">Privacy Notice</a>.</span></label> </span> </div> <input type="submit" role="button" value="Subscribe" class="button button__medium button__red" onclick="return dataCollectNewsletter.validateEmail('Invalid email address');"/> </form> <p class="meta"> <a href="/privacy-notice/" target="_blank">We protect your privacy.</a> </p> <span class="success" style="display:none;" id="dataCollectNewsletterMessage"></span> </div> </div> <div class="actions__right"> <button aria-label="Close" class="close closeBox button button__unstyled button__icon icon icon__close-black icon--only">Close</button> </div> </div> </div> </section> <script type="text/javascript"> var dataCollectNewsletter = new Newsletter('Enter your e-mail address', 'email-dataCollectnewsletter-infoq', 'dataCollectNewsletterType','dataCollectNewsletterMessage', 'fnt_d', 'input_email_h_d', 'input-dataCollect-newsletter-country', 'cmpi_d','popup_all_pages'); </script> <div class="infoq" id="infoq"> <!-- ####### SITE START ######### --> <section class="section container promo hidden"> <div class="container__inner"> <div class="actions"> <div class="actions__left"> <p> <span>Live Webinar and Q&amp;A: Feature Flagging Anti-Patterns: Avoiding Pitfalls in Modern Software Delivery (Feb 27, 2025)</span> <a class="btn" href="/url/pb/3cacfda8-2d98-4adf-bdbc-050e262647e2/" target="_blank" rel="nofollow"> Save Your Seat </a> </p> </div> <div class="actions__right"> <button aria-label="Close" class="close button button__unstyled button__icon icon icon__close-white icon--only close-top-promo">Close </button> </div> </div> </div> </section> <header class="header"> <button aria-label="Toggle Navigation" tabindex="0" class="burger header__toggle button">Toggle Navigation <span></span><span></span><span></span></button> <div class="header__container container"> <div class="container__inner"> <div data-nosnippet class="actions header__top"> <div class="actions__left"> <p class="header__desc my-0"> Facilitating the Spread of Knowledge and Innovation in Professional Software Development </p> <div class="button__dropdown dropdown header__more my-0 dropdown__center"> <button aria-label="English edition" class="button button__unstyled button__small">English edition </button> <div class="dropdown__holder"> <!----> <div class="dropdown__content"> <ul class="no-style dropdown__nav languagesEdition"> <li class="active"><a href="#" onclick="return false;">English edition</a></li> <li><a href="https://www.infoq.cn">Chinese edition</a></li> <li><a href="/jp/">Japanese edition</a></li> <li><a href="/fr/">French edition</a></li> </ul> </div> <!----> </div> </div> <a class="my-0 contribute-link" role="button" href="/write-for-infoq/" title="Write for InfoQ"> Write for InfoQ </a> </div> <div class="actions__right"> <div> <form id="searchForm" name="search-form" action="/search.action" enctype="multipart/form-data" class="search icon__search icon icon__green"> <div class="field search__bar input__text input__no-label input__small"> <label for="search" class="label field__label">Search</label> <input name="queryString" type="text" id="search" value="" placeholder="Search" class="input field__input"> <input type="hidden" name="page" value="1"/> <input type="hidden" size="15" name="searchOrder"> </div> <input value="Search" type="submit" class="search__go"> </form> </div> <div class="button__dropdown dropdown user__login"> <button aria-label="Sign Up / Login" class="button button__small button__green button__arrow arrow__true button__icon icon icon__user icon--only">Sign Up / Login</button> <div class="dropdown__holder"> <div class="dropdown__content"> <div class="login__dropdown"> <div class="login__module"> <div class="login__username"> <form id="login-form" data-vv-scope="login" class="login__form form" action="/login.action"> <input type="hidden" id="loginWidgetOrigin" name="loginWidgetOrigin" value="mainLogin"/> <input type="hidden" name="fromP13N" id="isP13n" value="false"/> <input type="hidden" name="fromP13NId" id="p13n-id" value=""/> <input type="hidden" name="fromP13NType" id="p13n-type" value=""/> <div class="field form__row input__text input__small" data-vv-as="Email" data-vv-scope="login"> <label for="email" class="label field__label">Email</label> <input type="text" id="email" placeholder="" class="input field__input" name="username"> </div> <div class="field form__row input__password input__small" data-vv-as="Password" data-vv-scope="login"> <label for="password" class="label field__label">Password</label> <input type="password" id="password" placeholder="" class="input field__input" name="password"> <p data-message="resultMessage"></p> </div> <input type="submit" value="Login" class="form__row button button__medium button__green"> <div class="login__actions"> <button aria-label="Forgot password ?" class="forgot button button__unstyled">Forgot password ?</button> </div> </form> <form id="forgot-password-form" data-vv-scope="forgot" class="forgot__form form" action="/resetpasswordinit.action" onsubmit="UserActions_Login.showMessage($(this),JSi18n.login_sendingRequest);"> <div data-vv-as="Email" data-vv-scope="forgot" class="field form__row input__text input__small"> <label for="forgotten_email" class="label field__label">InfoQ Account Email</label> <input id="forgotten_email" name="email" placeholder="" class="input field__input" type="text" onkeyup="UserActions_ResetPass.checkInputStatus('forgotten_email','forgotPassMessage',JSi18n.login_invalid_email,'submit_resetPass');"> <p id="forgotPassMessage" data-message="resultMessage"></p> </div> <input type="submit" id="submit_resetPass" value="Send Recovery Email" class="button button__medium button__green" onclick="return UserActions_ResetPass.checkInputStatus('forgotten_email','forgotPassMessage',JSi18n.login_invalid_email,'submit_resetPass');"> <p class="login__actions"> <button aria-label="Back to login" class="back-to-login button button__unstyled">Back to login</button> </p> </form> <form id="email-revalidation-form" data-vv-scope="revalidation" class="revalidation__form form" action="/reactivate.action" onsubmit="UserActions_Login.showMessage($(this),JSi18n.login_sendingRequest);"> <div data-vv-as="Email" data-vv-scope="revalidation" class="field form__row input__text input__small"> <label for="revalidated_email" class="label field__label">Resend Activation</label> <input id="revalidated_email" name="email" placeholder="" class="input field__input" type="text" onkeyup="UserActions_ResetPass.checkInputStatus('revalidated_email','emailRevalidMessage',JSi18n.login_invalid_email,'submit_resetPass');"> <p id="emailRevalidMessage" data-message="resultMessage"></p> </div> <input type="submit" value="Resend" class="button button__medium button__green" onclick="return UserActions_ResetPass.checkInputStatus('revalidated_email','emailRevalidMessage',JSi18n.login_invalid_email,'submit_resetPass');"> <p class="login__actions"> <button id="show-login" aria-label="Back to login" class="back-to-login button button__unstyled">Back to login</button> </p> </form> </div> <div class="login__social"> <h4 class="heading">Login with:</h4> <div class="social__connect form__row login__socials"> <a href="/social/googleLogin.action?fl=login" onclick="return UserActions_Login.addLoginInfo(this);" class="button button__medium button__gray button__icon icon icon__google" title="Login with Google">Google</a> <a href="/social/liveLogin.action?fl=login" onclick="return UserActions_Login.addLoginInfo(this);" class="button button__medium button__icon icon icon__microsoft" title="Login with Microsoft">Microsoft</a> <a href="/twitter-info" class="button button__medium button__icon icon icon__twitter" title="Login with Twitter">Twitter</a> <a href="/social/facebookLogin.action?fl=login" onclick="return UserActions_Login.addLoginInfo(this);" class="button button__medium button__icon icon icon__fb" title="Login with Facebook">Facebook</a> </div> </div> <div class="login__signup"> <h4 class="heading">Don't have an InfoQ account?</h4> <a href="/reginit.action?" onclick="return UserActions_Login.addLoginInfo(this);" class="button button__medium button__green">Sign Up</a> </div> </div> </div> </div> </div> </div> </div> </div> <div class="header__middle"> <div class="logo header__logo"> <a href="/" class="logo__symbol active"> Logo - Back to homepage </a> </div> <div class="content-items"> <a href="/news/" class="icon icon__news">News</a> <a href="/articles/" class="icon icon__articles">Articles</a> <a href="/presentations/" class="icon icon__presentations">Presentations</a> <a href="/podcasts/" class="icon icon__podcasts">Podcasts</a> <a href="/minibooks/" class="icon icon__guides">Guides</a> </div> <div class="header__items columns"> <div> <h3 class="widget__heading">Topics</h3> <nav class="nav header__nav topics" data-trk-ref="header_personas"> <div class="has--subnav li-nav"> <a href="/development/" title="Development" class="nav__category">Development</a> <div class="nav__subnav subnav"> <ul class="subnav__categories no-style"> <li><a href="/java/" title="Java">Java</a></li> <li><a href="/kotlin/" title="Kotlin">Kotlin</a></li> <li><a href="/dotnet/" title=".Net">.Net</a></li> <li><a href="/c_sharp/" title="C#">C#</a></li> <li><a href="/swift/" title="Swift">Swift</a></li> <li><a href="/golang/" title="Go">Go</a></li> <li><a href="/rust/" title="Rust">Rust</a></li> <li><a href="/javascript/" title="JavaScript">JavaScript</a></li> </ul> <div class="subnav__content" data-id="6815"> <div class="heading__container actions"> <div class="actions__left"> <h3 class="heading section__heading">Featured in Development</h3> </div> </div> <ul data-size="large" data-horizontal="true" data-tax="" taxonomy="articles" class="cards no-style"> <li> <div class="card__content"> <div class="card__data"> <h4 class="card__title"> <a href="/presentations/quarkus-efficiency">Zero Waste, Radical Magic, and Italian Graft &ndash; Quarkus Efficiency Secrets</a> </h4> <p class="card__excerpt">Holly Cummins discusses some of the technical underpinnings of Quarkus’s efficiency, providing advice for those using or considering Quarkus.</p> <div class="card__footer"></div> </div> <a href="/presentations/quarkus-efficiency" class="card__header"> <img loading="lazy" alt="Zero Waste, Radical Magic, and Italian Graft &ndash; Quarkus Efficiency Secrets" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/presentations/quarkus-efficiency/en/smallimage/Holly-Cummins-small-1736174284444.jpg" class="card__image"/> </a> </div> </li> </ul> <a href="/development/" class="button__more button button__large button__arrow arrow__right">All in development</a> </div> </div> </div> <div class="has--subnav li-nav"> <a href="/architecture-design/" title="Architecture &amp; Design" class="nav__category">Architecture &amp; Design</a> <div class="nav__subnav subnav"> <ul class="subnav__categories no-style"> <li><a href="/architecture/" title="Architecture">Architecture</a></li> <li><a href="/enterprise-architecture/" title="Enterprise Architecture">Enterprise Architecture</a></li> <li><a href="/performance-scalability/" title="Scalability/Performance">Scalability/Performance</a></li> <li><a href="/design/" title="Design">Design</a></li> <li><a href="/Case_Study/" title="Case Studies">Case Studies</a></li> <li><a href="/microservices/" title="Microservices">Microservices</a></li> <li><a href="/servicemesh/" title="Service Mesh">Service Mesh</a></li> <li><a href="/DesignPattern/" title="Patterns">Patterns</a></li> <li><a href="/Security/" title="Security">Security</a></li> </ul> <div class="subnav__content" data-id="6816"> <div class="heading__container actions"> <div class="actions__left"> <h3 class="heading section__heading">Featured in Architecture &amp; Design</h3> </div> </div> <ul data-size="large" data-horizontal="true" data-tax="" taxonomy="articles" class="cards no-style"> <li> <div class="card__content"> <div class="card__data"> <h4 class="card__title"> <a href="/articles/infoq-articles-contest-2025">2025 Article Contest: Win Your Conference Ticket</a> </h4> <p class="card__excerpt">The InfoQ Team is excited to invite you to participate in our annual article writing competition. Authors of top-rated articles will win complimentary tickets to prominent software development conferences such as QCon and InfoQ Dev Summit.</p> <div class="card__footer"></div> </div> <a href="/articles/infoq-articles-contest-2025" class="card__header"> <img loading="lazy" alt="2025 Article Contest: Win Your Conference Ticket" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/articles/infoq-articles-contest-2025/en/smallimage/article-contest-2025-thumbnail-image-1739792870025.jpg" class="card__image"/> </a> </div> </li> </ul> <a href="/architecture-design/" class="button__more button button__large button__arrow arrow__right">All in architecture-design</a> </div> </div> </div> <div class="has--subnav li-nav"> <a href="/ai-ml-data-eng/" title="AI Infrastructure" class="nav__category">AI Infrastructure</a> <div class="nav__subnav subnav"> <ul class="subnav__categories no-style"> <li><a href="/bigdata/" title="Big Data">Big Data</a></li> <li><a href="/machinelearning/" title="Machine Learning">Machine Learning</a></li> <li><a href="/nosql/" title="NoSQL">NoSQL</a></li> <li><a href="/database/" title="Database">Database</a></li> <li><a href="/data-analytics/" title="Data Analytics">Data Analytics</a></li> <li><a href="/streaming/" title="Streaming">Streaming</a></li> </ul> <div class="subnav__content" data-id="16690"> <div class="heading__container actions"> <div class="actions__left"> <h3 class="heading section__heading">Featured in AI, ML &amp; Data Engineering</h3> </div> </div> <ul data-size="large" data-horizontal="true" data-tax="" taxonomy="articles" class="cards no-style"> <li> <div class="card__content"> <div class="card__data"> <h4 class="card__title"> <a href="/articles/eclipse-lmos-ai-agents">Eclipse LMOS: Launching AI Agents Across Europe at Breakneck Speed</a> </h4> <p class="card__excerpt">In this talk, the authors share some of our company’s key learnings in developing customer-facing LLM-powered applications deployed across Europe. They used multi-agent architecture and systems design to create an open-source set of tools, a framework, and a full-fledged platform to accelerate the development of AI agents. This is a summary of a presentation from InfoQ Dev Summit Boston 2024.</p> <div class="card__footer"></div> </div> <a href="/articles/eclipse-lmos-ai-agents" class="card__header"> <img loading="lazy" alt="Eclipse LMOS: Launching AI Agents Across Europe at Breakneck Speed" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/articles/eclipse-lmos-ai-agents/en/smallimage/launching-ai-agents-across-europe-logo-small-1738065615041.jpg" class="card__image"/> </a> </div> </li> </ul> <a href="/ai-ml-data-eng/" class="button__more button button__large button__arrow arrow__right">All in ai-ml-data-eng</a> </div> </div> </div> <div class="has--subnav li-nav"> <a href="/culture-methods/" title="Culture &amp; Methods" class="nav__category">Culture &amp; Methods</a> <div class="nav__subnav subnav"> <ul class="subnav__categories no-style"> <li><a href="/agile/" title="Agile">Agile</a></li> <li><a href="/diversity/" title="Diversity">Diversity</a></li> <li><a href="/leadership/" title="Leadership">Leadership</a></li> <li><a href="/lean/" title="Lean/Kanban">Lean/Kanban</a></li> <li><a href="/personal-growth/" title="Personal Growth">Personal Growth</a></li> <li><a href="/scrum/" title="Scrum">Scrum</a></li> <li><a href="/sociocracy/" title="Sociocracy">Sociocracy</a></li> <li><a href="/software_craftsmanship/" title="Software Craftmanship">Software Craftmanship</a></li> <li><a href="/team-collaboration/" title="Team Collaboration">Team Collaboration</a></li> <li><a href="/testing/" title="Testing">Testing</a></li> <li><a href="/ux/" title="UX">UX</a></li> </ul> <div class="subnav__content" data-id="6817"> <div class="heading__container actions"> <div class="actions__left"> <h3 class="heading section__heading">Featured in Culture &amp; Methods</h3> </div> </div> <ul data-size="large" data-horizontal="true" data-tax="" taxonomy="articles" class="cards no-style"> <li> <div class="card__content"> <div class="card__data"> <h4 class="card__title"> <a href="/presentations/personal-brand">Five Steps to Building a Personal Brand for Elevating Your Influence</a> </h4> <p class="card__excerpt">Pablo Fredrikson discusses how to grow your personal brand to land better opportunities and have a greater impact.</p> <div class="card__footer"></div> </div> <a href="/presentations/personal-brand" class="card__header"> <img loading="lazy" alt="Five Steps to Building a Personal Brand for Elevating Your Influence" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/presentations/personal-brand/en/smallimage/pablo-fredrikson-thumbnail-1739263262480.jpeg" class="card__image"/> </a> </div> </li> </ul> <a href="/culture-methods/" class="button__more button button__large button__arrow arrow__right">All in culture-methods</a> </div> </div> </div> <div class="has--subnav li-nav"> <a href="/devops/" class="nav__category">DevOps</a> <div class="nav__subnav subnav"> <ul class="subnav__categories no-style"> <li><a href="/infrastructure/" title="Infrastructure">Infrastructure</a></li> <li><a href="/continuous_delivery/" title="Continuous Delivery">Continuous Delivery</a></li> <li><a href="/automation/" title="Automation">Automation</a></li> <li><a href="/containers/" title="Containers">Containers</a></li> <li><a href="/cloud-computing/" title="Cloud">Cloud</a></li> <li><a href="/observability/" title="Observability">Observability</a></li> </ul> <div class="subnav__content" data-id="6043"> <div class="heading__container actions"> <div class="actions__left"> <h3 class="heading section__heading">Featured in DevOps</h3> </div> </div> <ul data-size="large" data-horizontal="true" data-tax="" taxonomy="articles" class="cards no-style"> <li> <div class="card__content"> <div class="card__data"> <h4 class="card__title"> <a href="/presentations/devsecops-ai">Efficient DevSecOps Workflows with a Little Help from AI</a> </h4> <p class="card__excerpt">Michael Friedrich tells a story about experienced pain points, wasted hours debugging and solving, and learning how a little help from AI makes DevSecOps workflows efficient again.</p> <div class="card__footer"></div> </div> <a href="/presentations/devsecops-ai" class="card__header"> <img loading="lazy" alt="Efficient DevSecOps Workflows with a Little Help from AI" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/presentations/devsecops-ai/en/smallimage/MichaelFriedrich-small-1734515745316.jpg" class="card__image"/> </a> </div> </li> </ul> <a href="/devops/" class="button__more button button__large button__arrow arrow__right">All in devops</a> </div> </div> </div> <div class="li-nav"> <a rel="noreferrer noopener" href="https://events.infoq.com/" class="nav__category" title="Events" target="_blank">Events</a> </div> </nav> </div> <div> <h3 class="widget__heading">Helpful links</h3> <ul class="no-style header__nav"> <li> <a href="/about-infoq" title="About InfoQ"> About InfoQ </a> </li> <li> <a href="/infoq-editors" title="InfoQ Editors"> InfoQ Editors </a> </li> <li> <a href="/write-for-infoq" title="Write for InfoQ"> Write for InfoQ </a> </li> <li> <a href="/about-c4media" title="About C4Media"> About C4Media </a> </li> <li> <a rel="noreferrer noopener" href="https://c4media.com/diversity" title="Diversity" target="_blank">Diversity</a> </li> </ul> </div> <div> <h3 class="widget__heading">Choose your language</h3> <ul class="language__switcher no-style"> <li class="active"><a href="#" onclick="return false;" title="InfoQ English">En</a></li> <li><a href="https://www.infoq.cn">中文</a></li> <li><a href="/jp/">日本</a></li> <li><a href="/fr/">Fr</a></li> </ul> </div> </div> </div> <div data-nosnippet class="actions header__bottom header__bottom__events"> <div class="actions__left"> <div class="header__events-all"> <a href="https://qconlondon.com/?utm_source=infoq&utm_medium=referral&utm_campaign=homepageheader_qlondon25" rel="nofollow" target="_blank" class="header__event-slot"> <picture><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL2NvbmZlcmVuY2VzLzIwMjUvbG9uZG9uLXRvcC11cGRhdGVkMi5qcGciLCJlZGl0cyI6IHsid2VicCI6IHsgInF1YWxpdHkiOjgwfX19" type="image/webp"><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL2NvbmZlcmVuY2VzLzIwMjUvbG9uZG9uLXRvcC11cGRhdGVkMi5qcGciLCJlZGl0cyI6IHsianBlZyI6IHsgInF1YWxpdHkiOjgwfX19" type="image/webp"><img src="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL2NvbmZlcmVuY2VzLzIwMjUvbG9uZG9uLXRvcC11cGRhdGVkMi5qcGciLCJlZGl0cyI6IHsianBlZyI6IHsgInF1YWxpdHkiOjgwfX19" loading="lazy" width="40px" height="40px" alt="QCon London - image"></picture> <div> <span>QCon London</span> <p>Discover emerging trends, insights, and real-world best practices in software development &amp; tech leadership. Join now.</p> </div> </a> <a href="https://devsummit.infoq.com/conference/boston2025?utm_source=infoq&utm_medium=referral&utm_campaign=homepageheader_idsboston25" rel="nofollow" target="_blank" class="header__event-slot"> <picture><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL2NvbmZlcmVuY2VzLzIwMjUvSW5mb1FEZXZTdW1taXQtdG9wLmpwZyIsImVkaXRzIjogeyJ3ZWJwIjogeyAicXVhbGl0eSI6ODB9fX0=" type="image/webp"><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL2NvbmZlcmVuY2VzLzIwMjUvSW5mb1FEZXZTdW1taXQtdG9wLmpwZyIsImVkaXRzIjogeyJqcGVnIjogeyAicXVhbGl0eSI6ODB9fX0=" type="image/webp"><img src="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL2NvbmZlcmVuY2VzLzIwMjUvSW5mb1FEZXZTdW1taXQtdG9wLmpwZyIsImVkaXRzIjogeyJqcGVnIjogeyAicXVhbGl0eSI6ODB9fX0=" loading="lazy" width="40px" height="40px" alt="QCon London - image"></picture> <div> <span>InfoQ Dev Summit Boston</span> <p>Learn how senior software developers are solving the challenges you face. Register now with early bird tickets.</p> </div> </a> <a href="https://qconsf.com/?utm_source=infoq&utm_medium=referral&utm_campaign=homepageheader_qsf25" rel="nofollow" target="_blank" class="header__event-slot"> <picture><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL2NvbmZlcmVuY2VzLzIwMjUvU0YtdG9wLmpwZyIsImVkaXRzIjogeyJ3ZWJwIjogeyAicXVhbGl0eSI6ODB9fX0=" type="image/webp"><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL2NvbmZlcmVuY2VzLzIwMjUvU0YtdG9wLmpwZyIsImVkaXRzIjogeyJqcGVnIjogeyAicXVhbGl0eSI6ODB9fX0=" type="image/webp"><img src="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL2NvbmZlcmVuY2VzLzIwMjUvU0YtdG9wLmpwZyIsImVkaXRzIjogeyJqcGVnIjogeyAicXVhbGl0eSI6ODB9fX0=" loading="lazy" width="40px" height="40px" alt="QCon San Francisco - image"></picture> <div> <span>QCon San Francisco</span> <p>Explore insights, real-world best practices and solutions in software development & leadership. Register now.</p> </div> </a> <a href="https://www.infoq.com/software-architects-newsletter/" rel="nofollow" target="_blank" class="header__event-slot"> <picture><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL2FyY2hpdGVjdC1uZXdzbGV0dGVyLWNvdmVyLmpwZyIsImVkaXRzIjogeyJ3ZWJwIjogeyAicXVhbGl0eSI6ODB9fX0=" type="image/webp"><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL2FyY2hpdGVjdC1uZXdzbGV0dGVyLWNvdmVyLmpwZyIsImVkaXRzIjogeyJqcGVnIjogeyAicXVhbGl0eSI6ODB9fX0=" type="image/webp"><img src="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL2FyY2hpdGVjdC1uZXdzbGV0dGVyLWNvdmVyLmpwZyIsImVkaXRzIjogeyJqcGVnIjogeyAicXVhbGl0eSI6ODB9fX0=" loading="lazy" width="40px" height="40px" alt="The Software Architects Newsletter - image"></picture> <div> <span>The Software Architects' Newsletter</span> <p>Your monthly guide to all the topics, technologies and techniques that every professional needs to know about. Subscribe for free.</p> </div> </a> </div> </div> <!----> </div> </div> </div> </header> <!-- ####### CONTENT START ######### --> <main> <section class="container section topics"> <div class="columns container__inner" data-trk-ref="hover_topic_page"> <p class="crumbs"> <span data-nosnippet><a href="/" title="InfoQ Homepage">InfoQ Homepage</a></span> <span data-nosnippet class="active">Continuous Delivery Content on InfoQ</span> </p> <div class="actions heading__container heading__actions" data-id="6399" data-trk-ref="topic_page"> <div class="actions__left"> <h1 class="heading heading__rss">Continuous Delivery</h1> <span class="rss icon icon__rss-feed"> <a href="https://feed.infoq.com/Continuous_Delivery/" target="_blank">RSS Feed</a> </span> </div> </div> <!-- add static promotion box on the top of the page,under title,for service mesh topic page --> <!-- add graph and description for trends report topic page (https://www.infoq.com/infoq-trends-report/) --> <div data-col="3/4"> <div class="items"> <div class="actions heading__container"> <div class="actions__left"> <h2 class="heading section__heading heading__rss"> <a href="/Continuous_Delivery/news/" > News about&nbsp;Continuous Delivery </a> </h2> <span class="rss icon icon__rss-feed"> <a href="https://feed.infoq.com/Continuous_Delivery/news/" target="_blank">RSS Feed</a> </span> </div> </div> <div class="items__content"> <div> <ul class="no-style cards" data-cols="3" data-size="large" data-hoverables="true" data-tax="news"> <li data-id="46e6af34-df44-46ea-8eab-d32c5b251e14" data-path="/news/2025/02/report-resilience-devops-dora/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978"> <div class="card__content"> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/architecture-design/" data-id="6816">Architecture &amp; Design</a> </span> </div> <h4 class="card__title"> <a title="Most Companies Experience Weekly Outages: the State of Resilience 2025 Report" href="/news/2025/02/report-resilience-devops-dora/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978">Most Companies Experience Weekly Outages: the State of Resilience 2025 Report</a></h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Rafal-Gancarz/" data-id="author-Rafal-Gancarz">Rafal Gancarz</a> </span> </div> <span class="card__date date">on<span>&nbsp;Feb 16, 2025</span></span> </div> <button aria-label="Like" size="small" class="like button button__unstyled icon__gray button__icon icon icon__like">Like</button> </div> </div> </div> </li> <li data-id="a7baa5c5-f02a-4ade-b7f2-68a367c875b6" data-path="/news/2024/11/fabric-api-for-graphql/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978"> <div class="card__content"> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/ai-ml-data-eng/" data-id="16690">AI, ML &amp; Data Engineering</a> </span> </div> <h4 class="card__title"> <a title="Microsoft Announces General Availability of Fabric API for GraphQL" href="/news/2024/11/fabric-api-for-graphql/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978">Microsoft Announces General Availability of Fabric API for GraphQL</a></h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Robert-Krzaczy%C5%84ski/" data-id="author-Robert-Krzaczyński">Robert Krzaczyński</a> </span> </div> <span class="card__date date">on<span>&nbsp;Nov 24, 2024</span></span> </div> <button aria-label="Like" size="small" class="like button button__unstyled icon__gray button__icon icon icon__like">Like</button> </div> </div> </div> </li> <li data-id="fa1c1719-3082-4e93-8dd4-7dda320dfd0a" data-path="/news/2024/10/postnl-serverless-enterprise/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978"> <div class="card__content"> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/architecture-design/" data-id="6816">Architecture &amp; Design</a> </span> </div> <h4 class="card__title"> <a title="No EC2 or Kubernetes Allowed: Insights from Building Serverless-Only Architecture at PostNL" href="/news/2024/10/postnl-serverless-enterprise/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978">No EC2 or Kubernetes Allowed: Insights from Building Serverless-Only Architecture at PostNL</a></h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Rafal-Gancarz/" data-id="author-Rafal-Gancarz">Rafal Gancarz</a> </span> </div> <span class="card__date date">on<span>&nbsp;Oct 17, 2024</span></span> </div> <button aria-label="Like" size="small" class="like button button__unstyled icon__gray button__icon icon icon__like">Like</button> </div> </div> </div> </li> <li data-id="0b7e236a-0e78-4eb5-b1ca-7f54fe1aa825" data-path="/news/2024/09/monzo-microservices-migrations/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978"> <div class="card__content"> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/architecture-design/" data-id="6816">Architecture &amp; Design</a> </span> </div> <h4 class="card__title"> <a title="Planning, Automation and Monorepo: How Monzo Does Code Migrations Across 2800 Microservices" href="/news/2024/09/monzo-microservices-migrations/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978">Planning, Automation and Monorepo: How Monzo Does Code Migrations Across 2800 Microservices</a></h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Rafal-Gancarz/" data-id="author-Rafal-Gancarz">Rafal Gancarz</a> </span> </div> <span class="card__date date">on<span>&nbsp;Sep 28, 2024</span></span> </div> <button aria-label="Like" size="small" class="like button button__unstyled icon__gray button__icon icon icon__like">Like</button> </div> </div> </div> </li> <li data-id="0a274790-9612-49cf-aa3a-6afc33a9db01" data-path="/news/2024/09/fast-flow-software-organizations/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978"> <div class="card__content"> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/culture-methods/" data-id="6817">Culture &amp; Methods</a> </span> </div> <h4 class="card__title"> <a title="Enabling Fast Flow in Software Organizations" href="/news/2024/09/fast-flow-software-organizations/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978">Enabling Fast Flow in Software Organizations</a></h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Ben-Linders/" data-id="author-Ben-Linders">Ben Linders</a> </span> </div> <span class="card__date date">on<span>&nbsp;Sep 12, 2024</span></span> </div> <button aria-label="Like" size="small" class="like button button__unstyled icon__gray button__icon icon icon__like">Like</button> </div> </div> </div> </li> <li data-id="a7613205-8eb9-42bd-9aa1-429579a63b31" data-path="/news/2024/08/dora-surveys-software-company/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978"> <div class="card__content"> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/culture-methods/" data-id="6817">Culture &amp; Methods</a> </span> </div> <h4 class="card__title"> <a title="Experiences from Doing DORA Surveys Internally in Software Companies" href="/news/2024/08/dora-surveys-software-company/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978">Experiences from Doing DORA Surveys Internally in Software Companies</a></h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Ben-Linders/" data-id="author-Ben-Linders">Ben Linders</a> </span> </div> <span class="card__date date">on<span>&nbsp;Aug 15, 2024</span></span> </div> <button aria-label="Like" size="small" class="like button button__unstyled icon__gray button__icon icon icon__like">Like</button> </div> </div> </div> </li> <li data-id="1dfca2fd-bb8b-47b0-b769-3508e02e13c1" data-path="/news/2024/04/borderless-cloud-qcon-london/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978"> <div class="card__content"> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/Cloud/" data-id="7451">Cloud</a> </span> </div> <h4 class="card__title"> <a title="Borderless Cloud at QCon London: Q&amp;A with Adora Nwodo" href="/news/2024/04/borderless-cloud-qcon-london/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978">Borderless Cloud at QCon London: Q&amp;A with Adora Nwodo</a></h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Steef%7EJan-Wiggers/" data-id="author-Steef~Jan-Wiggers">Steef-Jan Wiggers</a> </span> </div> <span class="card__date date">on<span>&nbsp;Apr 12, 2024</span></span> </div> <button aria-label="Like" size="small" class="like button button__unstyled icon__gray button__icon icon icon__like">Like</button> </div> </div> </div> </li> <li data-id="8074d94f-f54e-4be8-b7e9-ab18b91321e1" data-path="/news/2024/03/digital-ocean-autoscaling/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978"> <div class="card__content"> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/Devops/" data-id="6043">DevOps</a> </span> </div> <h4 class="card__title"> <a title="DigitalOcean Introduces CPU-Based Autoscaling for its App Plaform" href="/news/2024/03/digital-ocean-autoscaling/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978">DigitalOcean Introduces CPU-Based Autoscaling for its App Plaform</a></h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Sergio-De-Simone/" data-id="author-Sergio-De-Simone">Sergio De Simone</a> </span> </div> <span class="card__date date">on<span>&nbsp;Mar 27, 2024</span></span> </div> <button aria-label="Like" size="small" class="like button button__unstyled icon__gray button__icon icon icon__like">Like</button> </div> </div> </div> </li> </ul> <a href="/Continuous_Delivery/news/" class="button button__arrow arrow__right button__more button__has-transition"> MORE NEWS </a> </div> </div> </div> <div class="items"> <div class="actions heading__container"> <div class="actions__left"> <h2 class="heading section__heading heading__rss"> <a href="/Continuous_Delivery/presentations/" > Presentations about&nbsp;Continuous Delivery </a> </h2> <span class="rss icon icon__rss-feed"> <a href="https://feed.infoq.com/Continuous_Delivery/presentations/" target="_blank">RSS Feed</a> </span> </div> </div> <div class="items__content"> <div> <ul class="no-style cards boxes" data-cols="3" data-size="large" data-hoverables="true" data-tax="presentations"> <li data-id="6b23e768-b046-4812-9f53-9ca83d84629e" data-path="/presentations/dev-experience-pipelines/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978" data-transcript> <div class="card__content"> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/architecture-design/" data-id="6816">Architecture &amp; Design</a> </span> </div> <h4 class="card__title"> <a title="Improving Developer Experience Using Automated Data CI/CD Pipelines" href="/presentations/dev-experience-pipelines/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978">Improving Developer Experience Using Automated Data CI/CD Pipelines</a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/No%C3%A9mi-V%C3%A1nyi/" data-id="author-No&#xE9;mi-V&#xE1;nyi">No&#xE9;mi V&#xE1;nyi</a> </span> <span> <a href="/profile/Simona-Pencea/" data-id="author-Simona-Pencea">Simona Pencea</a> </span> </div> <span class="card__date date">on<span>&nbsp;Nov 14, 2024</span></span> </div> <button class="icon button button__icon like button__unstyled icon__gray icon__like" aria-label="Like" size="small">Like</button> </div> </div> <a href="/presentations/dev-experience-pipelines/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/297x220/filters:quality(80)/presentations/dev-experience-pipelines/en/mediumimage/Nomi-Vnyi-Simona-Pencea-medium-1728648864871.jpg" alt="Improving Developer Experience Using Automated Data CI/CD Pipelines" class="card__image" /> <div class="card__meta"> <div class="card__icon">Icon</div> <div class="card__length"> 48:31 </div> </div> </a> </div> </li> <li data-id="0e54b427-671b-4f7d-af79-259f0240b2d6" data-path="/presentations/ci-cd-yaml/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978" data-transcript> <div class="card__content"> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/Devops/" data-id="6043">DevOps</a> </span> </div> <h4 class="card__title"> <a title="CI/CD beyond YAML: The Evolution Towards Pipelines-as-Code" href="/presentations/ci-cd-yaml/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978">CI/CD beyond YAML: The Evolution Towards Pipelines-as-Code</a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Conor-Barber/" data-id="author-Conor-Barber">Conor Barber</a> </span> </div> <span class="card__date date">on<span>&nbsp;Jul 31, 2024</span></span> </div> <button class="icon button button__icon like button__unstyled icon__gray icon__like" aria-label="Like" size="small">Like</button> </div> </div> <a href="/presentations/ci-cd-yaml/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/297x220/filters:quality(80)/presentations/ci-cd-yaml/en/mediumimage/ConorBarber-medium-1720691038128.jpeg" alt="CI/CD beyond YAML: The Evolution Towards Pipelines-as-Code" class="card__image" /> <div class="card__meta"> <div class="card__icon">Icon</div> <div class="card__length"> 48:03 </div> </div> </a> </div> </li> <li data-id="085c74ab-d888-4d40-ad62-cb4ecb216f78" data-path="/presentations/agile-rehab/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978" data-transcript> <div class="card__content"> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/culture-methods/" data-id="6817">Culture &amp; Methods</a> </span> </div> <h4 class="card__title"> <a title="Agile Rehab: Engineering for Improved Delivery" href="/presentations/agile-rehab/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978">Agile Rehab: Engineering for Improved Delivery</a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Bryan-Finster/" data-id="author-Bryan-Finster">Bryan Finster</a> </span> </div> <span class="card__date date">on<span>&nbsp;Feb 20, 2024</span></span> </div> <button class="icon button button__icon like button__unstyled icon__gray icon__like" aria-label="Like" size="small">Like</button> </div> </div> <a href="/presentations/agile-rehab/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/297x220/filters:quality(80)/presentations/agile-rehab/en/mediumimage/BryanFinster-medium-1707811055427.jpg" alt="Agile Rehab: Engineering for Improved Delivery" class="card__image" /> <div class="card__meta"> <div class="card__icon">Icon</div> <div class="card__length"> 49:14 </div> </div> </a> </div> </li> <li data-id="3ee6474c-25d5-417e-b21c-61180b76c6ae" data-path="/presentations/lyft-cd-benefits-challenges/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978" data-transcript> <div class="card__content"> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/culture-methods/" data-id="6817">Culture &amp; Methods</a> </span> </div> <h4 class="card__title"> <a title="Adopting Continuous Deployment at Lyft" href="/presentations/lyft-cd-benefits-challenges/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978">Adopting Continuous Deployment at Lyft</a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Tom-Wanielista/" data-id="author-Tom-Wanielista">Tom Wanielista</a> </span> </div> <span class="card__date date">on<span>&nbsp;Jun 01, 2023</span></span> </div> <button class="icon button button__icon like button__unstyled icon__gray icon__like" aria-label="Like" size="small">Like</button> </div> </div> <a href="/presentations/lyft-cd-benefits-challenges/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/297x220/filters:quality(80)/presentations/lyft-cd-benefits-challenges/en/mediumimage/tom-wanielista-medium-1685002834068.jpg" alt="Adopting Continuous Deployment at Lyft" class="card__image" /> <div class="card__meta"> <div class="card__icon">Icon</div> <div class="card__length"> 47:56 </div> </div> </a> </div> </li> <li data-id="40b446a7-8b29-4ecf-a4a0-a240f3788746" data-path="/presentations/monzo-tools-deploy/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978" data-transcript> <div class="card__content"> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/Devops/" data-id="6043">DevOps</a> </span> </div> <h4 class="card__title"> <a title="Hone Your Tools: Building Effective &amp; Delightful Developer Experiences" href="/presentations/monzo-tools-deploy/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978">Hone Your Tools: Building Effective &amp; Delightful Developer Experiences</a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Suhail-Patel/" data-id="author-Suhail-Patel">Suhail Patel</a> </span> </div> <span class="card__date date">on<span>&nbsp;Sep 14, 2022</span></span> </div> <button class="icon button button__icon like button__unstyled icon__gray icon__like" aria-label="Like" size="small">Like</button> </div> </div> <a href="/presentations/monzo-tools-deploy/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/297x220/filters:quality(80)/presentations/monzo-tools-deploy/en/mediumimage/Suhail Patel-m-1663142338011.jpg" alt="Hone Your Tools: Building Effective &amp; Delightful Developer Experiences" class="card__image" /> <div class="card__meta"> <div class="card__icon">Icon</div> <div class="card__length"> 48:10 </div> </div> </a> </div> </li> <li data-id="1cc1929f-4623-4190-a795-8cef51d48eec" data-path="/presentations/deploy-pipelines-coinbase/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978" data-transcript> <div class="card__content"> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/Devops/" data-id="6043">DevOps</a> </span> </div> <h4 class="card__title"> <a title="Paving the Road to Production" href="/presentations/deploy-pipelines-coinbase/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978">Paving the Road to Production</a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Graham-Jenson/" data-id="author-Graham-Jenson">Graham Jenson</a> </span> </div> <span class="card__date date">on<span>&nbsp;Mar 24, 2021</span></span> </div> <button class="icon button button__icon like button__unstyled icon__gray icon__like" aria-label="Like" size="small">Like</button> </div> </div> <a href="/presentations/deploy-pipelines-coinbase/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/297x220/filters:quality(80)/presentations/deploy-pipelines-coinbase/en/mediumimage/graham_jenson-m-1616676046513.jpg" alt="Paving the Road to Production" class="card__image" /> <div class="card__meta"> <div class="card__icon">Icon</div> <div class="card__length"> 20:03 </div> </div> </a> </div> </li> <li data-id="63c3cf82-1e4a-4840-bb43-71b45065426c" data-path="/presentations/secure-ci-cd-pipeline/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978" data-transcript> <div class="card__content"> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/Devops/" data-id="6043">DevOps</a> </span> </div> <h4 class="card__title"> <a title="Keep Calm and Secure Your CI/CD Pipeline" href="/presentations/secure-ci-cd-pipeline/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978">Keep Calm and Secure Your CI/CD Pipeline</a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Sonya-Moisset/" data-id="author-Sonya-Moisset">Sonya Moisset</a> </span> </div> <span class="card__date date">on<span>&nbsp;Sep 23, 2020</span></span> </div> <button class="icon button button__icon like button__unstyled icon__gray icon__like" aria-label="Like" size="small">Like</button> </div> </div> <a href="/presentations/secure-ci-cd-pipeline/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/297x220/filters:quality(80)/presentations/secure-ci-cd-pipeline/en/mediumimage/Sonya-Moisset-m-1600434646433.jpeg" alt="Keep Calm and Secure Your CI/CD Pipeline" class="card__image" /> <div class="card__meta"> <div class="card__icon">Icon</div> <div class="card__length"> 39:42 </div> </div> </a> </div> </li> </ul> <a href="/Continuous_Delivery/presentations/" class="button button__arrow arrow__right button__more button__has-transition"> MORE PRESENTATIONS </a> </div> </div> </div> <div class="items"> <div class="actions heading__container"> <div class="actions__left"> <h2 class="heading section__heading heading__rss"> <a href="/Continuous_Delivery/articles/" > Articles about&nbsp;Continuous Delivery </a> </h2> <span class="rss icon icon__rss-feed"> <a href="https://feed.infoq.com/Continuous_Delivery/articles/" target="_blank">RSS Feed</a> </span> </div> </div> <div class="items__content"> <div> <ul class="no-style cards boxes" data-horizontal="true" data-size="large" data-tax="articles" data-hoverables="true" data-cols="2"> <li data-id="c5168e88-0639-4877-8ba8-5acdf3b9414f" data-path="/articles/secure-resilient-delivery-pipelines/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978"> <div class="card__content"> <a href="/articles/secure-resilient-delivery-pipelines/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978" class="card__header"> <img loading="lazy" alt="Delivering Software Securely: Techniques for Building a Resilient and Secure Code Pipeline" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/articles/secure-resilient-delivery-pipelines/en/smallimage/GettyImages-1281740358-small-1715175157819.jpg" class="card__image"> </a> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/Devops/" data-id="6043">DevOps</a> </span> </div> <h4 class="card__title"> <a title="Delivering Software Securely: Techniques for Building a Resilient and Secure Code Pipeline" href="/articles/secure-resilient-delivery-pipelines/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978"> Delivering Software Securely: Techniques for Building a Resilient and Secure Code Pipeline </a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Satrajit-Basu/" data-id="author-Satrajit-Basu">Satrajit Basu</a> </span> </div> <span class="card__date date">on<span>&nbsp;May 13, 2024</span></span> </div> <button aria-label="Like" size="small" class="like button button__unstyled icon__gray button__icon icon icon__like">Like</button> </div> </div> </div> </li> <li data-id="6e9a85ab-a367-44ea-962a-bf3aff72aa1b" data-path="/articles/replace-process-dogma-engineering/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978"> <div class="card__content"> <a href="/articles/replace-process-dogma-engineering/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978" class="card__header"> <img loading="lazy" alt="Agile Rehab: Replacing Process Dogma with Engineering to Achieve True Agility" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/articles/replace-process-dogma-engineering/en/smallimage/agile-rehab-replacing-process-dogma-with-engineering-to-achieve-true-agility-small-1698326538210.jpg" class="card__image"> </a> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/culture-methods/" data-id="6817">Culture &amp; Methods</a> </span> </div> <h4 class="card__title"> <a title="Agile Rehab: Replacing Process Dogma with Engineering to Achieve True Agility" href="/articles/replace-process-dogma-engineering/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978"> Agile Rehab: Replacing Process Dogma with Engineering to Achieve True Agility </a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Bryan-Finster/" data-id="author-Bryan-Finster">Bryan Finster</a> </span> </div> <span class="card__date date">on<span>&nbsp;Oct 27, 2023</span></span> </div> <button aria-label="Like" size="small" class="like button button__unstyled icon__gray button__icon icon icon__like">Like</button> </div> </div> </div> </li> <li data-id="0d2e995e-6b93-430e-87a2-47184f6f8f55" data-path="/articles/carbon-emissions-generative-ai/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978"> <div class="card__content"> <a href="/articles/carbon-emissions-generative-ai/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978" class="card__header"> <img loading="lazy" alt="Managing the Carbon Emissions Associated with Generative AI" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/articles/carbon-emissions-generative-ai/en/smallimage/Managing-the-Carbon-Emissions-Associated-with-Generative-AI-small-1693489139335.jpg" class="card__image"> </a> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/culture-methods/" data-id="6817">Culture &amp; Methods</a> </span> </div> <h4 class="card__title"> <a title="Managing the Carbon Emissions Associated with Generative AI" href="/articles/carbon-emissions-generative-ai/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978"> Managing the Carbon Emissions Associated with Generative AI </a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Jesse-McCrosky/" data-id="author-Jesse-McCrosky">Jesse McCrosky</a> </span> </div> <span class="card__date date">on<span>&nbsp;Sep 01, 2023</span></span> </div> <button aria-label="Like" size="small" class="like button button__unstyled icon__gray button__icon icon icon__like">Like</button> </div> </div> </div> </li> <li data-id="9cf76373-8210-46e5-ab19-ee45519162ed" data-path="/articles/test-automation-ci-cd/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978"> <div class="card__content"> <a href="/articles/test-automation-ci-cd/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978" class="card__header"> <img loading="lazy" alt="Effective Test Automation Approaches for Modern CI/CD Pipelines" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/articles/test-automation-ci-cd/en/smallimage/effective-test-automation-approaches-for-modern-CI-CD-pipelines-small-1685355310638.jpg" class="card__image"> </a> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/Devops/" data-id="6043">DevOps</a> </span> </div> <h4 class="card__title"> <a title="Effective Test Automation Approaches for Modern CI/CD Pipelines" href="/articles/test-automation-ci-cd/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978"> Effective Test Automation Approaches for Modern CI/CD Pipelines </a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Craig-Risi/" data-id="author-Craig-Risi">Craig Risi</a> </span> </div> <span class="card__date date">on<span>&nbsp;May 31, 2023</span></span> </div> <button aria-label="Like" size="small" class="like button button__unstyled icon__gray button__icon icon icon__like">Like</button> </div> </div> </div> </li> <li data-id="acc28461-4f72-4edd-a245-b40993b1dd9a" data-path="/articles/aiops-reliability-engineering/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978"> <div class="card__content"> <a href="/articles/aiops-reliability-engineering/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978" class="card__header"> <img loading="lazy" alt="AIOps: Site Reliability Engineering at Scale" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/articles/aiops-reliability-engineering/en/smallimage/logo-1682623533778.jpg" class="card__image"> </a> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/Devops/" data-id="6043">DevOps</a> </span> </div> <h4 class="card__title"> <a title="AIOps: Site Reliability Engineering at Scale" href="/articles/aiops-reliability-engineering/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978"> AIOps: Site Reliability Engineering at Scale </a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Dominick-Blue/" data-id="author-Dominick-Blue">Dominick Blue</a> </span> </div> <span class="card__date date">on<span>&nbsp;May 02, 2023</span></span> </div> <button aria-label="Like" size="small" class="like button button__unstyled icon__gray button__icon icon icon__like">Like</button> </div> </div> </div> </li> <li data-id="542cd804-94a7-4294-a64d-a4abca8df027" data-path="/articles/dora-metrics-anti-patterns/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978"> <div class="card__content"> <a href="/articles/dora-metrics-anti-patterns/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978" class="card__header"> <img loading="lazy" alt="How Not to Use the DORA Metrics to Measure DevOps Performance" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/articles/dora-metrics-anti-patterns/en/smallimage/logo-1682520876491.jpg" class="card__image"> </a> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/Devops/" data-id="6043">DevOps</a> </span> </div> <h4 class="card__title"> <a title="How Not to Use the DORA Metrics to Measure DevOps Performance" href="/articles/dora-metrics-anti-patterns/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978"> How Not to Use the DORA Metrics to Measure DevOps Performance </a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/David-Rant/" data-id="author-David-Rant">David Rant</a> </span> </div> <span class="card__date date">on<span>&nbsp;Apr 28, 2023</span></span> </div> <button aria-label="Like" size="small" class="like button button__unstyled icon__gray button__icon icon icon__like">Like</button> </div> </div> </div> </li> <li data-id="d64b3ee8-d69e-4cf9-8811-ab164427c5ba" data-path="/articles/api-maturity-model/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978"> <div class="card__content"> <a href="/articles/api-maturity-model/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978" class="card__header"> <img loading="lazy" alt="Adopting an API Maturity Model to Accelerate Innovation" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/articles/api-maturity-model/en/smallimage/LOGO-1681752815249.jpg" class="card__image"> </a> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/Devops/" data-id="6043">DevOps</a> </span> </div> <h4 class="card__title"> <a title="Adopting an API Maturity Model to Accelerate Innovation" href="/articles/api-maturity-model/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978"> Adopting an API Maturity Model to Accelerate Innovation </a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Darshan-Shivashankar/" data-id="author-Darshan-Shivashankar">Darshan Shivashankar</a> </span> </div> <span class="card__date date">on<span>&nbsp;Apr 19, 2023</span></span> </div> <button aria-label="Like" size="small" class="like button button__unstyled icon__gray button__icon icon icon__like">Like</button> </div> </div> </div> </li> </ul> <a href="/Continuous_Delivery/articles/" class="button button__arrow arrow__right button__more button__has-transition"> MORE ARTICLES </a> </div> </div> </div> <div class="items"> <div class="actions heading__container"> <div class="actions__left"> <h2 class="heading section__heading heading__rss"> <a href="/Continuous_Delivery/podcasts/" > Podcasts about&nbsp;Continuous Delivery </a> </h2> <span class="rss icon icon__rss-feed"> <a href="https://feed.infoq.com/Continuous_Delivery/podcasts/" target="_blank">RSS Feed</a> </span> </div> </div> <div class="items__content"> <div> <ul class="no-style cards boxes" data-cols="3" data-size="large" data-hoverables="true" data-tax="podcasts"> <li data-id="34cbe779-d85a-4fe0-b820-3f28c9dc2574" data-path="/podcasts/dagger-devops-docker/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978"> <div class="card__content"> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/architecture-design/" data-id="6816">Architecture &amp; Design</a> </span> </div> <h4 class="card__title"> <a title="Solomon Hykes Discusses Dagger, DevOps, and Docker" href="/podcasts/dagger-devops-docker/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978">Solomon Hykes Discusses Dagger, DevOps, and Docker</a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Solomon-Hykes/" data-id="author-Solomon-Hykes">Solomon Hykes</a> </span> </div> <span class="card__date date">on<span>&nbsp;Dec 11, 2023</span></span> </div> <button class="icon button button__icon like button__unstyled icon__gray icon__like" aria-label="Like" size="small">Like</button> </div> </div> <a href="/podcasts/dagger-devops-docker/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/297x215/filters:quality(80)/podcasts/dagger-devops-docker/en/mediumimage/Solomon Hykes-m-1701887274118.jpg" class="card__image" alt="Solomon Hykes Discusses Dagger, DevOps, and Docker"/> <div class="card__meta"> <div class="card__icon">Icon</div> <div class="card__length">43:30</div> </div> </a> </div> </li> <li data-id="cd786028-a2b2-4a37-b54b-fb8d9ecebc6d" data-path="/podcasts/aiops-dual-track-careers/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978"> <div class="card__content"> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/culture-methods/" data-id="6817">Culture &amp; Methods</a> </span> </div> <h4 class="card__title"> <a title="Charity Majors on Intentional Culture, Dual Track Careers and AIOPS" href="/podcasts/aiops-dual-track-careers/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978">Charity Majors on Intentional Culture, Dual Track Careers and AIOPS</a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Charity-Majors/" data-id="author-Charity-Majors">Charity Majors</a> </span> </div> <span class="card__date date">on<span>&nbsp;Jun 16, 2023</span></span> </div> <button class="icon button button__icon like button__unstyled icon__gray icon__like" aria-label="Like" size="small">Like</button> </div> </div> <a href="/podcasts/aiops-dual-track-careers/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/297x215/filters:quality(80)/podcasts/aiops-dual-track-careers/en/mediumimage/charity-majors-s-1686841466560.jpg" class="card__image" alt="Charity Majors on Intentional Culture, Dual Track Careers and AIOPS"/> <div class="card__meta"> <div class="card__icon">Icon</div> <div class="card__length">33:20</div> </div> </a> </div> </li> <li data-id="5f0b30a8-37bb-4bee-966b-a84f46cf9e38" data-path="/podcasts/flux-flagger-operator-pattern/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978"> <div class="card__content"> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/architecture-design/" data-id="6816">Architecture &amp; Design</a> </span> </div> <h4 class="card__title"> <a title="Stefan Prodan on Flux, Flagger, and the Operator Pattern Applied to Non-Clustered Resources" href="/podcasts/flux-flagger-operator-pattern/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978">Stefan Prodan on Flux, Flagger, and the Operator Pattern Applied to Non-Clustered Resources</a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Stefan-Prodan/" data-id="author-Stefan-Prodan">Stefan Prodan</a> </span> </div> <span class="card__date date">on<span>&nbsp;Mar 07, 2022</span></span> </div> <button class="icon button button__icon like button__unstyled icon__gray icon__like" aria-label="Like" size="small">Like</button> </div> </div> <a href="/podcasts/flux-flagger-operator-pattern/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/297x215/filters:quality(80)/podcasts/flux-flagger-operator-pattern/en/mediumimage/stefan-prodan-m-1646684855869.jpg" class="card__image" alt="Stefan Prodan on Flux, Flagger, and the Operator Pattern Applied to Non-Clustered Resources"/> <div class="card__meta"> <div class="card__icon">Icon</div> <div class="card__length">25:59</div> </div> </a> </div> </li> <li data-id="d3402b4b-47c7-49e9-89b3-b74e18f12858" data-path="/podcasts/clare-liguori-aws-deployments/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978"> <div class="card__content"> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/architecture-design/" data-id="6816">Architecture &amp; Design</a> </span> </div> <h4 class="card__title"> <a title="Clare Liguori on Automating Safe and “Hands-Off” Deployments at AWS" href="/podcasts/clare-liguori-aws-deployments/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978">Clare Liguori on Automating Safe and “Hands-Off” Deployments at AWS</a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Clare-Liguori/" data-id="author-Clare-Liguori">Clare Liguori</a> </span> </div> <span class="card__date date">on<span>&nbsp;Feb 22, 2022</span></span> </div> <button class="icon button button__icon like button__unstyled icon__gray icon__like" aria-label="Like" size="small">Like</button> </div> </div> <a href="/podcasts/clare-liguori-aws-deployments/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/297x215/filters:quality(80)/podcasts/clare-liguori-aws-deployments/en/mediumimage/Clare-Liguori-m-1645522066995.jpeg" class="card__image" alt="Clare Liguori on Automating Safe and “Hands-Off” Deployments at AWS"/> <div class="card__meta"> <div class="card__icon">Icon</div> <div class="card__length">33:07</div> </div> </a> </div> </li> <li data-id="4d474000-af9d-404b-8cae-3f4afe083f2e" data-path="/podcasts/accelerate-metrics/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978"> <div class="card__content"> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/culture-methods/" data-id="6817">Culture &amp; Methods</a> </span> </div> <h4 class="card__title"> <a title="Real-World Experiences Adopting the Accelerate Metrics" href="/podcasts/accelerate-metrics/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978">Real-World Experiences Adopting the Accelerate Metrics</a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Nikolaus-Huber/" data-id="author-Nikolaus-Huber">Nikolaus Huber</a> </span> <span> <a href="/profile/Vladyslav-Ukis/" data-id="author-Vladyslav-Ukis">Vladyslav Ukis</a> </span> </div> <span class="card__date date">on<span>&nbsp;Dec 17, 2021</span></span> </div> <button class="icon button button__icon like button__unstyled icon__gray icon__like" aria-label="Like" size="small">Like</button> </div> </div> <a href="/podcasts/accelerate-metrics/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/297x215/filters:quality(80)/podcasts/accelerate-metrics/en/mediumimage/engineering-culture-290x210-1639756124187.jpg" class="card__image" alt="Real-World Experiences Adopting the Accelerate Metrics"/> <div class="card__meta"> <div class="card__icon">Icon</div> <div class="card__length">25:03</div> </div> </a> </div> </li> <li data-id="6fb1a55f-2d20-4bd4-933e-623807815996" data-path="/podcasts/continuous-delivery-with-kubernetes/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978"> <div class="card__content"> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/architecture-design/" data-id="6816">Architecture &amp; Design</a> </span> </div> <h4 class="card__title"> <a title="Alex Matyushentsev on Argo CD, Argo Rollouts, and Continuous Delivery with Kubernetes" href="/podcasts/continuous-delivery-with-kubernetes/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978">Alex Matyushentsev on Argo CD, Argo Rollouts, and Continuous Delivery with Kubernetes</a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Alex-Matyushentsev/" data-id="author-Alex-Matyushentsev">Alex Matyushentsev</a> </span> </div> <span class="card__date date">on<span>&nbsp;Aug 23, 2021</span></span> </div> <button class="icon button button__icon like button__unstyled icon__gray icon__like" aria-label="Like" size="small">Like</button> </div> </div> <a href="/podcasts/continuous-delivery-with-kubernetes/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/297x215/filters:quality(80)/podcasts/continuous-delivery-with-kubernetes/en/mediumimage/Alex Matyushentsev-m-1629538189334.jpg" class="card__image" alt="Alex Matyushentsev on Argo CD, Argo Rollouts, and Continuous Delivery with Kubernetes"/> <div class="card__meta"> <div class="card__icon">Icon</div> <div class="card__length">33:58</div> </div> </a> </div> </li> <li data-id="d5417c3e-d63c-4080-b713-ebdae884dd35" data-path="/podcasts/aws-deployments/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978"> <div class="card__content"> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/architecture-design/" data-id="6816">Architecture &amp; Design</a> </span> </div> <h4 class="card__title"> <a title="Clare Liguori on Automating Safe and “Hands-Off” Deployments at AWS" href="/podcasts/aws-deployments/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978">Clare Liguori on Automating Safe and “Hands-Off” Deployments at AWS</a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Clare-Liguori/" data-id="author-Clare-Liguori">Clare Liguori</a> </span> </div> <span class="card__date date">on<span>&nbsp;Feb 22, 2021</span></span> </div> <button class="icon button button__icon like button__unstyled icon__gray icon__like" aria-label="Like" size="small">Like</button> </div> </div> <a href="/podcasts/aws-deployments/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/297x215/filters:quality(80)/podcasts/aws-deployments/en/mediumimage/Clare Liguori-m-1613664258094.jpg" class="card__image" alt="Clare Liguori on Automating Safe and “Hands-Off” Deployments at AWS"/> <div class="card__meta"> <div class="card__icon">Icon</div> <div class="card__length">34:20</div> </div> </a> </div> </li> </ul> <a href="/Continuous_Delivery/podcasts/" class="button button__arrow arrow__right button__more button__has-transition"> MORE PODCASTS </a> </div> </div> </div> <div class="items"> <div class="actions heading__container"> <div class="actions__left"> <h2 class="heading section__heading heading__rss"> <a href="/Continuous_Delivery/minibooks/" > Guides about&nbsp;Continuous Delivery </a> </h2> <span class="rss icon icon__rss-feed"> <a href="https://feed.infoq.com/Continuous_Delivery/minibooks/" target="_blank">RSS Feed</a> </span> </div> </div> <div class="items__content"> <div> <ul class="no-style cards boxes" data-cols="4" data-size="large" data-hoverables="true" data-tax="guides"> <li data-id="1b71b015-b8d5-4aae-9429-1778e4227d7d" data-path="/minibooks/data-driven-decision-making/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978"> <div class="card__content"> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/culture-methods/" data-id="6817">Culture &amp; Methods</a> </span> </div> <h4 class="card__title"> <a title="The InfoQ eMag: Effective Software Delivery with Data-Driven Decision Making" href="/minibooks/data-driven-decision-making/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978"> The InfoQ eMag: Effective Software Delivery with Data-Driven Decision Making </a> </h4> <div class="card__footer"> <button class="icon button button__icon like button__unstyled icon__gray icon__like" aria-label="Like" size="small"> Like </button> </div> </div> <a href="/minibooks/data-driven-decision-making/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/256x364/filters:quality(80)/minibooks/data-driven-decision-making/en/cover/data-driven-decision-making-cover-1615818175243.jpg" alt="The InfoQ eMag: Effective Software Delivery with Data-Driven Decision Making" class="card__image" /> </a> </div> </li> <li data-id="3c59ee4c-1e0f-4fc7-b09e-cd76b1d42caf" data-path="/minibooks/emag-devops-database/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978"> <div class="card__content"> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/Devops/" data-id="6043">DevOps</a> </span> </div> <h4 class="card__title"> <a title="The InfoQ eMag: DevOps for the Database" href="/minibooks/emag-devops-database/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978"> The InfoQ eMag: DevOps for the Database </a> </h4> <div class="card__footer"> <button class="icon button button__icon like button__unstyled icon__gray icon__like" aria-label="Like" size="small"> Like </button> </div> </div> <a href="/minibooks/emag-devops-database/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/256x364/filters:quality(80)/minibooks/emag-devops-database/en/cover/DevOps-for-Databases-1561433607175.jpg" alt="The InfoQ eMag: DevOps for the Database" class="card__image" /> </a> </div> </li> <li data-id="69d75727-1c31-4d66-9449-3128718e075f" data-path="/minibooks/emag-advanced-devops-toolchain/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978"> <div class="card__content"> <div class="card__data"> <div class="card__topics topics"> <span> <a href="http://www.infoq.com/continuous_delivery/" data-id=""></a> </span> </div> <h4 class="card__title"> <a title="InfoQ eMag: Advanced DevOps Toolchain" href="/minibooks/emag-advanced-devops-toolchain/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978"> InfoQ eMag: Advanced DevOps Toolchain </a> </h4> <div class="card__footer"> <button class="icon button button__icon like button__unstyled icon__gray icon__like" aria-label="Like" size="small"> Like </button> </div> </div> <a href="/minibooks/emag-advanced-devops-toolchain/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/256x364/filters:quality(80)/minibooks/emag-advanced-devops-toolchain/en/cover/Thumb.jpg" alt="InfoQ eMag: Advanced DevOps Toolchain" class="card__image" /> </a> </div> </li> <li data-id="ce8330fa-4d8d-480f-94fc-9dd44e6bd47f" data-path="/minibooks/emag-continuous-delivery-stories/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978"> <div class="card__content"> <div class="card__data"> <div class="card__topics topics"> <span> <a href="http://www.infoq.com/continuous_delivery/" data-id=""></a> </span> </div> <h4 class="card__title"> <a title="InfoQ eMag: Continuous Delivery Stories" href="/minibooks/emag-continuous-delivery-stories/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978"> InfoQ eMag: Continuous Delivery Stories </a> </h4> <div class="card__footer"> <button class="icon button button__icon like button__unstyled icon__gray icon__like" aria-label="Like" size="small"> Like </button> </div> </div> <a href="/minibooks/emag-continuous-delivery-stories/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/256x364/filters:quality(80)/minibooks/emag-continuous-delivery-stories/en/cover/Continous-Delivery-Stories-cover.jpg" alt="InfoQ eMag: Continuous Delivery Stories" class="card__image" /> </a> </div> </li> <li data-id="7c356bec-0e6f-46ef-aada-6dbe3cff9476" data-path="/minibooks/configuration-management-tools/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978"> <div class="card__content"> <div class="card__data"> <div class="card__topics topics"> <span> <a href="http://www.infoq.com/continuous_delivery/" data-id=""></a> </span> </div> <h4 class="card__title"> <a title="InfoQ eMag: Infrastructure Configuration Management Tools" href="/minibooks/configuration-management-tools/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978"> InfoQ eMag: Infrastructure Configuration Management Tools </a> </h4> <div class="card__footer"> <button class="icon button button__icon like button__unstyled icon__gray icon__like" aria-label="Like" size="small"> Like </button> </div> </div> <a href="/minibooks/configuration-management-tools/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/256x364/filters:quality(80)/minibooks/configuration-management-tools/en/cover/cover2.png" alt="InfoQ eMag: Infrastructure Configuration Management Tools" class="card__image" /> </a> </div> </li> <li data-id="258653f7-7bf1-4b10-bd31-2adfc0083098" data-path="/minibooks/emag-devops/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978"> <div class="card__content"> <div class="card__data"> <div class="card__topics topics"> <span> <a href="http://www.infoq.com/continuous_delivery/" data-id=""></a> </span> </div> <h4 class="card__title"> <a title="Introducing DevOps to the Traditional Enterprise" href="/minibooks/emag-devops/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978"> Introducing DevOps to the Traditional Enterprise </a> </h4> <div class="card__footer"> <button class="icon button button__icon like button__unstyled icon__gray icon__like" aria-label="Like" size="small"> Like </button> </div> </div> <a href="/minibooks/emag-devops/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/256x364/filters:quality(80)/minibooks/emag-devops/en/cover/CoverThumb.jpg" alt="Introducing DevOps to the Traditional Enterprise" class="card__image" /> </a> </div> </li> <li data-id="64f5405c-7b8a-41ab-a08b-31d16c694018" data-path="/minibooks/continuous-delivery-overview/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978"> <div class="card__content"> <div class="card__data"> <div class="card__topics topics"> <span> <a href="http://www.infoq.com/continuous_delivery/" data-id=""></a> </span> </div> <h4 class="card__title"> <a title="Continuous Delivery Overview" href="/minibooks/continuous-delivery-overview/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978"> Continuous Delivery Overview </a> </h4> <div class="card__footer"> <button class="icon button button__icon like button__unstyled icon__gray icon__like" aria-label="Like" size="small"> Like </button> </div> </div> <a href="/minibooks/continuous-delivery-overview/?topicPageSponsorship=d4dd3f6c-379f-43c0-b630-f830ebd52978" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/256x364/filters:quality(80)/minibooks/continuous-delivery-overview/en/cover/cover.jpg" alt="Continuous Delivery Overview" class="card__image" /> </a> </div> </li> </ul> <a href="/Continuous_Delivery/minibooks/" class="button button__arrow arrow__right button__more button__has-transition"> MORE GUIDES </a> </div> </div> </div> </div> <div class="items prsp__items box__border f_topicSponsorship" data-col="1/4" data-place="MICROSITE" data-trk-view="true" data-trk-impr="true" jsh="{&quot;topic&quot;:&quot;Continuous Delivery&quot;,&quot;id&quot;:&quot;347ec87f-7a52-49a3-9f4a-5351f6e32dc9&quot;,&quot;title&quot;:&quot;Harness Feb 27th Webinar 01/24/2025 - 02/27/2025&quot;}"> <style type="text/css">.save-seat-btn a:hover { color: white !important; border: 1px solid #0073e1; background: #0073e1; } .save-seat-btn a { font-weight: bold; font-size: 16px; line-height: 100%; color: #0073e1; border: 1px solid #0073e1; box-sizing: border-box; border-radius: 2px; text-decoration: none; padding: 10px 20px; margin: 0 auto; display: inline-block; text-align: center; } .sponsored_webinar-middle-section a:hover { opacity: 0.8; } .sponsored_webinar-middle-section h4 a:hover { text-decoration: underline; } @media (max-width: 768px) { .sponsored_webinar-middle-section { text-align: left; } .sponsored_webinar-middle-section a { text-align: left !important; margin-left: auto; margin-right: auto; } .sponsored_webinar-middle-section .webinar_cover { max-width: 350px; height: 180px; } .sponsored_webinar-bottom-section h4 { text-align: left !important; font-size: 16px; line-height: 150%; } .sponsored_webinar-bottom-section ul { text-align: left !important; } .sponsored_webinar-bottom-section li { display: block !important; } } @media (max-width: 1080px) { .sponsored_webinar-middle-section { text-align: center; } .sponsored_webinar-middle-section a { text-align: center; margin-left: auto; margin-right: auto; } .sponsored_webinar-middle-section .webinar_cover { max-width: 350px !important; height: 180px !important; } .sponsored_webinar-middle-section h4 { text-align: center; font-size: 18px; line-height: 150%; } .sponsored_webinar-bottom-section p { text-align: center; } .sponsored_webinar-bottom-section ul { text-align: center; } .sponsored_webinar-bottom-section li { display: inline-block !important; } } </style> <div style="width: 100%; padding: 16px 5px;"> <div class="sponsored_webinar-top-section"> <center> <p class="sponsored__introtext" style="color:#434343; font-size:9px; width: 100%; text-align: center">SPONSORED BY</p> </center> <center><a href="/url/p/bd13cde8-d3ac-4ac2-b73e-5a0868d6e6a3/" target="_blank" rel="nofollow"><img _p="true" alt="" height="40" src="https://s3.us-east-1.amazonaws.com/assets.infoq.com/resources/en/Harness_logo.png" width="200" rel="share"></a></center> <p style="font-weight: normal; font-size: 12px; line-height: 150%;text-align: center; color: #000000; padding-top: 10px;">Live Webinar presented by Harness |<br style="margin: 0;" /> Q&amp;A moderated by InfoQ</p> <p style="font-weight: normal; font-size: 12px; line-height: 150%;text-align: center; color: #000000;">&nbsp;</p> <center><a href="/url/p/fe75d14b-cf76-44aa-8a9e-e65fdeb06239/" target="_blank" rel="nofollow"><img _p="true" alt="" height="26" src="https://s3.amazonaws.com/infoq.content.live.0/sponsorship/topicpage/1283/1infoq-webinar-1592470260946.jpg" width="165" rel="share"></a></center> </div> <div class="sponsored_webinar-middle-section"><a class="webinar_cover" style="background-image: url('https://s3.us-east-1.amazonaws.com/assets.infoq.com/resources/en/HarnessWebinarFebruary27-Microsite.png'); display:block; max-width:266px; position:relative; margin-top: 15px; margin-bottom: 15px; height: 125px; background-size:cover; width: 100%; border:1px solid black; background-position:center; background-repeat:no-repeat;" target="_blank"><label style="position: absolute; left: 10px; bottom: 10px; background: #FED488; border-radius: 6px; padding: 1px 15px; font-weight: bold; font-size: 11px; line-height: 21px; align-items: center; text-align: center; color: rgba(0, 0, 0, 0.85); font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace;">Save your Seat!</label></a> <h4 style="font-weight:bold; margin-top: 0;"><a href="/url/p/2ff9db69-61e6-4bdc-a3d3-2ea941a58799/" target="_blank" rel="nofollow">Feature Flagging Anti-Patterns: Avoiding Pitfalls in Modern Software Delivery</a></h4> <div style="font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-weight: bold; margin-bottom: 15px; font-size: 12px; line-height: 150%;"><span style="display: block; color: #17873E">WHEN: </span> <span style="display: block;"> Thursday, Feb 27, 2025 </span> <span style="display: block;"> 1:00 PM - 2:00 PM EST</span></div> </div> <div class="sponsored_webinar-bottom-section"> <p style="font-weight: normal; font-size: 14px; line-height: 150%;">Feature flags boost releases, experimentation, and continuous delivery&mdash;but misuse can add complexity and technical debt. Learn to avoid common pitfalls, manage flag lifecycles, prevent &quot;flag spaghetti,&quot; and use tools to audit and clean up flags effectively.</p> &nbsp; <p class="save-seat-btn" style="text-align: center;"><a href="/url/p/4e84ee58-a136-4352-b089-10a8703881c3/" target="_blank" rel="nofollow">Save your Seat</a></p> </div> </div> </div> </div> </section> </main> <footer class="footer "> <section data-nosnippet class="section container"> <div class="container__inner"> <ul data-cols="5" class="no-style columns boxes topic__boxes"> <li class="development"> <div class="box__header"> <a class="t_all_footer_more-boxes-header" href="/development/">Development</a> </div> <div class="box__content"> <ul class="no-style box__list small"> <li> <h5><a class="t_all_footer_more-boxes-item" href="/news/2025/02/apple-cpu-side-channel-slap-flop/" title="Recent Generations of Apple CPUs Affected by New Side-Channel Vulnerabilities">Recent Generations of Apple CPUs Affected by New Side-Channel Vulnerabilities</a></h5> </li> <li> <h5><a class="t_all_footer_more-boxes-item" href="/news/2025/02/deepsek-exposed-database/" title="DeepSeek Database Leaking Sensitive Information Highlights AI Security Risks">DeepSeek Database Leaking Sensitive Information Highlights AI Security Risks</a></h5> </li> <li> <h5><a class="t_all_footer_more-boxes-item" href="/presentations/quarkus-efficiency/" title="Zero Waste, Radical Magic, and Italian Graft &amp;ndash; Quarkus Efficiency Secrets">Zero Waste, Radical Magic, and Italian Graft &ndash; Quarkus Efficiency Secrets</a></h5> </li> </ul> </div> </li> <li class="architecture-design"> <div class="box__header"> <a class="t_all_footer_more-boxes-header" href="/architecture-design/">Architecture &amp; Design</a> </div> <div class="box__content"> <ul class="no-style box__list small"> <li> <h5><a class="t_all_footer_more-boxes-item" href="/articles/infoq-articles-contest-2025/" title="2025 Article Contest: Win Your Conference Ticket">2025 Article Contest: Win Your Conference Ticket</a></h5> </li> <li> <h5><a class="t_all_footer_more-boxes-item" href="/podcasts/software-fail-recover-matters/" title="Your Software Will Fail, It is How You Recover That Matters: A Conversation with Randy Shoup">Your Software Will Fail, It is How You Recover That Matters: A Conversation with Randy Shoup</a></h5> </li> <li> <h5><a class="t_all_footer_more-boxes-item" href="/news/2025/02/report-resilience-devops-dora/" title="Most Companies Experience Weekly Outages: the State of Resilience 2025 Report">Most Companies Experience Weekly Outages: the State of Resilience 2025 Report</a></h5> </li> </ul> </div> </li> <li class="culture-methods"> <div class="box__header"> <a class="t_all_footer_more-boxes-header" href="/culture-methods/">Culture &amp; Methods</a> </div> <div class="box__content"> <ul class="no-style box__list small"> <li> <h5><a class="t_all_footer_more-boxes-item" href="/presentations/personal-brand/" title="Five Steps to Building a Personal Brand for Elevating Your Influence">Five Steps to Building a Personal Brand for Elevating Your Influence</a></h5> </li> <li> <h5><a class="t_all_footer_more-boxes-item" href="/podcasts/building-responsible-ai-culture/" title="Building Responsible AI Culture: Governance, Diversity, and the Future of Development">Building Responsible AI Culture: Governance, Diversity, and the Future of Development</a></h5> </li> <li> <h5><a class="t_all_footer_more-boxes-item" href="/news/2025/02/improve-learn-software-dev/" title="How to Foster a Continuous Improvement and Learning Mindset in Software Development">How to Foster a Continuous Improvement and Learning Mindset in Software Development</a></h5> </li> </ul> </div> </li> <li class="ai-ml-data-eng"> <div class="box__header"> <a class="t_all_footer_more-boxes-header" href="/ai-ml-data-eng/">AI, ML &amp; Data Engineering</a> </div> <div class="box__content"> <ul class="no-style box__list small"> <li> <h5><a class="t_all_footer_more-boxes-item" href="/articles/eclipse-lmos-ai-agents/" title="Eclipse LMOS: Launching AI Agents Across Europe at Breakneck Speed">Eclipse LMOS: Launching AI Agents Across Europe at Breakneck Speed</a></h5> </li> <li> <h5><a class="t_all_footer_more-boxes-item" href="/news/2025/02/aerospike-database-8-acid/" title="Distributed Multi-Modal Database Aerospike 8 Brings Support for Real-Time ACID Transactions">Distributed Multi-Modal Database Aerospike 8 Brings Support for Real-Time ACID Transactions</a></h5> </li> <li> <h5><a class="t_all_footer_more-boxes-item" href="/news/2025/02/gemini-2-flash-lite-pro-models/" title="Gemini 2.0 Family Expands with Cost-Efficient Flash-Lite and Pro-Experimental Models">Gemini 2.0 Family Expands with Cost-Efficient Flash-Lite and Pro-Experimental Models</a></h5> </li> </ul> </div> </li> <li class="devops"> <div class="box__header"> <a class="t_all_footer_more-boxes-header" href="/devops/">DevOps</a> </div> <div class="box__content"> <ul class="no-style box__list small"> <li> <h5><a class="t_all_footer_more-boxes-item" href="/presentations/devsecops-ai/" title="Efficient DevSecOps Workflows with a Little Help from AI">Efficient DevSecOps Workflows with a Little Help from AI</a></h5> </li> <li> <h5><a class="t_all_footer_more-boxes-item" href="/news/2025/02/prezi-prometheus-victoriametrics/" title="Prezi&#039;s Journey from Prometheus to VictoriaMetrics">Prezi's Journey from Prometheus to VictoriaMetrics</a></h5> </li> <li> <h5><a class="t_all_footer_more-boxes-item" href="/news/2025/02/slack-accessibility-testing/" title="Slack Enhances Accessibility Testing through Automation">Slack Enhances Accessibility Testing through Automation</a></h5> </li> </ul> </div> </li> </ul> </div> </section> <section data-nosnippet class="container section section__newsletter"> <div class="columns container__inner"> <div class="newsletter" data-col="1/2" id="infoq-nl" > <h2 class="heading"> <strong>The InfoQ</strong> Newsletter </h2> <p class="intro">A round-up of last week&#x2019;s content on InfoQ sent out every Tuesday. Join a community of over 250,000 senior developers. <a target="_blank" href="https://assets.infoq.com/newsletter/regular/en/newsletter_sample/newsletter_sample.html">View an example</a> </p> <ul class="newsletter__features"> <li>Get a quick overview of content published on a variety of innovator and early adopter technologies</li> <li>Learn what you don&#x2019;t know that you don&#x2019;t know</li> <li>Stay up to date with the latest information from the topics you are interested in</li> </ul> <div class="newsletter__subscribe"> <form class="form gdpr" name="footerNewsletterForm" id="footerNewsletterForm" action="#" onsubmit="footerNewsletter.saveSubscription(); return false;"> <div class="field newsletter__mail input__text input__no-label input__medium email"> <label for="email-newsletter-infoq" class="label field__label">Enter your e-mail address</label> <input id="email-newsletter-infoq" name="footerNewsletterEmail" placeholder="Enter your e-mail address" class="input field__input" type="email"/> <input type="text" name="emailH" id="input_email_h" aria-required="false" style="display:none !important" tabindex="-1" autocomplete="off"/> <input type="hidden" id="fnt" name="fnt" value="AlKv2czJ2bo5biaH"/> <input type="hidden" id="footerNewsletterType" name="footerNewsletterType" value="regular"/> <input type="hidden" id="cmpi" name="cmpi" value="1"/> </div> <div class="hidden"> <span class="input__select field country"> <label for="input-simple-newsletter-country" class="label field__label">Select your country</label> <select id="input-simple-newsletter-country" class="select field__input"> <option value="" class="select__option">Select a country</option> </select> <p class="input__message field__desc"></p> </span> <span class="input__checkbox field hidden"> <input type="checkbox" id="gdpr-consent-simple-nl"> <label for="gdpr-consent-simple-nl" class="label"><span>I consent to InfoQ.com handling my data as explained in this <a href="https://www.infoq.com/privacy-notice">Privacy Notice</a>.</span></label> </span> </div> <input type="submit" role="button" value="Subscribe" class="button button__medium button__red" onclick="return footerNewsletter.validateEmail('Invalid email address');"/> </form> <p class="meta"> <a href="/privacy-notice/" target="_blank">We protect your privacy.</a> </p> <span class="success" style="display:none;" id="footerNewsletterMessage"></span> </div> <script type="text/javascript"> var footerNewsletter = new Newsletter('Enter your e-mail address', 'email-newsletter-infoq', 'footerNewsletterType','footerNewsletterMessage', 'fnt', 'input_email_h', 'input-simple-newsletter-country', 'cmpi','footer_except_homepage'); </script> </div> <div data-col="1/2" data-bg="qconLondon" class="event__container"> <a href="https://qconlondon.com/?utm_source=infoq&utm_medium=referral&utm_campaign=largefooterad_qlondon25" target="_blank" class="qconplus__events-slider"> <div> <div class="logo-london"></div> <br> </div> <p class="intro"><ul><li><strong>Conference: April 7-9, 2025</strong></li><li><strong>Certification workshop: April 10, 2025</strong></li></ul> QCon London International Software Development Conference returns on April 7-10, 2025. Level-up on 15 major software and leadership topics including; The Tech of FinTech, AI & ML in Software Engineering, Modern Data Architectures, Engineering Productivity, The Path to Senior Engineering Leadership, Supply Chain Security, and more.</p> <p class="intro">Learn the emerging trends. Explore the use cases. Implement the best practices.<br><strong class="button button__green cta__button">Register Now</strong></p> </a> </div> </div> </section> <section data-nosnippet class="section container footer__subfooter align__left"> <div class="container__inner columns"> <div data-col="1/4" class="columns footer__links-wrap"> <div class="footer__links"> <a href="/" class="nuxt-link-exact-active active" title="Home">Home</a> <a href="/reginit.action" class="emphasis" title="Create account">Create account</a> <button aria-label="Login" class="login" data-ref="mainLogin">Login</button> <a rel="noreferrer noopener" href="http://qconferences.com/" target="_blank" title="QCon Conferences">QCon Conferences</a> <a rel="noreferrer noopener" href="https://events.infoq.com/" target="_blank">Events</a> <a href="/write-for-infoq/" title="Write for InfoQ">Write for InfoQ</a> <a href="/infoq-editors/" title="InfoQ Editors">InfoQ Editors</a> <a href="/about-infoq/" title="About InfoQ">About InfoQ</a> <a href="/about-c4media/" title="About C4Media">About C4Media</a> <a rel="noreferrer noopener" href="https://get.infoq.com/infoq-mediakit/" title="Media Kit" target="_blank"> Media Kit </a> <a href="https://devmarketing.c4media.com/?utm_source=infoq" title="InfoQ Developer Marketing Blog" target="_blank">InfoQ Developer Marketing Blog</a> <a rel="noreferrer noopener" href="https://c4media.com/diversity" title="Diversity" target="_blank">Diversity</a> </div> </div> <div data-col="1/4" class="events__list"> <h4 class="heading footer__heading">Events</h4> <ul class="qcons__list no-style"> <li><span class="icon event__type conference"></span> <div class="qcon__detail"> <h5 class="heading"> <a rel="noreferrer noopener" href="https://qconlondon.com/?utm_source=infoq&utm_medium=referral&utm_campaign=footer_qlondon25" target="_blank">QCon London</a> </h5> <span class="meta date">APRIL 7-10, 2025</span> </div> </li> <li><span class="icon event__type conference"></span> <div class="qcon__detail"> <h5 class="heading"> <a rel="noreferrer noopener" href="https://devsummit.infoq.com/conference/boston2025?utm_source=infoq&utm_medium=referral&utm_campaign=footer_idsboston25" target="_blank">InfoQ Dev Summit Boston</a> </h5> <span class="meta date">June 9-10, 2025</span> </div> </li> <li><span class="icon event__type conference"></span> <div class="qcon__detail"> <h5 class="heading"> <a rel="noreferrer noopener" href="#" target="_self" onclick="return false;">InfoQ Dev Summit Munich</a> </h5> <span class="meta date">October, 2025</span> </div> </li> <li><span class="icon event__type conference"></span> <div class="qcon__detail"> <h5 class="heading"> <a rel="noreferrer noopener" href="https://qconsf.com/?utm_source=infoq&utm_medium=referral&utm_campaign=footer_qsf25" target="_self">QCon San Francisco</a> </h5> <span class="meta date">November 17-21, 2025 / In-person</span> </div> </li> <li><span class="icon event__type conference"></span> <div class="qcon__detail"> <h5 class="heading"> <a rel="noreferrer noopener" href="#" target="_self" onclick="return false;">InfoQ Dev Summit New York</a> </h5> <span class="meta date">December, 2025 / In-person</span> </div> </li> </ul> </div> <div data-col="1/4" class="footer__social-wrap"> <h4 class="heading text-left footer__heading">Follow us on </h4> <div class="social__links columns social__links__row"> <a href="https://www.youtube.com/infoq"><span class="icon icon__large icon__social icon__youtube"></span><div><span class="social__count">Youtube</span><span class="social__followers">223K Followers</span></div></a> <a href="http://www.linkedin.com/company/infoq"><span class="icon icon__large icon__social icon__linkedin"></span><div><span class="social__count">Linkedin</span><span class="social__followers">21K Followers</span></div></a> <a href="#" id="footerNewsletterRssLink"><span class="icon icon__large icon__social icon__rss"></span><div><span class="social__count">RSS</span><span class="social__followers">19K Readers</span></div></a> <a rel="noreferrer noopener" href="http://twitter.com/infoq" target="_blank"><span class="icon icon__large icon__social icon__twitter"></span><div><span class="social__count">X</span><span class="social__followers">53.4k Followers</span></div></a> <a rel="noreferrer noopener" href="https://www.facebook.com/InfoQ-75911537320" target="_blank"><span class="icon icon__large icon__social icon__fb"></span><div><span class="social__count">Facebook</span><span class="social__followers">21K Likes</span></div></a> <a rel="noreferrer noopener" href="https://bsky.app/profile/infoq.com" target="_blank"><span class="icon icon__large icon__social icon__bluesky"></span><div><span class="social__count">Bluesky</span><span class="social__followers">New</span></div></a> <a rel="noreferrer noopener" href="https://www.amazon.com/dp/B07KMWGNNL" target="_blank"><span class="icon icon__large icon__social icon__alexa"></span><div><span class="social__count">Alexa</span><span class="social__followers">New</span></div></a> </div> </div> <div data-col="1/4" class="footer__stayin-wrap"> <h4 class="heading text-left footer__heading">Stay in the know</h4> <div class="stayIn_panel_container"> <a href="/podcasts/" class="stayIn_panel" target="_blank" rel="noreferrer noopener"><span>The InfoQ Podcast</span><picture><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZm9vdGVyL2luZm9xLXBvZGNhc3QuanBnIiwiZWRpdHMiOiB7IndlYnAiOiB7ICJxdWFsaXR5Ijo4MH19fQ==" type="image/webp"><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZm9vdGVyL2luZm9xLXBvZGNhc3QuanBnIiwiZWRpdHMiOiB7ImpwZWciOiB7ICJxdWFsaXR5Ijo4MH19fQ==" type="image/webp"><img src="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZm9vdGVyL2luZm9xLXBvZGNhc3QuanBnIiwiZWRpdHMiOiB7ImpwZWciOiB7ICJxdWFsaXR5Ijo4MH19fQ==" loading="lazy" width="65px" height="64px" alt="The InfoQ Podcast Logo - Stay in the know"></picture></a> <a href="/podcasts/#engineering_culture" class="stayIn_panel" target="_blank" rel="noreferrer noopener"><span>Engineering Culture Podcast</span><picture><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZm9vdGVyL2luZm9xLXBvZGNhc3QtZW5naW5lZXJpbmctY3VsdHVyZS5qcGciLCJlZGl0cyI6IHsid2VicCI6IHsgInF1YWxpdHkiOjgwfX19" type="image/webp"><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZm9vdGVyL2luZm9xLXBvZGNhc3QtZW5naW5lZXJpbmctY3VsdHVyZS5qcGciLCJlZGl0cyI6IHsianBlZyI6IHsgInF1YWxpdHkiOjgwfX19" type="image/webp"><img src="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZm9vdGVyL2luZm9xLXBvZGNhc3QtZW5naW5lZXJpbmctY3VsdHVyZS5qcGciLCJlZGl0cyI6IHsianBlZyI6IHsgInF1YWxpdHkiOjgwfX19" loading="lazy" width="65px" height="64px" alt="Engineering Culture Podcast Logo - Stay in the knoww"></picture></a> <a href="/software-architects-newsletter/" class="stayIn_panel" target="_blank" rel="noreferrer noopener"><span>The Software Architects' Newsletter</span><picture><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZm9vdGVyL2luZm9xLWFyY2hpdGVjdC1uZXdzbGV0dGVyLmpwZyIsImVkaXRzIjogeyJ3ZWJwIjogeyAicXVhbGl0eSI6ODB9fX0=" type="image/webp"><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZm9vdGVyL2luZm9xLWFyY2hpdGVjdC1uZXdzbGV0dGVyLmpwZyIsImVkaXRzIjogeyJqcGVnIjogeyAicXVhbGl0eSI6ODB9fX0=" type="image/webp"><img src="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvZm9vdGVyL2luZm9xLWFyY2hpdGVjdC1uZXdzbGV0dGVyLmpwZyIsImVkaXRzIjogeyJqcGVnIjogeyAicXVhbGl0eSI6ODB9fX0=" loading="lazy" width="65px" height="64px" alt="The Software Architects' Newsletter Logo - Stay in the know"></picture></a> </div> </div> </div> </section> <section data-nosnippet class="container footer__bottom section white align__left"> <div class="container__inner columns"> <div data-col="2/3" class="column"> <div class="footer__contact contact columns"> <span data-col="1/6"> General Feedback <a href="mailto:feedback@infoq.com">feedback@infoq.com</a> </span> <span data-col="1/6"> Advertising <a href="mailto:sales@infoq.com">sales@infoq.com</a> </span> <span data-col="1/6"> Editorial <a href="mailto:editors@infoq.com">editors@infoq.com</a> </span> <span data-col="1/6"> Marketing <a href="mailto:marketing@infoq.com">marketing@infoq.com</a> </span> </div> </div> <div class="column" data-col="1/3"> <p class="footer__more"> InfoQ.com and all content copyright &#169; 2006-2025 C4Media Inc.<br/> <a href="/privacy-notice" target="_blank">Privacy Notice</a>, <a href="/terms-and-conditions " target="_blank">Terms And Conditions</a>, <a href="/cookie-policy " target="_blank">Cookie Policy</a> </p> </div> </div> </section> </footer> <!-- ####### SITE END ######### --> </div> <div class="intbt"> <a href="/int/bt/" title="bt">BT</a> </div> <script type="text/javascript"> $.when(humanDetectionAsync()).then( function(status) { $.getScript("/scripts/__hd.ifq?hdt=AlKv2czJ2bo5biaH&ha=" + status); } ); </script> <script type="text/javascript"> var pageFullyLoaded = false; // this event is fired by frontend once all the necessary things have been done(mobile display, moving vcr boxes around when needed...) infoq.event.on('loaded', function(e) { pageFullyLoaded = true; }); infoq.event.on('pageWidthChanged', function(e) { // re-execute tracking vcr impressions when this event happens (it only happens when elements are added/removed from page) // doTrackVcrImpressions takes into account the data-trk-impr="true" if =false the element was already tracked. // this is needed when switching from mobile to desktop or when layout on mobile changes and desktop version is displayed. New elements become visible. Tracker.safeExec(Tracker.doTrackVcrImpressions); // these 2 need to be called also because we might be on a content page. In case we are not nothing happens VCR.doTrackingCustomRightbar(); VCR.doTrackingCustomRightbarForPresentations() }); //check to see if error page if(window.device !== undefined) { var intervalImpressions = setInterval(function() { var shouldTrack = false; // no vcr widgets on index pages if(window.isIndexPage) { if(window.sponsoredPodcastDone === undefined || window.sponsoredPodcastDone) { shouldTrack = true; } } else //on homepage, bottom widget + 2 native widgets if(InfoQConstants.pageType == "HOMEPAGE" && window.finishedVcrOptional1 && window.finishedRelatedVcr && (window.finishedVcrOptional2 === undefined || window.finishedVcrOptional2)) { shouldTrack = true; } else // rightbar widgets + native widgets + content vcr widgets if((InfoQConstants.pageType == "NEWS_PAGE" || InfoQConstants.pageType == "ARTICLE_PAGE") && ((window.finishedRightbarVcr || window.finishedRightbarVcr === undefined) && window.contentVcrFinished)) { shouldTrack = true; } else if ((InfoQConstants.pageType == "PRESENTATION_PAGE") && (window.contentVcrFinished || window.contentVcrFinished === undefined) && (window.finishedRightbarVcr || window.finishedRightbarVcr === undefined) ) { shouldTrack = true; } else // native widgets + content widgets if(window.contentVcrFinished && (window.finishedVcrOptional1 || window.finishedVcrOptional1 === undefined) && (window.finishedVcrOptional2 || window.finishedVcrOptional2 === undefined)) { shouldTrack = true; } // we start tracking only after the page is fully loaded, frontend signals that they finished everything related to page display. if(shouldTrack && pageFullyLoaded) { clearInterval(intervalImpressions); Tracker.safeExec(Tracker.doTrackVcrImpressions); // start tracking viewable impressions also only after everything is ready function callbackRouter(entries, observer) { var targets = new Array(); entries.forEach(function (entry) { var target = entry.target; if (target.dataset.trkView === 'false') return; if (entry.intersectionRatio > 0) { target.dataset.trkView = false; targets.push(target); } }); Tracker.doTrackViewableImpressions(targets); } var elementsForTrackingViewableImpressions = document.querySelectorAll('[data-trk-view="true"]') var observer = new IntersectionObserver(callbackRouter, { threshold: 0.3 }); elementsForTrackingViewableImpressions.forEach(observer.observe.bind(observer)); } }, 500); } $(document).ready(function () { // desktop notifications widget Tracker.encodeNotificationLinks($(".f_notificationWidget")); // mobile notifications widget Tracker.encodeNotificationLinks($(".h_notifications")); // desktop notifications page Tracker.encodeNotificationLinks($(".notification-page")); // mobile notifications page Tracker.encodeNotificationLinks($(".notifications_page")); }); </script> <script type="text/javascript"> if(window.location.hash){ var hash = window.location.hash.substring(1); if(hash == 'subscribe'){ $('html,body').animate({scrollTop: $('.ftxt3 > .newsletter').offset().top}, 'slow'); } } </script> <script type="text/javascript"> var newsletterSubscriptionURL ='/newsletter/subscribe.action'; DynamicLinks.updateRssLinks('XnLuCjIf6z9BHCGZ6Nd4R76O32258ENr'); ContentSummary.setSelectedTab('en'); //when user enters the main content area show default topics in the topics bar $("#content-wrapper").mouseenter(function() { showDefaultTopics(); }); Bookmarks.contentTitle = ""; Bookmarks.apiUrl = '/widgets/bookmark.action'; Bookmarks.isContentBookmarked = ""; </script> <script type="text/javascript"> var $buoop = {vs:{i:6,f:1,o:10.1,s:1}} $buoop.ol = window.onload; $(document).ready(function() { try {if ($buoop.ol) $buoop.ol();}catch (e) {} var e = document.createElement("script"); e.setAttribute("type", "text/javascript"); e.setAttribute("src", "https://cdn.infoq.com/statics_s2_20250213201535/scripts/lib/browser-update-org/update.js"); document.body.appendChild(e); }); </script> <script> !function(f,b,e,v,n,t,s) {if(f.fbq)return;n=f.fbq=function(){n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)}; if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0'; n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0]; s.parentNode.insertBefore(t,s)}(window,document,'script', 'https://connect.facebook.net/en_US/fbevents.js'); fbq('init', '842388869148196'); fbq('track', 'PageView'); </script> <noscript> <img height="1" width="1" src="https://www.facebook.com/tr?id=842388869148196&ev=PageView&noscript=1"/> </noscript> <script type='text/javascript'> try { mixpanel.track('page viewed', { 'page name' : document.title, 'url' : window.location.pathname }); } catch(err) { } </script> <!-- Latest Version --> <script src="https://cc.cdn.civiccomputing.com/9/cookieControl-9.x.min.js" type="text/javascript"></script> <script> const config = { apiKey: '8910ea974a96ffb6f927952b4ae9b9b0cc3e5973', product: 'PRO_MULTISITE', // general settings consentCookieExpiry: 90, encodeCookie: true, sameSiteCookie: true, // if false, cookie set as SameSite=None;secure; sameSiteValue: ';secure', // either 'Strict', 'Lax', or 'None' subDomains: true, initialState: 'notify', // 'notify','top','box' require pro licence notifyOnce: false, setInnerHTML: true, //layout settings layout: 'slideout', position: 'left', theme: 'light', acceptButton: true, rejectButton: true, closeOnGlobalChange: true, closeStyle: 'icon', toggleType: 'slider', notifyDismissButton: true, settingsStyle: 'link', excludedCountries: ['US'], /*accessibility: { disableSiteScrolling: true, },*/ statement: { description: 'For more detailed information about the cookies we use, see our', name: 'Cookie Policy', url: 'https://www.infoq.com/cookie-policy', updated: '01/01/2024', }, // cookies starting from 'cookie_expire' are from live.infoq.com but since we use the same tool on the same domain we need to specify those too so // that infoq.com cookieControl does not delete live.infoq.com cookies(also infoq.com cookies have been specified in live.infoq.com cookieControl configs) necessaryCookies: ['RegUserCookie', 'UserCookie', 'IdpCookie', 'ConversionTrackingV2_','PSAdialog','*P13NWN*','topbarSurvey','__bkm','JSESSIONID','mp_','_mixpanel','CloudFront-Key-Pair-Id','CloudFront-Policy','CloudFront-Signature','cookie_expire','discount_promo_closed','discount_promo_code','discount_promo_submitted','exit_survey_popup','referrer_popup','voting_popup_*','AWSALB','AWSALBCORS','aws-waf-token'], optionalCookies: [ { name: 'analytics', label: 'Analytics', description: 'Analytical cookies help us to improve our website by collecting and reporting information on its usage.', cookies: ['_ga', '_ga*', '_gid', '_gat', '__utma', '__utmt', '__utmb', '__utmc', '__utmz', '__utmv'], onAccept: function(){ gtag('consent', 'update', {'analytics_storage': 'granted'}); }, onRevoke: function(){ gtag('consent', 'update', {'analytics_storage': 'denied'}); } }, { name: 'marketing', label: 'Advertising', description: 'We use advertising cookies to display advertisements to you for our products.', onAccept: function(){ gtag('consent', 'update', {'ad_storage': 'granted', 'ad_personalization': 'granted', 'ad_user_data': 'granted'}); }, onRevoke: function(){ gtag('consent', 'update', {'ad_storage': 'denied', 'ad_personalization': 'denied', 'ad_user_data': 'denied'}); } } ], text : { // main preference panels title: '<h3>Our use of cookies</h3>', intro: 'We use necessary cookies to make our site work. Functional cookies help enhance the performance and functionality of the site. '+ 'We\'d also like to set analytics cookies to help us improve your experience by measuring how you use the site. '+ 'These will be set only if you accept. ', acceptSettings: 'I Accept', rejectSettings: 'I Do Not Accept', necessaryTitle : '<h3>Necessary Cookies</h3>', necessaryDescription : 'Necessary cookies enable core functionality ' + 'such as page navigation and access to secure areas. '+ 'The website cannot function properly without '+ 'these cookies, and can only be disabled by changing '+ 'your browser preferences.', closeLabel: 'Close Cookie Control', cornerButton: 'Set cookie preferences', // main preference panel controls on: 'On', off : 'Off', thirdPartyTitle : 'Some cookies require your attention', thirdPartyDescription : 'Consent for the following cookies could not be '+ 'automatically revoked. Please follow the link(s) '+ 'below to opt out manually.', // notification panels (only accessible for pro licences) notifyTitle : 'Your choice regarding cookies on this site', notifyDescription : 'We use cookies to optimise site functionality and '+ 'give you the best possible experience.', accept : 'I Accept', reject: 'I Do Not Accept', settings : 'Settings', }, branding : { removeAbout: true, }, }; // do not load this for local envs only. for testing on local envs remove/modify this condition if(InfoQConstants.pageUrl.indexOf('local')===-1){ CookieControl.load( config ); } </script> </body> </html> <!-- s2 -->

Pages: 1 2 3 4 5 6 7 8 9 10