{"id":92810,"date":"2020-08-31T07:42:09","date_gmt":"2020-08-31T05:42:09","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-1"},"modified":"2020-08-31T07:42:09","modified_gmt":"2020-08-31T05:42:09","slug":"vybor-arhitekturnogo-stilya-chast-1","status":"publish","type":"post","link":"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-1","title":{"rendered":"Kiezen van een architectuurstijl (deel 1)","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><b><i>Hallo, Habr. Op dit moment is er bij OTUS een nieuwe groep voor de cursus. <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/5RTk\/\">\u2018Software Architect\u2019<\/a><\/noindex>. In aanloop naar de start van de cursus wil ik mijn auteursartikel met jullie delen.<\/i><\/b><\/p>\n<p><\/p>\n<h2>Inleiding<\/h2>\n<p>\nHet kiezen van een architecturale stijl is een van de fundamentele technische beslissingen bij het bouwen van een informatiesysteem. In deze serie artikelen stel ik voor om de meest populaire architecturale stijlen van applicaties te bespreken en te beantwoorden wanneer welke architecturale stijl het meest wenselijk is. In het verloop van deze uitleg zal ik proberen een logische keten te schetsen die de ontwikkeling van architecturale stijlen van monolieten tot microservices verklaart. <br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Een beetje geschiedenis<\/h2>\n<p>\nAls je de ontwikkelaars vraagt: 'Waarom zijn microservices nodig?', krijg je de meest uiteenlopende antwoorden. Je hoort dat microservices de schaalbaarheid verbeteren, de begrijpelijkheid van de code vergemakkelijken, de fouttolerantie verbeteren en soms kun je horen dat ze helpen om 'de code op te schonen'. Laten we teruggaan in de tijd om te begrijpen welk doel met het ontstaan van microservices werd nagestreefd.<\/p>\n<p>Kort gezegd, microservices zoals we die nu begrijpen, zijn ontstaan als volgt: in 2011 merkte James Lewis, terwijl hij het werk van verschillende bedrijven analyseerde, een nieuw patroon op, de 'micro-app', dat SOA optimaliseerde op het gebied van versnelde service-implementatie. Enkele jaren later, in 2012, werd dit patroon op een architectuursummit omgedoopt tot microservice. De oorspronkelijke doelstelling van de invoering van microservices was dus om de beruchte <b>time to market<\/b>.<\/p>\n<p>In de 'hype-golf' waren microservices in 2015 volop aanwezig. Uit verschillende studies blijkt dat geen enkele conferentie zonder een lezing over microservices voorbijging. Sterker nog, sommige conferenties waren uitsluitend aan microservices gewijd. Tegenwoordig beginnen veel projecten met het toepassen van deze architecturale stijl, en als een project veel legacy-code bevat, dan vindt er zeker een actieve migratie naar microservices plaats.<\/p>\n<p>Ondanks het bovenstaande is er op dit moment nog steeds een relatief klein aantal ontwikkelaars dat het begrip 'microservice' kan defini\u00ebren. Maar daarover zullen we later spreken\u2026<\/p>\n<h2>Monoliet<\/h2>\n<p>\nDe architecturale stijl die wordt tegenovergesteld aan microservices, is de monoliet (of 'alles-in-\u00e9\u00e9n'). Het heeft waarschijnlijk geen zin om uit te leggen wat een monoliet is, dus ik zal meteen de nadelen van deze architecturale stijl opsommen, die verdere ontwikkeling van architecturale stijlen hebben ge\u00efnitieerd: grootte, onderlinge afhankelijkheid, implementatie, schaalbaarheid, betrouwbaarheid en starheid. Hieronder stel ik voor om met elk van de nadelen afzonderlijk kennis te maken.<\/p>\n<h3>Grootte<\/h3>\n<p>\nDe monoliet is enorm. En meestal communiceert hij met een zeer grote database. De applicatie wordt te groot voor \u00e9\u00e9n ontwikkelaar om \u00fcberhaupt te begrijpen. Alleen degene die veel tijd aan deze code heeft besteed, kan goed met de monoliet werken; nieuwkomers zullen veel tijd kwijt zijn met proberen de monoliet te doorgronden en het is niet zeker of ze dat zullen lukken. Gewoonlijk is er bij het werken met een monoliet altijd een soort 'onjuiste' senior die de monoliet min of meer goed kent en andere nieuwe ontwikkelaars gedurende een jaar tot anderhalf jaar op hun vingers tikt. Natuurlijk is zo'n onjuiste senior een enkelvoudig falen, en zijn vertrek kan leiden tot de ondergang van de monoliet. <\/p>\n<h3>Samenhang<\/h3>\n<p>\nDe monoliet is als een 'grote klomp modder' (big ball of mud), waarbij wijzigingen op de ene plek onvoorspelbare gevolgen kunnen hebben op een andere plek. Door wijzigingen aan te brengen op de ene plek kan de monoliet op een andere plek beschadigd raken (waarbij je denkt 'ik jeuk op mijn oor, en *@ valt eraf'). Dit komt doordat de componenten in de monoliet zeer complexe en vooral niet voor de hand liggende onderlinge relaties hebben.<\/p>\n<h3>Implementatie<\/h3>\n<p>\nDe implementatie van de monoliet, gezien de complexe onderlinge relaties tussen de componenten, is een langdurig proces met zijn eigen rituelen. Zo'n ritueel is meestal niet volledig gestandaardiseerd en wordt 'van mond tot mond' overgedragen. <\/p>\n<h3>Schaalbaarheid<\/h3>\n<p>\nDe modules van de monoliet kunnen conflicterende behoeften qua middelen hebben, waardoor het noodzakelijk is om een compromis te zoeken vanuit hardwareperspectief. Stel je voor dat je monoliet bestaat uit de diensten A en B. Dienst A heeft hoge eisen aan de grootte van de harde schijf, terwijl dienst B dat aan het RAM heeft. In dit geval moet of de machine waarop de monoliet draait de eisen van beide diensten ondersteunen, of een van de diensten moet handmatig worden uitgeschakeld.<\/p>\n<p>Een ander voorbeeld (meer klassiek): dienst A is veel populairder dan dienst B, dus je wilt dat er 100 van dienst A zijn en 10 van dienst B. Opnieuw zijn er twee opties: of we implementeren 100 volledige monolieten, of we moeten handmatig enkele van die monolieten de diensten B uitschakelen. <\/p>\n<h3>Betrouwbaarheid<\/h3>\n<p>\nOmdat alle services bij elkaar zijn, vallen alle services tegelijkertijd als de monoliet faalt. In werkelijkheid is het misschien niet zo erg, in ieder geval zijn er geen gedeeltelijke storingen in een gedistribueerd systeem, maar aan de andere kant, door een fout in een functionaliteit die door 0,001% van de gebruikers wordt gebruikt, kunt u al uw gebruikers verliezen. <\/p>\n<h3>Rigiditeit<\/h3>\n<p>\nDoor de omvang van het monolithische systeem is het lastig om over te schakelen naar nieuwe technologie\u00ebn. Dit leidt tot de aparte uitdaging om de zogenaamde senior te behouden. De vanaf het begin van het project geselecteerde technologische stack kan een hindernis worden voor de ontwikkeling van het product. <\/p>\n<h2>Conclusie<\/h2>\n<p>\nVolgende keer gaan we het hebben over hoe mensen hebben geprobeerd de genoemde problemen op te lossen door over te stappen naar componenten en SOA.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/5RTk\/\"><img decoding=\"async\" alt=\"Kiezen van een architectuurstijl (deel 1)\" src=\"\/wp-content\/uploads\/2020\/08\/d1582a83ad9cf8722a035dfd9a212aa5.jpeg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<blockquote>\n<h4>Lees meer:<\/h4>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/504144\/\">Waarom SQL Server geen sortering van resultaten garandeert zonder ORDER BY<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/508206\/\">Architectuur voor ontwikkelaars en beheerders: welke vaardigheden zijn nodig?<\/a><\/noindex><\/li>\n<\/ul>\n<\/blockquote>\n<p>Bron: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/516880\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0445\u0430\u0431\u0440. \u041f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0432 OTUS \u043e\u0442\u043a\u0440\u044b\u0442 \u043d\u0430\u0431\u043e\u0440 \u043d\u0430 \u043d\u043e\u0432\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u043a\u0443\u0440\u0441\u0430 \u00abSoftware Architect\u00bb. \u0412 \u043f\u0440\u0435\u0434\u0434\u0432\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0440\u0442\u0430 \u043a\u0443\u0440\u0441\u0430 \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441 \u0432\u0430\u043c\u0438 \u0441\u0432\u043e\u0435\u0439 \u0430\u0432\u0442\u043e\u0440\u0441\u043a\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0451\u0439. \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 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":92811,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-92810","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.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0445\u0430\u0431\u0440. \u041f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0432 OTUS \u043e\u0442\u043a\u0440\u044b\u0442 \u043d\u0430\u0431\u043e\u0440 \u043d\u0430 \u043d\u043e\u0432\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u043a\u0443\u0440\u0441\u0430 \u00abSoftware Architect\u00bb.\" \/>\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\/nl\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-1\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"nl_NL\" \/>\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 1) | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0445\u0430\u0431\u0440. \u041f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0432 OTUS \u043e\u0442\u043a\u0440\u044b\u0442 \u043d\u0430\u0431\u043e\u0440 \u043d\u0430 \u043d\u043e\u0432\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u043a\u0443\u0440\u0441\u0430 \u00abSoftware Architect\u00bb.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-1\" \/>\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-08-31T05:42:09+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-08-31T05:42:09+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\udd47Keuze van architecturale stijl (deel 1) | ProHoster","description":"Hallo, Habr. Op dit moment is er bij OTUS een nieuwe ronde van de cursus \u2018Software Architect\u2019 aan de gang.","canonical_url":"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-1","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nl_NL","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 1) | ProHoster","og:description":"\u041f\u0440\u0438\u0432\u0435\u0442, \u0445\u0430\u0431\u0440. \u041f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0432 OTUS \u043e\u0442\u043a\u0440\u044b\u0442 \u043d\u0430\u0431\u043e\u0440 \u043d\u0430 \u043d\u043e\u0432\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u043a\u0443\u0440\u0441\u0430 \u00abSoftware Architect\u00bb.","og:url":"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/vybor-arhitekturnogo-stilya-chast-1","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-08-31T05:42:09+00:00","article:modified_time":"2020-08-31T05:42:09+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"92810","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 12:00:37","updated":"2022-10-03 23:14:42","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/92810","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/comments?post=92810"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/92810\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media\/92811"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media?parent=92810"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/categories?post=92810"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/tags?post=92810"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}