{"id":8,"date":"2026-09-23T20:33:33","date_gmt":"2026-09-23T20:33:33","guid":{"rendered":"https:\/\/www.akifsen.com.tr\/blog\/?p=8"},"modified":"2026-09-23T20:34:12","modified_gmt":"2026-09-23T20:34:12","slug":"mikroservis-mi-moduler-monolit-mi","status":"publish","type":"post","link":"https:\/\/www.akifsen.com.tr\/blog\/2026\/09\/23\/mikroservis-mi-moduler-monolit-mi\/","title":{"rendered":"Mikroservis Bir Hedef De\u011fildir: Mod\u00fcler Monolit Ne Zaman Daha Do\u011fru Se\u00e7im?"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Mikroservis Bir Hedef De\u011fildir<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Bir yaz\u0131l\u0131m projesi b\u00fcy\u00fcmeye ba\u015flad\u0131\u011f\u0131nda mimari konu\u015fmalar\u0131n\u0131n mikroservislere gelmesi neredeyse ka\u00e7\u0131n\u0131lmaz. Servislerin ba\u011f\u0131ms\u0131z deploy edilmesi, ayr\u0131 ayr\u0131 \u00f6l\u00e7eklenebilmesi ve ekiplerin birbirinden ba\u011f\u0131ms\u0131z hareket edebilmesi olduk\u00e7a cazip.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sorun \u015fu: mikroservislerin avantajlar\u0131n\u0131 almak i\u00e7in \u00f6nce da\u011f\u0131t\u0131k sistemlerin maliyetini kabul etmek gerekir.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ayn\u0131 process i\u00e7indeki bir metod \u00e7a\u011fr\u0131s\u0131n\u0131 ba\u015fka bir servise ta\u015f\u0131d\u0131\u011f\u0131n\u0131z anda art\u0131k network timeout&#8217;lar\u0131, retry stratejileri, distributed tracing, servis ke\u015ffi, veri tutarl\u0131l\u0131\u011f\u0131 ve deployment koordinasyonu gibi problemleriniz vard\u0131r.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Martin Fowler&#8217;\u0131n mikroservis \u00e7al\u0131\u015fmalar\u0131nda da alt\u0131n\u0131 \u00e7izdi\u011fi noktalardan biri tam olarak budur: ba\u011f\u0131ms\u0131z deployment ve g\u00fc\u00e7l\u00fc mod\u00fcl s\u0131n\u0131rlar\u0131 \u00f6nemli avantajlard\u0131r; buna kar\u015f\u0131l\u0131k da\u011f\u0131t\u0131k sistem olman\u0131n ciddi bir operasyonel maliyeti vard\u0131r.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">As\u0131l problem monolit de\u011fil, k\u00f6t\u00fc s\u0131n\u0131rlar<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Monolit dendi\u011finde \u00e7o\u011fu ki\u015finin akl\u0131na binlerce s\u0131n\u0131ftan olu\u015fan, her \u015feyin her \u015feyi \u00e7a\u011f\u0131rd\u0131\u011f\u0131 eski uygulamalar geliyor.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bu asl\u0131nda monolit olman\u0131n de\u011fil, <strong>mod\u00fcler olmaman\u0131n<\/strong> sonucudur.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0130yi tasarlanm\u0131\u015f bir mod\u00fcler monolitte \u00f6rne\u011fin <code>Payment<\/code>, <code>Order<\/code>, <code>Customer<\/code> ve <code>Notification<\/code> birbirinden a\u00e7\u0131k s\u0131n\u0131rlarla ayr\u0131labilir. Mod\u00fcller ayn\u0131 application artifact i\u00e7inde deploy edilir ama birbirlerinin tablolar\u0131na veya internal s\u0131n\u0131flar\u0131na kontrols\u00fcz bi\u00e7imde eri\u015fmez.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bu yap\u0131 \u00f6nemli bir avantaj sa\u011flar: domain s\u0131n\u0131rlar\u0131n\u0131 \u00f6\u011frenmeden distributed system vergisini \u00f6demezsiniz.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mikroservis s\u0131n\u0131rlar\u0131n\u0131 yanl\u0131\u015f belirlemek, yanl\u0131\u015f s\u0131n\u0131f s\u0131n\u0131r\u0131ndan \u00e7ok daha pahal\u0131d\u0131r. Bir s\u0131n\u0131f\u0131 yeniden organize etmek kolayd\u0131r. \u00dcretimde ba\u011f\u0131ms\u0131z deploy edilen iki servisin verisini, API s\u00f6zle\u015fmesini ve event ak\u0131\u015f\u0131n\u0131 yeniden birle\u015ftirmek ise de\u011fildir.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ne zaman mikroservis anlaml\u0131 hale gelir?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Benim bakaca\u011f\u0131m ilk sinyal trafik olmazd\u0131.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bir uygulama monolitken de load balancer arkas\u0131nda onlarca instance ile yatay \u00f6l\u00e7eklenebilir. Fowler&#8217;\u0131n mikroservis a\u00e7\u0131klamas\u0131nda da monolitlerin horizontal olarak \u00e7o\u011falt\u0131labilece\u011fi a\u00e7\u0131k\u00e7a belirtiliyor.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Daha anlaml\u0131 sinyaller \u015funlard\u0131r: belirli bir domain&#8217;in di\u011ferlerinden farkl\u0131 \u00f6l\u00e7eklenmesi, ekiplerin deployment s\u0131ras\u0131nda s\u00fcrekli birbirini beklemesi, baz\u0131 mod\u00fcllerin farkl\u0131 availability gereksinimine sahip olmas\u0131 veya domain sahipli\u011finin organizasyon i\u00e7inde net bi\u00e7imde ayr\u0131lmas\u0131.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00d6rne\u011fin \u00f6deme sistemi saniyede y\u00fcz i\u015flem yaparken bildirim sistemi y\u00fcz binlerce event i\u015fliyorsa iki mod\u00fcl\u00fcn ayn\u0131 \u00f6l\u00e7ekleme stratejisinde kalmas\u0131 anlams\u0131z hale gelebilir.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ama \u00fc\u00e7 ki\u015filik bir ekipte alt\u0131 mikroservis varsa, \u00e7o\u011fu zaman mimari i\u015finizi kolayla\u015ft\u0131rm\u0131yor; sadece da\u011f\u0131t\u0131lm\u0131\u015f bir monolit \u00fcretmi\u015f oluyorsunuz.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ben hangi yolu tercih ederim?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Yeni bir projede domain hen\u00fcz tam bilinmiyorsa iyi s\u0131n\u0131rland\u0131r\u0131lm\u0131\u015f bir mod\u00fcler monolit g\u00fc\u00e7l\u00fc bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mod\u00fcller aras\u0131nda API benzeri kontratlar olu\u015fturun. Database ownership s\u0131n\u0131rlar\u0131n\u0131 koruyun. Cross-module eri\u015fimi kontrol alt\u0131na al\u0131n. Integration event&#8217;leri gerekti\u011fi yerde kullan\u0131n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sonra ger\u00e7ek bir operasyonel gerek\u00e7e ortaya \u00e7\u0131kt\u0131\u011f\u0131nda ilgili mod\u00fcl\u00fc ay\u0131r\u0131n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bu yakla\u015f\u0131m mikroservislerden vazge\u00e7mek de\u011fildir. Tam tersine, mikroservise <strong>neden ge\u00e7ti\u011finizi bilerek ge\u00e7mek<\/strong> demektir.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mimarinin kalitesini servis say\u0131s\u0131 belirlemez. Do\u011fru s\u0131n\u0131rlar\u0131n do\u011fru yerde olmas\u0131 belirler.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Mikroservis Bir Hedef De\u011fildir Bir yaz\u0131l\u0131m projesi b\u00fcy\u00fcmeye ba\u015flad\u0131\u011f\u0131nda mimari konu\u015fmalar\u0131n\u0131n mikroservislere gelmesi neredeyse ka\u00e7\u0131n\u0131lmaz. Servislerin ba\u011f\u0131ms\u0131z deploy edilmesi, ayr\u0131 ayr\u0131 \u00f6l\u00e7eklenebilmesi ve ekiplerin birbirinden ba\u011f\u0131ms\u0131z hareket edebilmesi olduk\u00e7a cazip. Sorun \u015fu: mikroservislerin avantajlar\u0131n\u0131 almak i\u00e7in \u00f6nce da\u011f\u0131t\u0131k sistemlerin maliyetini kabul etmek gerekir. Ayn\u0131 process i\u00e7indeki bir metod \u00e7a\u011fr\u0131s\u0131n\u0131 ba\u015fka bir servise ta\u015f\u0131d\u0131\u011f\u0131n\u0131z anda art\u0131k [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[3,4,5],"class_list":["post-8","post","type-post","status-publish","format-standard","hentry","category-mimari","tag-mikroservis-mimarisi","tag-moduler-monolit","tag-software-architecture"],"_links":{"self":[{"href":"https:\/\/www.akifsen.com.tr\/blog\/wp-json\/wp\/v2\/posts\/8","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.akifsen.com.tr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.akifsen.com.tr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.akifsen.com.tr\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.akifsen.com.tr\/blog\/wp-json\/wp\/v2\/comments?post=8"}],"version-history":[{"count":1,"href":"https:\/\/www.akifsen.com.tr\/blog\/wp-json\/wp\/v2\/posts\/8\/revisions"}],"predecessor-version":[{"id":10,"href":"https:\/\/www.akifsen.com.tr\/blog\/wp-json\/wp\/v2\/posts\/8\/revisions\/10"}],"wp:attachment":[{"href":"https:\/\/www.akifsen.com.tr\/blog\/wp-json\/wp\/v2\/media?parent=8"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.akifsen.com.tr\/blog\/wp-json\/wp\/v2\/categories?post=8"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.akifsen.com.tr\/blog\/wp-json\/wp\/v2\/tags?post=8"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}