{"id":140,"date":"2019-04-23T10:38:06","date_gmt":"2019-04-23T10:38:06","guid":{"rendered":"https:\/\/www.codemotion.com\/magazine\/welcome-to-the-world-of-micro-apps\/"},"modified":"2021-08-11T16:17:54","modified_gmt":"2021-08-11T14:17:54","slug":"welcome-to-the-world-of-micro-apps","status":"publish","type":"post","link":"https:\/\/www.codemotion.com\/magazine\/frontend\/welcome-to-the-world-of-micro-apps\/","title":{"rendered":"Welcome to the world of micro-apps"},"content":{"rendered":"<p><span class=\"firstcharacter\">T<\/span>he architecture of microservices seems to be becoming extremely popular among backend applications these days. But what about the frontend side? We can clearly see that frontend applications are growing very fast in terms of <span id=\"urn:batch-analysis-711ca9ed-9c50-4eac-8930-10bc8bf45286\" class=\"textannotation disambiguated wl-no-link wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/business_logic\">business logic<\/span> and bundle size. Let\u2019s see what can happen if we try to apply the architecture of microservices on the frontend side.<\/p>\n<p>I heard about this concept of micro-apps at the conference <a href=\"https:\/\/events.codemotion.com\/conferences\/amsterdam\/2019\/\" target=\"_blank\" rel=\"noopener noreferrer\">Codemotion Amsterdam 2019<\/a>. The talk was given by <a href=\"https:\/\/events.codemotion.com\/conferences\/amsterdam\/2019\/speaker\/1740\/\" target=\"_blank\" rel=\"noopener noreferrer\">Sander Hoogendoorn<\/a> and it was called \u201cWelcome to the world of micro-apps\u201d.<\/p>\n<h2>Did it mean microservices?<\/h2>\n<p>Not really. But before we start talking about micro-apps, let\u2019s remember microservices. A few years ago, quite a strong trend started in the backend world; many developers and companies started switching from big monolithic backend applications to so-called microservices.<\/p>\n<p>Microservice is a very small standalone application which has very limited scope and responsibilities. It usually has separate storage and can communicate with other <a href=\"https:\/\/www.codemotion.com\/magazine\/uncategorized\/microservices-for-ecommerce-stores-performance-cx\/\" target=\"_blank\" rel=\"noopener\">microservices<\/a> in order to get data from another scope. In this case, the frontend application communicates with each microservice directly or via proxy API (gateway). This concept has a number of benefits compared to the monolithic architecture. You can especially notice them in large enterprise projects. For example, it\u2019s getting much easier to test, maintain and deploy each microservice separately and that leads to more regular and smooth releases. RIsk of breaking the whole application decreases as well. If we check the speed of changes, we might end up with something like this for monolith application:<\/p>\n<p><img decoding=\"async\" class=\"aligncenter wp-image-2474 size-full\" src=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/HtTC2_LI.png\" alt=\"\" \/><\/p>\n<p>Compared to this situation in the case of microservices architecture:<\/p>\n<p><img decoding=\"async\" class=\"aligncenter wp-image-2474 size-full\" src=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/wUPfkcF4.png\" alt=\"\" \/><\/p>\n<p>But at the same time, it becomes more difficult to share common code between the microservices. As always, there is no single right way here, there is a trade-off. Anyway, it\u2019s considered a very common architecture on a backend side nowadays and developers seem quite optimistic about this pattern.<\/p>\n<h2>But what do you mean by micro-apps?<\/h2>\n<p>If you look at the situation on the frontend side you can see that applications there also become more and more complex and heavy. And it becomes harder to maintain them. Of course, you can say that we have NPM registries where we can publish our custom modules and then use them in <span id=\"urn:batch-analysis-ac72e8eb-05da-4fa1-9a6b-4ce8ee91e33b\" class=\"textannotation disambiguated wl-no-link wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/project\">projects<\/span>. It helps, but only partially. For example, you can\u2019t re-deploy only your module to see its changes in production, the whole application also needs to be re-deployed.<\/p>\n<p>And here we come to the idea of micro-apps. It\u2019s relatively simple &#8211; taking the microservices approach and applying it to a frontend application. So we want to split our frontend monolith into many different apps, each of them running in a separate process and communicating to other apps, let\u2019s say, by the HTTP protocol. Here is how the frontend architecture will look like then:<\/p>\n<p><img decoding=\"async\" class=\"aligncenter wp-image-2474 size-full\" src=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/DJXCKZNg.png\" alt=\"\" \/><\/p>\n<p>As you see on the slide, our frontend flow has multiple \u201csteps\u201d and each step we consider as a micro-app. We have already defined that, with the micro-apps approach, we\u2019ll have a number of positive effects to the architecture, but how can we actually implement it? Clearly, it\u2019s something new for us, so probably we\u2019ll face some challenges. Let\u2019s look more precisely at what difficulties will appear with the new <span id=\"urn:batch-analysis-6feaf3d0-59f9-4c44-aa03-99981579d9ab\" class=\"textannotation disambiguated wl-no-link wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/strategy\">strategy<\/span> and what options web developers have.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter wp-image-2474 size-full\" src=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/GR7GCWCQ.png\" alt=\"\" \/><\/p>\n<p>The main question is quite obvious and wide: how to break up the monolith and what architecture should be in our micro-applications? According to the concept of micro-apps, there are different levels of granularity:<\/p>\n<p><img decoding=\"async\" class=\"aligncenter wp-image-2474 size-full\" src=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/sitr0CpI.png\" alt=\"\" \/><\/p>\n<p>Following the idea, a monolith should be split by the middle level of granularity, so-called <strong>OTOPOP<\/strong> (One Time, One Place, One Person). This level defines <span id=\"urn:batch-analysis-d095a115-7ecb-4a80-9488-d21d632c926c\" class=\"textannotation disambiguated wl-no-link wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/feature_machine_learning\">features<\/span> and it\u2019s exactly what we need. Each application\u2019s feature will become a separate micro-application.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter wp-image-2474 size-full\" src=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/4vVhGpec.png\" alt=\"\" \/><\/p>\n<p>Now let\u2019s see how we going to split the micro-app, what its high-level architecture will look like. Here are key parts of the architecture:<\/p>\n<ul>\n<li><span id=\"urn:batch-analysis-fe30309e-7a75-4cc1-98db-eff70dbe00a5\" class=\"textannotation disambiguated wl-no-link wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/user_interface\">User interface<\/span> (pages, <span id=\"urn:batch-analysis-24694ade-84a7-4d01-886f-547883b108cb\" class=\"textannotation disambiguated wl-no-link wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/web_components\">web components<\/span>, grids, panels, controls)<\/li>\n<li>Process (use cases, flow)<\/li>\n<li>Domain (factories, repositories, entities, enums, value objects)<\/li>\n<li><span id=\"urn:batch-analysis-5ebc34d3-2007-431b-ad64-fe1fdf8f42c7\" class=\"textannotation disambiguated wl-no-link wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/data\">Data<\/span>\/services (gateways)<\/li>\n<\/ul>\n<p>As you probably noticed, storage is missing in the list. The reason is that this approach considers any storage to live in the \u201coutside\u201d world. A micro-application doesn\u2019t store any <span id=\"urn:batch-analysis-d7c8a6f9-d58d-460a-809c-fe30754f0119\" class=\"textannotation disambiguated wl-no-link wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/data\">data<\/span> and it\u2019s a key difference if we compare it to a microservice.<\/p>\n<h2>DDD and Bounded Context<\/h2>\n<p>Before we go further we should recall about DDD (<strong>Domain-Driven Design<\/strong>). It\u2019s becoming a more and more common architecture design in modern large <span id=\"urn:batch-analysis-4e6e45bd-cb8a-42b7-8738-e39a248f6cfd\" class=\"textannotation disambiguated wl-no-link wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/web_application\">web applications<\/span> these days. In simple terms, its idea is to break down an application into different domains, that are isolated from each other (even if they live within the same <span id=\"urn:batch-analysis-7f48b130-c8ec-4139-a8b6-8c1ea2eac70b\" class=\"textannotation disambiguated wl-no-link wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/codebase\">codebase<\/span>).<br \/>\nBounded Context is a core principle of DDD.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter wp-image-2474 size-full\" src=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/NfCrVMH8.png\" alt=\"\" \/><\/p>\n<p><strong>Martin Fowler<\/strong>, the author of Domain-Driven Design, defines it in this way:<\/p>\n<p><q>Bounded Context is a central pattern in Domain-Driven Design. It is the focus of DDD&#8217;s strategic design section which is all about dealing with large models and teams. DDD deals with large models by dividing them into different Bounded Contexts and being explicit about their interrelationships.<\/q><\/p>\n<p>In our case, we can also use DDD and the concept of Bounded Context to split up the large models. It may look like this:<\/p>\n<p><img decoding=\"async\" class=\"aligncenter wp-image-2474 size-full\" src=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/IF_dK_Vo.png\" alt=\"\" \/><\/p>\n<p>Actually, Domain-Driven Design is a big topic. It requires sufficient knowledge and experience in large <span id=\"urn:batch-analysis-a9497d5d-b39e-482f-8654-c95c4a3d5c71\" class=\"textannotation disambiguated wl-no-link wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/project\">projects<\/span> from developers learning DDD to fully understand it. Also, considering that it\u2019s still quite a new idea to developers and even architects, we are all on a <span id=\"urn:batch-analysis-ac5702bd-5e67-420a-a0dd-0f27c832c59f\" class=\"textannotation disambiguated wl-no-link wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/learning_curve\">learning curve<\/span> at the moment. It will take some time to understand the idea, work out the right patterns and apply them to real <span id=\"urn:batch-analysis-89226fc4-afb5-4eed-a52b-6a1cb8fed280\" class=\"textannotation disambiguated wl-no-link wl-other\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/project\">projects<\/span>. But it might be the beginning of something great and change how we architect our frontend applications for the next decade. Right now it\u2019s time to analyse this approach and try it out, we definitely can learn something from it.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The architecture of microservices seems to be becoming extremely popular among backend applications these days. But what about the frontend side? We can clearly see that frontend applications are growing very fast in terms of business logic and bundle size. Let\u2019s see what can happen if we try to apply the architecture of microservices on&#8230; <a class=\"more-link\" href=\"https:\/\/www.codemotion.com\/magazine\/frontend\/welcome-to-the-world-of-micro-apps\/\">Read more<\/a><\/p>\n","protected":false},"author":6,"featured_media":141,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","_uag_custom_page_level_css":"","_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","footnotes":""},"categories":[6],"tags":[],"collections":[],"class_list":{"0":"post-140","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-frontend","8":"entry"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.9 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Welcome to the world of micro-apps - Codemotion Magazine<\/title>\n<meta name=\"description\" content=\"Codemotion and Facebook organized the Tech Leadership Training boot camp, heres a personal reportage from one of our attendees.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.codemotion.com\/magazine\/frontend\/welcome-to-the-world-of-micro-apps\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Welcome to the world of micro-apps\" \/>\n<meta property=\"og:description\" content=\"Codemotion and Facebook organized the Tech Leadership Training boot camp, heres a personal reportage from one of our attendees.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.codemotion.com\/magazine\/frontend\/welcome-to-the-world-of-micro-apps\/\" \/>\n<meta property=\"og:site_name\" content=\"Codemotion Magazine\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Codemotion.Italy\/\" \/>\n<meta property=\"article:published_time\" content=\"2019-04-23T10:38:06+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-08-11T14:17:54+00:00\" \/>\n<meta name=\"author\" content=\"Yuri Drabik\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/55506829_2364260973596197_1667846864596107264_o.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@CodemotionIT\" \/>\n<meta name=\"twitter:site\" content=\"@CodemotionIT\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Yuri Drabik\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/frontend\\\/welcome-to-the-world-of-micro-apps\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/frontend\\\/welcome-to-the-world-of-micro-apps\\\/\"},\"author\":{\"name\":\"Yuri Drabik\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#\\\/schema\\\/person\\\/ff02597ce9f05cd23208147d723ff906\"},\"headline\":\"Welcome to the world of micro-apps\",\"datePublished\":\"2019-04-23T10:38:06+00:00\",\"dateModified\":\"2021-08-11T14:17:54+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/frontend\\\/welcome-to-the-world-of-micro-apps\\\/\"},\"wordCount\":985,\"publisher\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/frontend\\\/welcome-to-the-world-of-micro-apps\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2019\\\/04\\\/55506829_2364260973596197_1667846864596107264_o.jpg\",\"articleSection\":[\"Frontend\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/frontend\\\/welcome-to-the-world-of-micro-apps\\\/\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/frontend\\\/welcome-to-the-world-of-micro-apps\\\/\",\"name\":\"Welcome to the world of micro-apps - Codemotion Magazine\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/frontend\\\/welcome-to-the-world-of-micro-apps\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/frontend\\\/welcome-to-the-world-of-micro-apps\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2019\\\/04\\\/55506829_2364260973596197_1667846864596107264_o.jpg\",\"datePublished\":\"2019-04-23T10:38:06+00:00\",\"dateModified\":\"2021-08-11T14:17:54+00:00\",\"description\":\"Codemotion and Facebook organized the Tech Leadership Training boot camp, heres a personal reportage from one of our attendees.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/frontend\\\/welcome-to-the-world-of-micro-apps\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/frontend\\\/welcome-to-the-world-of-micro-apps\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/frontend\\\/welcome-to-the-world-of-micro-apps\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2019\\\/04\\\/55506829_2364260973596197_1667846864596107264_o.jpg\",\"contentUrl\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2019\\\/04\\\/55506829_2364260973596197_1667846864596107264_o.jpg\",\"width\":1013,\"height\":675},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/frontend\\\/welcome-to-the-world-of-micro-apps\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Frontend\",\"item\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/frontend\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Welcome to the world of micro-apps\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#website\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/\",\"name\":\"Codemotion Magazine\",\"description\":\"We code the future. Together\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#organization\",\"name\":\"Codemotion\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2019\\\/11\\\/codemotionlogo.png\",\"contentUrl\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/wp-content\\\/uploads\\\/2019\\\/11\\\/codemotionlogo.png\",\"width\":225,\"height\":225,\"caption\":\"Codemotion\"},\"image\":{\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/Codemotion.Italy\\\/\",\"https:\\\/\\\/x.com\\\/CodemotionIT\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/#\\\/schema\\\/person\\\/ff02597ce9f05cd23208147d723ff906\",\"name\":\"Yuri Drabik\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/82097622af0861093d3bd7b1d29bc5336814b972a112b1b82c97afe64a3e7c51?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/82097622af0861093d3bd7b1d29bc5336814b972a112b1b82c97afe64a3e7c51?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/82097622af0861093d3bd7b1d29bc5336814b972a112b1b82c97afe64a3e7c51?s=96&d=mm&r=g\",\"caption\":\"Yuri Drabik\"},\"description\":\"Started as a frontend web developer, constantly expanding the range of interests in tech. Author of the blog JavaScript Room\",\"sameAs\":[\"http:\\\/\\\/roomjs.com\",\"https:\\\/\\\/www.instagram.com\\\/room_js\\\/\"],\"url\":\"https:\\\/\\\/www.codemotion.com\\\/magazine\\\/author\\\/yuri-drabik\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Welcome to the world of micro-apps - Codemotion Magazine","description":"Codemotion and Facebook organized the Tech Leadership Training boot camp, heres a personal reportage from one of our attendees.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.codemotion.com\/magazine\/frontend\/welcome-to-the-world-of-micro-apps\/","og_locale":"en_US","og_type":"article","og_title":"Welcome to the world of micro-apps","og_description":"Codemotion and Facebook organized the Tech Leadership Training boot camp, heres a personal reportage from one of our attendees.","og_url":"https:\/\/www.codemotion.com\/magazine\/frontend\/welcome-to-the-world-of-micro-apps\/","og_site_name":"Codemotion Magazine","article_publisher":"https:\/\/www.facebook.com\/Codemotion.Italy\/","article_published_time":"2019-04-23T10:38:06+00:00","article_modified_time":"2021-08-11T14:17:54+00:00","author":"Yuri Drabik","twitter_card":"summary_large_image","twitter_image":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/55506829_2364260973596197_1667846864596107264_o.jpg","twitter_creator":"@CodemotionIT","twitter_site":"@CodemotionIT","twitter_misc":{"Written by":"Yuri Drabik","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/welcome-to-the-world-of-micro-apps\/#article","isPartOf":{"@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/welcome-to-the-world-of-micro-apps\/"},"author":{"name":"Yuri Drabik","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/ff02597ce9f05cd23208147d723ff906"},"headline":"Welcome to the world of micro-apps","datePublished":"2019-04-23T10:38:06+00:00","dateModified":"2021-08-11T14:17:54+00:00","mainEntityOfPage":{"@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/welcome-to-the-world-of-micro-apps\/"},"wordCount":985,"publisher":{"@id":"https:\/\/www.codemotion.com\/magazine\/#organization"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/welcome-to-the-world-of-micro-apps\/#primaryimage"},"thumbnailUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/55506829_2364260973596197_1667846864596107264_o.jpg","articleSection":["Frontend"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/welcome-to-the-world-of-micro-apps\/","url":"https:\/\/www.codemotion.com\/magazine\/frontend\/welcome-to-the-world-of-micro-apps\/","name":"Welcome to the world of micro-apps - Codemotion Magazine","isPartOf":{"@id":"https:\/\/www.codemotion.com\/magazine\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/welcome-to-the-world-of-micro-apps\/#primaryimage"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/welcome-to-the-world-of-micro-apps\/#primaryimage"},"thumbnailUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/55506829_2364260973596197_1667846864596107264_o.jpg","datePublished":"2019-04-23T10:38:06+00:00","dateModified":"2021-08-11T14:17:54+00:00","description":"Codemotion and Facebook organized the Tech Leadership Training boot camp, heres a personal reportage from one of our attendees.","breadcrumb":{"@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/welcome-to-the-world-of-micro-apps\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.codemotion.com\/magazine\/frontend\/welcome-to-the-world-of-micro-apps\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/welcome-to-the-world-of-micro-apps\/#primaryimage","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/55506829_2364260973596197_1667846864596107264_o.jpg","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/55506829_2364260973596197_1667846864596107264_o.jpg","width":1013,"height":675},{"@type":"BreadcrumbList","@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/welcome-to-the-world-of-micro-apps\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.codemotion.com\/magazine\/"},{"@type":"ListItem","position":2,"name":"Frontend","item":"https:\/\/www.codemotion.com\/magazine\/frontend\/"},{"@type":"ListItem","position":3,"name":"Welcome to the world of micro-apps"}]},{"@type":"WebSite","@id":"https:\/\/www.codemotion.com\/magazine\/#website","url":"https:\/\/www.codemotion.com\/magazine\/","name":"Codemotion Magazine","description":"We code the future. Together","publisher":{"@id":"https:\/\/www.codemotion.com\/magazine\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.codemotion.com\/magazine\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.codemotion.com\/magazine\/#organization","name":"Codemotion","url":"https:\/\/www.codemotion.com\/magazine\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png","width":225,"height":225,"caption":"Codemotion"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Codemotion.Italy\/","https:\/\/x.com\/CodemotionIT"]},{"@type":"Person","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/ff02597ce9f05cd23208147d723ff906","name":"Yuri Drabik","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/82097622af0861093d3bd7b1d29bc5336814b972a112b1b82c97afe64a3e7c51?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/82097622af0861093d3bd7b1d29bc5336814b972a112b1b82c97afe64a3e7c51?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/82097622af0861093d3bd7b1d29bc5336814b972a112b1b82c97afe64a3e7c51?s=96&d=mm&r=g","caption":"Yuri Drabik"},"description":"Started as a frontend web developer, constantly expanding the range of interests in tech. Author of the blog JavaScript Room","sameAs":["http:\/\/roomjs.com","https:\/\/www.instagram.com\/room_js\/"],"url":"https:\/\/www.codemotion.com\/magazine\/author\/yuri-drabik\/"}]}},"featured_image_src":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/55506829_2364260973596197_1667846864596107264_o-600x400.jpg","featured_image_src_square":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/55506829_2364260973596197_1667846864596107264_o-600x600.jpg","author_info":{"display_name":"Yuri Drabik","author_link":"https:\/\/www.codemotion.com\/magazine\/author\/yuri-drabik\/"},"uagb_featured_image_src":{"full":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/55506829_2364260973596197_1667846864596107264_o.jpg",1013,675,false],"thumbnail":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/55506829_2364260973596197_1667846864596107264_o-150x150.jpg",150,150,true],"medium":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/55506829_2364260973596197_1667846864596107264_o-300x200.jpg",300,200,true],"medium_large":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/55506829_2364260973596197_1667846864596107264_o-768x512.jpg",768,512,true],"large":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/55506829_2364260973596197_1667846864596107264_o.jpg",1013,675,false],"1536x1536":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/55506829_2364260973596197_1667846864596107264_o.jpg",1013,675,false],"2048x2048":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/55506829_2364260973596197_1667846864596107264_o.jpg",1013,675,false],"small-home-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/55506829_2364260973596197_1667846864596107264_o.jpg",100,67,false],"sidebar-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/55506829_2364260973596197_1667846864596107264_o-180x128.jpg",180,128,true],"genesis-singular-images":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/55506829_2364260973596197_1667846864596107264_o-896x504.jpg",896,504,true],"archive-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/55506829_2364260973596197_1667846864596107264_o-400x225.jpg",400,225,true],"gb-block-post-grid-landscape":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/55506829_2364260973596197_1667846864596107264_o-600x400.jpg",600,400,true],"gb-block-post-grid-square":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/04\/55506829_2364260973596197_1667846864596107264_o-600x600.jpg",600,600,true]},"uagb_author_info":{"display_name":"Yuri Drabik","author_link":"https:\/\/www.codemotion.com\/magazine\/author\/yuri-drabik\/"},"uagb_comment_info":1,"uagb_excerpt":"The architecture of microservices seems to be becoming extremely popular among backend applications these days. But what about the frontend side? We can clearly see that frontend applications are growing very fast in terms of business logic and bundle size. Let\u2019s see what can happen if we try to apply the architecture of microservices on&#8230;&hellip;","lang":"en","_links":{"self":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/140","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/comments?post=140"}],"version-history":[{"count":5,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/140\/revisions"}],"predecessor-version":[{"id":16011,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/140\/revisions\/16011"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/media\/141"}],"wp:attachment":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/media?parent=140"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/categories?post=140"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/tags?post=140"},{"taxonomy":"collections","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/collections?post=140"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}