Files
nexus/sreweekly/articles/37/02-how-digit-created-high-availability-on-the-public-cloud-to-keep-its-ga.html
2026-09-12 17:23:01 +08:00

838 lines
146 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!doctype html >
<!--[if IE 8]> <html class="ie8" lang="en"> <![endif]-->
<!--[if IE 9]> <html class="ie9" lang="en"> <![endif]-->
<!--[if gt IE 8]><!--> <html lang="en-US"> <!--<![endif]-->
<head>
<title>How DIGIT Created High Availability on the Public Cloud to Keep Its Games Running - Linux.com</title>
<meta charset="UTF-8" /><script type="text/javascript">(window.NREUM||(NREUM={})).init={ajax:{deny_list:["bam.nr-data.net"]}};(window.NREUM||(NREUM={})).loader_config={licenseKey:"981d6c8a9f",applicationID:"176909146",browserID:"194441354"};;/*! For license information please see nr-loader-rum-1.321.0.min.js.LICENSE.txt */
(()=>{var e={8122(e,t,r){"use strict";r.d(t,{a:()=>i});var n=r(944);function i(e,t){try{if(!e||"object"!=typeof e)return(0,n.R)(3);if(!t||"object"!=typeof t)return(0,n.R)(4);const r=Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t)),a=0===Object.keys(r).length?e:r;for(let s in a)if(void 0!==e[s])try{if(null===e[s]){r[s]=null;continue}Array.isArray(e[s])&&Array.isArray(t[s])?r[s]=Array.from(new Set([...e[s],...t[s]])):e[s]instanceof Map||e[s]instanceof Set||e[s]instanceof Date||e[s]instanceof RegExp?r[s]=e[s]:"object"==typeof e[s]&&null!==t[s]&&"object"==typeof t[s]?r[s]=i(e[s],t[s]):r[s]=e[s]}catch(e){r[s]||(0,n.R)(1,e)}return r}catch(e){(0,n.R)(2,e)}}},2555(e,t,r){"use strict";r.d(t,{f:()=>s});var n=r(384),i=r(8122);const a={beacon:n.NT.beacon,errorBeacon:n.NT.errorBeacon,licenseKey:void 0,applicationID:void 0,sa:void 0,queueTime:void 0,applicationTime:void 0,ttGuid:void 0,user:void 0,account:void 0,product:void 0,extra:void 0,jsAttributes:{},userAttributes:void 0,atts:void 0,transactionName:void 0,tNamePlain:void 0};function s(e){try{return!!e.licenseKey&&!!e.errorBeacon&&!!e.applicationID}catch(e){return!1}}r.d(t,["D",0,e=>(0,i.a)(e,a)])},7699(e,t,r){"use strict";var n=r(860);const i={[n.K7.logging]:!0,[n.K7.genericEvents]:!0,[n.K7.jserrors]:!0,[n.K7.ajax]:!0};r.d(t,["It",0,1e6,"KC",0,i,"qh",0,"SESSION_ERROR"])},9324(e,t,r){"use strict";r.d(t,["xv",0,"1.321.0"])},981(e,t,r){"use strict";r.d(t,["R",0,{AJAX:"AjaxRequest",PA:"PageAction",UA:"UserAction",BP:"BrowserPerformance",WS:"WebSocket",SPV:"SecurityPolicyViolation",JSE:"JavaScriptError",LOG:"Log",PVE:"PageView",PVT:"PageViewTiming",SR:"SessionReplay",ST:"SessionTrace",BI:"BrowserInteraction"}])},6154(e,t,r){"use strict";var n=r(1863);const i="undefined"!=typeof window&&!!window.document,a="undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self.navigator instanceof WorkerNavigator||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis.navigator instanceof WorkerNavigator),s=i?window:"undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis),o=Boolean("hidden"===s?.document?.visibilityState),c=""+s?.location,u=/iPad|iPhone|iPod/.test(s.navigator?.userAgent),d=u&&"undefined"==typeof SharedWorker,l=((()=>{const e=s.navigator?.userAgent?.match(/Firefox[/\s](\d+\.\d+)/);Array.isArray(e)&&e.length>=2&&e[1]})(),Date.now()-(0,n.t)());r.d(t,["OF",0,u,"RI",0,i,"WN",0,l,"bv",0,a,"gm",0,s,"m",0,c,"mw",0,o,"sb",0,d,"zk",0,()=>{const e=s?.performance?.getEntriesByType?.("navigation")?.[0];if(e&&e.responseStart>0&&e.responseStart<s.performance.now())return e}])},3241(e,t,r){"use strict";r.d(t,{W:()=>i});var n=r(6154);function i(e={}){try{n.gm.dispatchEvent(new CustomEvent("newrelic",{detail:e}))}catch(e){}}},1687(e,t,r){"use strict";r.d(t,{Ak:()=>o,Ze:()=>u,x3:()=>c});var n=r(3241),i=r(3606),a=r(860),s=r(2646);function o(e,t){if(!e)return;const r={staged:!1,priority:a.P3[t]||0};e.runtime.drainRegistry.get(t)||e.runtime.drainRegistry.set(t,r)}function c(e,t){if(!e)return;const r=e.runtime.drainRegistry;r&&(r.get(t)&&r.delete(t),l(e,t,!1),r.size&&d(e))}function u(e,t="feature",r=!1){if(e){if(!e.runtime.drainRegistry.get(t)||r)return l(e,t);e.runtime.drainRegistry.get(t).staged=!0,d(e)}}function d(e){if(!e)return;const t=Array.from(e.runtime.drainRegistry);t.every(([e,t])=>t.staged)&&(t.sort((e,t)=>e[1].priority-t[1].priority),t.forEach(([t])=>{e.runtime.drainRegistry.delete(t),l(e,t)}))}function l(e,t,r=!0){if(!e)return;const a=e.ee,o=i.i.handlers;if(a&&!a.aborted&&a.backlog&&o){if((0,n.W)({type:"lifecycle",name:"drain",feature:t}),r){const e=a.backlog[t],r=o[t];if(r){for(let t=0;e&&t<e.length;++t)f(e[t],r);Object.entries(r).forEach(([e,t])=>{Object.values(t||{}).forEach(t=>{t[0]?.on&&t[0].context()instanceof s.y&&!t[0].listeners(e).includes(t[1])&&t[0].on(e,t[1])})})}}a.isolatedBacklog||delete o[t],a.backlog[t]=null,a.emit("drain-"+t,[])}}function f(e,t){var r=e[1];Object.values(t[r]||{}).forEach(t=>{var r=e[0];if(t[0]===r){var n=t[1],i=e[3],a=e[2];n.apply(i,a)}})}},7836(e,t,r){"use strict";var n=r(384),i=r(8990),a=r(2646),s=r(5607);const o="nr@context:".concat(s.W),c=function e(t,r){var n={},s={},d={},l=!1;try{l=16===r.length&&u.initializedAgents?.[r]?.runtime.isolatedBacklog}catch(e){}var f={on:p,addEventListener:p,removeEventListener:function(e,t){var r=n[e];if(!r)return;for(var i=0;i<r.length;i++)r[i]===t&&r.splice(i,1)},emit:function(e,r,n,i,a){!1!==a&&(a=!0);if(c.aborted&&!i)return;t&&a&&t.emit(e,r,n);var o=g(n);m(e).forEach(e=>{e.apply(o,r)});var u=v()[s[e]];u&&u.push([f,e,r,o]);return o},get:h,listeners:m,context:g,buffer:function(e,t){const r=v();if(t=t||"feature",f.aborted)return;Object.entries(e||{}).forEach(([e,n])=>{s[n]=t,t in r||(r[t]=[])})},abort:function(){f._aborted=!0,Object.keys(f.backlog).forEach(e=>{delete f.backlog[e]})},isBuffering:function(e){return!!v()[s[e]]},debugId:r,backlog:l?{}:t&&"object"==typeof t.backlog?t.backlog:{},isolatedBacklog:l};return Object.defineProperty(f,"aborted",{get:()=>{let e=f._aborted||!1;return e||(t&&(e=t.aborted),e)}}),f;function g(e){return e&&e instanceof a.y?e:e?(0,i.I)(e,o,()=>new a.y(o)):new a.y(o)}function p(e,t){n[e]=m(e).concat(t)}function m(e){return n[e]||[]}function h(t){return d[t]=d[t]||e(f,t)}function v(){return f.backlog}}(void 0,"globalEE"),u=(0,n.Zm)();u.ee||(u.ee=c),r.d(t,["P",0,o,"ee",0,c])},2646(e,t,r){"use strict";r.d(t,{y:()=>n});class n{constructor(e){this.contextId=e}}},9908(e,t,r){"use strict";r.d(t,{d:()=>n,p:()=>i});var n=r(7836).ee.get("handle");function i(e,t,r,i,a){a?(a.buffer([e],i),a.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}},3606(e,t,r){"use strict";r.d(t,{i:()=>a});var n=r(9908);a.on=s;var i=a.handlers={};function a(e,t,r,a){s(a||n.d,i,e,t,r)}function s(e,t,r,i,a){a||(a="feature"),e||(e=n.d);var s=t[a]=t[a]||{};(s[r]=s[r]||[]).push([e,i])}},3878(e,t,r){"use strict";function n(e,t){return{capture:e,passive:!1,signal:t}}function i(e,t,r=!1,i){window.addEventListener(e,t,n(r,i))}function a(e,t,r=!1,i){document.addEventListener(e,t,n(r,i))}r.d(t,{DD:()=>a,jT:()=>n,sp:()=>i})},5607(e,t,r){"use strict";const n=(0,r(9566).bz)();r.d(t,["W",0,n])},9566(e,t,r){"use strict";r.d(t,{LA:()=>s,bz:()=>a});var n=r(6154);function i(e,t){return e?15&e[t]:16*Math.random()|0}function a(){const e=n.gm?.crypto||n.gm?.msCrypto;let t,r=0;return e&&e.getRandomValues&&(t=e.getRandomValues(new Uint8Array(30))),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".split("").map(e=>"x"===e?i(t,r++).toString(16):"y"===e?(3&i()|8).toString(16):e).join("")}function s(e){const t=n.gm?.crypto||n.gm?.msCrypto;let r,a=0;t&&t.getRandomValues&&(r=t.getRandomValues(new Uint8Array(e)));const s=[];for(var o=0;o<e;o++)s.push(i(r,a++).toString(16));return s.join("")}},2614(e,t,r){"use strict";r.d(t,["BB",0,18e5,"Wt",0,"NRBA_SESSION::","iL",0,{SAME_TAB:"same-tab",CROSS_TAB:"cross-tab"},"tS",0,{STARTED:"session-started",PAUSE:"session-pause",RESET:"session-reset",RESUME:"session-resume",UPDATE:"session-update"},"wk",0,144e5])},1863(e,t,r){"use strict";function n(){return Math.floor(performance.now())}r.d(t,{t:()=>n})},944(e,t,r){"use strict";r.d(t,{R:()=>i});var n=r(3241);function i(e,t){"function"==typeof console.debug&&(console.debug("New Relic Warning: https://github.com/newrelic/newrelic-browser-agent/blob/main/docs/warning-codes.md#".concat(e),t),(0,n.W)({drained:null,type:"data",name:"warn",feature:"warn",data:{code:e,secondary:t}}))}},8990(e,t,r){"use strict";r.d(t,{I:()=>i});var n=Object.prototype.hasOwnProperty;function i(e,t,r){if(n.call(e,t))return e[t];var i=r();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!1}),i}catch(e){}return e[t]=i,i}},6389(e,t,r){"use strict";function n(e,t=500,r={}){const n=r?.leading||!1;let i;return(...r)=>{n&&void 0===i&&(e.apply(this,r),i=setTimeout(()=>{i=clearTimeout(i)},t)),n||(clearTimeout(i),i=setTimeout(()=>{e.apply(this,r)},t))}}function i(e){let t=!1;return(...r)=>{t||(t=!0,e.apply(this,r))}}r.d(t,{J:()=>i,s:()=>n})},1910(e,t,r){"use strict";r.d(t,{i:()=>a});var n=r(944);const i=new Map;function a(...e){return e.every(e=>{if(i.has(e))return i.get(e);const t="function"==typeof e?e.toString():"",r=t.includes("[native code]"),a=t.includes("nrWrapper");return r||a||(0,n.R)(64,e?.name||t),i.set(e,r),r})}},5289(e,t,r){"use strict";r.d(t,{GG:()=>s,Qr:()=>c,sB:()=>o});var n=r(3878),i=r(6389);function a(){return"undefined"==typeof document||"complete"===document.readyState}function s(e,t){if(a())return e();const r=(0,i.J)(e),s=setInterval(()=>{a()&&(clearInterval(s),r())},500);(0,n.sp)("load",r,t)}function o(e){if(a())return e();(0,n.DD)("DOMContentLoaded",e)}function c(e){if(a())return e();(0,n.sp)("popstate",e)}},384(e,t,r){"use strict";r.d(t,{Zm:()=>c,bQ:()=>d,dV:()=>u,pV:()=>l});var n=r(6154),i=r(1863),a=r(944),s=r(1910);const o={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net"};function c(){return n.gm.NREUM||(n.gm.NREUM={}),void 0===n.gm.newrelic&&(n.gm.newrelic=n.gm.NREUM),n.gm.NREUM}function u(){let e=c();return e.o||(e.o={ST:n.gm.setTimeout,SI:n.gm.setImmediate||n.gm.setInterval,CT:n.gm.clearTimeout,XHR:n.gm.XMLHttpRequest,REQ:n.gm.Request,EV:n.gm.Event,PR:n.gm.Promise,MO:n.gm.MutationObserver,FETCH:n.gm.fetch,WS:n.gm.WebSocket},(0,s.i)(...Object.values(e.o))),e}function d(e,t){let r=c();r.initializedAgents??={},t.initializedAt={ms:(0,i.t)(),date:new Date},r.initializedAgents[e]=t,2===Object.keys(r.initializedAgents).length&&(0,a.R)(69)}function l(){return function(){let e=c();const t=e.info||{};e.info={beacon:o.beacon,errorBeacon:o.errorBeacon,...t}}(),function(){let e=c();const t=e.init||{};e.init={...t}}(),u(),function(){let e=c();const t=e.loader_config||{};e.loader_config={...t}}(),c()}r.d(t,["NT",0,o])},2843(e,t,r){"use strict";r.d(t,{G:()=>a,u:()=>i});var n=r(3878);function i(e,t=!1,r,i){(0,n.DD)("visibilitychange",function(){if(t)return void("hidden"===document.visibilityState&&e());e(document.visibilityState)},r,i)}function a(e,t,r){(0,n.sp)("pagehide",e,t,r)}},9300(e,t,r){"use strict";r(860).K7.ajax;r.d(t,["mo",0,{NONE:"none",FAILURES:"failures",ALL:"all"}])},3969(e,t,r){"use strict";const n=r(860).K7.metrics;r.d(t,["TZ",0,n,"XG",0,"storeEventMetrics","xV",0,"storeSupportabilityMetrics"])},6630(e,t,r){"use strict";const n=r(860).K7.pageViewEvent;r.d(t,["T",0,n])},782(e,t,r){"use strict";const n=r(860).K7.pageViewTiming;r.d(t,["T",0,n])},4234(e,t,r){"use strict";r.d(t,{W:()=>i});var n=r(1687);class i{constructor(e,t){this.agentRef=e,this.ee=e?.ee,this.featureName=t,this.blocked=!1}deregisterDrain(){(0,n.x3)(this.agentRef,this.featureName)}}},7767(e,t,r){"use strict";var n=r(6154);r.d(t,["V",0,e=>n.RI&&!0===e?.privacy.cookies_enabled])},8362(e,t,r){"use strict";r.d(t,{d:()=>a});var n=r(9566),i=r(1741);class a extends i.W{agentIdentifier=(0,n.LA)(16)}},1741(e,t,r){"use strict";r.d(t,{W:()=>a});var n=r(944),i=r(4261);class a{#e(e,...t){if(this[e]!==a.prototype[e])return this[e](...t);(0,n.R)(35,e)}addPageAction(e,t){return this.#e(i.hG,e,t)}register(e){return this.#e(i.eY,e)}recordCustomEvent(e,t){return this.#e(i.fF,e,t)}setPageViewName(e,t){return this.#e(i.Fw,e,t)}setCustomAttribute(e,t,r){return this.#e(i.cD,e,t,r)}noticeError(e,t){return this.#e(i.o5,e,t)}setUserId(e,t=!1){return this.#e(i.Dl,e,t)}setApplicationVersion(e){return this.#e(i.nb,e)}setErrorHandler(e){return this.#e(i.bt,e)}addRelease(e,t){return this.#e(i.k6,e,t)}log(e,t){return this.#e("log",e,t)}start(){return this.#e("start")}finished(e){return this.#e(i.BL,e)}recordReplay(){return this.#e(i.CH)}pauseReplay(){return this.#e(i.Tb)}addToTrace(e){return this.#e(i.U2,e)}setCurrentRouteName(e){return this.#e(i.PA,e)}interaction(e){return this.#e(i.dT,e)}wrapLogger(e,t,r){return this.#e(i.Wb,e,t,r)}measure(e,t){return this.#e(i.V1,e,t)}consent(e){return this.#e(i.Pv,e)}}},4261(e,t,r){"use strict";r.d(t,["BL",0,"finished","CH",0,"recordReplay","Dl",0,"setUserId","Fw",0,"setPageViewName","PA",0,"setCurrentRouteName","Pv",0,"consent","Tb",0,"pauseReplay","U2",0,"addToTrace","V1",0,"measure","Wb",0,"wrapLogger","bt",0,"setErrorHandler","cD",0,"setCustomAttribute","dT",0,"interaction","eY",0,"register","fF",0,"recordCustomEvent","hG",0,"addPageAction","k6",0,"addRelease","nb",0,"setApplicationVersion","o5",0,"noticeError"])},1738(e,t,r){"use strict";r.d(t,{U:()=>l,Y:()=>d});var n=r(3241),i=r(9908),a=r(1863),s=r(944),o=r(3969),c=r(8362),u=r(860);function d(e,t,r,a){const d=a||r;!d||d[e]&&d[e]!==c.d.prototype[e]||(d[e]=function(){(0,i.p)(o.xV,["API/"+e+"/called"],void 0,u.K7.metrics,r.ee),(0,n.W)({drained:!!r.runtime?.activatedFeatures,type:"data",name:"api",feature:"api-"+e,data:{}});try{return t.apply(this,arguments)}catch(e){(0,s.R)(23,e)}})}function l(e,t,r,n,s){const o=e.info;null===r?delete o.jsAttributes[t]:o.jsAttributes[t]=r,(s||null===r)&&(0,i.p)("api-"+n,[(0,a.t)(),t,r],void 0,"session",e.ee)}},8374(e,t,r){r.nc=(()=>{try{return document?.currentScript?.nonce}catch(e){}return""})()},860(e,t,r){"use strict";const n="events",i="jserrors",a="browser/blobs",s="browser/logs",o={ajax:"ajax",genericEvents:"generic_events",jserrors:i,logging:"logging",metrics:"metrics",pageAction:"page_action",pageViewEvent:"page_view_event",pageViewTiming:"page_view_timing",sessionReplay:"session_replay",sessionTrace:"session_trace",softNav:"soft_navigations"},c={[o.pageViewEvent]:1,[o.pageViewTiming]:2,[o.metrics]:3,[o.jserrors]:4,[o.softNav]:5,[o.ajax]:6,[o.sessionTrace]:7,[o.sessionReplay]:8,[o.logging]:9,[o.genericEvents]:10},u={[o.pageViewEvent]:"rum",[o.pageViewTiming]:n,[o.ajax]:n,[o.softNav]:n,[o.metrics]:i,[o.jserrors]:i,[o.sessionTrace]:a,[o.sessionReplay]:a,[o.logging]:s,[o.genericEvents]:"ins"};r.d(t,["$J",0,u,"K7",0,o,"P3",0,c,"XX",0,i,"Yy",0,s,"df",0,a,"hg",0,"connect"])}};const t={};function r(n){const i=t[n];if(void 0!==i)return i.exports;const a=t[n]={exports:{}};return e[n](a,a.exports,r),a.exports}r.m=e,r.d=(e,t)=>{if(Array.isArray(t))for(var n=0;n<t.length;){var i=t[n++],a=t[n++];r.o(e,i)?0===a&&n++:0===a?Object.defineProperty(e,i,{enumerable:!0,value:t[n++]}):Object.defineProperty(e,i,{enumerable:!0,get:a})}else for(var i in t)r.o(t,i)&&!r.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((t,n)=>(r.f[n](e,t),t),[])),r.u=e=>"nr-rum-1.321.0.min.js",r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{const e={},t="NRBA-1.321.0.PROD:";r.l=(n,i,a,s)=>{if(e[n])return void e[n].push(i);let o,c;if(void 0!==a){const e=document.getElementsByTagName("script");for(var u=0;u<e.length;u++){const r=e[u];if(r.getAttribute("src")==n||r.getAttribute("data-webpack")==t+a){o=r;break}}}if(!o){c=!0;var d={296:"sha512-auOJN989wXoxmQeiyRE/ZlrR6yqeuq5/WjLH1btsNQ6Iqm/RK+IqmjTuvad7oOBZyozPaWg6y2Uu2qAZy3e0cQ=="};o=document.createElement("script"),o.charset="utf-8",r.nc&&o.setAttribute("nonce",r.nc),o.setAttribute("data-webpack",t+a),o.src=n,0!==o.src.indexOf(window.location.origin+"/")&&(o.crossOrigin="anonymous"),d[s]&&(o.integrity=d[s])}e[n]=[i];const l=(t,r)=>{o.onerror=o.onload=null,clearTimeout(f);const i=e[n];if(delete e[n],o.parentNode?.removeChild(o),i?.forEach(e=>e(r)),t)return t(r)},f=setTimeout(l.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=l.bind(null,o.onerror),o.onload=l.bind(null,o.onload),c&&document.head.appendChild(o)}})(),r.r=e=>{Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="https://js-agent.newrelic.com/",(()=>{const e={374:0,840:0};r.f.j=(t,n)=>{let i=r.o(e,t)?e[t]:void 0;if(0!==i)if(i)n.push(i[2]);else{const a=new Promise((r,n)=>i=e[t]=[r,n]);n.push(i[2]=a);const s=r.p+r.u(t),o=new Error,c=n=>{if(r.o(e,t)&&(i=e[t],0!==i&&(e[t]=void 0),i)){const e=n&&("load"===n.type?"missing":n.type),r=n&&n.target&&n.target.src;o.message="Loading chunk "+t+" failed: ("+e+": "+r+")",o.name="ChunkLoadError",o.type=e,o.request=r,i[1](o)}};r.l(s,c,"chunk-"+t,t)}};const t=(t,n)=>{let[i,a,s]=n;var o,c,u=0;if(i.some(t=>0!==e[t])){for(o in a)r.o(a,o)&&(r.m[o]=a[o]);if(s)s(r)}for(t&&t(n);u<i.length;u++)c=i[u],r.o(e,c)&&e[c]&&e[c][0](),e[c]=0},n=self["webpackChunk:NRBA-1.321.0.PROD"]=self["webpackChunk:NRBA-1.321.0.PROD"]||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))})(),(()=>{"use strict";r(8374);var e=r(8362),t=r(860);const n=Object.values(t.K7);var i=r(384),a=r(1741);var s=r(2555),o=r(981);t.K7.genericEvents,o.R.PA,o.R.UA,o.R.BP;const c={RESOURCES:"experimental.resources",REGISTER:"register"};var u=r(9300);const d=e=>{if(!e||"string"!=typeof e)return!1;try{document.createDocumentFragment().querySelector(e)}catch{return!1}return!0};var l=r(2614),f=r(944),g=r(8122);const p="[data-nr-mask]",m=e=>(0,g.a)(e,(()=>{const e={feature_flags:[],experimental:{register:!1,resources:!1,iframe_bridge:!1,iframe_domains:[]},mask_selector:"*",block_selector:"[data-nr-block]",mask_input_options:{color:!1,date:!1,"datetime-local":!1,email:!1,month:!1,number:!1,range:!1,search:!1,tel:!1,text:!1,time:!1,url:!1,week:!1,textarea:!1,select:!1,password:!0}};return{ajax:{deny_list:void 0,block_internal:!0,enabled:!0,autoStart:!0,capture_payloads:u.mo.NONE},api:{register:{get enabled(){return e.feature_flags.includes(c.REGISTER)||e.experimental.register},set enabled(t){e.experimental.register=t},duplicate_data_to_container:!1,get allow_iframe_bridge(){return e.feature_flags.includes(c.IFRAME_BRIDGE)||e.experimental.iframe_bridge},set allow_iframe_bridge(t){e.experimental.iframe_bridge=t},get iframe_domains(){return e.experimental.iframe_domains},set iframe_domains(t){Array.isArray(t)?e.experimental.iframe_domains=t:(0,f.R)(1,t)}}},browser_consent_mode:{enabled:!1},distributed_tracing:{enabled:void 0,exclude_newrelic_header:void 0,cors_use_newrelic_header:void 0,cors_use_tracecontext_headers:void 0,allowed_origins:void 0},get feature_flags(){return e.feature_flags},set feature_flags(t){e.feature_flags=t},generic_events:{enabled:!0,autoStart:!0},harvest:{interval:30},jserrors:{enabled:!0,autoStart:!0},logging:{enabled:!0,autoStart:!0},metrics:{enabled:!0,autoStart:!0},obfuscate:void 0,page_action:{enabled:!0},page_view_event:{enabled:!0,autoStart:!0},page_view_timing:{enabled:!0,autoStart:!0},performance:{capture_marks:!1,capture_measures:!1,capture_detail:!0,resources:{get enabled(){return e.feature_flags.includes(c.RESOURCES)||e.experimental.resources},set enabled(t){e.experimental.resources=t},asset_types:[],first_party_domains:[],ignore_newrelic:!0}},privacy:{cookies_enabled:!0},proxy:{assets:void 0,beacon:void 0},session:{expiresMs:l.wk,inactiveMs:l.BB},session_replay:{autoStart:!0,enabled:!1,preload:!1,sampling_rate:10,error_sampling_rate:100,collect_fonts:!1,inline_images:!1,fix_stylesheets:!0,mask_all_inputs:!0,get mask_text_selector(){return e.mask_selector},set mask_text_selector(t){d(t)?e.mask_selector="".concat(t,",").concat(p):""===t||null===t?e.mask_selector=p:(0,f.R)(5,t)},get block_class(){return"nr-block"},get ignore_class(){return"nr-ignore"},get mask_text_class(){return"nr-mask"},get block_selector(){return e.block_selector},set block_selector(t){d(t)?e.block_selector+=",".concat(t):""!==t&&(0,f.R)(6,t)},get mask_input_options(){return e.mask_input_options},set mask_input_options(t){t&&"object"==typeof t?e.mask_input_options={...t,password:!0}:(0,f.R)(7,t)}},session_trace:{enabled:!0,autoStart:!0},soft_navigations:{enabled:!0,autoStart:!0},ssl:void 0,user_actions:{enabled:!0,elementAttributes:["id","className","tagName","type"]},web_sockets:{enabled:!1}}})());var h=r(6154),v=r(9324);let b=0;const y={buildEnv:"PROD",distMethod:"CDN",version:v.xv,originTime:h.WN},_={consented:!1},w={activatedFeatures:void 0,appMetadata:{},configured:!1,get consented(){return this.session?.state?.consent||_.consented},set consented(e){_.consented=e},customTransaction:void 0,denyList:[],disabled:!1,drainRegistry:new Map,connector:void 0,harvester:void 0,v2Target:void 0,isolatedBacklog:!1,isRecording:!1,loaderType:void 0,maxBytes:3e4,obfuscator:void 0,onerror:void 0,ptid:void 0,releaseIds:{},session:void 0,timeKeeper:void 0,registeredEntities:[],jsAttributesMetadata:{bytes:0},get harvestCount(){return++b},listeningForIframeMessages:!1},R="BA";var A=r(7836),x=r(3241);const E={accountID:void 0,trustKey:void 0,agentID:void 0,licenseKey:void 0,applicationID:void 0,xpid:void 0};var S=r(9908);const k="newrelic-iframe-";function T(e,t={},n,o){let{init:c,info:u,loader_config:d,runtime:l={},exposed:f=!0}=t;if(!u){const e=(0,i.pV)();c=e.init,u=e.info,d=e.loader_config}var p;e.init=m(c||{}),e.loader_config=(p=d||{},(0,g.a)(p,E)),u.jsAttributes??={},h.bv&&(u.jsAttributes.isWorker=!0),e.info=(0,s.D)(u);const v=e.init;e.runtime??=(e=>{const t=(0,g.a)(e,w),r=Object.keys(y).reduce((e,t)=>(e[t]={value:y[t],writable:!1,configurable:!0,enumerable:!0},e),{});return Object.defineProperties(t,r)})(l),e.runtime.v2Target??={type:R,instance:e.agentIdentifier,get id(){return e.runtime.appMetadata?.agents?.[0]?.entityGuid},get attributes(){return{"entity.guid":this.id,appId:e.info.applicationID}}},v.proxy.assets&&(e=>{const t=e.startsWith("http");e+="/",r.p=t?e:"https://"+e})(v.proxy.assets),e.runtime.configured||(Object.defineProperty(e,"beacons",{get:()=>[e.info.beacon,e.info.errorBeacon,e.init.proxy.assets,e.init.proxy.beacon].filter(Boolean)}),Object.defineProperty(e.runtime,"denyList",{get:()=>[...e.init.ajax.deny_list||[],...e.init.ajax.block_internal?e.beacons:[]]}),e.runtime.ptid=e.agentIdentifier,function(e){const t=(0,i.pV)();Object.getOwnPropertyNames(a.W.prototype).forEach(r=>{const n=a.W.prototype[r];if("function"!=typeof n||"constructor"===n)return;let i=t[r];e[r]&&!1!==e.exposed&&"micro-agent"!==e.runtime?.loaderType&&(t[r]=(...t)=>{const n=e[r](...t);return i?i(...t):n})})}(e),e.runtime.loaderType=n,e.ee=A.ee.get(e.agentIdentifier),e.exposed=f,(0,x.W)({drained:!!e.runtime.activatedFeatures,type:"lifecycle",name:"initialize",feature:void 0,data:e.config}),e.init.api.register.allow_iframe_bridge&&h.gm.addEventListener("message",t=>{"string"==typeof t.data?.type&&t.data.type.startsWith(k)&&(0,S.p)("iframe-message",[t],void 0,"IFRAME",e.ee)}),e.runtime.configured=!0)}var j=r(1863),P=r(4261),N=r(1738);var O=r(1687),M=r(4234),I=r(5289),D=r(7767);function V(e){return!!(0,i.dV)().o.MO&&(0,D.V)(e)&&!0===e?.session_trace.enabled}var W=r(6389),B=r(7699);const C=new WeakSet,K=new WeakMap;class U extends M.W{constructor(e,t){super(e,t),this.abortHandler=void 0,this.featAggregate=void 0,this.loadedSuccessfully=void 0,this.onAggregateImported=new Promise(e=>{this.loadedSuccessfully=e}),this.deferred=Promise.resolve(),!1===e.init[this.featureName].autoStart?this.deferred=new Promise((t,r)=>{this.ee.on("manual-start-all",(0,W.J)(()=>{(0,O.Ak)(e,this.featureName),t()}))}):(0,O.Ak)(e,t)}importAggregator(e,t,n={}){if(this.featAggregate)return;const i=async()=>{if(await this.deferred,this.#t(e),!(0,s.f)(e.info))return(0,f.R)(43),e.ee.abort(),void this.loadedSuccessfully(!1);try{await async function(e,t,n){if(K.has(e))return K.get(e);const i=(async()=>{if((0,D.V)(e.init))try{const{setupAgentSession:t}=await r.e(296).then(r.bind(r,8391));t(e)}catch(e){(0,f.R)(20,e),t.emit("internal-error",[e]),(0,S.p)(B.qh,[e],void 0,n,t)}if(e.init.api.register.allow_iframe_bridge)try{const{setupIframeMFEMessageListener:t}=await Promise.resolve().then(function(){const e=new Error("Cannot find module '../../loaders/configure/iframe-message-handler'");throw e.code="MODULE_NOT_FOUND",e});t(e)}catch(e){(0,f.R)(23,e)}const[{Connector:i},{Harvester:a}]=await Promise.all([r.e(296).then(r.bind(r,6589)),r.e(296).then(r.bind(r,5237))]);e.runtime.connector=new i(e),e.runtime.harvester=new a(e);const s=Object.values(e.features).filter(t=>e.runtime.drainRegistry.has(t.featureName));Promise.all(s.map(e=>e.onAggregateImported)).then(()=>e.runtime.harvester.startTimer())})();K.set(e,i),await i}(e,this.ee,this.featureName)}catch(e){return(0,f.R)(79,e),this.ee.abort(),void this.loadedSuccessfully(!1)}try{if(!this.#r(this.featureName,e.runtime.session,e.init))return this.abortHandler?.(),(0,O.Ze)(this.agentRef,this.featureName),void this.loadedSuccessfully(!1);const{Aggregate:r}=await t();this.featAggregate=new r(e,n),e.runtime.harvester.initializedAggregates.push(this.featAggregate),this.loadedSuccessfully(!0)}catch(e){(0,f.R)(34,e),this.abortHandler?.(),(0,O.Ze)(this.agentRef,this.featureName,!0),this.loadedSuccessfully(!1)}};h.RI?(0,I.GG)(()=>i(),!0):i()}#r(e,r,n){if(this.blocked)return!1;switch(e){case t.K7.sessionReplay:return V(n)&&!!r;case t.K7.sessionTrace:return!!r;default:return!0}}#t(e){if(!C.has(e)&&(C.add(e),!(0,s.f)(e.info))){const t=(0,i.pV)();let r={...t.info?.jsAttributes};try{r={...r,...e.info?.jsAttributes}}catch(e){}T(e,{...t,info:{...t.info,jsAttributes:r},runtime:e.runtime},e.runtime.loaderType)}}}var L=r(6630);class F extends U{static featureName=L.T;constructor(e){var t;super(e,L.T),this.setupInspectionEvents(),t=e,(0,N.Y)(P.Fw,function(e,r){"string"==typeof e&&("/"!==e.charAt(0)&&(e="/"+e),t.runtime.customTransaction=(r||"http://custom.transaction")+e,(0,S.p)("api-"+P.Fw,[(0,j.t)()],void 0,void 0,t.ee))},t),this.importAggregator(e,()=>e.init.feature_flags.includes("rum_v2")?r.e(296).then(r.bind(r,908)):r.e(296).then(r.bind(r,7927)))}setupInspectionEvents(){const e=(e,t)=>{e&&(0,x.W)({timeStamp:e.timeStamp,loaded:"complete"===e.target.readyState,type:"window",name:t,data:e.target.location+""})};(0,I.sB)(t=>{e(t,"DOMContentLoaded")}),(0,I.GG)(t=>{e(t,"load")}),(0,I.Qr)(t=>{e(t,"navigate")}),this.ee.on(l.tS.UPDATE,(e,t)=>{(0,x.W)({type:"lifecycle",name:"session",data:t})})}}class G extends e.d{constructor(e){var t;(super(),h.gm)?(this.features={},(0,i.bQ)(this.agentIdentifier,this),this.desiredFeatures=new Set(e.features||[]),this.desiredFeatures.add(F),T(this,e,e.loaderType||"agent"),t=this,(0,N.Y)(P.cD,function(e,r,n=!1){if("string"==typeof e){if(["string","number","boolean"].includes(typeof r)||null===r)return(0,N.U)(t,e,r,P.cD,n);(0,f.R)(40,typeof r)}else(0,f.R)(39,typeof e)},t),function(e){(0,N.Y)(P.Dl,function(t,r=!1){if("string"!=typeof t&&null!==t)return void(0,f.R)(41,typeof t);const n=e.info.jsAttributes["enduser.id"];r&&null!=n&&n!==t?(0,S.p)("api-setUserIdAndResetSession",[t],void 0,"session",e.ee):(0,N.U)(e,"enduser.id",t,P.Dl,!0)},e)}(this),function(e){(0,N.Y)(P.nb,function(t){if("string"==typeof t||null===t)return(0,N.U)(e,"application.version",t,P.nb,!1);(0,f.R)(42,typeof t)},e)}(this),function(e){(0,N.Y)("start",function(){e.ee.emit("manual-start-all")},e)}(this),function(e){(0,N.Y)(P.Pv,function(t=!0){if("boolean"==typeof t){if((0,S.p)("api-"+P.Pv,[t],void 0,"session",e.ee),e.runtime.consented=t,t){const t=e.features.page_view_event;t.onAggregateImported.then(e=>{const r=t.featAggregate;e&&!r.sentRum&&r.sendRum?.()})}}else(0,f.R)(65,typeof t)},e)}(this),this.run()):(0,f.R)(21)}get config(){return{info:this.info,init:this.init,loader_config:this.loader_config,runtime:this.runtime}}get api(){return this}run(){try{const e=function(e){const t={};return n.forEach(r=>{t[r]=!!e[r]?.enabled}),t}(this.init),r=[...this.desiredFeatures],i=this.init.feature_flags.includes("rum_v2");r.sort((e,r)=>t.P3[e.featureName]-t.P3[r.featureName]),r.forEach(r=>{if(!e[r.featureName]&&(i||r.featureName!==t.K7.pageViewEvent))return;const n=function(e){switch(e){case t.K7.ajax:return[t.K7.jserrors];case t.K7.sessionTrace:return[t.K7.ajax,t.K7.pageViewEvent];case t.K7.sessionReplay:return[t.K7.sessionTrace];case t.K7.pageViewTiming:return[t.K7.pageViewEvent];default:return[]}}(r.featureName).filter(e=>!(e in this.features));n.length>0&&(0,f.R)(36,{targetFeature:r.featureName,missingDependencies:n}),this.features[r.featureName]=new r(this)})}catch(e){(0,f.R)(22,e);for(const e in this.features)this.features[e].abortHandler?.();const t=(0,i.Zm)();delete t.initializedAgents[this.agentIdentifier]?.features,delete this.sharedAggregator;return t.ee.get(this.agentIdentifier).abort(),!1}}}var H=r(2843),z=r(782);class Y extends U{static featureName=z.T;constructor(e){super(e,z.T),h.RI&&((0,H.u)(()=>(0,S.p)("docHidden",[(0,j.t)()],void 0,z.T,this.ee),!0),(0,H.G)(()=>(0,S.p)("winPagehide",[(0,j.t)()],void 0,z.T,this.ee)),this.importAggregator(e,()=>r.e(296).then(r.bind(r,9981))))}}var Z=r(3969);class q extends U{static featureName=Z.TZ;constructor(e){super(e,Z.TZ),this.importAggregator(e,()=>r.e(296).then(r.bind(r,9623)))}}new G({features:[F,Y,q],loaderType:"lite"})})()})();</script>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="pingback" href="https://www.linux.com/xmlrpc.php" />
<meta name='robots' content='max-image-preview:large' />
<!-- Google Tag Manager for WordPress by gtm4wp.com -->
<script data-cfasync="false" data-pagespeed-no-defer>
var gtm4wp_datalayer_name = "dataLayer";
var dataLayer = dataLayer || [];
</script>
<!-- End Google Tag Manager for WordPress by gtm4wp.com --><link rel="icon" type="image/png" href="https://www.linux.com/wp-content/uploads/2019/08/favicon-300x300.png">
<!-- This site is optimized with the Yoast SEO Premium plugin v11.9 - https://yoast.com/wordpress/plugins/seo/ -->
<link rel="canonical" href="https://www.linux.com/news/how-digit-created-high-availability-public-cloud-keep-its-games-running/" />
<meta property="og:locale" content="en_US" />
<meta property="og:type" content="article" />
<meta property="og:title" content="How DIGIT Created High Availability on the Public Cloud to Keep Its Games Running - Linux.com" />
<meta property="og:description" content="The mobile gaming company must deliver a seamless experience for its gamers and allow for spikes in player activity on its Massively Multiplayer Online gaming platform. That’s why the company built a high-availability infrastructure that runs on Amazon Web Services (AWS) and allows them to launch a cluster in less than 5 minutes using Apache &hellip;" />
<meta property="og:url" content="https://www.linux.com/news/how-digit-created-high-availability-public-cloud-keep-its-games-running/" />
<meta property="og:site_name" content="Linux.com" />
<meta property="article:section" content="Cloud" />
<meta property="article:published_time" content="2016-08-24T14:00:58-07:00" />
<meta property="article:modified_time" content="2019-08-08T20:39:00-07:00" />
<meta property="og:updated_time" content="2019-08-08T20:39:00-07:00" />
<meta property="og:image" content="https://www.linux.com/wp-content/uploads/2019/08/digit-game-apps.png" />
<meta property="og:image:secure_url" content="https://www.linux.com/wp-content/uploads/2019/08/digit-game-apps.png" />
<meta property="og:image:width" content="800" />
<meta property="og:image:height" content="457" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:description" content="The mobile gaming company must deliver a seamless experience for its gamers and allow for spikes in player activity on its Massively Multiplayer Online gaming platform. That’s why the company built a high-availability infrastructure that runs on Amazon Web Services (AWS) and allows them to launch a cluster in less than 5 minutes using Apache [&hellip;]" />
<meta name="twitter:title" content="How DIGIT Created High Availability on the Public Cloud to Keep Its Games Running - Linux.com" />
<meta name="twitter:image" content="https://www.linux.com/wp-content/uploads/2019/08/digit-game-apps.png" />
<script type='application/ld+json' class='yoast-schema-graph yoast-schema-graph--main'>{"@context":"https://schema.org","@graph":[{"@type":"WebSite","@id":"https://www.linux.com/#website","url":"https://www.linux.com/","name":"Linux.com","potentialAction":{"@type":"SearchAction","target":"https://www.linux.com/?s={search_term_string}","query-input":"required name=search_term_string"}},{"@type":"ImageObject","@id":"https://www.linux.com/news/how-digit-created-high-availability-public-cloud-keep-its-games-running/#primaryimage","url":"https://www.linux.com/wp-content/uploads/2019/08/digit-game-apps.png","width":800,"height":457},{"@type":"WebPage","@id":"https://www.linux.com/news/how-digit-created-high-availability-public-cloud-keep-its-games-running/#webpage","url":"https://www.linux.com/news/how-digit-created-high-availability-public-cloud-keep-its-games-running/","inLanguage":"en-US","name":"How DIGIT Created High Availability on the Public Cloud to Keep Its Games Running - Linux.com","isPartOf":{"@id":"https://www.linux.com/#website"},"primaryImageOfPage":{"@id":"https://www.linux.com/news/how-digit-created-high-availability-public-cloud-keep-its-games-running/#primaryimage"},"datePublished":"2016-08-24T14:00:58-07:00","dateModified":"2019-08-08T20:39:00-07:00","author":{"@id":"https://www.linux.com/#/schema/person/6398a137d592824ddabfbe0294b53698"}}]}</script>
<!-- / Yoast SEO Premium plugin. -->
<link rel="alternate" type="application/rss+xml" title="Linux.com &raquo; Feed" href="https://www.linux.com/feed/" />
<link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://www.linux.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.linux.com%2Fnews%2Fhow-digit-created-high-availability-public-cloud-keep-its-games-running%2F" />
<link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://www.linux.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.linux.com%2Fnews%2Fhow-digit-created-high-availability-public-cloud-keep-its-games-running%2F&#038;format=xml" />
<style id="wp-img-auto-sizes-contain-inline-css">
img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px}
/*# sourceURL=wp-img-auto-sizes-contain-inline-css */
</style>
<style id="wp-emoji-styles-inline-css">
img.wp-smiley, img.emoji {
display: inline !important;
border: none !important;
box-shadow: none !important;
height: 1em !important;
width: 1em !important;
margin: 0 0.07em !important;
vertical-align: -0.1em !important;
background: none !important;
padding: 0 !important;
}
/*# sourceURL=wp-emoji-styles-inline-css */
</style>
<link rel='stylesheet' id='mpp_gutenberg-css' href='https://www.linux.com/wp-content/plugins/profile-builder/add-ons-free/user-profile-picture/dist/blocks.style.build.css?ver=2.6.0' media='all' />
<link rel='stylesheet' id='td-plugin-multi-purpose-css' href='https://www.linux.com/wp-content/plugins/td-composer/td-multi-purpose/style.css?ver=dc42461e47c7cd66a8b827afd1756c1c' media='all' />
<link rel='stylesheet' id='td-theme-css' href='https://www.linux.com/wp-content/themes/Newspaper/style.css?ver=12.7.7' media='all' />
<style id="td-theme-inline-css">@media (max-width:767px){.td-header-desktop-wrap{display:none}}@media (min-width:767px){.td-header-mobile-wrap{display:none}}</style>
<link rel='stylesheet' id='td-theme-child-css' href='https://www.linux.com/wp-content/themes/Newspaper-child/style.css?ver=12.7.7c' media='all' />
<link rel='stylesheet' id='td-legacy-framework-front-style-css' href='https://www.linux.com/wp-content/plugins/td-composer/legacy/Newspaper/assets/css/td_legacy_main.css?ver=dc42461e47c7cd66a8b827afd1756c1c' media='all' />
<link rel='stylesheet' id='td-standard-pack-framework-front-style-css' href='https://www.linux.com/wp-content/plugins/td-standard-pack/Newspaper/assets/css/td_standard_pack_main.css?ver=ca277ee5dcb470bd24a3f9654a38d235' media='all' />
<link rel='stylesheet' id='tdb_style_cloud_templates_front-css' href='https://www.linux.com/wp-content/plugins/td-cloud-library/assets/css/tdb_main.css?ver=43473a7fc489321d36f8d15a34d1be14' media='all' />
<link rel='stylesheet' id='wppb_stylesheet-css' href='https://www.linux.com/wp-content/plugins/profile-builder/assets/css/style-front-end.css?ver=4.0.1' media='all' />
<script id="jquery-core-js" src="https://www.linux.com/wp-includes/js/jquery/jquery.min.js?ver=3.7.1"></script>
<script id="jquery-migrate-js" src="https://www.linux.com/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1"></script>
<link rel="https://api.w.org/" href="https://www.linux.com/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://www.linux.com/wp-json/wp/v2/posts/476250" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://www.linux.com/xmlrpc.php?rsd" />
<meta name="generator" content="WordPress 7.1" />
<link rel='shortlink' href='https://www.linux.com/?p=476250' />
<!-- Google Tag Manager for WordPress by gtm4wp.com -->
<!-- GTM Container placement set to footer -->
<script data-cfasync="false" data-pagespeed-no-defer>
var dataLayer_content = {"pagePostType":"post","pagePostType2":"single-post","pageCategory":["cloud","news","open-source"]};
dataLayer.push( dataLayer_content );
</script>
<script data-cfasync="false" data-pagespeed-no-defer>
(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=
'//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-NXGNZW');
</script>
<!-- End Google Tag Manager for WordPress by gtm4wp.com --> <script>
window.tdb_global_vars = {"wpRestUrl":"https:\/\/www.linux.com\/wp-json\/","permalinkStructure":"\/%category%\/%postname%\/"};
window.tdb_p_autoload_vars = {"isAjax":false,"isAdminBarShowing":false,"autoloadStatus":"off","origPostEditUrl":null};
</script>
<style id="tdb-global-colors">:root{--accent-color:#fff}</style>
<script
src="https://transcend-cdn.com/cm/f484e2d0-ad2e-43a9-9d64-d07f6fa20966/airgap.js"
data-cfasync="false"
data-prompt="auto"
></script>
<!-- LFX Segments Analytics -->
<script src="https://lfx-segment.platform.linuxfoundation.org/latest/lfx-segment-analytics.min.js"></script>
<script>
// Initialize with default configuration (no custom write key needed)
LfxAnalytics.LfxSegmentsAnalytics.getInstance().init();
</script>
<!-- Start of HubSpot Embed Code -->
<script type="text/javascript" id="hs-script-loader" async defer src="//js.hs-scripts.com/8112310.js"></script>
<!-- End of HubSpot Embed Code -->
<link rel="preload" href="/wp-content/themes/Newspaper/images/icons/newspaper.woff" as="font" crossorigin="anonymous">
<meta name="google-site-verification" content="SFIbV25byRzBgCOryWQide6d9AyjJiw9gofilBbT2Ts" />
<!-- JS generated by theme -->
<script type="text/javascript" id="td-generated-header-js">
var tdBlocksArray = []; //here we store all the items for the current page
// td_block class - each ajax block uses a object of this class for requests
function tdBlock() {
this.id = '';
this.block_type = 1; //block type id (1-234 etc)
this.atts = '';
this.td_column_number = '';
this.td_current_page = 1; //
this.post_count = 0; //from wp
this.found_posts = 0; //from wp
this.max_num_pages = 0; //from wp
this.td_filter_value = ''; //current live filter value
this.is_ajax_running = false;
this.td_user_action = ''; // load more or infinite loader (used by the animation)
this.header_color = '';
this.ajax_pagination_infinite_stop = ''; //show load more at page x
}
// td_js_generator - mini detector
( function () {
var htmlTag = document.getElementsByTagName("html")[0];
if ( navigator.userAgent.indexOf("MSIE 10.0") > -1 ) {
htmlTag.className += ' ie10';
}
if ( !!navigator.userAgent.match(/Trident.*rv\:11\./) ) {
htmlTag.className += ' ie11';
}
if ( navigator.userAgent.indexOf("Edge") > -1 ) {
htmlTag.className += ' ieEdge';
}
if ( /(iPad|iPhone|iPod)/g.test(navigator.userAgent) ) {
htmlTag.className += ' td-md-is-ios';
}
var user_agent = navigator.userAgent.toLowerCase();
if ( user_agent.indexOf("android") > -1 ) {
htmlTag.className += ' td-md-is-android';
}
if ( -1 !== navigator.userAgent.indexOf('Mac OS X') ) {
htmlTag.className += ' td-md-is-os-x';
}
if ( /chrom(e|ium)/.test(navigator.userAgent.toLowerCase()) ) {
htmlTag.className += ' td-md-is-chrome';
}
if ( -1 !== navigator.userAgent.indexOf('Firefox') ) {
htmlTag.className += ' td-md-is-firefox';
}
if ( -1 !== navigator.userAgent.indexOf('Safari') && -1 === navigator.userAgent.indexOf('Chrome') ) {
htmlTag.className += ' td-md-is-safari';
}
if( -1 !== navigator.userAgent.indexOf('IEMobile') ){
htmlTag.className += ' td-md-is-iemobile';
}
})();
var tdLocalCache = {};
( function () {
"use strict";
tdLocalCache = {
data: {},
remove: function (resource_id) {
delete tdLocalCache.data[resource_id];
},
exist: function (resource_id) {
return tdLocalCache.data.hasOwnProperty(resource_id) && tdLocalCache.data[resource_id] !== null;
},
get: function (resource_id) {
return tdLocalCache.data[resource_id];
},
set: function (resource_id, cachedData) {
tdLocalCache.remove(resource_id);
tdLocalCache.data[resource_id] = cachedData;
}
};
})();
var td_viewport_interval_list=[{"limitBottom":767,"sidebarWidth":228},{"limitBottom":1018,"sidebarWidth":300},{"limitBottom":1140,"sidebarWidth":324}];
var tdc_is_installed="yes";
var tdc_domain_active=false;
var td_ajax_url="https:\/\/www.linux.com\/wp-admin\/admin-ajax.php?td_theme_name=Newspaper&v=12.7.7";
var td_get_template_directory_uri="https:\/\/www.linux.com\/wp-content\/plugins\/td-composer\/legacy\/common";
var tds_snap_menu="";
var tds_logo_on_sticky="";
var tds_header_style="6";
var td_please_wait="Please wait...";
var td_email_user_pass_incorrect="User or password incorrect!";
var td_email_user_incorrect="Email or username incorrect!";
var td_email_incorrect="Email incorrect!";
var td_user_incorrect="Username incorrect!";
var td_email_user_empty="Email or username empty!";
var td_pass_empty="Pass empty!";
var td_pass_pattern_incorrect="Invalid Pass Pattern!";
var td_retype_pass_incorrect="Retyped Pass incorrect!";
var tds_more_articles_on_post_enable="";
var tds_more_articles_on_post_time_to_wait="";
var tds_more_articles_on_post_pages_distance_from_top=0;
var tds_captcha="";
var tds_theme_color_site_wide="#ff6c0e";
var tds_smart_sidebar="";
var tdThemeName="Newspaper";
var tdThemeNameWl="Newspaper";
var td_magnific_popup_translation_tPrev="Previous (Left arrow key)";
var td_magnific_popup_translation_tNext="Next (Right arrow key)";
var td_magnific_popup_translation_tCounter="%curr% of %total%";
var td_magnific_popup_translation_ajax_tError="The content from %url% could not be loaded.";
var td_magnific_popup_translation_image_tError="The image #%curr% could not be loaded.";
var tdBlockNonce="14e19116d4";
var tdMobileMenu="enabled";
var tdMobileSearch="enabled";
var tdDateNamesI18n={"month_names":["January","February","March","April","May","June","July","August","September","October","November","December"],"month_names_short":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"day_names":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"day_names_short":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]};
var tdb_modal_confirm="Save";
var tdb_modal_cancel="Cancel";
var tdb_modal_confirm_alt="Yes";
var tdb_modal_cancel_alt="No";
var td_deploy_mode="deploy";
var td_ad_background_click_link="";
var td_ad_background_click_target="";
</script>
<!-- Header style compiled by theme -->
<style>.td-page-title,.td-category-title-holder .td-page-title{text-transform:capitalize}:root{--td_theme_color:#ff6c0e;--td_slider_text:rgba(255,108,14,0.7);--td_mobile_menu_color:#ff6c0e;--td_mobile_gradient_one_mob:#333333;--td_mobile_gradient_two_mob:#333333;--td_mobile_text_active_color:#333333}.td-header-style-12 .td-header-menu-wrap-full,.td-header-style-12 .td-affix,.td-grid-style-1.td-hover-1 .td-big-grid-post:hover .td-post-category,.td-grid-style-5.td-hover-1 .td-big-grid-post:hover .td-post-category,.td_category_template_3 .td-current-sub-category,.td_category_template_8 .td-category-header .td-category a.td-current-sub-category,.td_category_template_4 .td-category-siblings .td-category a:hover,.td_block_big_grid_9.td-grid-style-1 .td-post-category,.td_block_big_grid_9.td-grid-style-5 .td-post-category,.td-grid-style-6.td-hover-1 .td-module-thumb:after,.tdm-menu-active-style5 .td-header-menu-wrap .sf-menu>.current-menu-item>a,.tdm-menu-active-style5 .td-header-menu-wrap .sf-menu>.current-menu-ancestor>a,.tdm-menu-active-style5 .td-header-menu-wrap .sf-menu>.current-category-ancestor>a,.tdm-menu-active-style5 .td-header-menu-wrap .sf-menu>li>a:hover,.tdm-menu-active-style5 .td-header-menu-wrap .sf-menu>.sfHover>a{background-color:#ff6c0e}.td_mega_menu_sub_cats .cur-sub-cat,.td-mega-span h3 a:hover,.td_mod_mega_menu:hover .entry-title a,.header-search-wrap .result-msg a:hover,.td-header-top-menu .td-drop-down-search .td_module_wrap:hover .entry-title a,.td-header-top-menu .td-icon-search:hover,.td-header-wrap .result-msg a:hover,.top-header-menu li a:hover,.top-header-menu .current-menu-item>a,.top-header-menu .current-menu-ancestor>a,.top-header-menu .current-category-ancestor>a,.td-social-icon-wrap>a:hover,.td-header-sp-top-widget .td-social-icon-wrap a:hover,.td_mod_related_posts:hover h3>a,.td-post-template-11 .td-related-title .td-related-left:hover,.td-post-template-11 .td-related-title .td-related-right:hover,.td-post-template-11 .td-related-title .td-cur-simple-item,.td-post-template-11 .td_block_related_posts .td-next-prev-wrap a:hover,.td-category-header .td-pulldown-category-filter-link:hover,.td-category-siblings .td-subcat-dropdown a:hover,.td-category-siblings .td-subcat-dropdown a.td-current-sub-category,.footer-text-wrap .footer-email-wrap a,.footer-social-wrap a:hover,.td_module_17 .td-read-more a:hover,.td_module_18 .td-read-more a:hover,.td_module_19 .td-post-author-name a:hover,.td-pulldown-syle-2 .td-subcat-dropdown:hover .td-subcat-more span,.td-pulldown-syle-2 .td-subcat-dropdown:hover .td-subcat-more i,.td-pulldown-syle-3 .td-subcat-dropdown:hover .td-subcat-more span,.td-pulldown-syle-3 .td-subcat-dropdown:hover .td-subcat-more i,.tdm-menu-active-style3 .tdm-header.td-header-wrap .sf-menu>.current-category-ancestor>a,.tdm-menu-active-style3 .tdm-header.td-header-wrap .sf-menu>.current-menu-ancestor>a,.tdm-menu-active-style3 .tdm-header.td-header-wrap .sf-menu>.current-menu-item>a,.tdm-menu-active-style3 .tdm-header.td-header-wrap .sf-menu>.sfHover>a,.tdm-menu-active-style3 .tdm-header.td-header-wrap .sf-menu>li>a:hover{color:#ff6c0e}.td-mega-menu-page .wpb_content_element ul li a:hover,.td-theme-wrap .td-aj-search-results .td_module_wrap:hover .entry-title a,.td-theme-wrap .header-search-wrap .result-msg a:hover{color:#ff6c0e!important}.td_category_template_8 .td-category-header .td-category a.td-current-sub-category,.td_category_template_4 .td-category-siblings .td-category a:hover,.tdm-menu-active-style4 .tdm-header .sf-menu>.current-menu-item>a,.tdm-menu-active-style4 .tdm-header .sf-menu>.current-menu-ancestor>a,.tdm-menu-active-style4 .tdm-header .sf-menu>.current-category-ancestor>a,.tdm-menu-active-style4 .tdm-header .sf-menu>li>a:hover,.tdm-menu-active-style4 .tdm-header .sf-menu>.sfHover>a{border-color:#ff6c0e}.td-header-wrap .td-header-top-menu-full,.td-header-wrap .top-header-menu .sub-menu,.tdm-header-style-1.td-header-wrap .td-header-top-menu-full,.tdm-header-style-1.td-header-wrap .top-header-menu .sub-menu,.tdm-header-style-2.td-header-wrap .td-header-top-menu-full,.tdm-header-style-2.td-header-wrap .top-header-menu .sub-menu,.tdm-header-style-3.td-header-wrap .td-header-top-menu-full,.tdm-header-style-3.td-header-wrap .top-header-menu .sub-menu{background-color:#ff6c0e}.td-header-style-8 .td-header-top-menu-full{background-color:transparent}.td-header-style-8 .td-header-top-menu-full .td-header-top-menu{background-color:#ff6c0e;padding-left:15px;padding-right:15px}.td-header-wrap .td-header-top-menu-full .td-header-top-menu,.td-header-wrap .td-header-top-menu-full{border-bottom:none}.td-header-top-menu,.td-header-top-menu a,.td-header-wrap .td-header-top-menu-full .td-header-top-menu,.td-header-wrap .td-header-top-menu-full a,.td-header-style-8 .td-header-top-menu,.td-header-style-8 .td-header-top-menu a,.td-header-top-menu .td-drop-down-search .entry-title a{color:#ffffff}.top-header-menu .current-menu-item>a,.top-header-menu .current-menu-ancestor>a,.top-header-menu .current-category-ancestor>a,.top-header-menu li a:hover,.td-header-sp-top-widget .td-icon-search:hover{color:#ffffff}.td-header-wrap .td-header-sp-top-widget i.td-icon-font:hover{color:#ffffff}.td-header-wrap .td-header-menu-wrap-full,.td-header-menu-wrap.td-affix,.td-header-style-3 .td-header-main-menu,.td-header-style-3 .td-affix .td-header-main-menu,.td-header-style-4 .td-header-main-menu,.td-header-style-4 .td-affix .td-header-main-menu,.td-header-style-8 .td-header-menu-wrap.td-affix,.td-header-style-8 .td-header-top-menu-full{background-color:#ff6c0e}.td-boxed-layout .td-header-style-3 .td-header-menu-wrap,.td-boxed-layout .td-header-style-4 .td-header-menu-wrap,.td-header-style-3 .td_stretch_content .td-header-menu-wrap,.td-header-style-4 .td_stretch_content .td-header-menu-wrap{background-color:#ff6c0e!important}@media (min-width:1019px){.td-header-style-1 .td-header-sp-recs,.td-header-style-1 .td-header-sp-logo{margin-bottom:28px}}@media (min-width:768px) and (max-width:1018px){.td-header-style-1 .td-header-sp-recs,.td-header-style-1 .td-header-sp-logo{margin-bottom:14px}}.td-header-style-7 .td-header-top-menu{border-bottom:none}.block-title>span,.block-title>a,.widgettitle,body .td-trending-now-title,.wpb_tabs li a,.vc_tta-container .vc_tta-color-grey.vc_tta-tabs-position-top.vc_tta-style-classic .vc_tta-tabs-container .vc_tta-tab>a,.td-theme-wrap .td-related-title a,.woocommerce div.product .woocommerce-tabs ul.tabs li a,.woocommerce .product .products h2:not(.woocommerce-loop-product__title),.td-theme-wrap .td-block-title{text-transform:capitalize}.td-theme-slider.iosSlider-col-1 .td-module-title{text-transform:capitalize}.td-theme-slider.iosSlider-col-2 .td-module-title{text-transform:capitalize}.td-theme-slider.iosSlider-col-3 .td-module-title{text-transform:capitalize}.homepage-post .td-post-template-8 .td-post-header .entry-title{text-transform:capitalize}.td_module_1 .td-module-title{text-transform:capitalize}.td_module_2 .td-module-title{text-transform:capitalize}.td_module_3 .td-module-title{text-transform:capitalize}.td_module_4 .td-module-title{text-transform:capitalize}.td_module_5 .td-module-title{text-transform:capitalize}.td_module_6 .td-module-title{text-transform:capitalize}.td_module_mx1 .td-module-title{text-transform:capitalize}.td_module_mx2 .td-module-title{text-transform:capitalize}.td_module_mx3 .td-module-title{text-transform:capitalize}.td_module_mx4 .td-module-title{text-transform:capitalize}.td-big-grid-post.td-big-thumb .td-big-grid-meta,.td-big-thumb .td-big-grid-meta .entry-title{text-transform:capitalize}.td-big-grid-post.td-medium-thumb .td-big-grid-meta,.td-medium-thumb .td-big-grid-meta .entry-title{text-transform:capitalize}.td-big-grid-post.td-small-thumb .td-big-grid-meta,.td-small-thumb .td-big-grid-meta .entry-title{text-transform:capitalize}.td-big-grid-post.td-tiny-thumb .td-big-grid-meta,.td-tiny-thumb .td-big-grid-meta .entry-title{text-transform:capitalize}.td-post-template-default .td-post-header .entry-title{text-transform:capitalize}.td-post-template-1 .td-post-header .entry-title{text-transform:capitalize}.td-post-template-2 .td-post-header .entry-title{text-transform:capitalize}.td-post-template-3 .td-post-header .entry-title{text-transform:capitalize}.td-post-template-4 .td-post-header .entry-title{text-transform:capitalize}.td-post-content h2{text-transform:capitalize}.td-page-title,.td-category-title-holder .td-page-title{text-transform:capitalize}:root{--td_theme_color:#ff6c0e;--td_slider_text:rgba(255,108,14,0.7);--td_mobile_menu_color:#ff6c0e;--td_mobile_gradient_one_mob:#333333;--td_mobile_gradient_two_mob:#333333;--td_mobile_text_active_color:#333333}.td-header-style-12 .td-header-menu-wrap-full,.td-header-style-12 .td-affix,.td-grid-style-1.td-hover-1 .td-big-grid-post:hover .td-post-category,.td-grid-style-5.td-hover-1 .td-big-grid-post:hover .td-post-category,.td_category_template_3 .td-current-sub-category,.td_category_template_8 .td-category-header .td-category a.td-current-sub-category,.td_category_template_4 .td-category-siblings .td-category a:hover,.td_block_big_grid_9.td-grid-style-1 .td-post-category,.td_block_big_grid_9.td-grid-style-5 .td-post-category,.td-grid-style-6.td-hover-1 .td-module-thumb:after,.tdm-menu-active-style5 .td-header-menu-wrap .sf-menu>.current-menu-item>a,.tdm-menu-active-style5 .td-header-menu-wrap .sf-menu>.current-menu-ancestor>a,.tdm-menu-active-style5 .td-header-menu-wrap .sf-menu>.current-category-ancestor>a,.tdm-menu-active-style5 .td-header-menu-wrap .sf-menu>li>a:hover,.tdm-menu-active-style5 .td-header-menu-wrap .sf-menu>.sfHover>a{background-color:#ff6c0e}.td_mega_menu_sub_cats .cur-sub-cat,.td-mega-span h3 a:hover,.td_mod_mega_menu:hover .entry-title a,.header-search-wrap .result-msg a:hover,.td-header-top-menu .td-drop-down-search .td_module_wrap:hover .entry-title a,.td-header-top-menu .td-icon-search:hover,.td-header-wrap .result-msg a:hover,.top-header-menu li a:hover,.top-header-menu .current-menu-item>a,.top-header-menu .current-menu-ancestor>a,.top-header-menu .current-category-ancestor>a,.td-social-icon-wrap>a:hover,.td-header-sp-top-widget .td-social-icon-wrap a:hover,.td_mod_related_posts:hover h3>a,.td-post-template-11 .td-related-title .td-related-left:hover,.td-post-template-11 .td-related-title .td-related-right:hover,.td-post-template-11 .td-related-title .td-cur-simple-item,.td-post-template-11 .td_block_related_posts .td-next-prev-wrap a:hover,.td-category-header .td-pulldown-category-filter-link:hover,.td-category-siblings .td-subcat-dropdown a:hover,.td-category-siblings .td-subcat-dropdown a.td-current-sub-category,.footer-text-wrap .footer-email-wrap a,.footer-social-wrap a:hover,.td_module_17 .td-read-more a:hover,.td_module_18 .td-read-more a:hover,.td_module_19 .td-post-author-name a:hover,.td-pulldown-syle-2 .td-subcat-dropdown:hover .td-subcat-more span,.td-pulldown-syle-2 .td-subcat-dropdown:hover .td-subcat-more i,.td-pulldown-syle-3 .td-subcat-dropdown:hover .td-subcat-more span,.td-pulldown-syle-3 .td-subcat-dropdown:hover .td-subcat-more i,.tdm-menu-active-style3 .tdm-header.td-header-wrap .sf-menu>.current-category-ancestor>a,.tdm-menu-active-style3 .tdm-header.td-header-wrap .sf-menu>.current-menu-ancestor>a,.tdm-menu-active-style3 .tdm-header.td-header-wrap .sf-menu>.current-menu-item>a,.tdm-menu-active-style3 .tdm-header.td-header-wrap .sf-menu>.sfHover>a,.tdm-menu-active-style3 .tdm-header.td-header-wrap .sf-menu>li>a:hover{color:#ff6c0e}.td-mega-menu-page .wpb_content_element ul li a:hover,.td-theme-wrap .td-aj-search-results .td_module_wrap:hover .entry-title a,.td-theme-wrap .header-search-wrap .result-msg a:hover{color:#ff6c0e!important}.td_category_template_8 .td-category-header .td-category a.td-current-sub-category,.td_category_template_4 .td-category-siblings .td-category a:hover,.tdm-menu-active-style4 .tdm-header .sf-menu>.current-menu-item>a,.tdm-menu-active-style4 .tdm-header .sf-menu>.current-menu-ancestor>a,.tdm-menu-active-style4 .tdm-header .sf-menu>.current-category-ancestor>a,.tdm-menu-active-style4 .tdm-header .sf-menu>li>a:hover,.tdm-menu-active-style4 .tdm-header .sf-menu>.sfHover>a{border-color:#ff6c0e}.td-header-wrap .td-header-top-menu-full,.td-header-wrap .top-header-menu .sub-menu,.tdm-header-style-1.td-header-wrap .td-header-top-menu-full,.tdm-header-style-1.td-header-wrap .top-header-menu .sub-menu,.tdm-header-style-2.td-header-wrap .td-header-top-menu-full,.tdm-header-style-2.td-header-wrap .top-header-menu .sub-menu,.tdm-header-style-3.td-header-wrap .td-header-top-menu-full,.tdm-header-style-3.td-header-wrap .top-header-menu .sub-menu{background-color:#ff6c0e}.td-header-style-8 .td-header-top-menu-full{background-color:transparent}.td-header-style-8 .td-header-top-menu-full .td-header-top-menu{background-color:#ff6c0e;padding-left:15px;padding-right:15px}.td-header-wrap .td-header-top-menu-full .td-header-top-menu,.td-header-wrap .td-header-top-menu-full{border-bottom:none}.td-header-top-menu,.td-header-top-menu a,.td-header-wrap .td-header-top-menu-full .td-header-top-menu,.td-header-wrap .td-header-top-menu-full a,.td-header-style-8 .td-header-top-menu,.td-header-style-8 .td-header-top-menu a,.td-header-top-menu .td-drop-down-search .entry-title a{color:#ffffff}.top-header-menu .current-menu-item>a,.top-header-menu .current-menu-ancestor>a,.top-header-menu .current-category-ancestor>a,.top-header-menu li a:hover,.td-header-sp-top-widget .td-icon-search:hover{color:#ffffff}.td-header-wrap .td-header-sp-top-widget i.td-icon-font:hover{color:#ffffff}.td-header-wrap .td-header-menu-wrap-full,.td-header-menu-wrap.td-affix,.td-header-style-3 .td-header-main-menu,.td-header-style-3 .td-affix .td-header-main-menu,.td-header-style-4 .td-header-main-menu,.td-header-style-4 .td-affix .td-header-main-menu,.td-header-style-8 .td-header-menu-wrap.td-affix,.td-header-style-8 .td-header-top-menu-full{background-color:#ff6c0e}.td-boxed-layout .td-header-style-3 .td-header-menu-wrap,.td-boxed-layout .td-header-style-4 .td-header-menu-wrap,.td-header-style-3 .td_stretch_content .td-header-menu-wrap,.td-header-style-4 .td_stretch_content .td-header-menu-wrap{background-color:#ff6c0e!important}@media (min-width:1019px){.td-header-style-1 .td-header-sp-recs,.td-header-style-1 .td-header-sp-logo{margin-bottom:28px}}@media (min-width:768px) and (max-width:1018px){.td-header-style-1 .td-header-sp-recs,.td-header-style-1 .td-header-sp-logo{margin-bottom:14px}}.td-header-style-7 .td-header-top-menu{border-bottom:none}.block-title>span,.block-title>a,.widgettitle,body .td-trending-now-title,.wpb_tabs li a,.vc_tta-container .vc_tta-color-grey.vc_tta-tabs-position-top.vc_tta-style-classic .vc_tta-tabs-container .vc_tta-tab>a,.td-theme-wrap .td-related-title a,.woocommerce div.product .woocommerce-tabs ul.tabs li a,.woocommerce .product .products h2:not(.woocommerce-loop-product__title),.td-theme-wrap .td-block-title{text-transform:capitalize}.td-theme-slider.iosSlider-col-1 .td-module-title{text-transform:capitalize}.td-theme-slider.iosSlider-col-2 .td-module-title{text-transform:capitalize}.td-theme-slider.iosSlider-col-3 .td-module-title{text-transform:capitalize}.homepage-post .td-post-template-8 .td-post-header .entry-title{text-transform:capitalize}.td_module_1 .td-module-title{text-transform:capitalize}.td_module_2 .td-module-title{text-transform:capitalize}.td_module_3 .td-module-title{text-transform:capitalize}.td_module_4 .td-module-title{text-transform:capitalize}.td_module_5 .td-module-title{text-transform:capitalize}.td_module_6 .td-module-title{text-transform:capitalize}.td_module_mx1 .td-module-title{text-transform:capitalize}.td_module_mx2 .td-module-title{text-transform:capitalize}.td_module_mx3 .td-module-title{text-transform:capitalize}.td_module_mx4 .td-module-title{text-transform:capitalize}.td-big-grid-post.td-big-thumb .td-big-grid-meta,.td-big-thumb .td-big-grid-meta .entry-title{text-transform:capitalize}.td-big-grid-post.td-medium-thumb .td-big-grid-meta,.td-medium-thumb .td-big-grid-meta .entry-title{text-transform:capitalize}.td-big-grid-post.td-small-thumb .td-big-grid-meta,.td-small-thumb .td-big-grid-meta .entry-title{text-transform:capitalize}.td-big-grid-post.td-tiny-thumb .td-big-grid-meta,.td-tiny-thumb .td-big-grid-meta .entry-title{text-transform:capitalize}.td-post-template-default .td-post-header .entry-title{text-transform:capitalize}.td-post-template-1 .td-post-header .entry-title{text-transform:capitalize}.td-post-template-2 .td-post-header .entry-title{text-transform:capitalize}.td-post-template-3 .td-post-header .entry-title{text-transform:capitalize}.td-post-template-4 .td-post-header .entry-title{text-transform:capitalize}.td-post-content h2{text-transform:capitalize}</style>
<!-- LFX Segments Analytics -->
<script src="https://lfx-segment.platform.linuxfoundation.org/latest/lfx-segment-analytics.min.js"></script>
<script>
// Initialize with default configuration (no custom write key needed)
LfxAnalytics.LfxSegmentsAnalytics.getInstance().init();
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"item": {
"@type": "WebSite",
"@id": "https://www.linux.com/",
"name": "Home"
}
},
{
"@type": "ListItem",
"position": 2,
"item": {
"@type": "WebPage",
"@id": "https://www.linux.com/topic/",
"name": "Topic"
}
}
,{
"@type": "ListItem",
"position": 3,
"item": {
"@type": "WebPage",
"@id": "https://www.linux.com/topic/cloud/",
"name": "Cloud"
}
}
,{
"@type": "ListItem",
"position": 4,
"item": {
"@type": "WebPage",
"@id": "https://www.linux.com/news/how-digit-created-high-availability-public-cloud-keep-its-games-running/",
"name": "How DIGIT Created High Availability on the Public Cloud to Keep Its..."
}
}
]
}
</script>
<!-- Button style compiled by theme -->
<style>.tdm-btn-style1{background-color:#ff6c0e}.tdm-btn-style2:before{border-color:#ff6c0e}.tdm-btn-style2{color:#ff6c0e}.tdm-btn-style3{-webkit-box-shadow:0 2px 16px #ff6c0e;-moz-box-shadow:0 2px 16px #ff6c0e;box-shadow:0 2px 16px #ff6c0e}.tdm-btn-style3:hover{-webkit-box-shadow:0 4px 26px #ff6c0e;-moz-box-shadow:0 4px 26px #ff6c0e;box-shadow:0 4px 26px #ff6c0e}</style>
<style id="tdw-css-placeholder"></style><style id="wp-block-image-inline-css">
.wp-block-image>a,.wp-block-image>figure>a{display:inline-block}.wp-block-image img{box-sizing:border-box;height:auto;max-width:100%;vertical-align:bottom}@media not (prefers-reduced-motion){.wp-block-image img.hide{visibility:hidden}.wp-block-image img.show{animation:show-content-image .4s}}.wp-block-image[style*=border-radius] img,.wp-block-image[style*=border-radius]>a{border-radius:inherit}.wp-block-image.has-custom-border img{box-sizing:border-box}.wp-block-image.aligncenter{text-align:center}.wp-block-image.alignfull>a,.wp-block-image.alignwide>a{width:100%}.wp-block-image.alignfull img,.wp-block-image.alignwide img{height:auto;width:100%}.wp-block-image .aligncenter,.wp-block-image .alignleft,.wp-block-image .alignright,.wp-block-image.aligncenter,.wp-block-image.alignleft,.wp-block-image.alignright{display:table}.wp-block-image .aligncenter>figcaption,.wp-block-image .alignleft>figcaption,.wp-block-image .alignright>figcaption,.wp-block-image.aligncenter>figcaption,.wp-block-image.alignleft>figcaption,.wp-block-image.alignright>figcaption{caption-side:bottom;display:table-caption}.wp-block-image .alignleft{float:left;margin:.5em 1em .5em 0}.wp-block-image .alignright{float:right;margin:.5em 0 .5em 1em}.wp-block-image .aligncenter{margin-left:auto;margin-right:auto}.wp-block-image :where(figcaption){margin-bottom:1em;margin-top:.5em}.wp-block-image.is-style-circle-mask img{border-radius:9999px}@supports ((-webkit-mask-image:none) or (mask-image:none)) or (-webkit-mask-image:none){.wp-block-image.is-style-circle-mask img{border-radius:0;-webkit-mask-image:url('data:image/svg+xml;utf8,<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"><circle cx="50" cy="50" r="50"/></svg>');mask-image:url('data:image/svg+xml;utf8,<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"><circle cx="50" cy="50" r="50"/></svg>');mask-mode:alpha;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}}:root :where(.wp-block-image.is-style-rounded img,.wp-block-image .is-style-rounded img){border-radius:9999px}.wp-block-image figure{margin:0}.wp-lightbox-container{display:flex;flex-direction:column;position:relative}.wp-lightbox-container img{cursor:zoom-in}.wp-lightbox-container img:hover+button{opacity:1}.wp-lightbox-container button{align-items:center;backdrop-filter:blur(16px) saturate(180%);background-color:rgba(90,90,90,.25);border:none;border-radius:4px;cursor:zoom-in;display:flex;height:20px;justify-content:center;opacity:0;padding:0;position:absolute;right:16px;text-align:center;top:16px;width:20px;z-index:100}@media not (prefers-reduced-motion){.wp-lightbox-container button{transition:opacity .2s ease}}.wp-lightbox-container button:focus-visible{outline:3px auto rgba(90,90,90,.25);outline:3px auto -webkit-focus-ring-color;outline-offset:3px}.wp-lightbox-container button:hover{cursor:pointer;opacity:1}.wp-lightbox-container button:focus{opacity:1}.wp-lightbox-container button:focus,.wp-lightbox-container button:hover,.wp-lightbox-container button:not(:hover):not(:active):not(.has-background){background-color:rgba(90,90,90,.25);border:none}.wp-lightbox-overlay{box-sizing:border-box;cursor:zoom-out;height:100vh;left:0;overflow:hidden;position:fixed;top:0;visibility:hidden;width:100%;z-index:100000}.wp-lightbox-overlay .wp-lightbox-close-button{align-items:center;cursor:pointer;display:flex;font-family:inherit;gap:8px;justify-content:center;line-height:1;min-height:40px;min-width:40px;padding:0 4px;position:absolute;right:calc(env(safe-area-inset-right) + 16px);top:calc(env(safe-area-inset-top) + 16px);z-index:5000000}.wp-lightbox-overlay .wp-lightbox-close-button:focus,.wp-lightbox-overlay .wp-lightbox-close-button:hover,.wp-lightbox-overlay .wp-lightbox-close-button:not(:hover):not(:active):not(.has-background){background:none;border:none}.wp-lightbox-overlay .wp-lightbox-close-button:has(.wp-lightbox-close-text:not([hidden])) .wp-lightbox-close-icon svg{height:1em;width:1em}.wp-lightbox-overlay .wp-lightbox-close-icon svg{display:block}.wp-lightbox-overlay .wp-lightbox-navigation-button-next,.wp-lightbox-overlay .wp-lightbox-navigation-button-prev{align-items:center;bottom:16px;cursor:pointer;display:flex;font-family:inherit;gap:4px;justify-content:center;line-height:1;min-height:40px;min-width:40px;padding:0 8px;position:absolute;z-index:2000002}.wp-lightbox-overlay .wp-lightbox-navigation-button-next[hidden],.wp-lightbox-overlay .wp-lightbox-navigation-button-prev[hidden]{display:none}@media (min-width:960px){.wp-lightbox-overlay .wp-lightbox-navigation-button-next,.wp-lightbox-overlay .wp-lightbox-navigation-button-prev{bottom:50%;transform:translateY(-50%)}}.wp-lightbox-overlay .wp-lightbox-navigation-button-next:focus,.wp-lightbox-overlay .wp-lightbox-navigation-button-next:hover,.wp-lightbox-overlay .wp-lightbox-navigation-button-next:not(:hover):not(:active):not(.has-background),.wp-lightbox-overlay .wp-lightbox-navigation-button-prev:focus,.wp-lightbox-overlay .wp-lightbox-navigation-button-prev:hover,.wp-lightbox-overlay .wp-lightbox-navigation-button-prev:not(:hover):not(:active):not(.has-background){background:none;border:none;padding:0 8px}.wp-lightbox-overlay .wp-lightbox-navigation-button-next:has(.wp-lightbox-navigation-text:not([hidden])) .wp-lightbox-navigation-icon svg,.wp-lightbox-overlay .wp-lightbox-navigation-button-prev:has(.wp-lightbox-navigation-text:not([hidden])) .wp-lightbox-navigation-icon svg{display:block;height:1.5em;width:1.5em}.wp-lightbox-overlay .wp-lightbox-navigation-button-prev{left:calc(env(safe-area-inset-left) + 16px)}.wp-lightbox-overlay .wp-lightbox-navigation-button-next{right:calc(env(safe-area-inset-right) + 16px)}.wp-lightbox-overlay .wp-lightbox-navigation-icon svg{vertical-align:middle}.wp-lightbox-overlay .lightbox-image-container{height:var(--wp--lightbox-container-height);left:50%;overflow:hidden;position:absolute;top:50%;transform:translate(-50%,-50%);transform-origin:top left;width:var(--wp--lightbox-container-width);z-index:2000001}.wp-lightbox-overlay .wp-block-image{align-items:center;box-sizing:border-box;display:flex;height:100%;justify-content:center;margin:0;position:relative;transform-origin:0 0;width:100%;z-index:3000000}.wp-lightbox-overlay .wp-block-image img{height:var(--wp--lightbox-image-height);min-height:var(--wp--lightbox-image-height);min-width:var(--wp--lightbox-image-width);width:var(--wp--lightbox-image-width)}.wp-lightbox-overlay .wp-block-image figcaption{display:none}.wp-lightbox-overlay button{background:none;border:none}.wp-lightbox-overlay .scrim{background-color:#fff;height:100%;opacity:.9;position:absolute;width:100%;z-index:2000000}.wp-lightbox-overlay.active{visibility:visible}@media not (prefers-reduced-motion){.wp-lightbox-overlay.active{animation:turn-on-visibility .25s both}.wp-lightbox-overlay.active img{animation:turn-on-visibility .35s both}.wp-lightbox-overlay.show-closing-animation:not(.active){animation:turn-off-visibility .35s both}.wp-lightbox-overlay.show-closing-animation:not(.active) img{animation:turn-off-visibility .25s both}.wp-lightbox-overlay.zoom.active{animation:none;opacity:1;visibility:visible}.wp-lightbox-overlay.zoom.active .lightbox-image-container{animation:lightbox-zoom-in .4s}.wp-lightbox-overlay.zoom.active .lightbox-image-container img{animation:none}.wp-lightbox-overlay.zoom.active .scrim{animation:turn-on-visibility .4s forwards}.wp-lightbox-overlay.zoom.show-closing-animation:not(.active){animation:none}.wp-lightbox-overlay.zoom.show-closing-animation:not(.active) .lightbox-image-container{animation:lightbox-zoom-out .4s}.wp-lightbox-overlay.zoom.show-closing-animation:not(.active) .lightbox-image-container img{animation:none}.wp-lightbox-overlay.zoom.show-closing-animation:not(.active) .scrim{animation:turn-off-visibility .4s forwards}}@keyframes show-content-image{0%{visibility:hidden}99%{visibility:hidden}to{visibility:visible}}@keyframes turn-on-visibility{0%{opacity:0}to{opacity:1}}@keyframes turn-off-visibility{0%{opacity:1;visibility:visible}99%{opacity:0;visibility:visible}to{opacity:0;visibility:hidden}}@keyframes lightbox-zoom-in{0%{transform:translate(calc((-100vw + var(--wp--lightbox-scrollbar-width))/2 + var(--wp--lightbox-initial-left-position)),calc(-50vh + var(--wp--lightbox-initial-top-position))) scale(var(--wp--lightbox-scale))}to{transform:translate(-50%,-50%) scale(1)}}@keyframes lightbox-zoom-out{0%{transform:translate(-50%,-50%) scale(1);visibility:visible}99%{visibility:visible}to{transform:translate(calc((-100vw + var(--wp--lightbox-scrollbar-width))/2 + var(--wp--lightbox-initial-left-position)),calc(-50vh + var(--wp--lightbox-initial-top-position))) scale(var(--wp--lightbox-scale));visibility:hidden}}
/*# sourceURL=https://www.linux.com/wp-includes/blocks/image/style.min.css */
</style>
</head>
<body class="wp-singular post-template-default single single-post postid-476250 single-format-standard wp-theme-Newspaper wp-child-theme-Newspaper-child td-standard-pack how-digit-created-high-availability-public-cloud-keep-its-games-running global-block-template-4 single_template_5 td-full-layout" itemscope="itemscope" itemtype="https://schema.org/WebPage">
<div class="td-scroll-up" data-style="style1"><i class="td-icon-menu-up"></i></div>
<div class="td-menu-background" style="visibility:hidden"></div>
<div id="td-mobile-nav" style="visibility:hidden">
<div class="td-mobile-container">
<!-- mobile menu top section -->
<div class="td-menu-socials-wrap">
<!-- socials -->
<div class="td-menu-socials">
<span class="td-social-icon-wrap">
<a target="_blank" href="https://twitter.com/linuxdotcom" title="X">
<i class="td-icon-font td-icon-twitter"></i>
<span style="display: none">X</span>
</a>
</span> </div>
<!-- close button -->
<div class="td-mobile-close">
<span><i class="td-icon-close-mobile"></i></span>
</div>
</div>
<!-- login section -->
<!-- menu section -->
<div class="td-mobile-content">
<div class="menu-primary-menu-container"><ul id="menu-primary-menu" class="td-mobile-main-menu"><li id="menu-item-579695" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-first menu-item-579695"><a href="https://linux.com/">Topic<i class="td-icon-menu-right td-element-after"></i></a>
<ul class="sub-menu">
<li id="menu-item-577204" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-577204"><a href="https://www.linux.com/topic/ai-ml/">AI/ML</a></li>
<li id="menu-item-577207" class="menu-item menu-item-type-taxonomy menu-item-object-category current-post-ancestor current-menu-parent current-post-parent menu-item-577207"><a href="https://www.linux.com/topic/cloud/">Cloud</a></li>
<li id="menu-item-577208" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-577208"><a href="https://www.linux.com/topic/desktop/">Desktop</a></li>
<li id="menu-item-577211" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-577211"><a href="https://www.linux.com/topic/embedded-iot/">Embedded/IoT</a></li>
<li id="menu-item-577212" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-577212"><a href="https://www.linux.com/topic/governance/">Governance</a></li>
<li id="menu-item-577213" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-577213"><a href="https://www.linux.com/topic/hardware/">Hardware</a></li>
<li id="menu-item-577215" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-577215"><a href="https://www.linux.com/topic/linux/">Linux</a></li>
<li id="menu-item-577216" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-577216"><a href="https://www.linux.com/topic/networking/">Networking</a></li>
<li id="menu-item-577217" class="menu-item menu-item-type-taxonomy menu-item-object-category current-post-ancestor current-menu-parent current-post-parent menu-item-577217"><a href="https://www.linux.com/topic/open-source/">Open Source</a></li>
<li id="menu-item-577219" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-577219"><a href="https://www.linux.com/topic/security/">Security</a></li>
<li id="menu-item-577221" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-577221"><a href="https://www.linux.com/topic/system-administration/">System Administration</a></li>
</ul>
</li>
<li id="menu-item-577276" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-577276"><a href="https://linux.com/">Audience<i class="td-icon-menu-right td-element-after"></i></a>
<ul class="sub-menu">
<li id="menu-item-577235" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-577235"><a href="https://www.linux.com/audience/developers/">Developers</a></li>
<li id="menu-item-577236" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-577236"><a href="https://www.linux.com/audience/devops/">DevOps</a></li>
<li id="menu-item-577237" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-577237"><a href="https://www.linux.com/audience/enterprise/">Enterprise</a></li>
<li id="menu-item-579694" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-579694"><a href="https://www.linux.com/audience/enthusiast/">Enthusiast</a></li>
</ul>
</li>
<li id="menu-item-577257" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-577257"><a href="https://linux.com/">Resources<i class="td-icon-menu-right td-element-after"></i></a>
<ul class="sub-menu">
<li id="menu-item-577289" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-577289"><a href="/tutorials">Tutorials</a></li>
<li id="menu-item-577260" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-577260"><a target="_blank" href="https://training.linuxfoundation.org/">Training</a></li>
<li id="menu-item-577261" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-577261"><a target="_blank" href="https://training.linuxfoundation.org/full-catalog/?_sft_product_type=certification">Certification</a></li>
<li id="menu-item-577259" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-577259"><a target="_blank" href="https://events.linuxfoundation.org/">Events</a></li>
<li id="menu-item-577256" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-577256"><a target="_blank" href="https://forum.linuxfoundation.org/">Forums</a></li>
<li id="menu-item-577274" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-577274"><a href="https://www.linux.com/qa/">Q&#038;A</a></li>
<li id="menu-item-577268" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-577268"><a href="https://www.linux.com/what-is-linux/">What is Linux?</a></li>
</ul>
</li>
<li id="menu-item-577025" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-577025"><a href="https://www.linux.com/about/">About Us</a></li>
</ul></div> </div>
</div>
<!-- register/login section -->
</div><div class="td-search-background" style="visibility:hidden"></div>
<div class="td-search-wrap-mob" style="visibility:hidden">
<div class="td-drop-down-search">
<form method="get" class="td-search-form" action="https://www.linux.com/">
<!-- close button -->
<div class="td-search-close">
<span><i class="td-icon-close-mobile"></i></span>
</div>
<div role="search" class="td-search-input">
<span>Search</span>
<input id="td-header-search-mob" type="text" value="" name="s" autocomplete="off" />
</div>
</form>
<div id="td-aj-search-mob" class="td-ajax-search-flex"></div>
</div>
</div>
<div id="td-outer-wrap" class="td-theme-wrap">
<div class="tdc-header-wrap ">
<!--
Header style 6
-->
<div class="td-header-wrap td-header-style-6 ">
<div class="td-header-top-menu-full td-container-wrap ">
<div class="td-container td-header-row td-header-top-menu">
<!-- LOGIN MODAL -->
<div id="login-form" class="white-popup-block mfp-hide mfp-with-anim td-login-modal-wrap">
<div class="td-login-wrap">
<a href="#" aria-label="Back" class="td-back-button"><i class="td-icon-modal-back"></i></a>
<div id="td-login-div" class="td-login-form-div td-display-block">
<div class="td-login-panel-title">Sign in</div>
<div class="td-login-panel-descr">Welcome! Log into your account</div>
<div class="td_display_err"></div>
<form id="loginForm" action="#" method="post">
<div class="td-login-inputs"><input class="td-login-input" autocomplete="username" type="text" name="login_email" id="login_email" value="" required><label for="login_email">your username</label></div>
<div class="td-login-inputs"><input class="td-login-input" autocomplete="current-password" type="password" name="login_pass" id="login_pass" value="" required><label for="login_pass">your password</label></div>
<input type="button" name="login_button" id="login_button" class="wpb_button btn td-login-button" value="Login">
</form>
<div class="td-login-info-text"><a href="#" id="forgot-pass-link">Forgot your password? Get help</a></div>
</div>
<div id="td-forgot-pass-div" class="td-login-form-div td-display-none">
<div class="td-login-panel-title">Password recovery</div>
<div class="td-login-panel-descr">Recover your password</div>
<div class="td_display_err"></div>
<form id="forgotpassForm" action="#" method="post">
<div class="td-login-inputs"><input class="td-login-input" type="text" name="forgot_email" id="forgot_email" value="" required><label for="forgot_email">your email</label></div>
<input type="button" name="forgot_button" id="forgot_button" class="wpb_button btn td-login-button" value="Send My Password">
</form>
<div class="td-login-info-text">A password will be e-mailed to you.</div>
</div>
</div>
</div>
</div>
</div>
<div class="td-header-menu-wrap-full td-container-wrap ">
<div class="td-header-menu-wrap ">
<div class="td-container td-header-row td-header-main-menu black-menu">
<div class="td-header-menu-social">
<span class="td-social-icon-wrap">
<a target="_blank" href="https://twitter.com/linuxdotcom" title="X">
<i class="td-icon-font td-icon-twitter"></i>
<span style="display: none">X</span>
</a>
</span></div>
<div class="header-search-wrap">
<div class="td-search-btns-wrap">
<a id="td-header-search-button" href="#" aria-label="Search" role="button" class="dropdown-toggle " data-toggle="dropdown"><i class="td-icon-search"></i></a>
<a id="td-header-search-button-mob" href="#" aria-label="Search" class="dropdown-toggle " data-toggle="dropdown"><i class="td-icon-search"></i></a>
</div>
<div class="td-drop-down-search" aria-labelledby="td-header-search-button">
<form method="get" class="td-search-form" action="https://www.linux.com/">
<div role="search" class="td-head-form-search-wrap">
<input id="td-header-search" type="text" value="" name="s" autocomplete="off" /><input class="wpb_button wpb_btn-inverse btn" type="submit" id="td-header-search-top" value="Search" />
</div>
</form>
<div id="td-aj-search"></div>
</div>
</div>
<div id="td-header-menu" role="navigation">
<div id="td-top-mobile-toggle"><a href="#" role="button" aria-label="Menu"><i class="td-icon-font td-icon-mobile"></i></a></div>
<div class="td-main-menu-logo td-logo-in-menu">
<a class="td-main-logo" href="https://www.linux.com/">
<img src="https://www.linux.com/wp-content/uploads/2019/08/ldc-white-272.png" alt="Linux.com" title="Linux.com" width="272" height="90"/>
<span class="td-visual-hidden">Linux.com</span>
</a>
</div>
<div class="menu-primary-menu-container"><ul id="menu-primary-menu-1" class="sf-menu"><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-first td-menu-item td-normal-menu menu-item-579695"><a href="https://linux.com/">Topic</a>
<ul class="sub-menu">
<li class="menu-item menu-item-type-taxonomy menu-item-object-category td-menu-item td-normal-menu menu-item-577204"><a href="https://www.linux.com/topic/ai-ml/">AI/ML</a></li>
<li class="menu-item menu-item-type-taxonomy menu-item-object-category current-post-ancestor current-menu-parent current-post-parent td-menu-item td-normal-menu menu-item-577207"><a href="https://www.linux.com/topic/cloud/">Cloud</a></li>
<li class="menu-item menu-item-type-taxonomy menu-item-object-category td-menu-item td-normal-menu menu-item-577208"><a href="https://www.linux.com/topic/desktop/">Desktop</a></li>
<li class="menu-item menu-item-type-taxonomy menu-item-object-category td-menu-item td-normal-menu menu-item-577211"><a href="https://www.linux.com/topic/embedded-iot/">Embedded/IoT</a></li>
<li class="menu-item menu-item-type-taxonomy menu-item-object-category td-menu-item td-normal-menu menu-item-577212"><a href="https://www.linux.com/topic/governance/">Governance</a></li>
<li class="menu-item menu-item-type-taxonomy menu-item-object-category td-menu-item td-normal-menu menu-item-577213"><a href="https://www.linux.com/topic/hardware/">Hardware</a></li>
<li class="menu-item menu-item-type-taxonomy menu-item-object-category td-menu-item td-normal-menu menu-item-577215"><a href="https://www.linux.com/topic/linux/">Linux</a></li>
<li class="menu-item menu-item-type-taxonomy menu-item-object-category td-menu-item td-normal-menu menu-item-577216"><a href="https://www.linux.com/topic/networking/">Networking</a></li>
<li class="menu-item menu-item-type-taxonomy menu-item-object-category current-post-ancestor current-menu-parent current-post-parent td-menu-item td-normal-menu menu-item-577217"><a href="https://www.linux.com/topic/open-source/">Open Source</a></li>
<li class="menu-item menu-item-type-taxonomy menu-item-object-category td-menu-item td-normal-menu menu-item-577219"><a href="https://www.linux.com/topic/security/">Security</a></li>
<li class="menu-item menu-item-type-taxonomy menu-item-object-category td-menu-item td-normal-menu menu-item-577221"><a href="https://www.linux.com/topic/system-administration/">System Administration</a></li>
</ul>
</li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children td-menu-item td-normal-menu menu-item-577276"><a href="https://linux.com/">Audience</a>
<ul class="sub-menu">
<li class="menu-item menu-item-type-taxonomy menu-item-object-category td-menu-item td-normal-menu menu-item-577235"><a href="https://www.linux.com/audience/developers/">Developers</a></li>
<li class="menu-item menu-item-type-taxonomy menu-item-object-category td-menu-item td-normal-menu menu-item-577236"><a href="https://www.linux.com/audience/devops/">DevOps</a></li>
<li class="menu-item menu-item-type-taxonomy menu-item-object-category td-menu-item td-normal-menu menu-item-577237"><a href="https://www.linux.com/audience/enterprise/">Enterprise</a></li>
<li class="menu-item menu-item-type-taxonomy menu-item-object-category td-menu-item td-normal-menu menu-item-579694"><a href="https://www.linux.com/audience/enthusiast/">Enthusiast</a></li>
</ul>
</li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children td-menu-item td-normal-menu menu-item-577257"><a href="https://linux.com/">Resources</a>
<ul class="sub-menu">
<li class="menu-item menu-item-type-custom menu-item-object-custom td-menu-item td-normal-menu menu-item-577289"><a href="/tutorials">Tutorials</a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom td-menu-item td-normal-menu menu-item-577260"><a target="_blank" href="https://training.linuxfoundation.org/">Training</a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom td-menu-item td-normal-menu menu-item-577261"><a target="_blank" href="https://training.linuxfoundation.org/full-catalog/?_sft_product_type=certification">Certification</a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom td-menu-item td-normal-menu menu-item-577259"><a target="_blank" href="https://events.linuxfoundation.org/">Events</a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom td-menu-item td-normal-menu menu-item-577256"><a target="_blank" href="https://forum.linuxfoundation.org/">Forums</a></li>
<li class="menu-item menu-item-type-post_type menu-item-object-page td-menu-item td-normal-menu menu-item-577274"><a href="https://www.linux.com/qa/">Q&#038;A</a></li>
<li class="menu-item menu-item-type-post_type menu-item-object-page td-menu-item td-normal-menu menu-item-577268"><a href="https://www.linux.com/what-is-linux/">What is Linux?</a></li>
</ul>
</li>
<li class="menu-item menu-item-type-post_type menu-item-object-page td-menu-item td-normal-menu menu-item-577025"><a href="https://www.linux.com/about/">About Us</a></li>
</ul></div></div>
</div>
</div>
</div>
</div>
</div>
<div class="td-main-content-wrap td-container-wrap">
<div class="td-container td-post-template-5 ">
<div class="td-crumb-container"><div class="entry-crumbs"><span><a title="" class="entry-crumb" href="https://www.linux.com/">Home</a></span> <i class="td-icon-right td-bread-sep"></i> <span><a title="View all posts in Topic" class="entry-crumb" href="https://www.linux.com/topic/">Topic</a></span> <i class="td-icon-right td-bread-sep"></i> <span><a title="View all posts in Cloud" class="entry-crumb" href="https://www.linux.com/topic/cloud/">Cloud</a></span> <i class="td-icon-right td-bread-sep td-bred-no-url-last"></i> <span class="td-bred-no-url-last">How DIGIT Created High Availability on the Public Cloud to Keep Its...</span></div></div>
<div class="td-pb-row">
<div class="td-pb-span12 td-main-content" role="main">
<div class="td-ss-main-content">
<article id="post-476250" class="post-476250 post type-post status-publish format-standard has-post-thumbnail category-cloud category-news category-open-source author-libbyclark type-news" itemscope itemtype="https://schema.org/Article">
<div class="td-post-header">
<ul class="td-category"><li class="entry-category"><a href="https://www.linux.com/topic/">Topic</a></li><li class="entry-category"><a href="https://www.linux.com/topic/cloud/">Cloud</a></li><li class="entry-category"><a href="https://www.linux.com/news/">News</a></li><li class="entry-category"><a href="https://www.linux.com/topic/open-source/">Open Source</a></li></ul>
<header class="td-post-title">
<h1 class="entry-title">How DIGIT Created High Availability on the Public Cloud to Keep Its Games Running</h1>
<div class="td-module-meta-info">
<div class="td-post-author-name"><div class="td-author-by">By</div> <a href="https://www.linux.com/author/libbyclark/">Libby Clark</a><div class="td-author-line"> - </div> </div> <span class="td-post-date"><time class="entry-date updated td-module-date" datetime="2016-08-24T07:00:58-07:00" >August 24, 2016</time></span> <div class="td-post-views"><i class="td-icon-views"></i><span class="td-nr-views-476250">586</span></div> </div>
</header>
</div>
<div class="td-post-sharing-top"><div id="td_social_sharing_article_top" class="td-post-sharing td-ps-border td-ps-border-grey td-ps-notext td-ps-icon-color td-ps-text-color td-post-sharing-style16 ">
<style>.td-post-sharing-classic{position:relative;height:20px}.td-post-sharing{margin-left:-3px;margin-right:-3px;font-family:var(--td_default_google_font_1,'Open Sans','Open Sans Regular',sans-serif);z-index:2;white-space:nowrap;opacity:0}.td-post-sharing.td-social-show-all{white-space:normal}.td-js-loaded .td-post-sharing{-webkit-transition:opacity 0.3s;transition:opacity 0.3s;opacity:1}.td-post-sharing-classic+.td-post-sharing{margin-top:15px}@media (max-width:767px){.td-post-sharing-classic+.td-post-sharing{margin-top:8px}}.td-post-sharing-top{margin-bottom:30px}@media (max-width:767px){.td-post-sharing-top{margin-bottom:20px}}.td-post-sharing-bottom{border-style:solid;border-color:#ededed;border-width:1px 0;padding:21px 0;margin-bottom:42px}.td-post-sharing-bottom .td-post-sharing{margin-bottom:-7px}.td-post-sharing-visible,.td-social-sharing-hidden{display:inline-block}.td-social-sharing-hidden ul{display:none}.td-social-show-all .td-pulldown-filter-list{display:inline-block}.td-social-network,.td-social-handler{position:relative;display:inline-block;margin:0 3px 7px;height:40px;min-width:40px;font-size:11px;text-align:center;vertical-align:middle}.td-ps-notext .td-social-network .td-social-but-icon,.td-ps-notext .td-social-handler .td-social-but-icon{border-top-right-radius:2px;border-bottom-right-radius:2px}.td-social-network{color:#000;overflow:hidden}.td-social-network .td-social-but-icon{border-top-left-radius:2px;border-bottom-left-radius:2px}.td-social-network .td-social-but-text{border-top-right-radius:2px;border-bottom-right-radius:2px}.td-social-network:hover{opacity:0.8!important}.td-social-handler{color:#444;border:1px solid #e9e9e9;border-radius:2px}.td-social-handler .td-social-but-text{font-weight:700}.td-social-handler .td-social-but-text:before{background-color:#000;opacity:0.08}.td-social-share-text{margin-right:18px}.td-social-share-text:before,.td-social-share-text:after{content:'';position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);left:100%;width:0;height:0;border-style:solid}.td-social-share-text:before{border-width:9px 0 9px 11px;border-color:transparent transparent transparent #e9e9e9}.td-social-share-text:after{border-width:8px 0 8px 10px;border-color:transparent transparent transparent #fff}.td-social-but-text,.td-social-but-icon{display:inline-block;position:relative}.td-social-but-icon{padding-left:13px;padding-right:13px;line-height:40px;z-index:1}.td-social-but-icon i{position:relative;top:-1px;vertical-align:middle}.td-social-but-text{margin-left:-6px;padding-left:12px;padding-right:17px;line-height:40px}.td-social-but-text:before{content:'';position:absolute;top:12px;left:0;width:1px;height:16px;background-color:#fff;opacity:0.2;z-index:1}.td-social-handler i,.td-social-facebook i,.td-social-reddit i,.td-social-linkedin i,.td-social-tumblr i,.td-social-stumbleupon i,.td-social-vk i,.td-social-viber i,.td-social-flipboard i,.td-social-koo i{font-size:14px}.td-social-telegram i{font-size:16px}.td-social-mail i,.td-social-line i,.td-social-print i{font-size:15px}.td-social-handler .td-icon-share{top:-1px;left:-1px}.td-social-twitter .td-icon-twitter{font-size:14px}.td-social-pinterest .td-icon-pinterest{font-size:13px}.td-social-whatsapp .td-icon-whatsapp,.td-social-kakao .td-icon-kakao{font-size:18px}.td-social-kakao .td-icon-kakao:before{color:#3C1B1D}.td-social-reddit .td-social-but-icon{padding-right:12px}.td-social-reddit .td-icon-reddit{left:-1px}.td-social-telegram .td-social-but-icon{padding-right:12px}.td-social-telegram .td-icon-telegram{left:-1px}.td-social-stumbleupon .td-social-but-icon{padding-right:11px}.td-social-stumbleupon .td-icon-stumbleupon{left:-2px}.td-social-digg .td-social-but-icon{padding-right:11px}.td-social-digg .td-icon-digg{left:-2px;font-size:17px}.td-social-vk .td-social-but-icon{padding-right:11px}.td-social-vk .td-icon-vk{left:-2px}.td-social-naver .td-icon-naver{left:-1px;font-size:16px}.td-social-gettr .td-icon-gettr{font-size:25px}.td-ps-notext .td-social-gettr .td-icon-gettr{left:-5px}.td-social-copy_url{position:relative}.td-social-copy_url-check{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:#fff;opacity:0;pointer-events:none;transition:opacity .2s ease-in-out;z-index:11}.td-social-copy_url .td-icon-copy_url{left:-1px;font-size:17px}.td-social-copy_url-disabled{pointer-events:none}.td-social-copy_url-disabled .td-icon-copy_url{opacity:0}.td-social-copy_url-copied .td-social-copy_url-check{opacity:1}@keyframes social_copy_url_loader{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.td-social-expand-tabs i{top:-2px;left:-1px;font-size:16px}.td-ps-bg .td-social-network{color:#fff}.td-ps-bg .td-social-facebook .td-social-but-icon,.td-ps-bg .td-social-facebook .td-social-but-text{background-color:#516eab}.td-ps-bg .td-social-twitter .td-social-but-icon,.td-ps-bg .td-social-twitter .td-social-but-text{background-color:#000}.td-ps-bg .td-social-pinterest .td-social-but-icon,.td-ps-bg .td-social-pinterest .td-social-but-text{background-color:#ca212a}.td-ps-bg .td-social-whatsapp .td-social-but-icon,.td-ps-bg .td-social-whatsapp .td-social-but-text{background-color:#7bbf6a}.td-ps-bg .td-social-reddit .td-social-but-icon,.td-ps-bg .td-social-reddit .td-social-but-text{background-color:#f54200}.td-ps-bg .td-social-mail .td-social-but-icon,.td-ps-bg .td-social-digg .td-social-but-icon,.td-ps-bg .td-social-copy_url .td-social-but-icon,.td-ps-bg .td-social-mail .td-social-but-text,.td-ps-bg .td-social-digg .td-social-but-text,.td-ps-bg .td-social-copy_url .td-social-but-text{background-color:#000}.td-ps-bg .td-social-print .td-social-but-icon,.td-ps-bg .td-social-print .td-social-but-text{background-color:#333}.td-ps-bg .td-social-linkedin .td-social-but-icon,.td-ps-bg .td-social-linkedin .td-social-but-text{background-color:#0266a0}.td-ps-bg .td-social-tumblr .td-social-but-icon,.td-ps-bg .td-social-tumblr .td-social-but-text{background-color:#3e5a70}.td-ps-bg .td-social-telegram .td-social-but-icon,.td-ps-bg .td-social-telegram .td-social-but-text{background-color:#179cde}.td-ps-bg .td-social-stumbleupon .td-social-but-icon,.td-ps-bg .td-social-stumbleupon .td-social-but-text{background-color:#ee4813}.td-ps-bg .td-social-vk .td-social-but-icon,.td-ps-bg .td-social-vk .td-social-but-text{background-color:#4c75a3}.td-ps-bg .td-social-line .td-social-but-icon,.td-ps-bg .td-social-line .td-social-but-text{background-color:#00b900}.td-ps-bg .td-social-viber .td-social-but-icon,.td-ps-bg .td-social-viber .td-social-but-text{background-color:#5d54a4}.td-ps-bg .td-social-naver .td-social-but-icon,.td-ps-bg .td-social-naver .td-social-but-text{background-color:#3ec729}.td-ps-bg .td-social-flipboard .td-social-but-icon,.td-ps-bg .td-social-flipboard .td-social-but-text{background-color:#f42827}.td-ps-bg .td-social-kakao .td-social-but-icon,.td-ps-bg .td-social-kakao .td-social-but-text{background-color:#f9e000}.td-ps-bg .td-social-gettr .td-social-but-icon,.td-ps-bg .td-social-gettr .td-social-but-text{background-color:#fc223b}.td-ps-bg .td-social-koo .td-social-but-icon,.td-ps-bg .td-social-koo .td-social-but-text{background-color:#facd00}.td-ps-dark-bg .td-social-network{color:#fff}.td-ps-dark-bg .td-social-network .td-social-but-icon,.td-ps-dark-bg .td-social-network .td-social-but-text{background-color:#000}.td-ps-border .td-social-network .td-social-but-icon,.td-ps-border .td-social-network .td-social-but-text{line-height:38px;border-width:1px;border-style:solid}.td-ps-border .td-social-network .td-social-but-text{border-left-width:0}.td-ps-border .td-social-network .td-social-but-text:before{background-color:#000;opacity:0.08}.td-ps-border.td-ps-padding .td-social-network .td-social-but-icon{border-right-width:0}.td-ps-border.td-ps-padding .td-social-network.td-social-expand-tabs .td-social-but-icon{border-right-width:1px}.td-ps-border-grey .td-social-but-icon,.td-ps-border-grey .td-social-but-text{border-color:#e9e9e9}.td-ps-border-colored .td-social-facebook .td-social-but-icon,.td-ps-border-colored .td-social-facebook .td-social-but-text{border-color:#516eab}.td-ps-border-colored .td-social-twitter .td-social-but-icon,div.td-ps-border-colored .td-social-twitter .td-social-but-text{border-color:#000;color:#000}.td-ps-border-colored .td-social-pinterest .td-social-but-icon,.td-ps-border-colored .td-social-pinterest .td-social-but-text{border-color:#ca212a}.td-ps-border-colored .td-social-whatsapp .td-social-but-icon,.td-ps-border-colored .td-social-whatsapp .td-social-but-text{border-color:#7bbf6a}.td-ps-border-colored .td-social-reddit .td-social-but-icon,.td-ps-border-colored .td-social-reddit .td-social-but-text{border-color:#f54200}.td-ps-border-colored .td-social-mail .td-social-but-icon,.td-ps-border-colored .td-social-digg .td-social-but-icon,.td-ps-border-colored .td-social-copy_url .td-social-but-icon,.td-ps-border-colored .td-social-mail .td-social-but-text,.td-ps-border-colored .td-social-digg .td-social-but-text,.td-ps-border-colored .td-social-copy_url .td-social-but-text{border-color:#000}.td-ps-border-colored .td-social-print .td-social-but-icon,.td-ps-border-colored .td-social-print .td-social-but-text{border-color:#333}.td-ps-border-colored .td-social-linkedin .td-social-but-icon,.td-ps-border-colored .td-social-linkedin .td-social-but-text{border-color:#0266a0}.td-ps-border-colored .td-social-tumblr .td-social-but-icon,.td-ps-border-colored .td-social-tumblr .td-social-but-text{border-color:#3e5a70}.td-ps-border-colored .td-social-telegram .td-social-but-icon,.td-ps-border-colored .td-social-telegram .td-social-but-text{border-color:#179cde}.td-ps-border-colored .td-social-stumbleupon .td-social-but-icon,.td-ps-border-colored .td-social-stumbleupon .td-social-but-text{border-color:#ee4813}.td-ps-border-colored .td-social-vk .td-social-but-icon,.td-ps-border-colored .td-social-vk .td-social-but-text{border-color:#4c75a3}.td-ps-border-colored .td-social-line .td-social-but-icon,.td-ps-border-colored .td-social-line .td-social-but-text{border-color:#00b900}.td-ps-border-colored .td-social-viber .td-social-but-icon,.td-ps-border-colored .td-social-viber .td-social-but-text{border-color:#5d54a4}.td-ps-border-colored .td-social-naver .td-social-but-icon,.td-ps-border-colored .td-social-naver .td-social-but-text{border-color:#3ec729}.td-ps-border-colored .td-social-flipboard .td-social-but-icon,.td-ps-border-colored .td-social-flipboard .td-social-but-text{border-color:#f42827}.td-ps-border-colored .td-social-kakao .td-social-but-icon,.td-ps-border-colored .td-social-kakao .td-social-but-text{border-color:#f9e000}.td-ps-border-colored .td-social-gettr .td-social-but-icon,.td-ps-border-colored .td-social-gettr .td-social-but-text{border-color:#fc223b}.td-ps-border-colored .td-social-koo .td-social-but-icon,.td-ps-border-colored .td-social-koo .td-social-but-text{border-color:#facd00}.td-ps-icon-bg .td-social-but-icon{height:100%;border-color:transparent!important}.td-ps-icon-bg .td-social-network .td-social-but-icon{color:#fff}.td-ps-icon-bg .td-social-facebook .td-social-but-icon{background-color:#516eab}.td-ps-icon-bg .td-social-twitter .td-social-but-icon{background-color:#000}.td-ps-icon-bg .td-social-pinterest .td-social-but-icon{background-color:#ca212a}.td-ps-icon-bg .td-social-whatsapp .td-social-but-icon{background-color:#7bbf6a}.td-ps-icon-bg .td-social-reddit .td-social-but-icon{background-color:#f54200}.td-ps-icon-bg .td-social-mail .td-social-but-icon,.td-ps-icon-bg .td-social-digg .td-social-but-icon,.td-ps-icon-bg .td-social-copy_url .td-social-but-icon{background-color:#000}.td-ps-icon-bg .td-social-print .td-social-but-icon{background-color:#333}.td-ps-icon-bg .td-social-linkedin .td-social-but-icon{background-color:#0266a0}.td-ps-icon-bg .td-social-tumblr .td-social-but-icon{background-color:#3e5a70}.td-ps-icon-bg .td-social-telegram .td-social-but-icon{background-color:#179cde}.td-ps-icon-bg .td-social-stumbleupon .td-social-but-icon{background-color:#ee4813}.td-ps-icon-bg .td-social-vk .td-social-but-icon{background-color:#4c75a3}.td-ps-icon-bg .td-social-line .td-social-but-icon{background-color:#00b900}.td-ps-icon-bg .td-social-viber .td-social-but-icon{background-color:#5d54a4}.td-ps-icon-bg .td-social-naver .td-social-but-icon{background-color:#3ec729}.td-ps-icon-bg .td-social-flipboard .td-social-but-icon{background-color:#f42827}.td-ps-icon-bg .td-social-kakao .td-social-but-icon{background-color:#f9e000}.td-ps-icon-bg .td-social-gettr .td-social-but-icon{background-color:#fc223b}.td-ps-icon-bg .td-social-koo .td-social-but-icon{background-color:#facd00}.td-ps-icon-bg .td-social-but-text{margin-left:-3px}.td-ps-icon-bg .td-social-network .td-social-but-text:before{display:none}.td-ps-icon-arrow .td-social-network .td-social-but-icon:after{content:'';position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);left:calc(100% + 1px);width:0;height:0;border-style:solid;border-width:9px 0 9px 11px;border-color:transparent transparent transparent #000}.td-ps-icon-arrow .td-social-network .td-social-but-text{padding-left:20px}.td-ps-icon-arrow .td-social-network .td-social-but-text:before{display:none}.td-ps-icon-arrow.td-ps-padding .td-social-network .td-social-but-icon:after{left:100%}.td-ps-icon-arrow .td-social-facebook .td-social-but-icon:after{border-left-color:#516eab}.td-ps-icon-arrow .td-social-twitter .td-social-but-icon:after{border-left-color:#000}.td-ps-icon-arrow .td-social-pinterest .td-social-but-icon:after{border-left-color:#ca212a}.td-ps-icon-arrow .td-social-whatsapp .td-social-but-icon:after{border-left-color:#7bbf6a}.td-ps-icon-arrow .td-social-reddit .td-social-but-icon:after{border-left-color:#f54200}.td-ps-icon-arrow .td-social-mail .td-social-but-icon:after,.td-ps-icon-arrow .td-social-digg .td-social-but-icon:after,.td-ps-icon-arrow .td-social-copy_url .td-social-but-icon:after{border-left-color:#000}.td-ps-icon-arrow .td-social-print .td-social-but-icon:after{border-left-color:#333}.td-ps-icon-arrow .td-social-linkedin .td-social-but-icon:after{border-left-color:#0266a0}.td-ps-icon-arrow .td-social-tumblr .td-social-but-icon:after{border-left-color:#3e5a70}.td-ps-icon-arrow .td-social-telegram .td-social-but-icon:after{border-left-color:#179cde}.td-ps-icon-arrow .td-social-stumbleupon .td-social-but-icon:after{border-left-color:#ee4813}.td-ps-icon-arrow .td-social-vk .td-social-but-icon:after{border-left-color:#4c75a3}.td-ps-icon-arrow .td-social-line .td-social-but-icon:after{border-left-color:#00b900}.td-ps-icon-arrow .td-social-viber .td-social-but-icon:after{border-left-color:#5d54a4}.td-ps-icon-arrow .td-social-naver .td-social-but-icon:after{border-left-color:#3ec729}.td-ps-icon-arrow .td-social-flipboard .td-social-but-icon:after{border-left-color:#f42827}.td-ps-icon-arrow .td-social-kakao .td-social-but-icon:after{border-left-color:#f9e000}.td-ps-icon-arrow .td-social-gettr .td-social-but-icon:after{border-left-color:#fc223b}.td-ps-icon-arrow .td-social-koo .td-social-but-icon:after{border-left-color:#facd00}.td-ps-icon-arrow .td-social-expand-tabs .td-social-but-icon:after{display:none}.td-ps-icon-color .td-social-facebook .td-social-but-icon{color:#516eab}.td-ps-icon-color .td-social-pinterest .td-social-but-icon{color:#ca212a}.td-ps-icon-color .td-social-whatsapp .td-social-but-icon{color:#7bbf6a}.td-ps-icon-color .td-social-reddit .td-social-but-icon{color:#f54200}.td-ps-icon-color .td-social-mail .td-social-but-icon,.td-ps-icon-color .td-social-digg .td-social-but-icon,.td-ps-icon-color .td-social-copy_url .td-social-but-icon,.td-ps-icon-color .td-social-copy_url-check,.td-ps-icon-color .td-social-twitter .td-social-but-icon{color:#000}.td-ps-icon-color .td-social-print .td-social-but-icon{color:#333}.td-ps-icon-color .td-social-linkedin .td-social-but-icon{color:#0266a0}.td-ps-icon-color .td-social-tumblr .td-social-but-icon{color:#3e5a70}.td-ps-icon-color .td-social-telegram .td-social-but-icon{color:#179cde}.td-ps-icon-color .td-social-stumbleupon .td-social-but-icon{color:#ee4813}.td-ps-icon-color .td-social-vk .td-social-but-icon{color:#4c75a3}.td-ps-icon-color .td-social-line .td-social-but-icon{color:#00b900}.td-ps-icon-color .td-social-viber .td-social-but-icon{color:#5d54a4}.td-ps-icon-color .td-social-naver .td-social-but-icon{color:#3ec729}.td-ps-icon-color .td-social-flipboard .td-social-but-icon{color:#f42827}.td-ps-icon-color .td-social-kakao .td-social-but-icon{color:#f9e000}.td-ps-icon-color .td-social-gettr .td-social-but-icon{color:#fc223b}.td-ps-icon-color .td-social-koo .td-social-but-icon{color:#facd00}.td-ps-text-color .td-social-but-text{font-weight:700}.td-ps-text-color .td-social-facebook .td-social-but-text{color:#516eab}.td-ps-text-color .td-social-twitter .td-social-but-text{color:#000}.td-ps-text-color .td-social-pinterest .td-social-but-text{color:#ca212a}.td-ps-text-color .td-social-whatsapp .td-social-but-text{color:#7bbf6a}.td-ps-text-color .td-social-reddit .td-social-but-text{color:#f54200}.td-ps-text-color .td-social-mail .td-social-but-text,.td-ps-text-color .td-social-digg .td-social-but-text,.td-ps-text-color .td-social-copy_url .td-social-but-text{color:#000}.td-ps-text-color .td-social-print .td-social-but-text{color:#333}.td-ps-text-color .td-social-linkedin .td-social-but-text{color:#0266a0}.td-ps-text-color .td-social-tumblr .td-social-but-text{color:#3e5a70}.td-ps-text-color .td-social-telegram .td-social-but-text{color:#179cde}.td-ps-text-color .td-social-stumbleupon .td-social-but-text{color:#ee4813}.td-ps-text-color .td-social-vk .td-social-but-text{color:#4c75a3}.td-ps-text-color .td-social-line .td-social-but-text{color:#00b900}.td-ps-text-color .td-social-viber .td-social-but-text{color:#5d54a4}.td-ps-text-color .td-social-naver .td-social-but-text{color:#3ec729}.td-ps-text-color .td-social-flipboard .td-social-but-text{color:#f42827}.td-ps-text-color .td-social-kakao .td-social-but-text{color:#f9e000}.td-ps-text-color .td-social-gettr .td-social-but-text{color:#fc223b}.td-ps-text-color .td-social-koo .td-social-but-text{color:#facd00}.td-ps-text-color .td-social-expand-tabs .td-social-but-text{color:#b1b1b1}.td-ps-notext .td-social-but-icon{width:40px}.td-ps-notext .td-social-network .td-social-but-text{display:none}.td-ps-padding .td-social-network .td-social-but-icon{padding-left:17px;padding-right:17px}.td-ps-padding .td-social-handler .td-social-but-icon{width:40px}.td-ps-padding .td-social-reddit .td-social-but-icon,.td-ps-padding .td-social-telegram .td-social-but-icon{padding-right:16px}.td-ps-padding .td-social-stumbleupon .td-social-but-icon,.td-ps-padding .td-social-digg .td-social-but-icon,.td-ps-padding .td-social-expand-tabs .td-social-but-icon{padding-right:13px}.td-ps-padding .td-social-vk .td-social-but-icon{padding-right:14px}.td-ps-padding .td-social-expand-tabs .td-social-but-icon{padding-left:13px}.td-ps-rounded .td-social-network .td-social-but-icon{border-top-left-radius:100px;border-bottom-left-radius:100px}.td-ps-rounded .td-social-network .td-social-but-text{border-top-right-radius:100px;border-bottom-right-radius:100px}.td-ps-rounded.td-ps-notext .td-social-network .td-social-but-icon{border-top-right-radius:100px;border-bottom-right-radius:100px}.td-ps-rounded .td-social-expand-tabs{border-radius:100px}.td-ps-bar .td-social-network .td-social-but-icon,.td-ps-bar .td-social-network .td-social-but-text{-webkit-box-shadow:inset 0px -3px 0px 0px rgba(0,0,0,0.31);box-shadow:inset 0px -3px 0px 0px rgba(0,0,0,0.31)}.td-ps-bar .td-social-mail .td-social-but-icon,.td-ps-bar .td-social-digg .td-social-but-icon,.td-ps-bar .td-social-copy_url .td-social-but-icon,.td-ps-bar .td-social-mail .td-social-but-text,.td-ps-bar .td-social-digg .td-social-but-text,.td-ps-bar .td-social-copy_url .td-social-but-text{-webkit-box-shadow:inset 0px -3px 0px 0px rgba(255,255,255,0.28);box-shadow:inset 0px -3px 0px 0px rgba(255,255,255,0.28)}.td-ps-bar .td-social-print .td-social-but-icon,.td-ps-bar .td-social-print .td-social-but-text{-webkit-box-shadow:inset 0px -3px 0px 0px rgba(255,255,255,0.2);box-shadow:inset 0px -3px 0px 0px rgba(255,255,255,0.2)}.td-ps-big .td-social-but-icon{display:block;line-height:60px}.td-ps-big .td-social-but-icon .td-icon-share{width:auto}.td-ps-big .td-social-handler .td-social-but-text:before{display:none}.td-ps-big .td-social-share-text .td-social-but-icon{width:90px}.td-ps-big .td-social-expand-tabs .td-social-but-icon{width:60px}@media (max-width:767px){.td-ps-big .td-social-share-text{display:none}}.td-ps-big .td-social-facebook i,.td-ps-big .td-social-reddit i,.td-ps-big .td-social-mail i,.td-ps-big .td-social-linkedin i,.td-ps-big .td-social-tumblr i,.td-ps-big .td-social-stumbleupon i{margin-top:-2px}.td-ps-big .td-social-facebook i,.td-ps-big .td-social-reddit i,.td-ps-big .td-social-linkedin i,.td-ps-big .td-social-tumblr i,.td-ps-big .td-social-stumbleupon i,.td-ps-big .td-social-vk i,.td-ps-big .td-social-viber i,.td-ps-big .td-social-fliboard i,.td-ps-big .td-social-koo i,.td-ps-big .td-social-share-text i{font-size:22px}.td-ps-big .td-social-telegram i{font-size:24px}.td-ps-big .td-social-mail i,.td-ps-big .td-social-line i,.td-ps-big .td-social-print i{font-size:23px}.td-ps-big .td-social-twitter i,.td-ps-big .td-social-expand-tabs i{font-size:20px}.td-ps-big .td-social-whatsapp i,.td-ps-big .td-social-naver i,.td-ps-big .td-social-flipboard i,.td-ps-big .td-social-kakao i{font-size:26px}.td-ps-big .td-social-pinterest .td-icon-pinterest{font-size:21px}.td-ps-big .td-social-telegram .td-icon-telegram{left:1px}.td-ps-big .td-social-stumbleupon .td-icon-stumbleupon{left:-2px}.td-ps-big .td-social-digg .td-icon-digg{left:-1px;font-size:25px}.td-ps-big .td-social-vk .td-icon-vk{left:-1px}.td-ps-big .td-social-naver .td-icon-naver{left:0}.td-ps-big .td-social-gettr .td-icon-gettr{left:-1px}.td-ps-big .td-social-copy_url .td-icon-copy_url{left:0;font-size:25px}.td-ps-big .td-social-copy_url-check{font-size:18px}.td-ps-big .td-social-but-text{margin-left:0;padding-top:0;padding-left:17px}.td-ps-big.td-ps-notext .td-social-network,.td-ps-big.td-ps-notext .td-social-handler{height:60px}.td-ps-big.td-ps-notext .td-social-network{width:60px}.td-ps-big.td-ps-notext .td-social-network .td-social-but-icon{width:60px}.td-ps-big.td-ps-notext .td-social-share-text .td-social-but-icon{line-height:40px}.td-ps-big.td-ps-notext .td-social-share-text .td-social-but-text{display:block;line-height:1}.td-ps-big.td-ps-padding .td-social-network,.td-ps-big.td-ps-padding .td-social-handler{height:90px;font-size:13px}.td-ps-big.td-ps-padding .td-social-network{min-width:60px}.td-ps-big.td-ps-padding .td-social-but-icon{border-bottom-left-radius:0;border-top-right-radius:2px}.td-ps-big.td-ps-padding.td-ps-bar .td-social-but-icon{-webkit-box-shadow:none;box-shadow:none}.td-ps-big.td-ps-padding .td-social-but-text{display:block;padding-bottom:17px;line-height:1;border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:2px}.td-ps-big.td-ps-padding .td-social-but-text:before{display:none}.td-ps-big.td-ps-padding .td-social-expand-tabs i{line-height:90px}.td-ps-nogap{margin-left:0;margin-right:0}.td-ps-nogap .td-social-network,.td-ps-nogap .td-social-handler{margin-left:0;margin-right:0;border-radius:0}.td-ps-nogap .td-social-network .td-social-but-icon,.td-ps-nogap .td-social-network .td-social-but-text{border-radius:0}.td-ps-nogap .td-social-expand-tabs{border-radius:0}.td-post-sharing-style7 .td-social-network .td-social-but-icon{height:100%}.td-post-sharing-style7 .td-social-network .td-social-but-icon:before{content:'';position:absolute;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,0.31)}.td-post-sharing-style7 .td-social-network .td-social-but-text{padding-left:17px}.td-post-sharing-style7 .td-social-network .td-social-but-text:before{display:none}.td-post-sharing-style7 .td-social-mail .td-social-but-icon:before,.td-post-sharing-style7 .td-social-digg .td-social-but-icon:before,.td-post-sharing-style7 .td-social-copy_url .td-social-but-icon:before{background-color:rgba(255,255,255,0.2)}.td-post-sharing-style7 .td-social-print .td-social-but-icon:before{background-color:rgba(255,255,255,0.1)}@media (max-width:767px){.td-post-sharing-style1 .td-social-share-text .td-social-but-text,.td-post-sharing-style3 .td-social-share-text .td-social-but-text,.td-post-sharing-style5 .td-social-share-text .td-social-but-text,.td-post-sharing-style14 .td-social-share-text .td-social-but-text,.td-post-sharing-style16 .td-social-share-text .td-social-but-text{display:none!important}}@media (max-width:767px){.td-post-sharing-style2 .td-social-share-text,.td-post-sharing-style4 .td-social-share-text,.td-post-sharing-style6 .td-social-share-text,.td-post-sharing-style7 .td-social-share-text,.td-post-sharing-style15 .td-social-share-text,.td-post-sharing-style17 .td-social-share-text,.td-post-sharing-style18 .td-social-share-text,.td-post-sharing-style19 .td-social-share-text,.td-post-sharing-style20 .td-social-share-text{display:none!important}}</style>
<div class="td-post-sharing-visible"><a class="td-social-sharing-button td-social-sharing-button-js td-social-network td-social-facebook" href="https://www.facebook.com/sharer.php?u=https%3A%2F%2Fwww.linux.com%2Fnews%2Fhow-digit-created-high-availability-public-cloud-keep-its-games-running%2F" title="Facebook" ><div class="td-social-but-icon"><i class="td-icon-facebook"></i></div><div class="td-social-but-text">Facebook</div></a><a class="td-social-sharing-button td-social-sharing-button-js td-social-network td-social-twitter" href="https://x.com/intent/post?text=How+DIGIT+Created+High+Availability+on+the+Public+Cloud+to+Keep+Its+Games+Running&url=https%3A%2F%2Fwww.linux.com%2Fnews%2Fhow-digit-created-high-availability-public-cloud-keep-its-games-running%2F&via=Linux.com" title="X" ><div class="td-social-but-icon"><i class="td-icon-twitter"></i></div><div class="td-social-but-text">X</div></a><a class="td-social-sharing-button td-social-sharing-button-js td-social-network td-social-pinterest" href="https://pinterest.com/pin/create/button/?url=https://www.linux.com/news/how-digit-created-high-availability-public-cloud-keep-its-games-running/&amp;media=https://www.linux.com/wp-content/uploads/2019/08/digit-game-apps.png&description=How+DIGIT+Created+High+Availability+on+the+Public+Cloud+to+Keep+Its+Games+Running" title="Pinterest" ><div class="td-social-but-icon"><i class="td-icon-pinterest"></i></div><div class="td-social-but-text">Pinterest</div></a><a class="td-social-sharing-button td-social-sharing-button-js td-social-network td-social-whatsapp" href="https://api.whatsapp.com/send?text=How+DIGIT+Created+High+Availability+on+the+Public+Cloud+to+Keep+Its+Games+Running %0A%0A https://www.linux.com/news/how-digit-created-high-availability-public-cloud-keep-its-games-running/" title="WhatsApp" ><div class="td-social-but-icon"><i class="td-icon-whatsapp"></i></div><div class="td-social-but-text">WhatsApp</div></a><a class="td-social-sharing-button td-social-sharing-button-js td-social-network td-social-linkedin" href="https://www.linkedin.com/shareArticle?mini=true&url=https://www.linux.com/news/how-digit-created-high-availability-public-cloud-keep-its-games-running/&title=How+DIGIT+Created+High+Availability+on+the+Public+Cloud+to+Keep+Its+Games+Running" title="Linkedin" ><div class="td-social-but-icon"><i class="td-icon-linkedin"></i></div><div class="td-social-but-text">Linkedin</div></a><a class="td-social-sharing-button td-social-sharing-button-js td-social-network td-social-reddit" href="https://reddit.com/submit?url=https://www.linux.com/news/how-digit-created-high-availability-public-cloud-keep-its-games-running/&title=How+DIGIT+Created+High+Availability+on+the+Public+Cloud+to+Keep+Its+Games+Running" title="ReddIt" ><div class="td-social-but-icon"><i class="td-icon-reddit"></i></div><div class="td-social-but-text">ReddIt</div></a><a class="td-social-sharing-button td-social-sharing-button-js td-social-network td-social-mail" href="mailto:?subject=How DIGIT Created High Availability on the Public Cloud to Keep Its Games Running&body=https://www.linux.com/news/how-digit-created-high-availability-public-cloud-keep-its-games-running/" title="Email" ><div class="td-social-but-icon"><i class="td-icon-mail"></i></div><div class="td-social-but-text">Email</div></a></div><div class="td-social-sharing-hidden"><ul class="td-pulldown-filter-list"></ul><a class="td-social-sharing-button td-social-handler td-social-expand-tabs" href="#" data-block-uid="td_social_sharing_article_top" title="More">
<div class="td-social-but-icon"><i class="td-icon-plus td-social-expand-tabs-icon"></i></div>
</a></div></div></div>
<div class="td-post-content tagdiv-type">
<p><span><span>The mobile gaming company must deliver a seamless experience for its gamers and allow for spikes in player activity on its Massively Multiplayer Online gaming platform. That’s why the company built a high-availability infrastructure that runs on </span><span>Amazon Web Services (AWS) </span><span>and allows them to launch a cluster in less than 5 minutes using Apache Mesos.</span></span></p>
<p><span><span>“</span><span>We want to enable developers to iterate fast on their ideas and to be able to deploy new code changes as fast as possible,” </span><span>say DevOps engineer Emmanuel Rieg and build and release engineer Ross McKinley, below. </span><span>&nbsp;“We&#8217;re aiming at deploying multiple times a week, whenever a given feature is stable or bug is fixed.” </span></span></p>
<p><span><span>Rieg and McKinley will </span><a href="https://mesosconeu2016.sched.org/event/7n8A"><span>give a talk next week at MesosCon Europe </span></a><span>on how they went from a blank canvas AWS account to a fully functional PaaS, to set up their immutable infrastructure. &nbsp;</span><span>Here they give a short preview of their talk and share tips for developing on top of Mesos.</span></span></p>
<p>
<figure class="wp-block-image"><img decoding="async" src="https://lcom.static.linuxfound.org/sites/lcom/files/emmanuel-rieg.jpg" alt=""/>
<figcaption>Emmanuel Rieg</figcaption>
</figure>
<strong><span><span>Linux.com: Why do you build your applications on AWS?</span></span></strong></p>
<p><span><span>Emmanuel &amp; Ross: We are very impressed by the diversity of services offered by Amazon. This is coupled with good AWS support in other tools we use. Developer friendliness is really important to us. The ability to run our cluster in an isolated environment (VPC) was a deciding factor.</span></span></p>
<p><strong><span><span>Linux.com: How do you create high availability on the public cloud?</span></span></strong></p>
<p><span><span>Emmanuel &amp; Ross: HA is achievable on the public cloud. In our case, we couple redundancy across Availability Zone (AZ) with monitoring and autonomous systems to ensure our games can keep running. Using only one AZ will not ensure HA, as that entire zone could fail for a short time. </span><span>Each of our applications runs in multiple containers at the same time. They&#8217;re are all being monitored to handle current load. When one container is down, another takes its place. The same applies for all parts of our infrastructure. All services are autoscaling and behind a service discovery system. On top of this, nodes in our cluster are deployed across multiple AZs, each of which being an isolated network with its own NAT gateway. This way we can survive a whole zone going down.</span></span></p>
<p>
<figure class="wp-block-image"><img decoding="async" src="https://lcom.static.linuxfound.org/sites/lcom/files/ross-mckinley.jpg" alt=""/>
<figcaption>Ross McKinley</figcaption>
</figure>
</p>
<p><strong>Linux.com: What role does Mesos play in your infrastructure?</strong></p>
<p>Emmanuel &amp; Ross: Mesos is the foundation we use to run all of our environments. This allows us to scale quickly, handle spikes in players gracefully, and enables our tech teams to develop with velocity.</p>
<p><strong><span><span>Linux.com: Why is speed (i.e., launching a cluster in under 5 minutes) important to your business?</span></span></strong></p>
<p><span><span>Emmanuel &amp; Ross: As we use an Immutable Infrastructure, many components can be affected when performing large updates. Keeping the feedback loop short on infrastructure changes enables us to react to problems and deploy fixes with minimal user impact.</span></span></p>
<p><span><span>We want to enable developers to iterate fast on their ideas and to be able to deploy new code changes as fast as possible.We&#8217;re aiming at deploying multiple times a week, whenever a given feature is stable or bug is fixed. This also enables us to roll back awry deployments.</span></span></p>
<p><strong><span><span>Linux.com: What is your top tip for creating development environments on top of Mesos?</span></span></strong></p>
<p><span><span>Emmanuel &amp; Ross: Have a comprehensive Monitoring solution, automate everything, and codify your infrastructure.</span></span></p>
<p><span><span>Good monitoring is the key to a successful development environment. Without Monitoring, you’re flying blind and will have a hard time tracking down issues.</span></span></p>
<p><span><span>A fully automated continuous delivery system for validating and pushing changes makes it easy to ensure that bad practices, like manual intervention and works-of-art, are avoided.</span></span></p>
<p><span><span>Infrastructure-as-Code is mandatory to prevent servers and infrastructure becoming a work-of-art which cannot be replicated. Treat your servers as cattle, each one is fully replaceable at any time.</span></span></p>
<p>&nbsp;</p>
<p><span><span>Join the Apache Mesos community at </span><a href="http://events.linuxfoundation.org/events/mesoscon-europe"><span>MesosCon Europe</span></a><span> on Aug. 31 &#8211; Sept. 1, 2016! Look forward to 40+ talks from users, developers and maintainers deploying Apache Mesos including Netflix, Apple, Twitter and others. </span><a href="http://events.linuxfoundation.org/events/mesoscon-europe/attend/register"><span>Register now</span></a><span>.</span></span></p>
<p><em><span><span>Apache, Apache Mesos, and Mesos are either registered trademarks or trademarks of the Apache Software Foundation (ASF) in the United States and/or other countries. MesosCon is run in partnership with the ASF</span></span></em></p>
<div>&nbsp;</div>
</div>
<footer>
<div class="td-post-source-tags">
</div>
<div class="td-block-row td-post-next-prev"><div class="td-block-span6 td-post-prev-post"><div class="td-post-next-prev-content"><span>Previous article</span><a href="https://www.linux.com/news/be-bold-be-curious-and-be-open-advise-outreachy-participants/">Be Bold, Be Curious, and Be Open, Advise Outreachy Participants</a></div></div><div class="td-next-prev-separator"></div><div class="td-block-span6 td-post-next-post"><div class="td-post-next-prev-content"><span>Next article</span><a href="https://www.linux.com/news/red-hat-updates-its-kernel-based-virtual-machine/">Red Hat Updates its Kernel-based Virtual Machine</a></div></div></div> <div class="author-box-wrap"><a href="https://www.linux.com/author/libbyclark/" aria-label="author-photo"><img alt='Libby Clark' src='https://secure.gravatar.com/avatar/?s=96&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/?s=192&#038;d=mm&#038;r=g 2x' class='avatar avatar-96 photo avatar-default' height='96' width='96' decoding='async'/></a><div class="desc"><div class="td-author-name vcard author"><span class="fn"><a href="https://www.linux.com/author/libbyclark/">Libby Clark</a></span></div><div class="td-author-description"></div><div class="td-author-social"></div><div class="clearfix"></div></div></div> <span class="td-page-meta" itemprop="author" itemscope itemtype="https://schema.org/Person"><meta itemprop="name" content="Libby Clark"><meta itemprop="url" content="https://www.linux.com/author/libbyclark/"></span><meta itemprop="datePublished" content="2016-08-24T07:00:58-07:00"><meta itemprop="dateModified" content="2019-08-08T13:39:00-07:00"><meta itemscope itemprop="mainEntityOfPage" itemType="https://schema.org/WebPage" itemid="https://www.linux.com/news/how-digit-created-high-availability-public-cloud-keep-its-games-running/"/><span class="td-page-meta" itemprop="publisher" itemscope itemtype="https://schema.org/Organization"><span class="td-page-meta" itemprop="logo" itemscope itemtype="https://schema.org/ImageObject"><meta itemprop="url" content="https://www.linux.com/wp-content/uploads/2019/08/ldc-white-272.png"></span><meta itemprop="name" content="Linux.com"></span><meta itemprop="headline " content="How DIGIT Created High Availability on the Public Cloud to Keep Its Games Running"><span class="td-page-meta" itemprop="image" itemscope itemtype="https://schema.org/ImageObject"><meta itemprop="url" content="https://www.linux.com/wp-content/uploads/2019/08/digit-game-apps.png"><meta itemprop="width" content="800"><meta itemprop="height" content="457"></span> </footer>
</article> <!-- /.post -->
<div class="td_block_wrap td_block_related_posts td-related-full-width tdi_2 td_with_ajax_pagination td-pb-border-top td_block_template_4" data-td-block-uid="tdi_2" ><script>var block_tdi_2 = new tdBlock();
block_tdi_2.id = "tdi_2";
block_tdi_2.atts = '{"limit":5,"ajax_pagination":"next_prev","live_filter":"cur_post_same_categories","td_ajax_filter_type":"td_custom_related","class":"td-related-full-width tdi_2","td_column_number":5,"block_type":"td_block_related_posts","live_filter_cur_post_id":476250,"live_filter_cur_post_author":"0","block_template_id":"","header_color":"","ajax_pagination_infinite_stop":"","offset":"","td_ajax_preloading":"","td_filter_default_txt":"","td_ajax_filter_ids":"","el_class":"","color_preset":"","ajax_pagination_next_prev_swipe":"","border_top":"","css":"","tdc_css":"","tdc_css_class":"tdi_2","tdc_css_class_style":"tdi_2_rand_style"}';
block_tdi_2.td_column_number = "5";
block_tdi_2.block_type = "td_block_related_posts";
block_tdi_2.post_count = "5";
block_tdi_2.found_posts = "101776";
block_tdi_2.header_color = "";
block_tdi_2.ajax_pagination_infinite_stop = "";
block_tdi_2.max_num_pages = "20356";
tdBlocksArray.push(block_tdi_2);
</script><h4 class="td-related-title td-block-title"><a id="tdi_3" class="td-related-left td-cur-simple-item" data-td_filter_value="" data-td_block_id="tdi_2" href="#">RELATED ARTICLES</a><a id="tdi_4" class="td-related-right" data-td_filter_value="td_related_more_from_author" data-td_block_id="tdi_2" href="#">MORE FROM AUTHOR</a></h4><div id=tdi_2 class="td_block_inner">
<div class="td-related-row">
<div class="td-related-span4">
<div class="td_module_related_posts td-animation-stack td_mod_related_posts">
<div class="td-module-image">
<div class="td-module-thumb"><a href="https://www.linux.com/news/shopifys-tangle-and-tangent/" rel="bookmark" class="td-image-wrap " title="Building Autonomous ML Experimentation with Tangle and Tangent" ><img width="218" height="150" class="entry-thumb" src="https://www.linux.com/wp-content/plugins/td-composer/legacy/Newspaper/assets/images/no-thumb/td_218x150.png" alt="" /></a></div> </div>
<div class="item-details">
<h3 class="entry-title td-module-title"><a href="https://www.linux.com/news/shopifys-tangle-and-tangent/" rel="bookmark" title="Building Autonomous ML Experimentation with Tangle and Tangent">Building Autonomous ML Experimentation with Tangle and Tangent</a></h3> </div>
</div>
</div> <!-- ./td-related-span4 -->
<div class="td-related-span4">
<div class="td_module_related_posts td-animation-stack td_mod_related_posts">
<div class="td-module-image">
<div class="td-module-thumb"><a href="https://www.linux.com/news/celebrating-the-second-year-of-linux-man-pages-maintenance-sponsorship/" rel="bookmark" class="td-image-wrap " title="Celebrating the Second Year of Linux Man-Pages Maintenance Sponsorship" ><img width="218" height="150" class="entry-thumb" src="https://www.linux.com/wp-content/uploads/2026/01/Celebrating-the-Second-Year-of-Linux-Man-Pages-Maintenance-Sponsorship-218x150.png" srcset="https://www.linux.com/wp-content/uploads/2026/01/Celebrating-the-Second-Year-of-Linux-Man-Pages-Maintenance-Sponsorship-218x150.png 218w, https://www.linux.com/wp-content/uploads/2026/01/Celebrating-the-Second-Year-of-Linux-Man-Pages-Maintenance-Sponsorship-100x70.png 100w" sizes="(max-width: 218px) 100vw, 218px" alt="Celebrating the Second Year of Linux Man-Pages Maintenance Sponsorship" title="Celebrating the Second Year of Linux Man-Pages Maintenance Sponsorship" /></a></div> </div>
<div class="item-details">
<h3 class="entry-title td-module-title"><a href="https://www.linux.com/news/celebrating-the-second-year-of-linux-man-pages-maintenance-sponsorship/" rel="bookmark" title="Celebrating the Second Year of Linux Man-Pages Maintenance Sponsorship">Celebrating the Second Year of Linux Man-Pages Maintenance Sponsorship</a></h3> </div>
</div>
</div> <!-- ./td-related-span4 -->
<div class="td-related-span4">
<div class="td_module_related_posts td-animation-stack td_mod_related_posts">
<div class="td-module-image">
<div class="td-module-thumb"><a href="https://www.linux.com/topic/cloud/kubernetes-on-bare-metal-for-maximum-performance/" rel="bookmark" class="td-image-wrap " title="Kubernetes on Bare Metal for Maximum Performance" ><img width="218" height="150" class="entry-thumb" src="https://www.linux.com/wp-content/plugins/td-composer/legacy/Newspaper/assets/images/no-thumb/td_218x150.png" alt="" /></a></div> </div>
<div class="item-details">
<h3 class="entry-title td-module-title"><a href="https://www.linux.com/topic/cloud/kubernetes-on-bare-metal-for-maximum-performance/" rel="bookmark" title="Kubernetes on Bare Metal for Maximum Performance">Kubernetes on Bare Metal for Maximum Performance</a></h3> </div>
</div>
</div> <!-- ./td-related-span4 -->
<div class="td-related-span4">
<div class="td_module_related_posts td-animation-stack td_mod_related_posts">
<div class="td-module-image">
<div class="td-module-thumb"><a href="https://www.linux.com/news/how-to-deploy-lightweight-language-models-on-embedded-linux-with-litellm/" rel="bookmark" class="td-image-wrap " title="How to Deploy Lightweight Language Models on Embedded Linux with LiteLLM" ><img width="218" height="150" class="entry-thumb" src="https://www.linux.com/wp-content/plugins/td-composer/legacy/Newspaper/assets/images/no-thumb/td_218x150.png" alt="" /></a></div> </div>
<div class="item-details">
<h3 class="entry-title td-module-title"><a href="https://www.linux.com/news/how-to-deploy-lightweight-language-models-on-embedded-linux-with-litellm/" rel="bookmark" title="How to Deploy Lightweight Language Models on Embedded Linux with LiteLLM">How to Deploy Lightweight Language Models on Embedded Linux with LiteLLM</a></h3> </div>
</div>
</div> <!-- ./td-related-span4 -->
<div class="td-related-span4">
<div class="td_module_related_posts td-animation-stack td_mod_related_posts">
<div class="td-module-image">
<div class="td-module-thumb"><a href="https://www.linux.com/news/automating-compliance-management-with-utmstacks-open-source-siem-xdr/" rel="bookmark" class="td-image-wrap " title="Automating Compliance Management with UTMStack&#8217;s Open Source SIEM &amp; XDR" ><img width="218" height="150" class="entry-thumb" src="https://www.linux.com/wp-content/uploads/2025/05/thumbnail-218x150.png" srcset="https://www.linux.com/wp-content/uploads/2025/05/thumbnail-218x150.png 218w, https://www.linux.com/wp-content/uploads/2025/05/thumbnail-100x70.png 100w" sizes="(max-width: 218px) 100vw, 218px" alt="Regulation Compliance Image" title="Automating Compliance Management with UTMStack&#8217;s Open Source SIEM &amp; XDR" /></a></div> </div>
<div class="item-details">
<h3 class="entry-title td-module-title"><a href="https://www.linux.com/news/automating-compliance-management-with-utmstacks-open-source-siem-xdr/" rel="bookmark" title="Automating Compliance Management with UTMStack&#8217;s Open Source SIEM &amp; XDR">Automating Compliance Management with UTMStack&#8217;s Open Source SIEM &amp; XDR</a></h3> </div>
</div>
</div> <!-- ./td-related-span4 --></div><!--./row-fluid--></div><div class="td-next-prev-wrap"><a href="#" class="td-ajax-prev-page ajax-page-disabled" aria-label="prev-page" id="prev-page-tdi_2" data-td_block_id="tdi_2"><i class="td-next-prev-icon td-icon-font td-icon-menu-left"></i></a><a href="#" class="td-ajax-next-page" aria-label="next-page" id="next-page-tdi_2" data-td_block_id="tdi_2"><i class="td-next-prev-icon td-icon-font td-icon-menu-right"></i></a></div></div> <!-- ./block -->
</div>
</div>
</div> <!-- /.td-pb-row -->
</div> <!-- /.td-container -->
</div> <!-- /.td-main-content-wrap -->
<div class="tdc-footer-wrap ">
<!-- Footer -->
<!-- Sub Footer -->
<div class="td-sub-footer-container td-container-wrap ">
<div class="td-container">
<div class="td-pb-row">
<div class="td-pb-span td-sub-footer-menu">
</div>
<div class="td-pb-span td-sub-footer-copy">
<div class="td-pb-row">
<div class="td-pb-span10">
<aside class="footer-text-wrap">
Copyright © 2026 The Linux Foundation®. All rights reserved. The Linux Foundation has registered trademarks and uses trademarks. For a list of trademarks of The Linux Foundation, please see our <a href="https://www.linuxfoundation.org/trademark-usage">Trademark Usage</a> page. Linux is a registered trademark of Linus Torvalds.
</aside>
</div>
<div class="td-pb-span2">
<a target="_blank" href="https://twitter.com/linuxdotcom" title="Twitter">
<i class="td-icon-font td-icon-twitter"></i>
</a>
</div>
</div> </div>
</div>
</div>
</div>
</div><!--close td-footer-wrap-->
</div><!--close td-outer-wrap-->
<script type="speculationrules">
{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/Newspaper-child/*","/wp-content/themes/Newspaper/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}
</script>
<!-- GTM Container placement set to footer -->
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-NXGNZW" height="0" width="0" style="display:none;visibility:hidden" aria-hidden="true"></iframe></noscript>
<!-- End Google Tag Manager (noscript) --><style type="text/css">
/* Hide reCAPTCHA V3 badge */
.grecaptcha-badge {
visibility: hidden !important;
}
</style>
<!--
Theme: Newspaper by tagDiv.com 2026
Version: 12.7.7 (rara)
Deploy mode: deploy
uid: 6aa36b15ed3a7
-->
<!-- Custom css from theme panel -->
<style type="text/css" media="screen">.td-grid-style-2 .td-big-grid-post-0 .td-module-thumb a:last-child:before,.td-grid-style-3 .td-big-grid-post-0 .td-module-thumb a:last-child:before{background:linear-gradient(45deg,#4db2ec 0%,#4a8f5e 100%)}.td-grid-style-3 .td-module-thumb a:last-child:before{opacity:0.2}.td-header-style-6 .td-header-menu-social{margin-left:44px;margin-right:44px;line-height:80px}.td-header-menu-social .td-social-icon-wrap i{font-size:20px}.td-pb-span.td-sub-footer-copy i.td-icon-font.td-icon-twitter{font-size:20px;padding:10px!important;display:inline-block}.td-scroll-up.td-hide-scroll-up-on-mob{display:none}</style>
<script id="mpp_gutenberg_tabs-js" src="https://www.linux.com/wp-content/plugins/profile-builder/add-ons-free/user-profile-picture/js/mpp-frontend.js?ver=2.6.0"></script>
<script id="gtm4wp-form-move-tracker-js" src="https://www.linux.com/wp-content/plugins/duracelltomi-google-tag-manager/dist/js/gtm4wp-form-move-tracker.js?ver=1.22.5"></script>
<script id="td-site-min-js" src="https://www.linux.com/wp-content/plugins/td-composer/legacy/Newspaper/js/tagdiv_theme.min.js?ver=12.7.7"></script>
<script id="tdPostImages-js" src="https://www.linux.com/wp-content/plugins/td-composer/legacy/Newspaper/js/tdPostImages.js?ver=12.7.7"></script>
<script id="tdSocialSharing-js" src="https://www.linux.com/wp-content/plugins/td-composer/legacy/Newspaper/js/tdSocialSharing.js?ver=12.7.7"></script>
<script id="tdModalPostImages-js" src="https://www.linux.com/wp-content/plugins/td-composer/legacy/Newspaper/js/tdModalPostImages.js?ver=12.7.7"></script>
<script id="tdb_js_files_for_front-js" src="https://www.linux.com/wp-content/plugins/td-cloud-library/assets/js/js_files_for_front.min.js?ver=43473a7fc489321d36f8d15a34d1be14"></script>
<script id="wp-emoji-settings" type="application/json">
{"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://www.linux.com/wp-includes/js/wp-emoji-release.min.js?ver=7.1"}}
</script>
<script type="module">
/*! This file is auto-generated */
var e="script#wp-emoji-settings",t=document.querySelector(e);if(!(t instanceof HTMLScriptElement))throw new Error("Element missing: "+e);const r=JSON.parse(t.text),s=(window._wpemojiSettings=r,"wpEmojiSettingsSupports"),o=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(s,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const r=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===r[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,r){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!r(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,r){let a;const s=(a="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),o=(s.textBaseline="top",s.font="600 32px Arial",{});return e.forEach(e=>{o[e]=t(s,e,n,r)}),o}function a(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}r.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(s));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(o),u.toString(),c.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"});const a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=e=>{i(n=e.data),a.terminate(),t(n)})}catch(e){}i(n=f(o,u,c,p))}t(n)}).then(e=>{for(const n in e)r.supports[n]=e[n],r.supports.everything=r.supports.everything&&r.supports[n],"flag"!==n&&(r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&r.supports[n]);var t;r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&!r.supports.flag,r.supports.everything||((t=r.source||{}).concatemoji?a(t.concatemoji):t.wpemoji&&t.twemoji&&(a(t.twemoji),a(t.wpemoji)))});
//# sourceURL=https://www.linux.com/wp-includes/js/wp-emoji-loader.min.js
</script>
<script type="text/javascript" src="https://www.linux.com/wp-content/plugins/td-composer/legacy/Newspaper/js/tdToTop.js?ver=12.7.7" id="tdToTop-js"></script>
<script type="text/javascript" src="https://www.linux.com/wp-content/plugins/td-composer/legacy/Newspaper/js/tdLogin.js?ver=12.7.7" id="tdLogin-js"></script>
<script type="text/javascript" src="https://www.linux.com/wp-content/plugins/td-composer/legacy/Newspaper/js/tdMenu.js?ver=12.7.7" id="tdMenu-js"></script>
<script type="text/javascript" src="https://www.linux.com/wp-content/plugins/td-composer/legacy/Newspaper/js/tdAjaxSearch.js?ver=12.7.7" id="tdAjaxSearch-js"></script>
<script type="text/javascript" src="https://www.linux.com/wp-content/plugins/td-composer/legacy/Newspaper/js/tdLoadingBox.js?ver=12.7.7" id="tdLoadingBox-js"></script>
<script type="text/javascript" src="https://www.linux.com/wp-content/plugins/td-composer/legacy/Newspaper/js/tdAjaxCount.js?ver=12.7.7" id="tdAjaxCount-js"></script>
<!-- JS generated by theme -->
<script type="text/javascript" id="td-generated-footer-js">
jQuery().ready(function jQuery_ready() {
tdAjaxCount.tdGetViewsCountsAjax("post","[476250]");
});
</script>
<script>var td_res_context_registered_atts=[];</script>
<script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"beacon":"bam.nr-data.net","licenseKey":"981d6c8a9f","applicationID":"176909146","transactionName":"ZwZWMhNZXxcFABFaXF5MdQUVUV4KSxAMXVRcBmsSBFVBCAUXAGwG","queueTime":0,"applicationTime":765,"atts":"S0FVRFtDTBk=","errorBeacon":"bam.nr-data.net","agent":""}</script></body>
</html>
<!-- plugin=object-cache-pro client=phpredis metric#hits=4558 metric#misses=14 metric#hit-ratio=99.7 metric#bytes=902174 metric#prefetches=193 metric#store-reads=27 metric#store-writes=7 metric#store-hits=201 metric#store-misses=3 metric#sql-queries=10 metric#ms-total=758.97 metric#ms-cache=38.52 metric#ms-cache-avg=1.1673 metric#ms-cache-ratio=5.1 -->