CINXE.COM
Software architecture - 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>Software architecture - InfoQ</title> <link rel="canonical" href="https://www.infoq.com/architecture/"/> <link rel="alternate" href="https://www.infoq.com/architecture/" hreflang="en"/> <link rel="alternate" href="https://www.infoq.com/jp/architecture/" hreflang="ja" /> <link rel="alternate" href="https://www.infoq.com/br/architecture/" hreflang="pt" /> <link rel="alternate" href="https://www.infoq.com/fr/architecture/" hreflang="fr" /> <link rel="alternate" href="https://www.infoq.com/architecture/" 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="© 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_s1_20241128015124/styles/style.css"/> <link rel="stylesheet" type="text/css" media="print" href="https://cdn.infoq.com/statics_s1_20241128015124/styles/print.css"/> <link rel="preload" type="text/css" href="https://cdn.infoq.com/statics_s1_20241128015124/styles/style_en.css" as="style" onload="this.onload=null;this.rel='stylesheet'"> <link rel="preload" href="https://cdn.infoq.com/statics_s1_20241128015124/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_s1_20241128015124/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_s1_20241128015124/styles/style_en.css"/> <link rel="stylesheet" href="https://cdn.infoq.com/statics_s1_20241128015124/styles/icons.css"> <link rel="stylesheet" type="text/css" media="screen" href="https://cdn.infoq.com/statics_s1_20241128015124/styles/style_extra.css"/> </noscript> <link rel="stylesheet" type="text/css" href="https://cdn.infoq.com/statics_s1_20241128015124/styles/fonts/font.css"/> <link rel="shortcut icon" href="https://cdn.infoq.com/statics_s1_20241128015124/favicon.ico" type="image/x-icon" /> <link rel="apple-touch-icon" href="https://cdn.infoq.com/statics_s1_20241128015124/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='Db2GLIGpqby4ltBO'; InfoQConstants.userDetectedCountryCode = 'SG'; InfoQConstants.bpadb = '6mOTPbbwb4ovaBHl3SNT'; </script> <script type="text/javascript" src="https://cdn.infoq.com/statics_s1_20241128015124/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> Saved </q>'; JSi18n.bookmark_error='<q style=color:black;> Error </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('[{\"id\":\"126598266\",\"ref\":\"author-Pierre-Pureur\",\"url\":\"\/profile\/Pierre-Pureur\",\"followedByCurrentUser\":false,\"minibio\":\"Experienced Software Architect\",\"name\":\"Pierre Pureur\",\"bio\":\"\",\"followers\":192,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20241128015124\/images\/profiles\/22c27753414b3827cb473ede92e13489.jpeg\"},{\"id\":\"126662755\",\"ref\":\"author-Sheri-Byrne~Haber\",\"url\":\"\/profile\/Sheri-Byrne~Haber\",\"followedByCurrentUser\":false,\"minibio\":\"Values-based engineering, accessibility, & inclusion leader\",\"name\":\"Sheri Byrne-Haber\",\"bio\":\"\",\"followers\":0,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20241128015124\/images\/profiles\/43548f0d397b9db42a21cb1ac875f268.jpg\"},{\"id\":\"101756445\",\"ref\":\"author-Danilo-Sato\",\"url\":\"\/profile\/Danilo-Sato\",\"followedByCurrentUser\":false,\"minibio\":\"\",\"name\":\"Danilo Sato\",\"bio\":\"\",\"followers\":2,\"imgSrc\":\"\"},{\"id\":\"126659200\",\"ref\":\"author-Mykhailo-Brodskyi\",\"url\":\"\/profile\/Mykhailo-Brodskyi\",\"followedByCurrentUser\":false,\"minibio\":\"Principal Software Architect @PagoNxt\",\"name\":\"Mykhailo Brodskyi\",\"bio\":\"\",\"followers\":0,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20241128015124\/images\/profiles\/9da916d3fc2b1cefb411cbfd09cdd464.jpg\"},{\"id\":\"126662349\",\"ref\":\"author-Guy-Coleman\",\"url\":\"\/profile\/Guy-Coleman\",\"followedByCurrentUser\":false,\"minibio\":\"Lead Consultant @OpenCredo\",\"name\":\"Guy Coleman\",\"bio\":\"\",\"followers\":2,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20241128015124\/images\/profiles\/70e351a49559946ff4caaa3eadef8e66.jpg\"},{\"id\":\"126656319\",\"ref\":\"author-Mike-Lewis\",\"url\":\"\/profile\/Mike-Lewis\",\"followedByCurrentUser\":false,\"minibio\":\"\",\"name\":\"Mike Lewis\",\"bio\":\"\",\"followers\":1,\"imgSrc\":\"\"},{\"id\":\"122371483\",\"ref\":\"author-Wim-Deblauwe\",\"url\":\"\/profile\/Wim-Deblauwe\",\"followedByCurrentUser\":false,\"minibio\":\"Java Software Engineer\",\"name\":\"Wim Deblauwe\",\"bio\":\"\",\"followers\":52,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20241128015124\/images\/profiles\/f8d456605781b29d1143678d1c82e878.jpg\"},{\"id\":\"126662648\",\"ref\":\"author-Leander-Vanderbijl\",\"url\":\"\/profile\/Leander-Vanderbijl\",\"followedByCurrentUser\":false,\"minibio\":\"Staff Software Engineer @Livi\",\"name\":\"Leander Vanderbijl\",\"bio\":\"\",\"followers\":2,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20241128015124\/images\/profiles\/e7e2973252200ec1ab55cbf4cee9ddfe.jpg\"},{\"id\":\"126660569\",\"ref\":\"author-Supratip-Banerjee\",\"url\":\"\/profile\/Supratip-Banerjee\",\"followedByCurrentUser\":false,\"minibio\":\"\",\"name\":\"Supratip Banerjee\",\"bio\":\"\",\"followers\":1,\"imgSrc\":\"\"},{\"id\":\"126663174\",\"ref\":\"author-Matteo-Rossi\",\"url\":\"\/profile\/Matteo-Rossi\",\"followedByCurrentUser\":false,\"minibio\":\"Head of Solution Architecture & Technical Services\",\"name\":\"Matteo Rossi\",\"bio\":\"\",\"followers\":7,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20241128015124\/images\/profiles\/15fb7aa9490b7b904684869de0613b25.jpg\"},{\"id\":\"343314\",\"ref\":\"author-Jonathan-Allen\",\"url\":\"\/profile\/Jonathan-Allen\",\"followedByCurrentUser\":false,\"minibio\":\"Software Architect\",\"name\":\"Jonathan Allen\",\"bio\":\"\",\"followers\":1717,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20241128015124\/images\/profiles\/Wk_C09_mzwK23YkTkKMXResJv3LKUN5D.jpg\"},{\"id\":\"126659103\",\"ref\":\"author-Ranbir-Chawla\",\"url\":\"\/profile\/Ranbir-Chawla\",\"followedByCurrentUser\":false,\"minibio\":\"\",\"name\":\"Ranbir Chawla\",\"bio\":\"\",\"followers\":1,\"imgSrc\":\"\"},{\"id\":\"62671158\",\"ref\":\"author-Monica-Beckwith\",\"url\":\"\/profile\/Monica-Beckwith\",\"followedByCurrentUser\":false,\"minibio\":\"\",\"name\":\"Monica Beckwith\",\"bio\":\"\",\"followers\":1704,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20241128015124\/images\/profiles\/QhDv7pXEUK1sdLsYArFmnLxecH4rYhAc.jpg\"},{\"id\":\"125588303\",\"ref\":\"author-Anthony-Alford\",\"url\":\"\/profile\/Anthony-Alford\",\"followedByCurrentUser\":false,\"minibio\":\"Senior Director, Development at Genesys Cloud Services\",\"name\":\"Anthony Alford\",\"bio\":\"\",\"followers\":245,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20241128015124\/images\/profiles\/qBObfwVyXzK7r2fGh5h79b9WuNLFovxr.jpg\"},{\"id\":\"126660206\",\"ref\":\"author-Tiago-Bento\",\"url\":\"\/profile\/Tiago-Bento\",\"followedByCurrentUser\":false,\"minibio\":\"\",\"name\":\"Tiago Bento\",\"bio\":\"\",\"followers\":2,\"imgSrc\":\"\"},{\"id\":\"72028228\",\"ref\":\"author-Sergio-De-Simone\",\"url\":\"\/profile\/Sergio-De-Simone\",\"followedByCurrentUser\":false,\"minibio\":\"\",\"name\":\"Sergio De Simone\",\"bio\":\"\",\"followers\":608,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20241128015124\/images\/profiles\/NovciOoQOAYWqYqRQBFo97SuMm0xbUiC.jpg\"},{\"id\":\"126582423\",\"ref\":\"author-Robert-Krzaczy\u0144ski\",\"url\":\"\/profile\/Robert-Krzaczy\u0144ski\",\"followedByCurrentUser\":false,\"minibio\":\"Software Engineer\",\"name\":\"Robert Krzaczy\u0144ski\",\"bio\":\"\",\"followers\":34,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20241128015124\/images\/profiles\/gxKcOyTFSnCa5wfyzXEMPeP3UL4D1nwX.jpg\"},{\"id\":\"114725059\",\"ref\":\"author-Holly-Cummins\",\"url\":\"\/profile\/Holly-Cummins\",\"followedByCurrentUser\":false,\"minibio\":\"Senior Principal Software Engineer, Red Hat\",\"name\":\"Holly Cummins\",\"bio\":\"\",\"followers\":443,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20241128015124\/images\/profiles\/cRsuGlFgKyGmGfEHvafpMO63CxbrEm22.jpg\"},{\"id\":\"126659202\",\"ref\":\"author-Santosh-Yadav\",\"url\":\"\/profile\/Santosh-Yadav\",\"followedByCurrentUser\":false,\"minibio\":\"Senior Software Engineer @Celonis\",\"name\":\"Santosh Yadav\",\"bio\":\"\",\"followers\":0,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20241128015124\/images\/profiles\/d3fa32dc767a0173539692ade6a59388.jpg\"},{\"id\":\"107566059\",\"ref\":\"author-Roland-Meertens\",\"url\":\"\/profile\/Roland-Meertens\",\"followedByCurrentUser\":false,\"minibio\":\"ML engineer building self driving cars at Wayve\",\"name\":\"Roland Meertens\",\"bio\":\"\",\"followers\":60,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20241128015124\/images\/profiles\/zNhLl0RpivWoUVAhMYuPxbylZ0iXI9eM.jpeg\"},{\"id\":\"126640794\",\"ref\":\"author-Nischal-HP\",\"url\":\"\/profile\/Nischal-HP\",\"followedByCurrentUser\":false,\"minibio\":\"\",\"name\":\"Nischal HP\",\"bio\":\"\",\"followers\":2,\"imgSrc\":\"\"},{\"id\":\"45723890\",\"ref\":\"author-Rags-Srinivas\",\"url\":\"\/profile\/Rags-Srinivas\",\"followedByCurrentUser\":false,\"minibio\":\"\",\"name\":\"Rags Srinivas\",\"bio\":\"\",\"followers\":254,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20241128015124\/images\/profiles\/t4nyfgw1THkp4wMZ9EZ59RGJx8Hf9Rk8.jpg\"},{\"id\":\"3885831\",\"ref\":\"author-Michael-Redlich\",\"url\":\"\/profile\/Michael-Redlich\",\"followedByCurrentUser\":false,\"minibio\":\"Java Champion | Java Queue Lead Editor | Director at GSJUG\",\"name\":\"Michael Redlich\",\"bio\":\"\",\"followers\":534,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20241128015124\/images\/profiles\/TxhBF2gloUbm6EjmEsvlQPphHPLElD6g.jpg\"},{\"id\":\"126660570\",\"ref\":\"author-Soumyadip-Chowdhury\",\"url\":\"\/profile\/Soumyadip-Chowdhury\",\"followedByCurrentUser\":false,\"minibio\":\"\",\"name\":\"Soumyadip Chowdhury\",\"bio\":\"\",\"followers\":1,\"imgSrc\":\"\"},{\"id\":\"126662547\",\"ref\":\"author-Micha\u0142-Boro\u0144ski\",\"url\":\"\/profile\/Micha\u0142-Boro\u0144ski\",\"followedByCurrentUser\":false,\"minibio\":\"Senior Software Engineer @Stratoflow\",\"name\":\"Micha\u0142 Boro\u0144ski\",\"bio\":\"\",\"followers\":1,\"imgSrc\":\"\"},{\"id\":\"126662799\",\"ref\":\"author-Ken-Finnigan\",\"url\":\"\/profile\/Ken-Finnigan\",\"followedByCurrentUser\":false,\"minibio\":\"Software Engineer\",\"name\":\"Ken Finnigan\",\"bio\":\"\",\"followers\":0,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20241128015124\/images\/profiles\/b4e9cf1e553d66a6ce75d77cbd430c73.jpg\"},{\"id\":\"125035682\",\"ref\":\"author-Kurt-Bittner\",\"url\":\"\/profile\/Kurt-Bittner\",\"followedByCurrentUser\":false,\"minibio\":\"Independent Author\",\"name\":\"Kurt Bittner\",\"bio\":\"\",\"followers\":188,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20241128015124\/images\/profiles\/3789fc0e548a79744225f15083ab938c.jpg\"},{\"id\":\"126467140\",\"ref\":\"author-Renato-Losio\",\"url\":\"\/profile\/Renato-Losio\",\"followedByCurrentUser\":false,\"minibio\":\"Cloud Expert | AWS Data Hero \",\"name\":\"Renato Losio\",\"bio\":\"\",\"followers\":609,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20241128015124\/images\/profiles\/ptroF8HdI2vWXm0NDaKeS0JdiPxMOAra.jpg\"},{\"id\":\"123742869\",\"ref\":\"author-Ana-Medina\",\"url\":\"\/profile\/Ana-Medina\",\"followedByCurrentUser\":false,\"minibio\":\"Senior Chaos Engineer at Gremlin\",\"name\":\"Ana Medina\",\"bio\":\"\",\"followers\":6,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20241128015124\/images\/profiles\/3833bb9219bfd409e22fe28d91de4dd0.jpeg\"},{\"id\":\"39485652\",\"ref\":\"author-Daniel-Bryant\",\"url\":\"\/profile\/Daniel-Bryant\",\"followedByCurrentUser\":false,\"minibio\":\"InfoQ News Manager | Building Platforms at Syntasso\",\"name\":\"Daniel Bryant\",\"bio\":\"\",\"followers\":2567,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20241128015124\/images\/profiles\/tSe5dczMaSGtRUm18VkTR2tcF4W3SogA.jpg\"},{\"id\":\"63268344\",\"ref\":\"author-Chris-Swan\",\"url\":\"\/profile\/Chris-Swan\",\"followedByCurrentUser\":false,\"minibio\":\"Engineer, Atsign\",\"name\":\"Chris Swan\",\"bio\":\"\",\"followers\":1750,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20241128015124\/images\/profiles\/8PE76nOujWAoCM8yqLn9Hfv2HqW3VlIP.jpg\"},{\"id\":\"126659474\",\"ref\":\"author-Min-Chen\",\"url\":\"\/profile\/Min-Chen\",\"followedByCurrentUser\":false,\"minibio\":\"\",\"name\":\"Min Chen\",\"bio\":\"\",\"followers\":1,\"imgSrc\":\"\"},{\"id\":\"126637749\",\"ref\":\"author-Pia-Nilsson\",\"url\":\"\/profile\/Pia-Nilsson\",\"followedByCurrentUser\":false,\"minibio\":\"Director of Engineering and Platform Developer Experience \",\"name\":\"Pia Nilsson\",\"bio\":\"\",\"followers\":3,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20241128015124\/images\/profiles\/7447b5e6cde8c73c32598bd37657f2b0.jpeg\"},{\"id\":\"126590739\",\"ref\":\"author-Artenisa-Chatziou\",\"url\":\"\/profile\/Artenisa-Chatziou\",\"followedByCurrentUser\":false,\"minibio\":\"\",\"name\":\"Artenisa Chatziou\",\"bio\":\"\",\"followers\":5,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20241128015124\/images\/profiles\/7c64b4b4fb537f0b8a93013856d798c3.jpg\"},{\"id\":\"123896964\",\"ref\":\"author-Eran-Stiller\",\"url\":\"\/profile\/Eran-Stiller\",\"followedByCurrentUser\":false,\"minibio\":\"Chief Software Architect\",\"name\":\"Eran Stiller\",\"bio\":\"\",\"followers\":218,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20241128015124\/images\/profiles\/9dVn5MgVU6o89i63T96hO6xBFa7rxNIn.jpg\"},{\"id\":\"93850416\",\"ref\":\"author-Claudio-Masolo\",\"url\":\"\/profile\/Claudio-Masolo\",\"followedByCurrentUser\":false,\"minibio\":\"Cloud Engineer\",\"name\":\"Claudio Masolo\",\"bio\":\"\",\"followers\":40,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20241128015124\/images\/profiles\/etZJL5qwf5xbcRUA3NKv4QZMRINLUnDB.jpeg\"},{\"id\":\"126659201\",\"ref\":\"author-Danielle-Sudai\",\"url\":\"\/profile\/Danielle-Sudai\",\"followedByCurrentUser\":false,\"minibio\":\"Security Operations Manager @Deliveroo\",\"name\":\"Danielle Sudai\",\"bio\":\"\",\"followers\":0,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20241128015124\/images\/profiles\/b9df8608669b0af3646b7baee330d6a8.jpeg\"},{\"id\":\"126662179\",\"ref\":\"author-Espen-Sande-Larsen\",\"url\":\"\/profile\/Espen-Sande-Larsen\",\"followedByCurrentUser\":false,\"minibio\":\"Developer | Architect \",\"name\":\"Espen Sande Larsen\",\"bio\":\"\",\"followers\":0,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20241128015124\/images\/profiles\/842aa1e665ec67c81bfc7f462d02db4f.jpg\"},{\"id\":\"20149\",\"ref\":\"author-Matt-Raible\",\"url\":\"\/profile\/Matt-Raible\",\"followedByCurrentUser\":false,\"minibio\":\"Open Source Developer\",\"name\":\"Matt Raible\",\"bio\":\"\",\"followers\":154,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20241128015124\/images\/profiles\/ZfXn72M7Lapv_ecin5eaAt9kkiyyBK76.jpg\"},{\"id\":\"101758480\",\"ref\":\"author-Declan-Whelan\",\"url\":\"\/profile\/Declan-Whelan\",\"followedByCurrentUser\":false,\"minibio\":\"Software Engineer | Agile Coach@LeanIntuit\",\"name\":\"Declan Whelan\",\"bio\":\"\",\"followers\":1,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20241128015124\/images\/profiles\/Sn3bsbR4zj0sco8KmRXfHQMoEtx285Oo.jpg\"},{\"id\":\"87551248\",\"ref\":\"author-Steef~Jan-Wiggers\",\"url\":\"\/profile\/Steef~Jan-Wiggers\",\"followedByCurrentUser\":false,\"minibio\":\"Cloud Queue Lead Editor\",\"name\":\"Steef-Jan Wiggers\",\"bio\":\"\",\"followers\":673,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20241128015124\/images\/profiles\/BhZx03k3Hj0pZVXmTzGqItwZxtJ06oIb.jpeg\"},{\"id\":\"80977916\",\"ref\":\"author-Thomas-Betts\",\"url\":\"\/profile\/Thomas-Betts\",\"followedByCurrentUser\":false,\"minibio\":\"Laureate Application Architect at Blackbaud\",\"name\":\"Thomas Betts\",\"bio\":\"\",\"followers\":942,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20241128015124\/images\/profiles\/pSqI6HrU3k9rmmVjwS34OHG0bOMYiE6a.jpg\"},{\"id\":\"483618\",\"ref\":\"author-Bernd-Ruecker\",\"url\":\"\/profile\/Bernd-Ruecker\",\"followedByCurrentUser\":false,\"minibio\":\"Co-founder and Chief Technologist\",\"name\":\"Bernd Ruecker\",\"bio\":\"\",\"followers\":39,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20241128015124\/images\/profiles\/ldRzb9muG7AAD44MSKDSqkam1PizZD2X.jpg\"},{\"id\":\"107488255\",\"ref\":\"author-Karthik-Ramgopal\",\"url\":\"\/profile\/Karthik-Ramgopal\",\"followedByCurrentUser\":false,\"minibio\":\"\",\"name\":\"Karthik Ramgopal\",\"bio\":\"\",\"followers\":2,\"imgSrc\":\"\"},{\"id\":\"126660571\",\"ref\":\"author-Uma-Mukkara\",\"url\":\"\/profile\/Uma-Mukkara\",\"followedByCurrentUser\":false,\"minibio\":\"\",\"name\":\"Uma Mukkara\",\"bio\":\"\",\"followers\":1,\"imgSrc\":\"\"},{\"id\":\"126547420\",\"ref\":\"author-Yury-Ni\u00F1o-Roa\",\"url\":\"\/profile\/Yury-Ni\u00F1o-Roa\",\"followedByCurrentUser\":false,\"minibio\":\"Cloud Infrastructure Engineer @Google\",\"name\":\"Yury Ni\u00F1o Roa\",\"bio\":\"\",\"followers\":12,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20241128015124\/images\/profiles\/27395ead3a190177f0f424b2c7679d60.jpg\"},{\"id\":\"126464202\",\"ref\":\"author-Johan-Janssen\",\"url\":\"\/profile\/Johan-Janssen\",\"followedByCurrentUser\":false,\"minibio\":\"Architect at ASML\",\"name\":\"Johan Janssen\",\"bio\":\"\",\"followers\":381,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20241128015124\/images\/profiles\/Fb4eZ0mtvMf6MhsmBIhsUVueV4xAs2FD.jpg\"},{\"id\":\"126461259\",\"ref\":\"author-InfoQ\",\"url\":\"\/profile\/InfoQ\",\"followedByCurrentUser\":false,\"minibio\":\"ACCELERATING THE SOFTWARE SIDE OF HUMAN PROGRESS\",\"name\":\"InfoQ\",\"bio\":\"\",\"followers\":283,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20241128015124\/images\/profiles\/3a8e7391f8fe97e0727a8c950c042569.jpg\"},{\"id\":\"4927376\",\"ref\":\"author-Karsten-Silz\",\"url\":\"\/profile\/Karsten-Silz\",\"followedByCurrentUser\":false,\"minibio\":\"Full-Stack Java Developer & Contractor\",\"name\":\"Karsten Silz\",\"bio\":\"\",\"followers\":291,\"imgSrc\":\"https:\/\/cdn.infoq.com\/statics_s1_20241128015124\/images\/profiles\/p6zmOdOcqXiRj09iiZNeDZap7f0IglQW.jpg\"}]'); var topicsInPage = JSON.parse('[{\"name\":\"Architecture & Design\",\"id\":\"6816\",\"followers\":9379,\"url\":\"\/architecture-design\",\"followedByCurrentUser\":false},{\"name\":\"Java\",\"id\":\"1\",\"followers\":4514,\"url\":\"\/java\",\"followedByCurrentUser\":false},{\"name\":\"Culture & Methods\",\"id\":\"6817\",\"followers\":3664,\"url\":\"\/culture-methods\",\"followedByCurrentUser\":false},{\"name\":\".NET Core\",\"id\":\"15683\",\"followers\":7225,\"url\":\"\/Net-Core\",\"followedByCurrentUser\":false},{\"name\":\"Machine Learning\",\"id\":\"5449\",\"followers\":13171,\"url\":\"\/MachineLearning\",\"followedByCurrentUser\":false},{\"name\":\"Microservices\",\"id\":\"15274\",\"followers\":20437,\"url\":\"\/microservices\",\"followedByCurrentUser\":false},{\"name\":\"Web Development\",\"id\":\"7211\",\"followers\":897,\"url\":\"\/Web-Development\",\"followedByCurrentUser\":false},{\"name\":\"Architecture\",\"id\":\"1389\",\"followers\":3148,\"url\":\"\/architecture\",\"followedByCurrentUser\":false},{\"name\":\"AI, ML & Data Engineering\",\"id\":\"16690\",\"followers\":5029,\"url\":\"\/ai-ml-data-eng\",\"followedByCurrentUser\":false},{\"name\":\"Java9\",\"id\":\"7097\",\"followers\":4935,\"url\":\"\/Java9\",\"followedByCurrentUser\":false},{\"name\":\"Cloud\",\"id\":\"7451\",\"followers\":1954,\"url\":\"\/Cloud\",\"followedByCurrentUser\":false},{\"name\":\"DevOps\",\"id\":\"6043\",\"followers\":4668,\"url\":\"\/Devops\",\"followedByCurrentUser\":false},{\"name\":\"Reactive Programming\",\"id\":\"15453\",\"followers\":11443,\"url\":\"\/reactive-programming\",\"followedByCurrentUser\":false},{\"name\":\"Development\",\"id\":\"6815\",\"followers\":3748,\"url\":\"\/development\",\"followedByCurrentUser\":false}]'); var userContentLikesInPage = []; var userCommentsLikesInPage = []; var currentUserId = 2; </script> <meta name="keywords" content="Architecture,architecture"/> <meta name="description" content="Microservices, blockchain, reactive programming, chaos engineering, service mesh, and more"/> <link rel="alternate" type="application/rss+xml" title="RSS" href="https://feed.infoq.com/architecture/"/> <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_s1_20241128015124/styles/static/images/logo/logo-big.jpg" /> <meta property="og:image" content="https://cdn.infoq.com/statics_s1_20241128015124/styles/static/images/logo/logo-big.jpg"/> <script type="text/javascript" src="https://cdn.infoq.com/statics_s1_20241128015124/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="Db2GLIGpqby4ltBO"/> <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>QCon London (April 7-9, 2025): Get actionable advice for your engineering challenges. Adopt the right emerging trends.</span> <a class="btn" href="/url/pb/3b6f7939-fc95-4c94-8d8c-c49811a8660f/" target="_blank" rel="nofollow"> Register </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/security-advanaced-threats">Beyond the Breach: Proactive Defense in the Age of Advanced Threats</a> </h4> <p class="card__excerpt">Michael Brunton-Spall discusses some of the most advanced attacks that are in the public domain, mostly attributed in public by commercial organizations.</p> <div class="card__footer"></div> </div> <a href="/presentations/security-advanaced-threats" class="card__header"> <img loading="lazy" alt="Beyond the Breach: Proactive Defense in the Age of Advanced Threats" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/presentations/security-advanaced-threats/en/smallimage/michael-small-1726825001794.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 & Design" class="nav__category">Architecture & 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 & 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="/presentations/serverless-set-pieces">Think, Architect, and Sustain Your Serverless Applications As [Set] Pieces!</a> </h4> <p class="card__excerpt">Sheen Brisals discusses how the characteristics of serverless influence us to think in a new way of architecting and evolving modern applications as set pieces</p> <div class="card__footer"></div> </div> <a href="/presentations/serverless-set-pieces" class="card__header"> <img loading="lazy" alt="Think, Architect, and Sustain Your Serverless Applications As [Set] Pieces!" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/presentations/serverless-set-pieces/en/smallimage/SheenBrisals-small-1729235020491.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, ML & Data Engineering" class="nav__category">AI, ML & Data Engineering</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 & 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/responsible-ai-fintech">Navigating Responsible AI in the FinTech Landscape</a> </h4> <p class="card__excerpt">Explore the dynamic intersection of responsible AI, regulation, and ethics in the FinTech sector. This article highlights key challenges and innovative practices as organizations navigate compliance with evolving guidelines like the EU AI Act. Discover how to balance transparency, efficiency, and risk management for sustainable AI growth in your business.</p> <div class="card__footer"></div> </div> <a href="/articles/responsible-ai-fintech" class="card__header"> <img loading="lazy" alt="Navigating Responsible AI in the FinTech Landscape" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/articles/responsible-ai-fintech/en/smallimage/navigating-responsible-ai-logo-small-1732088592946.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 & Methods" class="nav__category">Culture & 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 & 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="/podcasts/participatory-leadership-developing-psychological-safety">Participatory Leadership and Developing a Culture of Psychological Safety</a> </h4> <p class="card__excerpt">In this podcast Shane Hastie, Lead Editor for Culture & Methods spoke to Nick Takavadii about participatory leadership practices and how to cultivate a workplace environment with psychological safety.</p> <div class="card__footer"></div> </div> <a href="/podcasts/participatory-leadership-developing-psychological-safety" class="card__header"> <img loading="lazy" alt="Participatory Leadership and Developing a Culture of Psychological Safety" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/podcasts/participatory-leadership-developing-psychological-safety/en/smallimage/engineering-culture-podcast-logo-1732005964726.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/dev-journey-kubernetes">From Local to Production: a Modern Developer’s Journey towards Kubernetes</a> </h4> <p class="card__excerpt">Urvashi Mohnani discusses the full developer experience of writing an application, containerizing it locally, deploying it to a Kubernetes cluster, and debugging Kubernetes applications locally.</p> <div class="card__footer"></div> </div> <a href="/presentations/dev-journey-kubernetes" class="card__header"> <img loading="lazy" alt="From Local to Production: a Modern Developer’s Journey towards Kubernetes" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/presentations/dev-journey-kubernetes/en/smallimage/urvashimohnani-small-1727693730075.jpeg" 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://qconsf.com/?utm_source=infoq&utm_medium=referral&utm_campaign=homepageheader_qsf24" rel="nofollow" target="_blank" class="header__event-slot"> <picture><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL2NvbmZlcmVuY2VzLzIwMjQvU0YtdG9wLmpwZyIsImVkaXRzIjogeyJ3ZWJwIjogeyAicXVhbGl0eSI6ODB9fX0=" type="image/webp"><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL2NvbmZlcmVuY2VzLzIwMjQvU0YtdG9wLmpwZyIsImVkaXRzIjogeyJqcGVnIjogeyAicXVhbGl0eSI6ODB9fX0=" type="image/webp"><img src="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL2NvbmZlcmVuY2VzLzIwMjQvU0YtdG9wLmpwZyIsImVkaXRzIjogeyJqcGVnIjogeyAicXVhbGl0eSI6ODB9fX0=" loading="lazy" width="40px" height="40px" alt="QCon San Francisco - image"></picture> <div> <span>QCon San Francisco</span> <p>Level up your software skills by uncovering the emerging trends you should focus on. Register now.</p> </div> </a> <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/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL2NvbmZlcmVuY2VzLzIwMjUvbG9uZG9uLXRvcC5qcGciLCJlZGl0cyI6IHsid2VicCI6IHsgInF1YWxpdHkiOjgwfX19" type="image/webp"><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL2NvbmZlcmVuY2VzLzIwMjUvbG9uZG9uLXRvcC5qcGciLCJlZGl0cyI6IHsianBlZyI6IHsgInF1YWxpdHkiOjgwfX19" type="image/webp"><img src="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL2NvbmZlcmVuY2VzLzIwMjUvbG9uZG9uLXRvcC5qcGciLCJlZGl0cyI6IHsianBlZyI6IHsgInF1YWxpdHkiOjgwfX19" 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 & 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://www.infoq.com/software-architects-newsletter/" rel="nofollow" target="_blank" class="header__event-slot"> <picture><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL25ld3NsZXR0ZXItY292ZXIuanBlZyIsImVkaXRzIjogeyJ3ZWJwIjogeyAicXVhbGl0eSI6ODB9fX0=" type="image/webp"><source srcset="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL25ld3NsZXR0ZXItY292ZXIuanBlZyIsImVkaXRzIjogeyJqcGVnIjogeyAicXVhbGl0eSI6ODB9fX0=" type="image/webp"><img src="https://imgopt.infoq.com/eyJidWNrZXQiOiAiYXNzZXRzLmluZm9xLmNvbSIsImtleSI6ICJ3ZWIvaGVhZGVyL25ld3NsZXR0ZXItY292ZXIuanBlZyIsImVkaXRzIjogeyJqcGVnIjogeyAicXVhbGl0eSI6ODB9fX0=" 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">Architecture Content on InfoQ</span> </p> <div class="actions heading__container heading__actions" data-id="1389" data-trk-ref="topic_page"> <div class="actions__left"> <h1 class="heading heading__rss">Architecture</h1> <span class="rss icon icon__rss-feed"> <a href="https://feed.infoq.com/architecture/" 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="/architecture/articles/" > Articles about Architecture </a> </h2> <span class="rss icon icon__rss-feed"> <a href="https://feed.infoq.com/architecture/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="6b811026-6418-4bdf-bcc1-d833c418b2b7" data-path="/articles/architectural-intelligence/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3"> <div class="card__content"> <a href="/articles/architectural-intelligence/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3" class="card__header"> <img loading="lazy" alt="Architectural Intelligence – The Next AI" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/articles/architectural-intelligence/en/smallimage/architectural-intelligence-small-1732294547540.jpg" class="card__image"> </a> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/architecture-design/" data-id="6816">Architecture & Design</a> </span> </div> <h4 class="card__title"> <a title="Architectural Intelligence – The Next AI" href="/articles/architectural-intelligence/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3"> Architectural Intelligence – The Next AI </a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Thomas-Betts/" data-id="author-Thomas-Betts">Thomas Betts</a> </span> </div> <span class="card__date date">on<span> Nov 26, 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="df3877e3-bad3-4253-bb9c-1b067f361ab9" data-path="/articles/reactive-notification-system-server-sent-events/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3"> <div class="card__content"> <a href="/articles/reactive-notification-system-server-sent-events/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3" class="card__header"> <img loading="lazy" alt="Reactive Real-Time Notifications with SSE, Spring Boot, and Redis Pub/Sub" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/articles/reactive-notification-system-server-sent-events/en/smallimage/going-reactive-server-logo-small-1732018386771.jpg" class="card__image"> </a> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/java/" data-id="1">Java</a> </span> </div> <h4 class="card__title"> <a title="Reactive Real-Time Notifications with SSE, Spring Boot, and Redis Pub/Sub" href="/articles/reactive-notification-system-server-sent-events/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3"> Reactive Real-Time Notifications with SSE, Spring Boot, and Redis Pub/Sub </a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Matteo-Rossi/" data-id="author-Matteo-Rossi">Matteo Rossi</a> </span> </div> <span class="card__date date">on<span> Nov 21, 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="f9a97868-885d-40b9-80d5-9a7b344d916a" data-path="/articles/transforming-legacy-healthcare-systems/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3"> <div class="card__content"> <a href="/articles/transforming-legacy-healthcare-systems/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3" class="card__header"> <img loading="lazy" alt="Transforming Legacy Healthcare Systems: a Journey to Cloud-Native Architecture" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/articles/transforming-legacy-healthcare-systems/en/smallimage/transforming-legacy-healthcare-logo-small-1731055590401.jpg" class="card__image"> </a> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/architecture-design/" data-id="6816">Architecture & Design</a> </span> </div> <h4 class="card__title"> <a title="Transforming Legacy Healthcare Systems: a Journey to Cloud-Native Architecture" href="/articles/transforming-legacy-healthcare-systems/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3"> Transforming Legacy Healthcare Systems: a Journey to Cloud-Native Architecture </a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Leander-Vanderbijl/" data-id="author-Leander-Vanderbijl">Leander Vanderbijl</a> </span> </div> <span class="card__date date">on<span> Nov 18, 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="69f42e25-dc3c-48d5-8192-56396b4725c1" data-path="/articles/mva-dilemma-experiments/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3"> <div class="card__content"> <a href="/articles/mva-dilemma-experiments/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3" class="card__header"> <img loading="lazy" alt="To Dare or Not to Dare: the MVA Dilemma" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/articles/mva-dilemma-experiments/en/smallimage/to-dare-or-not-logo-small-1730966342573.jpg" class="card__image"> </a> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/architecture-design/" data-id="6816">Architecture & Design</a> </span> </div> <h4 class="card__title"> <a title="To Dare or Not to Dare: the MVA Dilemma" href="/articles/mva-dilemma-experiments/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3"> To Dare or Not to Dare: the MVA Dilemma </a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Pierre-Pureur/" data-id="author-Pierre-Pureur">Pierre Pureur</a> </span> <span> <a href="/profile/Kurt-Bittner/" data-id="author-Kurt-Bittner">Kurt Bittner</a> </span> </div> <span class="card__date date">on<span> Nov 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="c079c533-e060-447e-a2bb-698035f98b56" data-path="/articles/java-no-code-bootstrapping-tools/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3"> <div class="card__content"> <a href="/articles/java-no-code-bootstrapping-tools/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3" class="card__header"> <img loading="lazy" alt="Java-Based No-Code and Low-Code Application Bootstrapping Tools Review" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/articles/java-no-code-bootstrapping-tools/en/smallimage/java-based-enterprise-logo-small-1730469193326.jpg" class="card__image"> </a> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/java/" data-id="1">Java</a> </span> </div> <h4 class="card__title"> <a title="Java-Based No-Code and Low-Code Application Bootstrapping Tools Review" href="/articles/java-no-code-bootstrapping-tools/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3"> Java-Based No-Code and Low-Code Application Bootstrapping Tools Review </a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Micha%C5%82-Boro%C5%84ski/" data-id="author-Michał-Boroński">Michał Boroński</a> </span> </div> <span class="card__date date">on<span> Nov 05, 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="8e4b6cb4-6c26-4200-b289-f53c06843217" data-path="/articles/cell-based-architecture-adoption-guidelines/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3"> <div class="card__content"> <a href="/articles/cell-based-architecture-adoption-guidelines/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3" class="card__header"> <img loading="lazy" alt="Cell-Based Architecture Adoption Guidelines" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/articles/cell-based-architecture-adoption-guidelines/en/smallimage/cell-based-architecture-logo-small-1730198054924.jpg" class="card__image"> </a> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/architecture-design/" data-id="6816">Architecture & Design</a> </span> </div> <h4 class="card__title"> <a title="Cell-Based Architecture Adoption Guidelines" href="/articles/cell-based-architecture-adoption-guidelines/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3"> Cell-Based Architecture Adoption Guidelines </a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Guy-Coleman/" data-id="author-Guy-Coleman">Guy Coleman</a> </span> </div> <span class="card__date date">on<span> Nov 04, 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="ba8e1b2d-241d-4b0e-abad-34a4b3120bad" data-path="/articles/demoscene-logic-creativity-artistic-expression/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3"> <div class="card__content"> <a href="/articles/demoscene-logic-creativity-artistic-expression/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3" class="card__header"> <img loading="lazy" alt="Jump into the Demoscene: Where Logic, Creativity, and Artistic Expression Merge" src="https://imgopt.infoq.com/fit-in/100x100/filters:quality(80)/articles/demoscene-logic-creativity-artistic-expression/en/smallimage/so-you-wanna-be-demoscener-logo-small-1730109739010.jpg" class="card__image"> </a> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/culture-methods/" data-id="6817">Culture & Methods</a> </span> </div> <h4 class="card__title"> <a title="Jump into the Demoscene: Where Logic, Creativity, and Artistic Expression Merge" href="/articles/demoscene-logic-creativity-artistic-expression/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3"> Jump into the Demoscene: Where Logic, Creativity, and Artistic Expression Merge </a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Espen-Sande-Larsen/" data-id="author-Espen-Sande-Larsen">Espen Sande Larsen</a> </span> </div> <span class="card__date date">on<span> Oct 30, 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="/architecture/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="/architecture/news/" > News about Architecture </a> </h2> <span class="rss icon icon__rss-feed"> <a href="https://feed.infoq.com/architecture/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="db2291b2-26ee-43b3-b43f-9bf3cfbbd029" data-path="/news/2024/11/day-one-qcon-sf-2024/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3"> <div class="card__content"> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/java/" data-id="1">Java</a> </span> </div> <h4 class="card__title"> <a title="QCon San Francisco 2024 Day 1: Architectures, Rust, AI/ML for Engineers, Sociotech Resilience" href="/news/2024/11/day-one-qcon-sf-2024/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3">QCon San Francisco 2024 Day 1: Architectures, Rust, AI/ML for Engineers, Sociotech Resilience</a></h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Michael-Redlich/" data-id="author-Michael-Redlich">Michael Redlich</a> </span> </div> <span class="card__date date">on<span> 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="56225b2e-1271-41ae-baba-9b1c14ed2483" data-path="/news/2024/11/aws-websockets-costs/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3"> <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="How Recall.ai Saved $1M on AWS by Eliminating WebSockets" href="/news/2024/11/aws-websockets-costs/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3">How Recall.ai Saved $1M on AWS by Eliminating WebSockets</a></h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Renato-Losio/" data-id="author-Renato-Losio">Renato Losio</a> </span> </div> <span class="card__date date">on<span> Nov 19, 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="98a428e7-6adb-4e2e-bb40-5603521bb44b" data-path="/news/2024/11/laws-software-architecture/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3"> <div class="card__content"> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/architecture-design/" data-id="6816">Architecture & Design</a> </span> </div> <h4 class="card__title"> <a title="New "Laws" Announced at iSAQB Software Architecture Gathering" href="/news/2024/11/laws-software-architecture/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3">New "Laws" Announced at iSAQB Software Architecture Gathering</a></h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Thomas-Betts/" data-id="author-Thomas-Betts">Thomas Betts</a> </span> </div> <span class="card__date date">on<span> Nov 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="51ee08ec-1d60-4f0a-815e-9d1e1cde4406" data-path="/news/2024/11/architecture-qcon-san-francisco/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3"> <div class="card__content"> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/architecture-design/" data-id="6816">Architecture & Design</a> </span> </div> <h4 class="card__title"> <a title="Software Architecture Tracks at QCon San Francisco 2024 – Navigating Current Challenges and Trends" href="/news/2024/11/architecture-qcon-san-francisco/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3">Software Architecture Tracks at QCon San Francisco 2024 – Navigating Current Challenges and Trends</a></h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Artenisa-Chatziou/" data-id="author-Artenisa-Chatziou">Artenisa Chatziou</a> </span> </div> <span class="card__date date">on<span> Nov 01, 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="ec96b964-06b1-4366-9aa0-6a91af566104" data-path="/news/2024/09/canva-real-time-collaboration/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3"> <div class="card__content"> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/architecture-design/" data-id="6816">Architecture & Design</a> </span> </div> <h4 class="card__title"> <a title="How Canva Scaled Real-Time Collaboration with WebRTC: from WebSockets to Seamless P2P Communication" href="/news/2024/09/canva-real-time-collaboration/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3">How Canva Scaled Real-Time Collaboration with WebRTC: from WebSockets to Seamless P2P Communication</a></h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Eran-Stiller/" data-id="author-Eran-Stiller">Eran Stiller</a> </span> </div> <span class="card__date date">on<span> Sep 25, 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="dcac5051-389e-4fa0-9bb8-9d477b87ac68" data-path="/news/2024/09/grafana-k6-releases/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3"> <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="Grafana K6 Releases: Enhancements in TypeScript, ECMAScript, Browser Testing, and More" href="/news/2024/09/grafana-k6-releases/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3">Grafana K6 Releases: Enhancements in TypeScript, ECMAScript, Browser Testing, and More</a></h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Claudio-Masolo/" data-id="author-Claudio-Masolo">Claudio Masolo</a> </span> </div> <span class="card__date date">on<span> Sep 21, 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="51af4e66-e396-4a8d-b7dc-f76d24a6680c" data-path="/news/2024/09/ebpf-noisy-neighbors/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3"> <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="Leveraging eBPF for Improved Infrastructure Observability" href="/news/2024/09/ebpf-noisy-neighbors/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3">Leveraging eBPF for Improved Infrastructure Observability</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> Sep 18, 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="fa3e50b4-24ea-42b8-9b5e-43bc6e52e2c9" data-path="/news/2024/08/microsoft-phi-3-5/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3"> <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 & Data Engineering</a> </span> </div> <h4 class="card__title"> <a title="Microsoft Launches Open-Source Phi-3.5 Models for Advanced AI Development" href="/news/2024/08/microsoft-phi-3-5/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3">Microsoft Launches Open-Source Phi-3.5 Models for Advanced AI Development</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> Aug 31, 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="/architecture/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="/architecture/presentations/" > Presentations about Architecture </a> </h2> <span class="rss icon icon__rss-feed"> <a href="https://feed.infoq.com/architecture/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="54bdb493-c0a5-4d0b-b263-29401616058f" data-path="/presentations/monorepo-dev-workflow/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3" data-transcript> <div class="card__content"> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/culture-methods/" data-id="6817">Culture & Methods</a> </span> </div> <h4 class="card__title"> <a title="Monorepos: beyond the Technicalities" href="/presentations/monorepo-dev-workflow/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3">Monorepos: beyond the Technicalities</a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Tiago-Bento/" data-id="author-Tiago-Bento">Tiago Bento</a> </span> </div> <span class="card__date date">on<span> Nov 13, 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/monorepo-dev-workflow/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/297x220/filters:quality(80)/presentations/monorepo-dev-workflow/en/mediumimage/TiagoBento-medium-1727159163147.jpeg" alt="Monorepos: beyond the Technicalities" class="card__image" /> <div class="card__meta"> <div class="card__icon">Icon</div> <div class="card__length"> 47:24 </div> </div> </a> </div> </li> <li data-id="3e9a21eb-9e29-4138-8989-984db91fbacd" data-path="/presentations/grpc-restli/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3" data-transcript> <div class="card__content"> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/architecture-design/" data-id="6816">Architecture & Design</a> </span> </div> <h4 class="card__title"> <a title="gRPC Migration Automation at LinkedIn" href="/presentations/grpc-restli/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3">gRPC Migration Automation at LinkedIn</a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Karthik-Ramgopal/" data-id="author-Karthik-Ramgopal">Karthik Ramgopal</a> </span> <span> <a href="/profile/Min-Chen/" data-id="author-Min-Chen">Min Chen</a> </span> </div> <span class="card__date date">on<span> Oct 29, 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/grpc-restli/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/297x220/filters:quality(80)/presentations/grpc-restli/en/mediumimage/KarthikRamgopalMinChen-medium-1725521830620.jpg" alt="gRPC Migration Automation at LinkedIn" class="card__image" /> <div class="card__meta"> <div class="card__icon">Icon</div> <div class="card__length"> 39:47 </div> </div> </a> </div> </li> <li data-id="40f2446d-21cf-47cf-9fb2-b5502ddc98a2" data-path="/presentations/refactoring-saas/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3" data-transcript> <div class="card__content"> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/architecture-design/" data-id="6816">Architecture & Design</a> </span> </div> <h4 class="card__title"> <a title="Beyond Platform Thinking at RB Global – Build Things No One Expects, in a Place No One Expects It" href="/presentations/refactoring-saas/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3">Beyond Platform Thinking at RB Global – Build Things No One Expects, in a Place No One Expects It</a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Ranbir-Chawla/" data-id="author-Ranbir-Chawla">Ranbir Chawla</a> </span> </div> <span class="card__date date">on<span> Oct 24, 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/refactoring-saas/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/297x220/filters:quality(80)/presentations/refactoring-saas/en/mediumimage/Ranbir-Chawla-medium-1724999365419.jpeg" alt="Beyond Platform Thinking at RB Global – Build Things No One Expects, in a Place No One Expects It" class="card__image" /> <div class="card__meta"> <div class="card__icon">Icon</div> <div class="card__length"> 50:01 </div> </div> </a> </div> </li> <li data-id="81c0a600-4895-4eeb-b1d6-64a3a551dfcd" data-path="/presentations/architecture-llm/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3" data-transcript> <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 & Data Engineering</a> </span> </div> <h4 class="card__title"> <a title="Mind Your Language Models: an Approach to Architecting Intelligent Systems" href="/presentations/architecture-llm/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3">Mind Your Language Models: an Approach to Architecting Intelligent Systems</a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Nischal-HP/" data-id="author-Nischal-HP">Nischal HP</a> </span> </div> <span class="card__date date">on<span> Oct 15, 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/architecture-llm/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/297x220/filters:quality(80)/presentations/architecture-llm/en/mediumimage/NischalHP-medium-1724394495924.jpg" alt="Mind Your Language Models: an Approach to Architecting Intelligent Systems" class="card__image" /> <div class="card__meta"> <div class="card__icon">Icon</div> <div class="card__length"> 50:13 </div> </div> </a> </div> </li> <li data-id="fc11ab09-e714-4172-99f6-b1aeecab30a9" data-path="/presentations/resilience-chaos-kubernetes/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3" 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="Resilience and Chaos Engineering in a Kubernetes World" href="/presentations/resilience-chaos-kubernetes/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3">Resilience and Chaos Engineering in a Kubernetes World</a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Supratip-Banerjee/" data-id="author-Supratip-Banerjee">Supratip Banerjee</a> </span> <span> <a href="/profile/Soumyadip-Chowdhury/" data-id="author-Soumyadip-Chowdhury">Soumyadip Chowdhury</a> </span> <span> <a href="/profile/Ana-Medina/" data-id="author-Ana-Medina">Ana Medina</a> </span> <span> <a href="/profile/Uma-Mukkara/" data-id="author-Uma-Mukkara">Uma Mukkara</a> </span> <span> <a href="/profile/Yury-Ni%C3%B1o-Roa/" data-id="author-Yury-Niño-Roa">Yury Niño Roa</a> </span> <span> <a href="/profile/Renato-Losio/" data-id="author-Renato-Losio">Renato Losio</a> </span> </div> <span class="card__date date">on<span> Sep 30, 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/resilience-chaos-kubernetes/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/297x220/filters:quality(80)/presentations/resilience-chaos-kubernetes/en/mediumimage/infoq-live-logo-medium-1727687975246.jpg" alt="Resilience and Chaos Engineering in a Kubernetes World" class="card__image" /> <div class="card__meta"> <div class="card__icon">Icon</div> <div class="card__length"> 01:01:06 </div> </div> </a> </div> </li> <li data-id="9b78fd6d-71de-4576-8e42-f2fced5cd494" data-path="/presentations/data-products/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3" data-transcript> <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 & Data Engineering</a> </span> </div> <h4 class="card__title"> <a title="Architecting for Data Products" href="/presentations/data-products/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3">Architecting for Data Products</a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Danilo-Sato/" data-id="author-Danilo-Sato">Danilo Sato</a> </span> </div> <span class="card__date date">on<span> Sep 19, 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/data-products/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/297x220/filters:quality(80)/presentations/data-products/en/mediumimage/Danilo-Sato-medium-1723545718638.jpeg" alt="Architecting for Data Products" class="card__image" /> <div class="card__meta"> <div class="card__icon">Icon</div> <div class="card__length"> 49:18 </div> </div> </a> </div> </li> <li data-id="1ddb6674-12d5-40a6-8537-7179a31ee17a" data-path="/presentations/backstage-plugin/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3" data-transcript> <div class="card__content"> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/architecture-design/" data-id="6816">Architecture & Design</a> </span> </div> <h4 class="card__title"> <a title="Everything is a Plugin: How the Backstage Architecture Helps Platform Teams at Spotify and beyond Spread Ownership and Deliver Value" href="/presentations/backstage-plugin/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3">Everything is a Plugin: How the Backstage Architecture Helps Platform Teams at Spotify and beyond Spread Ownership and Deliver Value</a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Pia-Nilsson/" data-id="author-Pia-Nilsson">Pia Nilsson</a> </span> <span> <a href="/profile/Mike-Lewis/" data-id="author-Mike-Lewis">Mike Lewis</a> </span> </div> <span class="card__date date">on<span> Sep 05, 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/backstage-plugin/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/297x220/filters:quality(80)/presentations/backstage-plugin/en/mediumimage/PiaNilsson-MikeLewis-medium-1721474709600.jpg" alt="Everything is a Plugin: How the Backstage Architecture Helps Platform Teams at Spotify and beyond Spread Ownership and Deliver Value" class="card__image" /> <div class="card__meta"> <div class="card__icon">Icon</div> <div class="card__length"> 40:08 </div> </div> </a> </div> </li> </ul> <a href="/architecture/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="/architecture/podcasts/" > Podcasts about Architecture </a> </h2> <span class="rss icon icon__rss-feed"> <a href="https://feed.infoq.com/architecture/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="4abcef98-5aa6-4d16-b0ed-40337e0f061b" data-path="/podcasts/crossing-feedback-chasm/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3"> <div class="card__content"> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/architecture-design/" data-id="6816">Architecture & Design</a> </span> </div> <h4 class="card__title"> <a title="Crossing the Feedback Chasm - a Conversation with Ken Finnigan" href="/podcasts/crossing-feedback-chasm/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3">Crossing the Feedback Chasm - a Conversation with Ken Finnigan</a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Ken-Finnigan/" data-id="author-Ken-Finnigan">Ken Finnigan</a> </span> </div> <span class="card__date date">on<span> Nov 11, 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="/podcasts/crossing-feedback-chasm/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/297x215/filters:quality(80)/podcasts/crossing-feedback-chasm/en/mediumimage/ken-finnigan-interviewee -1730973734230.jpg" class="card__image" alt="Crossing the Feedback Chasm - a Conversation with Ken Finnigan"/> <div class="card__meta"> <div class="card__icon">Icon</div> <div class="card__length">46:41</div> </div> </a> </div> </li> <li data-id="b2582fef-8336-4c46-b385-d2ad25df0475" data-path="/podcasts/digital-accessibility-inclusive-software/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3"> <div class="card__content"> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/culture-methods/" data-id="6817">Culture & Methods</a> </span> </div> <h4 class="card__title"> <a title="Making Digital Accessibility More Than Just High Contrast: Building Truly Inclusive Software" href="/podcasts/digital-accessibility-inclusive-software/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3">Making Digital Accessibility More Than Just High Contrast: Building Truly Inclusive Software</a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Sheri-Byrne%7EHaber/" data-id="author-Sheri-Byrne~Haber">Sheri Byrne-Haber</a> </span> </div> <span class="card__date date">on<span> Nov 08, 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="/podcasts/digital-accessibility-inclusive-software/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/297x215/filters:quality(80)/podcasts/digital-accessibility-inclusive-software/en/mediumimage/sheribyrnehaber-interviewee-1730883531039.jpeg" class="card__image" alt="Making Digital Accessibility More Than Just High Contrast: Building Truly Inclusive Software"/> <div class="card__meta"> <div class="card__icon">Icon</div> <div class="card__length">27:59</div> </div> </a> </div> </li> <li data-id="bca8b63e-021e-4977-9c00-acb1827b3928" data-path="/podcasts/generally-ai-godfathers-programming-ai/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3"> <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 & Data Engineering</a> </span> </div> <h4 class="card__title"> <a title="Generally AI - Season 2 - Episode 6: the Godfathers of Programming and AI" href="/podcasts/generally-ai-godfathers-programming-ai/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3">Generally AI - Season 2 - Episode 6: the Godfathers of Programming and AI</a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Anthony-Alford/" data-id="author-Anthony-Alford">Anthony Alford</a> </span> <span> <a href="/profile/Roland-Meertens/" data-id="author-Roland-Meertens">Roland Meertens</a> </span> </div> <span class="card__date date">on<span> Nov 06, 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="/podcasts/generally-ai-godfathers-programming-ai/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/297x215/filters:quality(80)/podcasts/generally-ai-godfathers-programming-ai/en/mediumimage/generally-ai-logo-interviewee-pic-290x210-1730189289609.jpg" class="card__image" alt="Generally AI - Season 2 - Episode 6: the Godfathers of Programming and AI"/> <div class="card__meta"> <div class="card__icon">Icon</div> <div class="card__length">40:41</div> </div> </a> </div> </li> <li data-id="7d2f96d4-73fe-4474-b18d-2c961ac1bb78" data-path="/podcasts/orchestrating-path-success/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3"> <div class="card__content"> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/architecture-design/" data-id="6816">Architecture & Design</a> </span> </div> <h4 class="card__title"> <a title="Orchestrating a Path to Success - a Conversation with Bernd Ruecker" href="/podcasts/orchestrating-path-success/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3">Orchestrating a Path to Success - a Conversation with Bernd Ruecker</a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Bernd-Ruecker/" data-id="author-Bernd-Ruecker">Bernd Ruecker</a> </span> </div> <span class="card__date date">on<span> Oct 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="/podcasts/orchestrating-path-success/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/297x215/filters:quality(80)/podcasts/orchestrating-path-success/en/mediumimage/Bernd-Ruecker-interviewee-1728480979673.jpg" class="card__image" alt="Orchestrating a Path to Success - a Conversation with Bernd Ruecker"/> <div class="card__meta"> <div class="card__icon">Icon</div> <div class="card__length">41:50</div> </div> </a> </div> </li> <li data-id="16c9b1e5-6c94-4e6d-b3c6-c4f31e28f937" data-path="/podcasts/primer-ai-for-architects/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3"> <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 & Data Engineering</a> </span> </div> <h4 class="card__title"> <a title="A Primer on AI for Architects with Anthony Alford" href="/podcasts/primer-ai-for-architects/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3">A Primer on AI for Architects with Anthony Alford</a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Anthony-Alford/" data-id="author-Anthony-Alford">Anthony Alford</a> </span> </div> <span class="card__date date">on<span> Sep 16, 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="/podcasts/primer-ai-for-architects/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/297x215/filters:quality(80)/podcasts/primer-ai-for-architects/en/mediumimage/anthony-alford-interviewee-pic-1725962132902.jpg" class="card__image" alt="A Primer on AI for Architects with Anthony Alford"/> <div class="card__meta"> <div class="card__icon">Icon</div> <div class="card__length">44:46</div> </div> </a> </div> </li> <li data-id="39abdc91-bec6-4f23-90ac-be23e63f6665" data-path="/podcasts/technical-health-team-culture/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3"> <div class="card__content"> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/culture-methods/" data-id="6817">Culture & Methods</a> </span> </div> <h4 class="card__title"> <a title="Engineering Excellence: Declan Whelan on Technical Health, Agile Practices, and Team Culture" href="/podcasts/technical-health-team-culture/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3">Engineering Excellence: Declan Whelan on Technical Health, Agile Practices, and Team Culture</a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Declan-Whelan/" data-id="author-Declan-Whelan">Declan Whelan</a> </span> </div> <span class="card__date date">on<span> Sep 13, 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="/podcasts/technical-health-team-culture/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/297x215/filters:quality(80)/podcasts/technical-health-team-culture/en/mediumimage/declan-whelan-interviewee-picture-1725866986265.jpg" class="card__image" alt="Engineering Excellence: Declan Whelan on Technical Health, Agile Practices, and Team Culture"/> <div class="card__meta"> <div class="card__icon">Icon</div> <div class="card__length">26:07</div> </div> </a> </div> </li> <li data-id="9769231c-d4f9-48fc-bdb3-10ffde050af3" data-path="/podcasts/infoq-dev-summit-munich-preview/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3"> <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="Lessons Learned from the CrowdStrike Incident: InfoQ Dev Summit Munich 2024 Preview" href="/podcasts/infoq-dev-summit-munich-preview/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3">Lessons Learned from the CrowdStrike Incident: InfoQ Dev Summit Munich 2024 Preview</a> </h4> <div class="card__footer"> <div class="card__details"> <div class="card__authors authors"> <span> <a href="/profile/Renato-Losio/" data-id="author-Renato-Losio">Renato Losio</a> </span> <span> <a href="/profile/Danielle-Sudai/" data-id="author-Danielle-Sudai">Danielle Sudai</a> </span> <span> <a href="/profile/Santosh-Yadav/" data-id="author-Santosh-Yadav">Santosh Yadav</a> </span> <span> <a href="/profile/Mykhailo-Brodskyi/" data-id="author-Mykhailo-Brodskyi">Mykhailo Brodskyi</a> </span> </div> <span class="card__date date">on<span> Sep 03, 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="/podcasts/infoq-dev-summit-munich-preview/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/297x215/filters:quality(80)/podcasts/infoq-dev-summit-munich-preview/en/mediumimage/devsummit-infoq-podcast-interviewee-poto-1724945283582.jpg" class="card__image" alt="Lessons Learned from the CrowdStrike Incident: InfoQ Dev Summit Munich 2024 Preview"/> <div class="card__meta"> <div class="card__icon">Icon</div> <div class="card__length">27:00</div> </div> </a> </div> </li> </ul> <a href="/architecture/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="/architecture/minibooks/" > Guides about Architecture </a> </h2> <span class="rss icon icon__rss-feed"> <a href="https://feed.infoq.com/architecture/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="99a1f94e-2d93-4b81-8236-5506a9a7342c" data-path="/minibooks/architecture-different-lenses/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3"> <div class="card__content"> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/architecture-design/" data-id="6816">Architecture & Design</a> </span> </div> <h4 class="card__title"> <a title="Architecture Through Different Lenses" href="/minibooks/architecture-different-lenses/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3"> Architecture Through Different Lenses </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/architecture-different-lenses/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/128x182/filters:quality(80)/minibooks/architecture-different-lenses/en/cover/architecture-through-different-lenses-medium-cover-1722843332878.jpg" alt="Architecture Through Different Lenses" class="card__image" /> </a> </div> </li> <li data-id="c6b9e258-328e-4ee9-a4c0-725014c2389d" data-path="/minibooks/cell-based-architecture-2024/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3"> <div class="card__content"> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/architecture-design/" data-id="6816">Architecture & Design</a> </span> </div> <h4 class="card__title"> <a title="Cell-Based Architectures: How to Build Scalable and Resilient Systems" href="/minibooks/cell-based-architecture-2024/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3"> Cell-Based Architectures: How to Build Scalable and Resilient Systems </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/cell-based-architecture-2024/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/128x182/filters:quality(80)/minibooks/cell-based-architecture-2024/en/cover/updated-medium-image-cover-cell-based-architecture-2024-1722594924416.jpg" alt="Cell-Based Architectures: How to Build Scalable and Resilient Systems" class="card__image" /> </a> </div> </li> <li data-id="92d39c4d-fa91-46ba-89f8-49cac7d69995" data-path="/minibooks/architectures-2024/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3"> <div class="card__content"> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/architecture-design/" data-id="6816">Architecture & Design</a> </span> </div> <h4 class="card__title"> <a title="Architectures You’ve Always Wondered About 2024 eMag" href="/minibooks/architectures-2024/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3"> Architectures You’ve Always Wondered About 2024 eMag </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/architectures-2024/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/128x182/filters:quality(80)/minibooks/architectures-2024/en/cover/aywa-2024-medium-logo-1712231844267.jpg" alt="Architectures You’ve Always Wondered About 2024 eMag" class="card__image" /> </a> </div> </li> <li data-id="bde27e66-1f54-4c11-b9db-214165d5ef41" data-path="/minibooks/spring-boot-api-backend-version2/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3"> <div class="card__content"> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/development/" data-id="6815">Development</a> </span> </div> <h4 class="card__title"> <a title="Practical Guide to Building an API Back End with Spring Boot - Version 2" href="/minibooks/spring-boot-api-backend-version2/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3"> Practical Guide to Building an API Back End with Spring Boot - Version 2 </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/spring-boot-api-backend-version2/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/128x182/filters:quality(80)/minibooks/spring-boot-api-backend-version2/en/cover/cyan-front-cover-medium-1709052422392.jpg" alt="Practical Guide to Building an API Back End with Spring Boot - Version 2" class="card__image" /> </a> </div> </li> <li data-id="e8ced5bb-0cea-4f71-b6d6-58c92c3210a3" data-path="/minibooks/2023-infoq-trends-reports-emag/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3"> <div class="card__content"> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/development/" data-id="6815">Development</a> </span> </div> <h4 class="card__title"> <a title="The InfoQ Trends Reports 2023 eMag" href="/minibooks/2023-infoq-trends-reports-emag/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3"> The InfoQ Trends Reports 2023 eMag </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/2023-infoq-trends-reports-emag/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/128x182/filters:quality(80)/minibooks/2023-infoq-trends-reports-emag/en/cover/cover-1703183112474.jpg" alt="The InfoQ Trends Reports 2023 eMag" class="card__image" /> </a> </div> </li> <li data-id="4e03b350-6d26-4501-b479-fb644b3c5c13" data-path="/minibooks/angular-mini-book-v3/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3"> <div class="card__content"> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/Web-Development/" data-id="7211">Web Development</a> </span> </div> <h4 class="card__title"> <a title="The Angular Mini-Book 3.0" href="/minibooks/angular-mini-book-v3/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3"> The Angular Mini-Book 3.0 </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/angular-mini-book-v3/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/128x182/filters:quality(80)/minibooks/angular-mini-book-v3/en/cover/angular-book-pdf-screen-v3.0-cover-s-1687455780516.jpg" alt="The Angular Mini-Book 3.0" class="card__image" /> </a> </div> </li> <li data-id="9ce6a29c-5491-42cb-bae9-9a13b923634e" data-path="/minibooks/architecture-2023/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3"> <div class="card__content"> <div class="card__data"> <div class="card__topics topics"> <span> <a href="/architecture-design/" data-id="6816">Architecture & Design</a> </span> </div> <h4 class="card__title"> <a title="Architectures You’ve Always Wondered About" href="/minibooks/architecture-2023/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3"> Architectures You’ve Always Wondered About </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/architecture-2023/?topicPageSponsorship=b2658011-16af-4907-a0f4-6bdeefc5a7a3" class="card__header"> <img loading="lazy" src="https://imgopt.infoq.com/fit-in/128x182/filters:quality(80)/minibooks/architecture-2023/en/cover/AYAWA-cover-1685603804733.jpg" alt="Architectures You’ve Always Wondered About" class="card__image" /> </a> </div> </li> </ul> <a href="/architecture/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="{"topic":"Architecture","id":"35172826-711c-45a9-bed9-5f6aee4c41c1","title":"ScyllaDB TS Spotlight 04/03/2024 - 10/02/2024"}"> <style type="text/css">.save-seat-btn:hover { color: white !important; border: 1px solid #0073e1; background: #0073e1; margin-bottom: 20px; } .headline-microsites-section { margin: 0; color: #ffffff; background: #0e113e; text-align: center; padding: 12px 5px; margin-bottom: 20px; } .sponsored_webinar-middle-section a:hover {opacity: 0.8;} .sponsored_webinar-middle-section h4{margin-bottom: 4px;} .sponsored_webinar-middle-section h4 a:hover {text-decoration: underline;} .sponsored_webinar-middle-section h4 a { font-weight: 500; font-size: 16px; line-height: 120%; color: #000000; text-decoration: none; margin-bottom: 0; display: block; } .sponsor-asset-microsites{ margin-bottom: 12px; } .sponsor-asset-microsites a{color: black; text-decoration: none;} .sponsor-asset-cover-microsites { background: #e8ebf4; text-align: center; height: 120px; margin-bottom: 8px; } @media (max-width: 1080px) { .sponsor-asset-microsites { margin-bottom: 12px; width: 48%; display: inline-block; vertical-align: text-top; margin-right: 1%; } .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; } } @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: 450px) { .sponsor-asset-microsites { width: 100%; margin-right: 0; } } </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; margin-bottom:10px;">CONTENT IN THIS BOX PROVIDED BY OUR SPONSOR</p> </center> <center><a href="/url/p/569ed64e-8168-4cef-811c-2a269196e552/" target="_blank" rel="nofollow"><img alt="" src="https://assets.infoq.com/resources/en/Scylla-top-banner.png" style="width: 280px; height: 135px;" rel="share"></a></center> <p style="font-weight: normal; font-size: 12px; line-height: 150%;text-align: center; color: #000000;"> </p> </div> <h3 class="headline-microsites-section">Sponsored Event</h3> <div class="sponsor-asset-microsites"> <div class="sponsor-asset-cover-microsites"><a href="/url/p/ad2c8607-bf13-4c8b-a9e6-6bc3ba5ce208/" target="_blank" rel="nofollow"><img alt="" src="https://assets.infoq.com/resources/en/ScyllaDB-P99Conf-Microsite.jpg" style="width: 200px; height: 120px;" rel="share"></a></div> <h4 style="font-weight:bold; margin-top: 0;"><a href="/url/p/abd1217a-5203-4af8-a4f6-b65232e91ecb/" target="_blank" rel="nofollow">P99 Conf - Virtual Event</a></h4> <p style="font-weight: normal; font-size: 13px; line-height: 150%;color: #495057;">P99 CONF is for developers who care about P99 percentiles and high-performance, low-latency applications. Explore Rust, C++, Go, event streaming architectures, distributed databases, Linux kernel, observability, K8s & more. <a href="/url/p/3fdd399b-5a0c-404f-92fb-e0d97a89d092/" target="_blank" rel="nofollow"><strong>Register Now</strong></a>.</p> </div> <h3 class="headline-microsites-section">Sponsored Content</h3> <div class="sponsored_webinar-middle-section"> <div class="sponsor-asset-microsites"> <div class="sponsor-asset-cover-microsites"><a href="/url/p/ad423a20-6049-4a38-83ff-62b9e4256468/" target="_blank" rel="nofollow"><img alt="" src="https://assets.infoq.com/resources/en/ScyllaDB-DesigningDataOreilly.jpg" style="width: 200px; height: 120px;" rel="share"></a></div> <h4 style="font-weight:bold; margin-top: 0;"><a href="/url/p/4e0a7b49-644e-488b-b859-dcaedfa5a433/" target="_blank" rel="nofollow">Free O'Reilly Download: Designing Data Intensive Applications</a></h4> <p style="font-weight: normal; font-size: 13px; line-height: 150%;color: #495057;">In this practical and comprehensive guide, Martin Kleppmann helps you navigate the diverse and fast-changing landscape of approaches to processing and storing data for data-intensive applications. <a href="/url/p/c3724c83-79e8-4f43-a6d8-17bb78ef6c02/" target="_blank" rel="nofollow"><strong>Download Now</strong></a>.</p> </div> <div class="sponsor-asset-microsites"> <div class="sponsor-asset-cover-microsites"><a href="/url/p/51d54839-47a0-442b-9bff-969ddab01602/" target="_blank" rel="nofollow"><img alt="" src="https://assets.infoq.com/resources/en/ScyllaDB-DatabasePerformance.jpg" style="width: 200px; height: 120px;" rel="share"></a></div> <h4 style="font-weight:bold; margin-top: 0;"><a href="/url/p/9c3ea2a2-cca1-4a59-8fb7-27a1e04f7d02/" target="_blank" rel="nofollow">Database Performance at Scale</a></h4> <p style="font-weight: normal; font-size: 13px; line-height: 150%;color: #495057;">This free ebook covers the critical considerations and best practices for improving database performance based on what has worked, and failed, across thousands of teams and use cases in the field. <a href="/url/p/1b65cd31-a7c1-47f1-8b59-903e34c763f7/" target="_blank" rel="nofollow"><strong>Download Now</strong></a>.</p> </div> <div class="sponsor-asset-microsites"> <div class="sponsor-asset-cover-microsites"><a href="/url/p/ba41ce73-0d87-4abe-96a1-3ac29775c39d/" target="_blank" rel="nofollow"><img alt="" src="https://assets.infoq.com/resources/en/ScyllaDB-InAction.jpg" style="width: 200px; height: 120px;" rel="share"></a></div> <h4 style="font-weight:bold; margin-top: 0;"><a href="/url/p/00c42e25-dab4-43c3-a526-70a25b8338e8/" target="_blank" rel="nofollow">ScyllaDB in Action: Practical tips for building apps with ScyllaDB</a></h4> <p style="font-weight: normal; font-size: 13px; line-height: 150%;color: #495057;">ScyllaDB in Action is a practical guide to everything you need to know about ScyllaDB, from your very first queries to running it in a production environment. This book teaches you ScyllaDB the best way—through hands-on examples. <a href="/url/p/04df0b52-9bce-47df-87a4-f8bd6d716bd6/" target="_blank" rel="nofollow"><strong>Download Now</strong></a>.</p> </div> <div style="width: 100%; overflow: hidden; padding: 10px 5px;"> <center> <p class="social_links" style="background-color:#dcf3fe; text-align:center; padding: 20px 0"><span style="color: #000000; font-size:14px; width: 100%; display: block"><b>Follow ScyllaDB on: </b></span> <a href="/url/p/a5904c2f-7b2a-43a3-980f-177c00d026c3/" target="_blank" rel="nofollow"><img _p="true" alt="" src="https://assets.infoq.com/resources/en/1_github.png" style="width: 20x; height: 20px;" rel="share"></a> <a href="/url/p/51cdd46a-0dbc-43f4-87f5-b5d96817e767/" target="_blank" rel="nofollow"><img _p="true" alt="" src="https://assets.infoq.com/resources/en/1_facebook.png" style="width: 20x; height: 20px;" rel="share"></a> <a href="/url/p/0c6bc567-ff01-492b-a18f-f25f1ab2d055/" target="_blank" rel="nofollow"><img _p="true" alt="" src="https://assets.infoq.com/resources/en/1_twitter.png" style="width: 20x; height: 20px;" rel="share"></a> <a href="/url/p/dda60377-3db9-44b2-b93a-fb2e1995fb2e/" target="_blank" rel="nofollow"><img _p="true" alt="" src="https://assets.infoq.com/resources/en/1_youtube.png" style="width: 20x; height: 20px;" rel="share"></a> <a href="/url/p/fa4ff4ec-5243-4640-b76b-45753e57e51b/" target="_blank" rel="nofollow"><img _p="true" alt="" src="https://assets.infoq.com/resources/en/1_slack.png" style="width: 20x; height: 20px;" rel="share"></a></p> </center> </div> </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/2024/11/rust-code-productive-databases/" title="Carle Lerche Talking at QCon SF about Rust: a Productive Language for Writing Database Applications">Carle Lerche Talking at QCon SF about Rust: a Productive Language for Writing Database Applications</a></h5> </li> <li> <h5><a class="t_all_footer_more-boxes-item" href="/news/2024/11/android-gemini/" title="Google Introduces Gemini AI Features to Android Studio">Google Introduces Gemini AI Features to Android Studio</a></h5> </li> <li> <h5><a class="t_all_footer_more-boxes-item" href="/news/2024/11/github-universe-2024-ai/" title="GitHub Universe 2024 Unveils AI Innovations and Developer-Centric Tools">GitHub Universe 2024 Unveils AI Innovations and Developer-Centric Tools</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 & 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="/news/2024/11/stripe-observability-aws-managed/" title="Stripe Rearchitects Its Observability Platform with Managed Prometheus and Grafana on AWS">Stripe Rearchitects Its Observability Platform with Managed Prometheus and Grafana on AWS</a></h5> </li> <li> <h5><a class="t_all_footer_more-boxes-item" href="/presentations/serverless-set-pieces/" title="Think, Architect, and Sustain Your Serverless Applications As [Set] Pieces!">Think, Architect, and Sustain Your Serverless Applications As [Set] Pieces!</a></h5> </li> <li> <h5><a class="t_all_footer_more-boxes-item" href="/news/2024/11/agoda-graphql-microservices/" title="Agoda&rsquo;s Unconventional Client-First Transition from a GraphQL Monolith to Microservices">Agoda’s Unconventional Client-First Transition from a GraphQL Monolith to Microservices</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 & 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="/podcasts/participatory-leadership-developing-psychological-safety/" title="Participatory Leadership and Developing a Culture of Psychological Safety">Participatory Leadership and Developing a Culture of Psychological Safety</a></h5> </li> <li> <h5><a class="t_all_footer_more-boxes-item" href="/news/2024/11/developers-platforms-practices/" title="How to Delight Your Developers with User-Centric Platforms and Practices">How to Delight Your Developers with User-Centric Platforms and Practices</a></h5> </li> <li> <h5><a class="t_all_footer_more-boxes-item" href="/podcasts/engineering-leadership-trends/" title="Trends in Engineering Leadership: Observability, Agile Backlash, and Building Autonomous Teams">Trends in Engineering Leadership: Observability, Agile Backlash, and Building Autonomous Teams</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 & 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/responsible-ai-fintech/" title="Navigating Responsible AI in the FinTech Landscape">Navigating Responsible AI in the FinTech Landscape</a></h5> </li> <li> <h5><a class="t_all_footer_more-boxes-item" href="/news/2024/11/qconsf-scaling-meta/" title="QCon SF 2024 - Scaling Large Language Model Serving Infrastructure at Meta">QCon SF 2024 - Scaling Large Language Model Serving Infrastructure at Meta</a></h5> </li> <li> <h5><a class="t_all_footer_more-boxes-item" href="/news/2024/11/qcon-sf-netflix-incremental-proc/" title="QCon SF 2024 - Incremental Data Processing at Netflix">QCon SF 2024 - Incremental Data Processing at Netflix</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="/news/2024/11/github-octoverse-2024/" title="Rise of Python, Generative AI, and Global Developer Communities: Insights from GitHub Octoverse 2024">Rise of Python, Generative AI, and Global Developer Communities: Insights from GitHub Octoverse 2024</a></h5> </li> <li> <h5><a class="t_all_footer_more-boxes-item" href="/presentations/dev-journey-kubernetes/" title="From Local to Production: a Modern Developer&rsquo;s Journey towards Kubernetes">From Local to Production: a Modern Developer’s Journey towards Kubernetes</a></h5> </li> <li> <h5><a class="t_all_footer_more-boxes-item" href="/news/2024/11/timescale-pgai-vectorizer/" title="Timescale Bolsters AI-Ready PostgreSQL with pgai Vectorizer">Timescale Bolsters AI-Ready PostgreSQL with pgai Vectorizer</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’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’t know that you don’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="Db2GLIGpqby4ltBO"/> <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="qconSF" class="event__container"> <a href="https://qconsf.com/?utm_source=infoq&utm_medium=referral&utm_campaign=largefooterad_qsf24 " target="_blank" class="qconplus__events-slider"> <div> <div class="logo-sf"></div> <br> </div> <p class="intro"><strong>QCon San Francisco<br style="margin:0">November 18-22, 2024.<br style="margin:0"><br></strong>QCon San Francisco International Software Conference returns on November 18-24. More than 1000 software professionals will join together and learn about the emerging trends they should pay attention to in 2024, how to adopt them, how to avoid pitfalls, and how to embrace the best practices. <br>Join the experience and get implementable ideas to shape your projects that last beyond the conference.<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://qconsf.com/?utm_source=infoq&utm_medium=referral&utm_campaign=footer_qsf24" target="_blank">QCon San Francisco</a> </h5> <span class="meta date">NOVEMBER 18-22, 2024</span> </div> </li> <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-9, 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> </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://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><img loading="lazy" width="65px" height="64px" src="https://cdn.infoq.com/statics_s1_20241128015124/styles/static/images/ui/footer/infoq-podcast-small.jpg" alt="The InfoQ Podcast Logo - Stay in the know"></a> <a href="/podcasts/#engineering_culture" class="stayIn_panel" target="_blank" rel="noreferrer noopener"><span>Engineering Culture Podcast</span><img loading="lazy" width="65px" height="64px" alt="Engineering Culture Podcast Logo - Stay in the know" src="https://cdn.infoq.com/statics_s1_20241128015124/styles/static/images/ui/footer/engineering-culture-podcast-small.jpg"></a> <a href="/software-architects-newsletter/" class="stayIn_panel" target="_blank" rel="noreferrer noopener"><span>The Software Architects' Newsletter</span><img loading="lazy" width="65px" height="64px" alt="The Software Architects' Newsletter Logo - Stay in the know" src="https://cdn.infoq.com/statics_s1_20241128015124/styles/static/images/ui/footer/architects-newsletter-small.jpg"></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 © 2006-2024 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=Db2GLIGpqby4ltBO&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_s1_20241128015124/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'], 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> <!-- s1 -->