{"id":2801,"date":"2019-07-17T14:59:14","date_gmt":"2019-07-17T11:59:14","guid":{"rendered":"https:\/\/gokhan-gokalp.com\/?p=2801"},"modified":"2022-11-03T14:28:27","modified_gmt":"2022-11-03T13:28:27","slug":"understanding-solid-principles-keep-calm-for-cloud-native-applications","status":"publish","type":"post","link":"https:\/\/gokhan-gokalp.com\/tr\/understanding-solid-principles-keep-calm-for-cloud-native-applications\/","title":{"rendered":"SOLID Prensiplerini Anlama, keep calm! Cloud-Native Uygulamalar \u0130\u00e7in"},"content":{"rendered":"<p>Bu makale kapsam\u0131nda bahsetmek istedi\u011fim konu <em>SOLID<\/em> prensipleri ama bu sefer <strong>cloud-native uygulamalar&#8217;lar<\/strong> i\u00e7in.<\/p>\n<p>Bildi\u011fimiz gibi<em> SOLID<\/em> prensipleri, object-oriented yaz\u0131l\u0131m geli\u015ftirmede ku\u015fkusuz en \u00f6nemli prensip setlerinden birisidir.<\/p>\n<p><a href=\"\/wp-content\/uploads\/2019\/07\/solid-principles.jpg\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-2804 lazyload\" data-src=\"\/wp-content\/uploads\/2019\/07\/solid-principles.jpg\" alt=\"\" width=\"1024\" height=\"283\" data-srcset=\"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2019\/07\/solid-principles.jpg 1024w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2019\/07\/solid-principles-300x83.jpg 300w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2019\/07\/solid-principles-768x212.jpg 768w\" data-sizes=\"(max-width: 1024px) 100vw, 1024px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/283;\" \/><\/a><\/p>\n<p>Bir \u00e7o\u011fumuz uygulama geli\u015ftirece\u011fimiz zaman kodumuzu <em>SOLID<\/em> prensipleri do\u011frultusunda geli\u015ftirmeye \u00e7al\u0131\u015f\u0131yoruz, \u00e7\u00fcnk\u00fc:<\/p>\n<ul>\n<li>Geli\u015ftirilen uygulaman\u0131n well-designed olabilmesi i\u00e7in kod standart\u0131 sa\u011flalamaktad\u0131r.<\/li>\n<li>Ayr\u0131ca kolay maintenance sa\u011flamaktad\u0131r.<\/li>\n<li>Extendability ve Reusability de art\u0131s\u0131.<\/li>\n<\/ul>\n<p><em>SOLID<\/em> prensiplerinin sa\u011flad\u0131\u011f\u0131 bir ka\u00e7 fayday\u0131 yazmak istedim. S\u00f6z konusu <em>SOLID<\/em> olunca, bu maddeler bitmez.<\/p>\n<p>Uygulamalar\u0131m\u0131z\u0131 bu prensipler do\u011frultusunda <strong>kod seviyesinde<\/strong> iyi bir \u015fekilde geli\u015ftirmeye \u00e7al\u0131\u015f\u0131yoruz. Peki <strong>uygulama seviyesinde<\/strong> bu kadar iyi bir \u015fekilde geli\u015ftirmeye dikkat ediyor muyuz? \u00d6zellikle cloud-native bir uygulama geli\u015ftirme s\u00f6z konusuysa.<\/p>\n<p>Bir ka\u00e7 g\u00fcn \u00f6nce <em>LinkedIn<\/em> \u00fczerinden a\u015fa\u011f\u0131daki gibi bir payla\u015f\u0131mda bulunmu\u015ftum.<\/p>\n<p><a href=\"\/wp-content\/uploads\/2019\/07\/cloud-post-linkedin.jpg\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-2806 lazyload\" data-src=\"\/wp-content\/uploads\/2019\/07\/cloud-post-linkedin.jpg\" alt=\"\" width=\"618\" height=\"261\" data-srcset=\"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2019\/07\/cloud-post-linkedin.jpg 618w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2019\/07\/cloud-post-linkedin-300x127.jpg 300w\" data-sizes=\"(max-width: 618px) 100vw, 618px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 618px; --smush-placeholder-aspect-ratio: 618\/261;\" \/><\/a><\/p>\n<p>Bu payla\u015f\u0131m\u0131m\u0131n ard\u0131ndan \u00f6zelden gelen bir ka\u00e7 soru do\u011frultusunda, cloud-native uygulamalar i\u00e7in <em>SOLID<\/em> prensipleri konusuna k\u00fc\u00e7\u00fck bir makale ile de\u011finmek istedim. Bu arada, \u00f6zellikle <em>Red Hat<\/em>&#8216;\u0131n bu konu \u00fczerinde \u00e7ok g\u00fczel payla\u015f\u0131mlar\u0131 bulunmaktad\u0131r.<\/p>\n<p>Biliyorsunuzki g\u00fcn\u00fcm\u00fcz teknoloji \u00e7a\u011f\u0131nda highly scalable cloud-native uygulamalar geli\u015ftirmek, olduk\u00e7a \u00f6nem ta\u015f\u0131maktad\u0131r. Geli\u015ftiriyor oldu\u011fumuz uygulamalar\u0131n iyi bir cloud-native vatanda\u015f\u0131 olabilmesi i\u00e7in ise, uymas\u0131 gereken bir tak\u0131m container-related best practice&#8217;ler ve prensip&#8217;ler bulunmaktad\u0131r.<\/p>\n<h2>Peki, Nedir Bu Cloud-Native Uygulamalar \u0130\u00e7in SOLID Prensipleri?<\/h2>\n<p>Bu prensipler &#8220;<em>Build time<\/em>&#8221; ve &#8220;<em>Runtime<\/em>&#8221; olmak \u00fczere iki farkl\u0131 kategoriye ayr\u0131lmaktad\u0131r.<\/p>\n<h2>Build Time Principles<\/h2>\n<hr \/>\n<h3>1) Single Concern Principle<\/h3>\n<p>Bu prensip&#8217;in i\u00e7eri\u011fini, t\u0131pk\u0131 <em>Single Responsibility<\/em>\u00a0prensip&#8217;ine benzetebiliriz. Diyorki, her bir container, sadece tek bir concern ile ilgilenmelidir. Bu sayede istenilen container, sorunsuz ve ba\u011f\u0131ms\u0131z bir \u015fekilde scale veya replace edilebilmektedir.<\/p>\n<p><a href=\"\/wp-content\/uploads\/2019\/07\/single_concern.jpg\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-2812 lazyload\" data-src=\"\/wp-content\/uploads\/2019\/07\/single_concern.jpg\" alt=\"\" width=\"1920\" height=\"1089\" data-srcset=\"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2019\/07\/single_concern.jpg 1920w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2019\/07\/single_concern-300x170.jpg 300w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2019\/07\/single_concern-768x436.jpg 768w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2019\/07\/single_concern-1024x581.jpg 1024w\" data-sizes=\"(max-width: 1920px) 100vw, 1920px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1920px; --smush-placeholder-aspect-ratio: 1920\/1089;\" \/><\/a><\/p>\n<p>E\u011fer farkl\u0131 fonksiyonalitelerin de handle edilmesi gerekiyorsa, <em>sidecar<\/em> gibi cloud-native pattern&#8217;lar\u0131 kullan\u0131labilir. \u00d6rne\u011fin bu pattern, container&#8217;\u0131n isolated bir \u015fekilde heterojen bile\u015fenlerden (<em>Logging<\/em>, <em>Tracing<\/em>, <em>Proxying<\/em>) olu\u015fabilmesine olanak tan\u0131maktad\u0131r.<\/p>\n<h3>2) Self-Containment Principle<\/h3>\n<p>Bu prensip ise k\u0131saca, container&#8217;\u0131n \u00e7al\u0131\u015fabilmesi i\u00e7in ihtiya\u00e7 duydu\u011fu her \u015feyi (libraries vs&#8230;), environment bazl\u0131 de\u011fi\u015fti\u011fi i\u00e7in configuration&#8217;lar hari\u00e7, build time&#8217;da i\u00e7ermesi gerekti\u011fini s\u00f6ylemektedir.<\/p>\n<p><a href=\"\/wp-content\/uploads\/2019\/07\/self_contained.jpg\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-2814 lazyload\" data-src=\"\/wp-content\/uploads\/2019\/07\/self_contained.jpg\" alt=\"\" width=\"1249\" height=\"698\" data-srcset=\"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2019\/07\/self_contained.jpg 1249w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2019\/07\/self_contained-300x168.jpg 300w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2019\/07\/self_contained-768x429.jpg 768w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2019\/07\/self_contained-1024x572.jpg 1024w\" data-sizes=\"(max-width: 1249px) 100vw, 1249px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1249px; --smush-placeholder-aspect-ratio: 1249\/698;\" \/><\/a><\/p>\n<h3>3) Image Immutability Principle<\/h3>\n<p>Buradaki ama\u00e7, containerized hale getirilmi\u015f uygulaman\u0131n de\u011fi\u015fmez olmas\u0131d\u0131r. Yani containerized bir uygulama build edildikten sonra, environment bazl\u0131 de\u011fi\u015fmemeli ve ihtiya\u00e7lara g\u00f6re configure edilmelidir. E\u011fer herhangi bir de\u011fi\u015fim olacaksa containerized bir uygulamada, bunun i\u00e7in yeni bir image olu\u015fturulmas\u0131 ve tekrar environment&#8217;lar aras\u0131nda kullan\u0131lmas\u0131 beklenir.<\/p>\n<p><a href=\"\/wp-content\/uploads\/2019\/07\/image_immutabilit.jpeg\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-2815 lazyload\" data-src=\"\/wp-content\/uploads\/2019\/07\/image_immutabilit.jpeg\" alt=\"\" width=\"1100\" height=\"385\" data-srcset=\"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2019\/07\/image_immutabilit.jpeg 1100w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2019\/07\/image_immutabilit-300x105.jpeg 300w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2019\/07\/image_immutabilit-768x269.jpeg 768w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2019\/07\/image_immutabilit-1024x358.jpeg 1024w\" data-sizes=\"(max-width: 1100px) 100vw, 1100px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1100px; --smush-placeholder-aspect-ratio: 1100\/385;\" \/><\/a><\/p>\n<h2>Runtime Principles<\/h2>\n<hr \/>\n<h3>1) High Observability Principle<\/h3>\n<p>Bildi\u011fimiz gibi distributed sistemler i\u00e7erisindeki en \u00f6nemli konulardan bir tanesi observability. Uygulaman\u0131n o anki sa\u011fl\u0131\u011f\u0131n\u0131 her a\u00e7\u0131dan g\u00f6rebilmek, olas\u0131 bir problemin \u00f6n\u00fcne kolayca ge\u00e7ebilmemize yard\u0131mc\u0131 olacakt\u0131r.<\/p>\n<p><strong>Twelve Factor App<\/strong>&#8216;in &#8220;<em>Logs<\/em>&#8221; ba\u015fl\u0131\u011f\u0131nda oldu\u011fu gibi \u00f6zellikle log&#8217;lama, runtime&#8217;da \u00e7al\u0131\u015fan bir uygulaman\u0131n bize davran\u0131\u015flar\u0131n\u0131 izleyebilme olana\u011f\u0131n\u0131 sunmaktad\u0131r.<\/p>\n<p><a href=\"\/wp-content\/uploads\/2019\/07\/observability.jpg\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-2816 lazyload\" data-src=\"\/wp-content\/uploads\/2019\/07\/observability.jpg\" alt=\"\" width=\"1920\" height=\"1080\" data-srcset=\"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2019\/07\/observability.jpg 1920w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2019\/07\/observability-300x169.jpg 300w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2019\/07\/observability-768x432.jpg 768w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2019\/07\/observability-1024x576.jpg 1024w\" data-sizes=\"(max-width: 1920px) 100vw, 1920px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1920px; --smush-placeholder-aspect-ratio: 1920\/1080;\" \/><\/a><\/p>\n<p>Bu prensip ise derki, containerized uygulamalar\u0131n\u0131za bir black box gibi davran\u0131n ama davran\u0131\u015flar\u0131n\u0131n g\u00f6zlemlenebilmesi i\u00e7in gerekli t\u00fcm <em>API<\/em>&#8216;lar\u0131 da (health checks, tracing, logs, etc&#8230;) implemente edin.<\/p>\n<p>\u00d6rne\u011fin log&#8217;lar\u0131n aggregation i\u015flemi i\u00e7in <em>Fluentd<\/em>, <em>Logstash<\/em>\u00a0ve ayr\u0131ca tracing i\u015flemleri i\u00e7in ise <em>OpenTracing<\/em>, <em>Jaeger<\/em> implemente edilebilir.<\/p>\n<h3>2) Lifecycle Conformance Principle<\/h3>\n<p>Burada ise \u00f6nemli olan nokta, container&#8217;\u0131n platform&#8217;dan gelen event&#8217;lere kar\u015f\u0131 duyarl\u0131 olmas\u0131d\u0131r. Bu event&#8217;ler ile, lifecycle&#8217;\u0131n\u0131 y\u00f6netmelidir.<\/p>\n<p><a href=\"\/wp-content\/uploads\/2019\/07\/sigkill.png\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-2823 lazyload\" data-src=\"\/wp-content\/uploads\/2019\/07\/sigkill.png\" alt=\"\" width=\"1521\" height=\"943\" data-srcset=\"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2019\/07\/sigkill.png 1521w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2019\/07\/sigkill-300x186.png 300w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2019\/07\/sigkill-768x476.png 768w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2019\/07\/sigkill-1024x635.png 1024w\" data-sizes=\"(max-width: 1521px) 100vw, 1521px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1521px; --smush-placeholder-aspect-ratio: 1521\/943;\" \/><\/a><\/p>\n<p>\u00d6rne\u011fin containerized bir uygulama &#8220;<em>PostStart<\/em>&#8221; veya &#8220;<em>PreStop<\/em>&#8221; event&#8217;lerine duyarl\u0131 olarak, warm up veya graceful shutdown i\u015flemlerini ger\u00e7ekle\u015ftirebilir.<\/p>\n<h3>3) Process Disposability Principle<\/h3>\n<p>\u00d6nemli prensip&#8217;lerden bir tanesidir. Twelve Factor App&#8217;in &#8220;<em>Disposability<\/em>&#8221; maddesinde oldu\u011fu gibi, container&#8217;lar ge\u00e7ici olmal\u0131d\u0131r.<\/p>\n<p><a href=\"\/wp-content\/uploads\/2019\/07\/containers.jpg\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-2824 lazyload\" data-src=\"\/wp-content\/uploads\/2019\/07\/containers.jpg\" alt=\"\" width=\"1200\" height=\"800\" data-srcset=\"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2019\/07\/containers.jpg 1200w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2019\/07\/containers-300x200.jpg 300w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2019\/07\/containers-768x512.jpg 768w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2019\/07\/containers-1024x683.jpg 1024w\" data-sizes=\"(max-width: 1200px) 100vw, 1200px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1200px; --smush-placeholder-aspect-ratio: 1200\/800;\" \/><\/a><\/p>\n<p>Bu prensip \u00f6zellikle containerized bir uygulaman\u0131n h\u0131zl\u0131 start ve shutdown olabilmesine odaklanmaktad\u0131r. B\u00f6ylece herhangi bir t an\u0131nda, containerized bir uygulama kolay ve h\u0131zl\u0131 bir \u015fekilde scale out veya replace edilebilmektedir.<\/p>\n<h3>4) Runtime Confinement Principle<\/h3>\n<p>Bu prensip bana g\u00f6re en \u00f6nemli prensip&#8217;lerden bir tanesi. K\u0131saca her bir container&#8217;\u0131n, ihtiya\u00e7 duydu\u011fu resource kullan\u0131m\u0131n\u0131n tan\u0131mlanmas\u0131n\u0131 ve tan\u0131mlanan \u015fartlarla da resource kullan\u0131m\u0131n\u0131n s\u0131n\u0131rland\u0131r\u0131lmas\u0131n\u0131 s\u00f6ylemektedir.<\/p>\n<p><a href=\"\/wp-content\/uploads\/2019\/07\/sinking-ship.jpg\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-2826 lazyload\" data-src=\"\/wp-content\/uploads\/2019\/07\/sinking-ship.jpg\" alt=\"\" width=\"1179\" height=\"474\" data-srcset=\"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2019\/07\/sinking-ship.jpg 1179w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2019\/07\/sinking-ship-300x121.jpg 300w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2019\/07\/sinking-ship-768x309.jpg 768w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2019\/07\/sinking-ship-1024x412.jpg 1024w\" data-sizes=\"(max-width: 1179px) 100vw, 1179px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1179px; --smush-placeholder-aspect-ratio: 1179\/474;\" \/><\/a><\/p>\n<p>\u00d6rne\u011fin containerized bir uygulaman\u0131n ne kadar <strong>memory<\/strong> veya <strong>CPU<\/strong> kullanmas\u0131 gerekti\u011finin belirtilmesi, auto-scaling ayarlar\u0131 i\u00e7in de minimum ve maximum instance de\u011ferlerinin belirlenmesi gerekmektedir.<\/p>\n<p>Kubernetes ortam\u0131nda ise bir pod i\u00e7in a\u015fa\u011f\u0131daki gibi resource limitlerini kolay bir \u015fekilde belirtebilmek m\u00fcmk\u00fcnd\u00fcr.<\/p>\n<pre class=\"lang:default decode:true\">hpa:\r\n enabled: true\r\n minReplicas: 1\r\n maxReplicas: 3\r\n targetCPUUtilizationPercentage: 70\r\n \r\nresources: \r\n limits:\r\n   cpu: 300m\r\n   memory: 300Mi\r\n requests:\r\n   cpu: 100m\r\n   memory: 100Mi<\/pre>\n<p>Unutmayal\u0131m ki limitleri belirtilmeyen containerized bir uygulama, runtime&#8217;da istenmeyen sonu\u00e7lara sebeb olabilmektedir. Ayr\u0131ca bu istenmeyen sonu\u00e7lar, platform \u00fczerindeki di\u011fer servis&#8217;lerin de olumsuz etkilenmesine sebep olacakt\u0131r.<\/p>\n<h2>Sonu\u00e7<\/h2>\n<p>\u0130yi ve temiz bir uygulama geli\u015ftirebilmek i\u00e7in object-oriented yaz\u0131l\u0131m geli\u015ftirmede <em>SOLID<\/em> prensiplerine uyulmas\u0131n\u0131n \u00f6nemini biliyoruz. Bu makalede ise uygulaman\u0131n iyi bir cloud-native vatanda\u015f\u0131 olabilmesi i\u00e7in uymas\u0131 gereken <em>SOLID<\/em> prensip&#8217;lerinden bahsettik.<\/p>\n<p>Bildi\u011fimiz gibi cloud-native uygulamalar scaling gibi bir \u00e7ok g\u00fczel yeteneklerle birlikte daha h\u0131zl\u0131 yaz\u0131l\u0131m geli\u015ftirmeye olanak sa\u011flamaktad\u0131r.<\/p>\n<p>Elbette bir uygulaman\u0131n iyi bir cloud-native vatanda\u015f\u0131 olabilmesi i\u00e7in duruma g\u00f6re uygulanabilecek bir \u00e7ok farkl\u0131 teknikler de bulunmaktad\u0131r. Bu makale kapsam\u0131nda bahsetti\u011fimiz prensip&#8217;ler ise, daha temel ve bir \u00e7ok use-case&#8217;ler de ge\u00e7erli olabilecek olan prensipler.<\/p>\n<h2>Referanslar<\/h2>\n<blockquote><p>https:\/\/www.redhat.com\/en\/resources\/cloud-native-container-design-whitepaper<br \/>\nhttp:\/\/turnoff.us\/geek\/dont-sigkill-2\/<\/p><\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>Bu makale kapsam\u0131nda bahsetmek istedi\u011fim konu SOLID prensipleri ama bu sefer cloud-native uygulamalar&#8217;lar i\u00e7in. Bildi\u011fimiz gibi SOLID prensipleri, object-oriented yaz\u0131l\u0131m geli\u015ftirmede ku\u015fkusuz en \u00f6nemli prensip setlerinden birisidir. Bir \u00e7o\u011fumuz uygulama geli\u015ftirece\u011fimiz zaman kodumuzu SOLID prensipleri do\u011frultusunda geli\u015ftirmeye \u00e7al\u0131\u015f\u0131yoruz, \u00e7\u00fcnk\u00fc: Geli\u015ftirilen uygulaman\u0131n well-designed olabilmesi i\u00e7in kod&#8230;<\/p>\n<div class=\"more-link-wrapper\"><a class=\"more-link\" href=\"https:\/\/gokhan-gokalp.com\/tr\/understanding-solid-principles-keep-calm-for-cloud-native-applications\/\">Devam\u0131n\u0131 okuyun<span class=\"screen-reader-text\">SOLID Prensiplerini Anlama, keep calm! Cloud-Native Uygulamalar \u0130\u00e7in<\/span><\/a><\/div>\n","protected":false},"author":1,"featured_media":2832,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[434,285,368],"tags":[538,542,541,322,259,540,539],"class_list":["post-2801","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-containerizing","category-messaging","category-microservices","tag-cloud-native","tag-cloud-native-applicaitons","tag-cloud-native-principles","tag-docker","tag-microservice","tag-solid-principles","tag-twelve-factor-app","entry"],"translation":{"provider":"WPGlobus","version":"3.0.2","language":"tr","enabled_languages":["en","tr"],"languages":{"en":{"title":true,"content":true,"excerpt":false},"tr":{"title":true,"content":true,"excerpt":false}}},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>SOLID Prensiplerini Anlama, keep calm! Cloud-Native Uygulamalar \u0130\u00e7in - G\u00f6khan G\u00f6kalp<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/gokhan-gokalp.com\/understanding-solid-principles-keep-calm-for-cloud-native-applications\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SOLID Prensiplerini Anlama, keep calm! Cloud-Native Uygulamalar \u0130\u00e7in - G\u00f6khan G\u00f6kalp\" \/>\n<meta property=\"og:url\" content=\"https:\/\/gokhan-gokalp.com\/understanding-solid-principles-keep-calm-for-cloud-native-applications\/\" \/>\n<meta property=\"og:site_name\" content=\"G\u00f6khan G\u00f6kalp\" \/>\n<meta property=\"article:published_time\" content=\"2019-07-17T11:59:14+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-11-03T13:28:27+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2019\/07\/containers-1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1030\" \/>\n\t<meta property=\"og:image:height\" content=\"438\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"G\u00f6khan G\u00f6kalp\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"G\u00f6khan G\u00f6kalp\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/understanding-solid-principles-keep-calm-for-cloud-native-applications\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/understanding-solid-principles-keep-calm-for-cloud-native-applications\\\/\"},\"author\":{\"name\":\"G\u00f6khan G\u00f6kalp\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#\\\/schema\\\/person\\\/7e2a7fa98babd22a5fdae563c4b8cdbe\"},\"headline\":\"SOLID Prensiplerini Anlama, keep calm! Cloud-Native Uygulamalar \u0130\u00e7in\",\"datePublished\":\"2019-07-17T11:59:14+00:00\",\"dateModified\":\"2022-11-03T13:28:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/understanding-solid-principles-keep-calm-for-cloud-native-applications\\\/\"},\"wordCount\":1831,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#\\\/schema\\\/person\\\/7e2a7fa98babd22a5fdae563c4b8cdbe\"},\"image\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/understanding-solid-principles-keep-calm-for-cloud-native-applications\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wp-content\\\/uploads\\\/2019\\\/07\\\/containers-1.jpg\",\"keywords\":[\"cloud native\",\"cloud native applicaitons\",\"cloud native principles\",\"docker\",\"MicroService\",\"solid principles\",\"twelve factor app\"],\"articleSection\":[\"Containerizing\",\"Messaging\",\"Microservices\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/gokhan-gokalp.com\\\/understanding-solid-principles-keep-calm-for-cloud-native-applications\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/understanding-solid-principles-keep-calm-for-cloud-native-applications\\\/\",\"url\":\"https:\\\/\\\/gokhan-gokalp.com\\\/understanding-solid-principles-keep-calm-for-cloud-native-applications\\\/\",\"name\":\"SOLID Prensiplerini Anlama, keep calm! Cloud-Native Uygulamalar \u0130\u00e7in - G\u00f6khan G\u00f6kalp\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/understanding-solid-principles-keep-calm-for-cloud-native-applications\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/understanding-solid-principles-keep-calm-for-cloud-native-applications\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wp-content\\\/uploads\\\/2019\\\/07\\\/containers-1.jpg\",\"datePublished\":\"2019-07-17T11:59:14+00:00\",\"dateModified\":\"2022-11-03T13:28:27+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/understanding-solid-principles-keep-calm-for-cloud-native-applications\\\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/gokhan-gokalp.com\\\/understanding-solid-principles-keep-calm-for-cloud-native-applications\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/understanding-solid-principles-keep-calm-for-cloud-native-applications\\\/#primaryimage\",\"url\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wp-content\\\/uploads\\\/2019\\\/07\\\/containers-1.jpg\",\"contentUrl\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wp-content\\\/uploads\\\/2019\\\/07\\\/containers-1.jpg\",\"width\":1030,\"height\":438},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/understanding-solid-principles-keep-calm-for-cloud-native-applications\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/gokhan-gokalp.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Understanding SOLID Principles, keep calm! For Cloud-Native Applications\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#website\",\"url\":\"https:\\\/\\\/gokhan-gokalp.com\\\/\",\"name\":\"G\u00f6khan G\u00f6kalp\",\"description\":\"C# &amp; Python lover\",\"publisher\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#\\\/schema\\\/person\\\/7e2a7fa98babd22a5fdae563c4b8cdbe\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/gokhan-gokalp.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#\\\/schema\\\/person\\\/7e2a7fa98babd22a5fdae563c4b8cdbe\",\"name\":\"G\u00f6khan G\u00f6kalp\",\"pronouns\":\"he\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wp-content\\\/litespeed\\\/avatar\\\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659\",\"url\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wp-content\\\/litespeed\\\/avatar\\\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659\",\"contentUrl\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wp-content\\\/litespeed\\\/avatar\\\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659\",\"caption\":\"G\u00f6khan G\u00f6kalp\"},\"logo\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wp-content\\\/litespeed\\\/avatar\\\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659\"},\"sameAs\":[\"https:\\\/\\\/gokhan-gokalp.com\"],\"url\":\"https:\\\/\\\/gokhan-gokalp.com\\\/tr\\\/author\\\/gok-gokalp\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"SOLID Prensiplerini Anlama, keep calm! Cloud-Native Uygulamalar \u0130\u00e7in - G\u00f6khan G\u00f6kalp","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:\/\/gokhan-gokalp.com\/understanding-solid-principles-keep-calm-for-cloud-native-applications\/","og_locale":"tr_TR","og_type":"article","og_title":"SOLID Prensiplerini Anlama, keep calm! Cloud-Native Uygulamalar \u0130\u00e7in - G\u00f6khan G\u00f6kalp","og_url":"https:\/\/gokhan-gokalp.com\/understanding-solid-principles-keep-calm-for-cloud-native-applications\/","og_site_name":"G\u00f6khan G\u00f6kalp","article_published_time":"2019-07-17T11:59:14+00:00","article_modified_time":"2022-11-03T13:28:27+00:00","og_image":[{"width":1030,"height":438,"url":"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2019\/07\/containers-1.jpg","type":"image\/jpeg"}],"author":"G\u00f6khan G\u00f6kalp","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"G\u00f6khan G\u00f6kalp","Tahmini okuma s\u00fcresi":"9 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/gokhan-gokalp.com\/understanding-solid-principles-keep-calm-for-cloud-native-applications\/#article","isPartOf":{"@id":"https:\/\/gokhan-gokalp.com\/understanding-solid-principles-keep-calm-for-cloud-native-applications\/"},"author":{"name":"G\u00f6khan G\u00f6kalp","@id":"https:\/\/gokhan-gokalp.com\/#\/schema\/person\/7e2a7fa98babd22a5fdae563c4b8cdbe"},"headline":"SOLID Prensiplerini Anlama, keep calm! Cloud-Native Uygulamalar \u0130\u00e7in","datePublished":"2019-07-17T11:59:14+00:00","dateModified":"2022-11-03T13:28:27+00:00","mainEntityOfPage":{"@id":"https:\/\/gokhan-gokalp.com\/understanding-solid-principles-keep-calm-for-cloud-native-applications\/"},"wordCount":1831,"commentCount":1,"publisher":{"@id":"https:\/\/gokhan-gokalp.com\/#\/schema\/person\/7e2a7fa98babd22a5fdae563c4b8cdbe"},"image":{"@id":"https:\/\/gokhan-gokalp.com\/understanding-solid-principles-keep-calm-for-cloud-native-applications\/#primaryimage"},"thumbnailUrl":"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2019\/07\/containers-1.jpg","keywords":["cloud native","cloud native applicaitons","cloud native principles","docker","MicroService","solid principles","twelve factor app"],"articleSection":["Containerizing","Messaging","Microservices"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/gokhan-gokalp.com\/understanding-solid-principles-keep-calm-for-cloud-native-applications\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/gokhan-gokalp.com\/understanding-solid-principles-keep-calm-for-cloud-native-applications\/","url":"https:\/\/gokhan-gokalp.com\/understanding-solid-principles-keep-calm-for-cloud-native-applications\/","name":"SOLID Prensiplerini Anlama, keep calm! Cloud-Native Uygulamalar \u0130\u00e7in - G\u00f6khan G\u00f6kalp","isPartOf":{"@id":"https:\/\/gokhan-gokalp.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/gokhan-gokalp.com\/understanding-solid-principles-keep-calm-for-cloud-native-applications\/#primaryimage"},"image":{"@id":"https:\/\/gokhan-gokalp.com\/understanding-solid-principles-keep-calm-for-cloud-native-applications\/#primaryimage"},"thumbnailUrl":"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2019\/07\/containers-1.jpg","datePublished":"2019-07-17T11:59:14+00:00","dateModified":"2022-11-03T13:28:27+00:00","breadcrumb":{"@id":"https:\/\/gokhan-gokalp.com\/understanding-solid-principles-keep-calm-for-cloud-native-applications\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/gokhan-gokalp.com\/understanding-solid-principles-keep-calm-for-cloud-native-applications\/"]}]},{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/gokhan-gokalp.com\/understanding-solid-principles-keep-calm-for-cloud-native-applications\/#primaryimage","url":"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2019\/07\/containers-1.jpg","contentUrl":"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2019\/07\/containers-1.jpg","width":1030,"height":438},{"@type":"BreadcrumbList","@id":"https:\/\/gokhan-gokalp.com\/understanding-solid-principles-keep-calm-for-cloud-native-applications\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/gokhan-gokalp.com\/"},{"@type":"ListItem","position":2,"name":"Understanding SOLID Principles, keep calm! For Cloud-Native Applications"}]},{"@type":"WebSite","@id":"https:\/\/gokhan-gokalp.com\/#website","url":"https:\/\/gokhan-gokalp.com\/","name":"G\u00f6khan G\u00f6kalp","description":"C# &amp; Python lover","publisher":{"@id":"https:\/\/gokhan-gokalp.com\/#\/schema\/person\/7e2a7fa98babd22a5fdae563c4b8cdbe"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/gokhan-gokalp.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/gokhan-gokalp.com\/#\/schema\/person\/7e2a7fa98babd22a5fdae563c4b8cdbe","name":"G\u00f6khan G\u00f6kalp","pronouns":"he","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/gokhan-gokalp.com\/wp-content\/litespeed\/avatar\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659","url":"https:\/\/gokhan-gokalp.com\/wp-content\/litespeed\/avatar\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659","contentUrl":"https:\/\/gokhan-gokalp.com\/wp-content\/litespeed\/avatar\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659","caption":"G\u00f6khan G\u00f6kalp"},"logo":{"@id":"https:\/\/gokhan-gokalp.com\/wp-content\/litespeed\/avatar\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659"},"sameAs":["https:\/\/gokhan-gokalp.com"],"url":"https:\/\/gokhan-gokalp.com\/tr\/author\/gok-gokalp\/"}]}},"_links":{"self":[{"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/posts\/2801","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/comments?post=2801"}],"version-history":[{"count":25,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/posts\/2801\/revisions"}],"predecessor-version":[{"id":4212,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/posts\/2801\/revisions\/4212"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/media\/2832"}],"wp:attachment":[{"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/media?parent=2801"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/categories?post=2801"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/tags?post=2801"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}