{"id":163,"date":"2022-12-23T17:15:00","date_gmt":"2022-12-23T17:15:00","guid":{"rendered":"http:\/\/blog.firatyasar.com\/?p=163"},"modified":"2023-03-19T17:16:21","modified_gmt":"2023-03-19T17:16:21","slug":"software-design-patterns-part-v","status":"publish","type":"post","link":"https:\/\/blog.firatyasar.com\/?p=163","title":{"rendered":"Software Design Patterns &#8211; Part V"},"content":{"rendered":"\n<h3 id=\"74bd\"><strong>Spaced-based Architecture<\/strong><\/h3>\n\n\n\n<p id=\"d9f8\">Uzay tabanl\u0131 mimari, \u00f6l\u00e7eklendirme ve ayn\u0131 anda kullan\u0131m problemlerinin adreslenmesi ve \u00e7\u00f6z\u00fcme ula\u015ft\u0131rmas\u0131 \u00fczerine dizayn edilmi\u015ftir.<\/p>\n\n\n\n<p id=\"eaf9\">Bulut mimarisi olarak da bilinen uzay tabanl\u0131 mimari uygulaman\u0131n \u00f6l\u00e7eklenmesini limitleyen etmenleri en az indirir. Y\u00fcksek \u00f6l\u00e7eklenebilirlik, merkezi veritaban\u0131 k\u0131s\u0131tlamas\u0131n\u0131n kald\u0131r\u0131lmas\u0131 ve replike edilmi\u015f bellek i\u00e7i veri klavuzlar\u0131n\u0131n kullan\u0131lmas\u0131yla elde edilir. Uygulama verileri bellekte tutulur ve t\u00fcm aktif i\u015flem birimleri aras\u0131nda \u00e7o\u011falt\u0131l\u0131r. \u0130\u015flem birimleri y\u00fck art\u0131\u015f\u0131na ve azal\u0131\u015f\u0131na g\u00f6re dinamik olarak ba\u015flar veya kendini kapat\u0131r.<\/p>\n\n\n\n<p id=\"0060\">Merkezi bir veri taban\u0131 olmad\u0131\u011f\u0131 i\u00e7in, veritaban\u0131 darbo\u011faz\u0131 ortadan kalkar ve neredeyse sonsuza kadar \u00f6l\u00e7eklenebilir bir uygulama imkan\u0131 sa\u011flar.<\/p>\n\n\n\n<p id=\"8ad7\">Bu mimaride iki ana bile\u015fen vard\u0131r: \u0130\u015flem Birimi (Processing Unit), Sanalla\u015ft\u0131r\u0131lm\u0131\u015f Middleware (Virtualized Middleware)<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/miro.medium.com\/v2\/resize:fit:1400\/1*TXbaeFlkCrH14pctwD8lfw.png\" alt=\"\"\/><\/figure>\n\n\n\n<p id=\"399e\"><strong>\u0130\u015flem Birimi<br><\/strong>\u0130\u015flem Birimi uygulama bile\u015fenlerini i\u00e7erir. Web tabanl\u0131 bile\u015fenleri ve arkay\u00fcz (backend) i\u015f mant\u0131\u011f\u0131 birimlerini de kapsar. Bu birim, bellek i\u00e7i veri klavuzlar\u0131yla birlikte uygulama mod\u00fclleri ve y\u00fck devertme i\u015flemi i\u00e7in iste\u011fe ba\u011fl\u0131 asenkron kal\u0131c\u0131 depolama bar\u0131nd\u0131r\u0131r. Sanalla\u015ft\u0131r\u0131lm\u0131\u015f middleware bile\u015feni ileti\u015fimden ve bak\u0131mdan sorumludur. Veri senkronizasyonunu ve istek y\u00f6netmini kontrol eden bile\u015fenleri i\u00e7erir.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/miro.medium.com\/v2\/resize:fit:1112\/1*2jO6WoZERj1NcaV4C2j3vQ.png\" alt=\"\"\/><\/figure>\n\n\n\n<h1 id=\"83e3\"><strong>Mimarinin Bile\u015fenleri<\/strong><\/h1>\n\n\n\n<ul><li><strong>Mesajla\u015fma gridi<\/strong><br>&#8211; Bu yap\u0131 input istekleri ve oturum bilgilerini y\u00f6netir. Bir istek sanalla\u015ft\u0131r\u0131lm\u0131\u015f middleware bile\u015fenine geldi\u011finde mesajla\u015fma gridi, hangi i\u015flem biriminin uygun oldu\u011funu ve bu iste\u011fin hangi i\u015flem birimine iletilece\u011finin karar\u0131n\u0131 verir.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/miro.medium.com\/v2\/resize:fit:1400\/1*rPJuuHTDyRnlF_ycyELudg.png\" alt=\"\"\/><\/figure>\n\n\n\n<ul><li><strong>Veri gridi<br><\/strong>&#8211; Mimarideki en \u00f6nemli bile\u015fendir. Veri gridi, veri g\u00fcncellendi\u011finde i\u015flem birimleri aras\u0131nda verinin kopyalanmas\u0131 s\u00fcrecinin y\u00f6netilmesinde veri kopyalama motoru ile etkile\u015fim halindedir. Mesajla\u015fma gridi, gelen iste\u011fi uygun olan herhangi bir i\u015flem birimine iletebeilece\u011finden, her i\u015flem birimi kendi bellek i\u00e7i veri gridinde ayn\u0131 veriye sahip olmal\u0131d\u0131r.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/miro.medium.com\/v2\/resize:fit:1400\/1*6l5eE4AA6Q7ClxqIxdItvA.png\" alt=\"\"\/><\/figure>\n\n\n\n<ul><li><strong>\u0130\u015flem Gridi<br>&#8211;&nbsp;<\/strong>Opsiyonel bir bile\u015fendir. Birden fazla i\u015flem birimi oldu\u011fu zamanlarda da\u011f\u0131t\u0131k iletilerin i\u015flenme s\u00fcrecini y\u00f6netir. \u0130\u015flem birimi t\u00fcrleri aras\u0131nda koordinasyon gerektiren bir istek gelirse i\u015flem gridi bu iki i\u015flem birimi aras\u0131ndaki y\u00f6netimi ve koordinasyonu sa\u011flar.<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/miro.medium.com\/v2\/resize:fit:1400\/1*H4BNc3Vu3IL55Rouh7hOhg.png\" alt=\"\"\/><\/figure>\n\n\n\n<ul><li><strong>Da\u011f\u0131t\u0131m Y\u00f6neticisi<\/strong><br>&#8211; Y\u00fck durumuna g\u00f6re i\u015flem birimlerinin ba\u015flat\u0131lmas\u0131 ve durdurulmas\u0131ndan sorumlu yap\u0131d\u0131r. Bu bile\u015fen, kullan\u0131c\u0131 y\u00fck\u00fcn\u00fc ve yan\u0131t s\u00fcresini s\u00fcrekli g\u00f6zlemler. Y\u00fck artarsa yeni i\u015flem birimleri ba\u015flat\u0131r, y\u00fck azald\u0131\u011f\u0131nda ise tam tersi \u015fekilde i\u015flem birimlerini durdurur. Uygulaman\u0131n istedi\u011fi \u00f6l\u00e7eklenebilirlik isteklerini kar\u015f\u0131lamak i\u00e7in \u00f6nemli bir bile\u015fendir.<\/li><\/ul>\n\n\n\n<p id=\"c3ef\">Uzay temelli mimariyi uygulamak hem kar\u0131\u015f\u0131k hem de masrafl\u0131d\u0131r. De\u011fi\u015fken y\u00fcklere sahip web tabanl\u0131 uygulamalar i\u00e7in g\u00fczel bir se\u00e7enektir. B\u00fcy\u00fck miktarda operasyonel veri i\u00e7eren, b\u00fcy\u00fck \u00f6l\u00e7ekli ili\u015fkisel veritaban\u0131 uygulamalar\u0131 i\u00e7in uygun de\u011fildir. Bu mimarinin merkezi bir veri deposu ihtiyac\u0131 yoktur.<\/p>\n\n\n\n<p id=\"0f3b\">Alternatif olarak bulut tabanl\u0131 mimari denmesine ra\u011fmen mimarinin bile\u015fenleri bulut tabanl\u0131 sunucularda olmak zorunda de\u011fildir. Kolayl\u0131kla lokal sunucularda da tutulabilirler.<\/p>\n\n\n\n<p id=\"d86d\"><em>De\u011ferlendirme k\u0131sm\u0131 okudu\u011fum kitapta 6 ana ba\u015fl\u0131k alt\u0131nda toplan\u0131yor. Bu \u015fekildeki anlat\u0131m ho\u015fuma gitti\u011fi i\u00e7in ben de ayn\u0131 yap\u0131da de\u011ferlendirme k\u0131sm\u0131n\u0131 olu\u015fturdum.<\/em><\/p>\n\n\n\n<p id=\"ec32\">Uzay Temelli Mimarinin De\u011ferlendirilmesi;<\/p>\n\n\n\n<ul><li>\u00c7eviklik: Y\u00fcksek<br>&#8211; \u0130\u015flem birimleri kolayca aya\u011fa kald\u0131r\u0131l\u0131p indirilebilen yap\u0131lard\u0131r. Bunun yan\u0131nda uygulamaya gelen kullan\u0131c\u0131 y\u00fck\u00fcn\u00fcn de\u011fi\u015fimine h\u0131zl\u0131 bir \u015fekilde ayak uydurabilir.<\/li><li>Da\u011f\u0131t\u0131m Kolayl\u0131\u011f\u0131: Y\u00fcksek<br>&#8211; Birbirinden ayr\u0131k ve da\u011f\u0131t\u0131k olmamas\u0131na ra\u011fmen geli\u015fmi\u015f bulut tabanl\u0131 ara\u00e7lar, uygulamalar\u0131n sunuculara kolayca g\u00f6nderilmesine olanak tan\u0131r ve bu da\u011f\u0131t\u0131m\u0131 kolayla\u015ft\u0131r\u0131r.<\/li><li>Testedilebilirlik: D\u00fc\u015f\u00fck<br>&#8211; Y\u00fcksek kullan\u0131c\u0131 y\u00fck\u00fc olu\u015fturmak hem pahal\u0131d\u0131r hem de fazla zaman alacakt\u0131r. Bu da uygulaman\u0131n \u00f6l\u00e7eklenebilirli\u011finin test edilmesini zorla\u015ft\u0131r\u0131r.<\/li><li>Performans: Y\u00fcksek<br>&#8211; Bellek i\u00e7i veri eri\u015fimi ve \u00f6n bellek (cache) mekanizmalar\u0131 sayesinde y\u00fcksek performansl\u0131d\u0131r.<\/li><li>\u00d6l\u00e7eklenebilirlik: D\u00fc\u015f\u00fck<br>&#8211; Merkezi bir veritaban\u0131na ba\u011fl\u0131l\u0131\u011f\u0131n olmamas\u0131 y\u00fcksek \u00f6l\u00e7eklenebilirlik sa\u011flar.<\/li><li>Geli\u015ftirme kolayl\u0131\u011f\u0131: Y\u00fcksek<br>&#8211; Geli\u015fmi\u015f \u00f6nbellekte tutma (caching) ve bellek i\u00e7i veri gridi bu mimarinin geli\u015ftirilmesini g\u00f6rece karma\u015f\u0131k bir hale sokar. Mimariyi olu\u015ftururken kullan\u0131lan ara\u00e7lara ve \u00fcr\u00fcnlere olan a\u015final\u0131\u011f\u0131n az olmas\u0131 bu karma\u015f\u0131kl\u0131\u011f\u0131n ana nedenlerindendir.<\/li><\/ul>\n\n\n\n<p id=\"4ffc\">Mimari analizlerinin \u00f6zeti<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"https:\/\/miro.medium.com\/v2\/resize:fit:1400\/1*62j2VLd3lfWxo2VZ_w_d9g.png\" alt=\"\"\/><\/figure>\n\n\n\n<p id=\"5157\">Kaynak\u00e7a: Software Architecture Patterns \u2014 Mark Richards<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Spaced-based Architecture Uzay tabanl\u0131 mimari, \u00f6l\u00e7eklendirme ve ayn\u0131 anda kullan\u0131m problemlerinin adreslenmesi ve \u00e7\u00f6z\u00fcme ula\u015ft\u0131rmas\u0131 \u00fczerine dizayn edilmi\u015ftir. Bulut mimarisi olarak da bilinen uzay tabanl\u0131 mimari uygulaman\u0131n \u00f6l\u00e7eklenmesini limitleyen etmenleri en az indirir. Y\u00fcksek \u00f6l\u00e7eklenebilirlik, merkezi veritaban\u0131 k\u0131s\u0131tlamas\u0131n\u0131n kald\u0131r\u0131lmas\u0131 ve replike edilmi\u015f bellek i\u00e7i veri klavuzlar\u0131n\u0131n kullan\u0131lmas\u0131yla elde edilir. Uygulama verileri bellekte tutulur ve t\u00fcm\u2026 <span class=\"read-more\"><a href=\"https:\/\/blog.firatyasar.com\/?p=163\">Read More &raquo;<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":148,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.firatyasar.com\/index.php?rest_route=\/wp\/v2\/posts\/163"}],"collection":[{"href":"https:\/\/blog.firatyasar.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.firatyasar.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.firatyasar.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.firatyasar.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=163"}],"version-history":[{"count":1,"href":"https:\/\/blog.firatyasar.com\/index.php?rest_route=\/wp\/v2\/posts\/163\/revisions"}],"predecessor-version":[{"id":164,"href":"https:\/\/blog.firatyasar.com\/index.php?rest_route=\/wp\/v2\/posts\/163\/revisions\/164"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.firatyasar.com\/index.php?rest_route=\/wp\/v2\/media\/148"}],"wp:attachment":[{"href":"https:\/\/blog.firatyasar.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=163"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.firatyasar.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=163"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.firatyasar.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=163"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}