<!--DEBUG:--><!--DEBUG:dc3-united-states-software-in-english-pdf-2--><!--DEBUG:--><!--DEBUG:dc3-united-states-software-in-english-pdf-2--><!--DEBUG-spv-->{"id":473826,"date":"2017-03-12T21:43:00","date_gmt":"2017-03-12T17:43:00","guid":{"rendered":"http:\/\/nhub.news\/?p=473826"},"modified":"2017-03-13T00:18:42","modified_gmt":"2017-03-12T22:18:42","slug":"from-microliths-to-microsystems-jonas-boner-at-qcon-london","status":"publish","type":"post","link":"http:\/\/nhub.news\/fr\/2017\/03\/from-microliths-to-microsystems-jonas-boner-at-qcon-london\/","title":{"rendered":"From Microliths to Microsystems: Jonas Bon\u00e9r at QCon London"},"content":{"rendered":"<p style=\"text-align: justify;\"><b>At QCon London, Jonas Bon\u00e9r, CTO at Lightbend, presented \u201cFrom Microliths to Microsystems\u201d, and explored microservices from first principles, and discussing the architectural style in the context of distributed systems. Key takeaways included: avoid building \u2018microliths\u2019, and instead create systems that are&#8230;<\/b> <br \/>At QCon London , Jonas Bon\u00e9r , CTO at Lightbend, presented &lsquo; From Microliths to Microsystems &lsquo;. Bon\u00e9r explored microservices from first principles, and discussing the architectural style in the context of distributed systems. Key takeaways included: avoid building mini-monoliths, or so-called &lsquo;microliths&rsquo;, and instead create systems that are resilient and elastic; minimise coupling and communication within system; &#8217;embrace reality&rsquo; by utilising reactive programming, reactive system design and eventual consistency; stateless behaviour should be separated from the stateful entity to enable easier scalability; and practice events-first Domain-Driven Design (DDD). <br \/>Bon\u00e9r began the talk by stating that \u00ab\u00a0we have been spoiled by the [design simplicity of the] almighty monolith\u00a0\u00bb, but the challenges of scaling development activities around a monolithic codebase mean that embracing the microservice architectural style is now &lsquo;becoming a necessary evil&rsquo; for many organisations. Microservices are effectively distributed systems, and developers must design both individual microservices and the overall architecture accordingly. <br \/>Much like actor-based applications , which are naturally composed of multiple actors to accomplish any arbitrarily complex task, a microservice-based application should be designed as a distributed system composed of multiple services. <br \/>Each microservice needs to be designed as a distributed system: a microsystem. We need to move from microliths to microsystems <br \/>Bon\u00e9r proposed that many developers are building &lsquo;microliths&rsquo;: a single instance microservices that is not resilient or elastic. Referencing &lsquo; The Reactive Manifesto &lsquo;, the path towards resilience and elasticity includes: <br \/>Bon\u00e9r cautioned that as soon as a developer &lsquo;exits the service&rsquo; or interacts with the system outside of a single microservice, a &lsquo;wild ocean of non-determinism&rsquo; is encountered. Systems must exploit reality, such as the speed of light setting boundaries for speed of communication. Quoting Pat Helland , Bon\u00e9r stated that all information has latency, and in effect this means that we are always looking into the past with distributed systems communication. Developers should strive to minimise coupling and communication, and embrace eventual consistency <br \/>We have to rely on eventual consistency. But relax, it&rsquo;s how the world works <br \/>Bon\u00e9r proposed that two helpful tools for designing microservice systems are reactive design and events-first Domain-Driven Design (DDD). Reactive programming, such as RxJava, can help make the individual service instance highly performant and efficient. Reactive systems based on asynchronous message passing can help build distributed systems that are elastic and resilient. Implementing microservices as asynchronous and non-blocking can lead to more efficient use of resources, and minimises contention on shared resources. Always apply back-pressure : a fast systems should not overload a slow system. <br \/>Each microservices should be designed as a distributed system, a &lsquo;microsystem&rsquo;, and stateless behaviour should be separated from the stateful entity, in order to allow individual service scalability. The entity can become a &lsquo;safe island of determinism and strong consistency&rsquo;. However, it should be noted that scaling stateless behaviour is easy, but scaling stateful entities is hard. <br \/>Bon\u00e9r suggested that developers should practice events-first DDD, and think in terms of &lsquo;consistency boundaries&rsquo; with data on the inside representing the current present, data from the outside representing facts from the past, and commands used as future actions. <br \/>Don&rsquo;t focus on the things &#8211; the nouns. Focus on what happens &#8211; the events! Let the events define the bounded context <br \/>A microservice should contain any mutable state and publish facts. Quoting Pat Helland again, Bon\u00e9r discussed event logging, and stated that the event log should be a &lsquo;databased of the past&rsquo; and the single immutable source of truth. Event logging can avoid the infamous object-relational impedance mismatch , and the read and write model (which often have differing requirements) can be untangled with Command Query Responsibility Segregation (CQRS) and Event Sourcing (ES). Developers should not implement large scalable applications assuming distributed transactions , and instead use a protocol of &lsquo;guess, apologise, compensate&rsquo;. Bon\u00e9r stated that this protocol is &lsquo;how the world works&rsquo;, and cited offline ATMs and flight overbooking as examples. <br \/>Bon\u00e9r concluded the talk by briefly discussing the Lightbend Lagom microservices framework, which embodies many of the principles discussed in the talk, and also presented his free O&rsquo;Reilly report &lsquo; Reactive Microservices Architectures: Design Principles for Distributed Systems &lsquo;. The slides for &lsquo; From Microliths to Microsystems &lsquo; can be found in Bon\u00e9r&rsquo;s Slidehare account.<\/p>\n<p><span>\u00a9 Source: <a href=\"http:\/\/www.infoq.com\/news\/2017\/03\/microliths-microsystems?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=news\" target=\"_blank\">http:\/\/www.infoq.com\/news\/2017\/03\/microliths-microsystems?utm_campaign=infoq_content&amp;utm_source=infoq&amp;utm_medium=feed&amp;utm_term=news<\/a><br \/>\nAll rights are reserved and belongs to a source media.<\/span><\/p>\n<script>jQuery(function(){jQuery(\".vc_icon_element-icon\").css(\"top\", \"0px\");});<\/script><script>jQuery(function(){jQuery(\"#td_post_ranks\").css(\"height\", \"10px\");});<\/script><script>jQuery(function(){jQuery(\".td-post-content\").find(\"p\").find(\"img\").hide();});<\/script>","protected":false},"excerpt":{"rendered":"<p>At QCon London, Jonas Bon\u00e9r, CTO at Lightbend, presented \u201cFrom Microliths to Microsystems\u201d, and explored microservices from first principles, and discussing the architectural style in the context of distributed systems. Key takeaways included: avoid building \u2018microliths\u2019, and instead create systems that are&#8230; At QCon London , Jonas Bon\u00e9r , CTO at Lightbend, presented &lsquo; From [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":473825,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[93],"tags":[],"_links":{"self":[{"href":"http:\/\/nhub.news\/fr\/wp-json\/wp\/v2\/posts\/473826"}],"collection":[{"href":"http:\/\/nhub.news\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/nhub.news\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/nhub.news\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/nhub.news\/fr\/wp-json\/wp\/v2\/comments?post=473826"}],"version-history":[{"count":1,"href":"http:\/\/nhub.news\/fr\/wp-json\/wp\/v2\/posts\/473826\/revisions"}],"predecessor-version":[{"id":473827,"href":"http:\/\/nhub.news\/fr\/wp-json\/wp\/v2\/posts\/473826\/revisions\/473827"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/nhub.news\/fr\/wp-json\/wp\/v2\/media\/473825"}],"wp:attachment":[{"href":"http:\/\/nhub.news\/fr\/wp-json\/wp\/v2\/media?parent=473826"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/nhub.news\/fr\/wp-json\/wp\/v2\/categories?post=473826"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/nhub.news\/fr\/wp-json\/wp\/v2\/tags?post=473826"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}