[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"sanity-I2WbnqeOp8e0iwJAXzyGRBSKRDzfF8IkMmU1BqWcdug":3},{"data":4,"sourceMap":-1},{"info":5,"latest":14,"pinned":97},{"_createdAt":6,"_id":7,"_rev":8,"_type":9,"_updatedAt":6,"descriptionText":10,"slug":11,"title":13},"2023-05-23T16:43:21Z","wp-tagcat-distributed-systems","9HpbCsT2tq0xwozQfkc4ih","blogTag",null,{"current":12},"distributed-systems","distributed systems",[15,50],{"_id":16,"author":17,"commentCount":28,"comments":29,"excerpt":30,"featureTag":10,"image":31,"publishedAt":34,"slug":35,"sponsored":10,"tags":37,"title":49},"wp-post-16961",[18],{"_id":19,"avatar":20,"name":25,"role":10,"slug":26},"wp-author-228",{"_type":21,"asset":22},"image",{"_ref":23,"_type":24},"image-4035d87115e3b0301fe29f95cc8b23a9e6594d9d-1024x1024-jpg","reference","Ryland Goldstein",{"current":27},"rgoldstein",21,true,"In just 20 years, software engineering has shifted from architecting monoliths with a single database and centralized state to microservices where everything is distributed across multiple containers, servers, data centers, and even continents. Distributing things solves scaling concerns, but introduces a whole new world of problems, many of which were previously solved by monoliths. ",{"_type":21,"asset":32},{"_ref":33,"_type":24},"image-a27b3f855cea33b1dbdfb5aa37f53c2037bf30e4-1200x630-png","2020-11-23T14:52:38.000Z",{"current":36},"the-macro-problem-with-microservices",[38,43,45],{"_createdAt":6,"_id":39,"_rev":8,"_type":9,"_updatedAt":6,"slug":40,"title":42},"wp-tagcat-code-for-a-living",{"current":41},"code-for-a-living","Code for a Living",{"_createdAt":6,"_id":7,"_rev":8,"_type":9,"_updatedAt":6,"slug":44,"title":13},{"current":12},{"_createdAt":6,"_id":46,"_rev":8,"_type":9,"_updatedAt":6,"slug":47,"title":48},"wp-tagcat-microservices",{"current":48},"microservices","The macro problem with microservices",{"_id":51,"author":52,"commentCount":61,"comments":29,"excerpt":62,"featureTag":10,"image":63,"publishedAt":66,"slug":67,"sponsored":10,"tags":69,"title":96},"wp-post-15892",[53],{"_id":54,"avatar":55,"name":58,"role":10,"slug":59},"wp-author-cap-15894",{"_type":21,"asset":56},{"_ref":57,"_type":24},"image-897cd1c9e16825dae867c8e14c0b400113dd4119-40x40-jpg","Michael Pratt",{"current":60},"michael-pratt",3,"The move towards distributed architectures brings lots of benefits: easier testing, smaller deployable units, looser decoupling, smaller failure surfaces, to name a few. But it also brings its own set of challenges. How can a set of services evolve together in a way that doesn’t break the system? ",{"_type":21,"asset":64},{"_ref":65,"_type":24},"image-e793c7670727984ab780dca622aa0e274be166ce-2291x1309-jpg","2020-05-13T14:09:47.000Z",{"current":68},"ensuring-backwards-compatibility-in-distributed-systems",[70,75,77,79,83,85,90,92],{"_createdAt":6,"_id":71,"_rev":8,"_type":9,"_updatedAt":6,"slug":72,"title":74},"wp-tagcat-bulletin",{"current":73},"bulletin","Bulletin",{"_createdAt":6,"_id":71,"_rev":8,"_type":9,"_updatedAt":6,"slug":76,"title":74},{"current":73},{"_createdAt":6,"_id":39,"_rev":8,"_type":9,"_updatedAt":6,"slug":78,"title":42},{"current":41},{"_createdAt":6,"_id":80,"_rev":8,"_type":9,"_updatedAt":6,"slug":81,"title":82},"wp-tagcat-compatibility",{"current":82},"compatibility",{"_createdAt":6,"_id":7,"_rev":8,"_type":9,"_updatedAt":6,"slug":84,"title":13},{"current":12},{"_createdAt":6,"_id":86,"_rev":8,"_type":9,"_updatedAt":6,"slug":87,"title":89},"wp-tagcat-stackoverflow",{"current":88},"stackoverflow","Stackoverflow",{"_createdAt":6,"_id":86,"_rev":8,"_type":9,"_updatedAt":6,"slug":91,"title":89},{"current":88},{"_createdAt":6,"_id":93,"_rev":8,"_type":9,"_updatedAt":6,"slug":94,"title":95},"wp-tagcat-upgrading",{"current":95},"upgrading","Ensuring backwards compatibility in distributed systems",[]]