{"id":95403,"date":"2020-09-28T19:43:15","date_gmt":"2020-09-28T17:43:15","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-3"},"modified":"2020-09-28T19:43:15","modified_gmt":"2020-09-28T17:43:15","slug":"vybor-arhitekturnogo-stilya-chast-3","status":"publish","type":"post","link":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-3","title":{"rendered":"Choix du style architectural (partie 3)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><b><i>Bonjour, Habr. Aujourd'hui, je poursuis ma s\u00e9rie de publications que j'ai \u00e9crite sp\u00e9cialement pour le lancement d'un nouveau cycle de cours <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/z0Ur\/\">\u00abArchitecte Logiciel\u00bb<\/a><\/noindex>.<\/i><\/b><\/p>\n<p><\/p>\n<h2>Introduction<\/h2>\n<p>\nLe choix d'un style architectural est l'une des d\u00e9cisions techniques fondamentales lors de la cr\u00e9ation d'un syst\u00e8me d'information. Dans cette s\u00e9rie d'articles, je propose d'examiner les styles architecturaux les plus populaires pour la construction d'applications et de r\u00e9pondre \u00e0 la question de savoir quand un style architectural particulier est le plus appropri\u00e9. Au fil de cette exposition, j'essaierai de cr\u00e9er un fil logique expliquant l'\u00e9volution des styles architecturaux, des monolithes aux microservices. <\/p>\n<p>La derni\u00e8re fois, nous avons parl\u00e9 des diff\u00e9rents types de monolithes et de l'utilisation de composants pour leur construction, tant des composants d'assemblage que des composants de d\u00e9ploiement. Nous avons \u00e9galement abord\u00e9 l'architecture orient\u00e9e services.<\/p>\n<p>Nous allons maintenant d\u00e9finir les principales caract\u00e9ristiques de l'architecture de microservices. <br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Les relations architecturales<\/h2>\n<p>\nIl est n\u00e9cessaire de comprendre qu'en se basant sur les informations des articles pr\u00e9c\u00e9dents, tout service est un composant, mais tous les services ne sont pas des microservices. <\/p>\n<h2>Caract\u00e9ristiques de l'architecture de microservices<\/h2>\n<p>\nLes principales caract\u00e9ristiques de l'architecture de microservices sont :<\/p>\n<ul>\n<li>Organisation autour des capacit\u00e9s m\u00e9tier (Organized around Business Capabilities)<\/li>\n<li>Produits plut\u00f4t que projets (Products not Projects)<\/li>\n<li>Points d'entr\u00e9e intelligents et canaux idiots (Smart endpoints and dumb pipes)<\/li>\n<li>Gouvernance d\u00e9centralis\u00e9e (Decentralized Governance)<\/li>\n<li>Gestion des donn\u00e9es d\u00e9centralis\u00e9e (Decentralized Data Management)<\/li>\n<li>Automatisation de l'infrastructure (Infrastructure Automation)<\/li>\n<li>Conception r\u00e9siliente (Design for failure)<\/li>\n<li>Architecture avec \u00e9volution (Evolutionary Design)<\/li>\n<\/ul>\n<p>\nLe premier point provient de l'architecture orient\u00e9e services, car les microservices sont un cas particulier des services. D'autres points m\u00e9ritent une attention particuli\u00e8re.<\/p>\n<h2>Organisation autour des capacit\u00e9s m\u00e9tier (Organized around Business Capabilities)<\/h2>\n<p>\nIl est maintenant n\u00e9cessaire de rappeler la loi de Conway : les organisations qui cr\u00e9ent des syst\u00e8mes conforment leur architecture \u00e0 la structure des interactions au sein de ces organisations. Par exemple, lors de la cr\u00e9ation d'un compilateur : une \u00e9quipe de sept personnes a d\u00e9velopp\u00e9 un compilateur \u00e0 sept passes, tandis qu'une \u00e9quipe de cinq personnes a r\u00e9alis\u00e9 un compilateur \u00e0 cinq passes.<\/p>\n<p>Si nous parlons de monolithes et de microservices, dans le cas o\u00f9 le d\u00e9veloppement est organis\u00e9 par d\u00e9partements fonctionnels (backend, frontend, administrateurs de bases de donn\u00e9es), on obtient un classique monolithe. <\/p>\n<p>Pour obtenir des microservices, il est n\u00e9cessaire d'organiser les \u00e9quipes par opportunit\u00e9s commerciales (\u00e9quipe des commandes, des livraisons, du catalogue). Cette organisation permettra aux \u00e9quipes de se concentrer sur la cr\u00e9ation de parties sp\u00e9cifiques de l'application.<\/p>\n<h2>Produits plut\u00f4t que projets (Products not Projects)<\/h2>\n<p>\nUne approche projet o\u00f9 une \u00e9quipe transmet des fonctionnalit\u00e9s d\u00e9velopp\u00e9es \u00e0 d'autres \u00e9quipes dans le cas d'une architecture microservices ne convient absolument pas. L'\u00e9quipe doit maintenir le syst\u00e8me tout au long de son cycle de vie. Amazon, l'un des pionniers de l'impl\u00e9mentation des microservices, a d\u00e9clar\u00e9 : \u00ab vous construisez le produit, et c'est vous qui le lancez \u00bb ( \u00ab you build, you run it \u00bb). L'approche produit permet \u00e0 l'\u00e9quipe de sentir les besoins de l'entreprise. <\/p>\n<h2>Points d'entr\u00e9e intelligents et canaux idiots (Smart endpoints and dumb pipes)<\/h2>\n<p>\nL'architecture SOA mettait un grand accent sur les canaux de communication, en particulier le bus de services d'entreprise (Enterprise Service Bus). Ce qui conduit souvent \u00e0 une bo\u00eete \u00e0 spaghetti erron\u00e9e, c'est-\u00e0-dire que la complexit\u00e9 du monolithe se transforme en complexit\u00e9 des relations entre services. Dans l'architecture microservices, seules des m\u00e9thodes simples d'interaction sont utilis\u00e9es.<\/p>\n<h2>Gouvernance d\u00e9centralis\u00e9e (Decentralized Governance)<\/h2>\n<p>\nLes d\u00e9cisions cl\u00e9s concernant les microservices doivent \u00eatre prises par les personnes qui les d\u00e9veloppent r\u00e9ellement. Ici, par d\u00e9cisions cl\u00e9s, on entend le choix<br \/>\ndes langages de programmation, des m\u00e9thodologies de d\u00e9ploiement, des contrats d'interfaces publiques, etc. <\/p>\n<h2>Gestion des donn\u00e9es d\u00e9centralis\u00e9e (Decentralized Data Management)<\/h2>\n<p>\nL'approche standard, o\u00f9 l'application repose sur une seule base de donn\u00e9es, ne peut pas tenir compte des sp\u00e9cificit\u00e9s de chaque service. MSA suppose une gestion d\u00e9centralis\u00e9e des donn\u00e9es, y compris l'utilisation de diff\u00e9rentes technologies.<\/p>\n<h2>Automatisation de l'infrastructure (Infrastructure Automation)<\/h2>\n<p>\nMSA soutient les processus de d\u00e9ploiement et de livraison continus. Cela ne peut \u00eatre r\u00e9alis\u00e9 que par l'automatisation des processus. Ainsi, le d\u00e9ploiement d'un grand nombre de services ne semble plus \u00eatre quelque chose d'effrayant. Le processus de d\u00e9ploiement doit devenir ennuyeux. Le deuxi\u00e8me aspect concerne la gestion des services dans un environnement de production. Sans automatisation, la gestion des processus lanc\u00e9s dans diff\u00e9rents environnements op\u00e9rationnels devient impossible.<\/p>\n<h2>Conception r\u00e9siliente (Design for failure)<\/h2>\n<p>\nDe nombreux services MSA sont sujets \u00e0 des pannes. Par cons\u00e9quent, la gestion des erreurs dans un syst\u00e8me distribu\u00e9 est une t\u00e2che tout sauf triviale. L'architecture des applications doit \u00eatre r\u00e9siliente face \u00e0 de telles pannes. Rebecca Parsons estime qu'il est tr\u00e8s important que nous ne recourions plus m\u00eame \u00e0 l'interaction intra-processus entre les services, mais que nous utilisions plut\u00f4t HTTP pour la communication, qui n'est pas aussi fiable.<\/p>\n<h2>Architecture avec \u00e9volution (Evolutionary Design)<\/h2>\n<p>\nL'architecture d'un syst\u00e8me MSA doit \u00e9voluer de mani\u00e8re progressive. Il est souhaitable de limiter les changements n\u00e9cessaires aux fronti\u00e8res d'un seul service. Il faut \u00e9galement prendre en compte l'impact sur les autres services. L'approche traditionnelle consiste \u00e0 tenter de r\u00e9soudre ce probl\u00e8me par le biais de la gestion des versions, mais MSA suppose d'utiliser la gestion des versions comme<br \/>\nsolution ultime.<\/p>\n<h2>Conclusion<\/h2>\n<p>\nApr\u00e8s tout ce qui a \u00e9t\u00e9 dit, on peut d\u00e9finir ce que sont les microservices. L'architecture microservices est une approche de d\u00e9veloppement d'une application distincte sous forme d'un ensemble de petits services, chacun fonctionnant dans son propre processus et interagissant par le biais de m\u00e9canismes all\u00e9g\u00e9s, souvent via une API HTTP. Ces services sont construits sur des opportunit\u00e9s commerciales et peuvent \u00eatre d\u00e9ploy\u00e9s ind\u00e9pendamment \u00e0 l'aide d'un m\u00e9canisme de d\u00e9ploiement enti\u00e8rement<br \/>\nautomatis\u00e9. Il existe un niveau minimal de gestion centralis\u00e9e de ces services, qui peuvent \u00eatre \u00e9crits dans diff\u00e9rents langages de programmation et utiliser diff\u00e9rentes technologies de stockage de donn\u00e9es.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/z0Ur\/\"><img decoding=\"async\" alt=\"Choix du style architectural (partie 3)\" src=\"\/wp-content\/uploads\/2020\/09\/f9ffd06c83921f64818842327c09108e.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<p><i><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/519456\/\">Lire la partie 2<\/a><\/noindex><\/i><br \/>\n<br \/>Source : <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/520870\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u044e \u0441\u0435\u0440\u0438\u044e \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043a \u0441\u0442\u0430\u0440\u0442\u0443 \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u0442\u043e\u043a\u0430 \u043a\u0443\u0440\u0441\u0430 \u00abSoftware Architect\u00bb. \u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0412\u044b\u0431\u043e\u0440 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u043e\u0433\u043e \u0441\u0442\u0438\u043b\u044f \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u043e\u0441\u043d\u043e\u0432\u043e\u043f\u043e\u043b\u0430\u0433\u0430\u044e\u0449\u0438\u0445 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u043f\u0440\u0438 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0442\u0435\u0439 \u044f \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c \u0441\u0430\u043c\u044b\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0435 \u0441\u0442\u0438\u043b\u0438 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438 \u043e\u0442\u0432\u0435\u0442\u0438\u0442\u044c \u043d\u0430 \u0432\u043e\u043f\u0440\u043e\u0441 \u043a\u043e\u0433\u0434\u0430 \u043a\u0430\u043a\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0439 \u0441\u0442\u0438\u043b\u044c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c. [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":95404,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-95403","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-3\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0412\u044b\u0431\u043e\u0440 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u043e\u0433\u043e \u0441\u0442\u0438\u043b\u044f (\u0447\u0430\u0441\u0442\u044c 3) | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-3\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-09-28T17:43:15+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-09-28T17:43:15+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Choix du style architectural (partie 3) | ProHoster","description":"Bonjour, Habr.","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-3","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"fr_FR","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0412\u044b\u0431\u043e\u0440 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u043e\u0433\u043e \u0441\u0442\u0438\u043b\u044f (\u0447\u0430\u0441\u0442\u044c 3) | ProHoster","og:description":"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440.","og:url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-3","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-09-28T17:43:15+00:00","article:modified_time":"2020-09-28T17:43:15+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"95403","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 11:06:26","updated":"2022-10-01 11:38:49","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/95403","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/comments?post=95403"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/95403\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/95404"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=95403"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=95403"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=95403"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}