[{"data":1,"prerenderedAt":430},["ShallowReactive",2],{"post-\u002Ftr\u002Faws-ec2-uzerinde-docker-ve-full-stack-web-performansi":3},{"page":4,"translation":266,"nav":283,"related":410,"random":419},{"id":5,"title":6,"body":7,"categories":264,"category":266,"date":267,"description":268,"draft":269,"extension":270,"image":271,"kind":266,"lang":70,"meta":272,"navigation":273,"path":274,"readingTime":261,"seo":275,"slug":276,"stem":277,"tags":278,"translationKey":266,"type":265,"updated":281,"__hash__":282},"postsTr\u002Ftr\u002Faws-ec2-uzerinde-docker-ve-full-stack-web-performansi.md","AWS EC2 Üzerinde Docker ve Full Stack Web Performansı",{"type":8,"value":9,"toc":257},"minimark",[10,43,46,49,52,55,58,63,184,186,191,198,201,208,211,213,217,220,227,233,236,239,242,244,249],[11,12,13,21],"blockquote",{},[14,15,16,17],"p",{},"💡 ",[18,19,20],"strong",{},"Özet (TL;DR):",[22,23,24,31,37],"ul",{},[25,26,27,30],"li",{},[18,28,29],{},"Altyapı:"," AWS t3a.small (2 vCPU, 2 GB RAM) instance üzerinde Ubuntu 20.04 LTS ve Docker.",[25,32,33,36],{},[18,34,35],{},"Teknoloji Yığını:"," Portainer, Nginx, PHP-FPM, MariaDB, Redis ve RabbitMQ konteynerleri tek bir sunucu üzerinde aktif olarak çalışmaktadır.",[25,38,39,42],{},[18,40,41],{},"Performans Kazanımı:"," Yerel ortamda 80-100ms süren sayfa açılış hızları, bulut sunucu üzerinde 8-10ms seviyelerine kadar inmiştir. CPU kullanımı boşta %1 civarında, RAM tüketimi ise 300-400 MB düzeyindedir.",[14,44,45],{},"AWS EC2 üzerinde Docker Konteynerleri ile kurduğum sunucu ortamının performansından bahsetmeden önce, bu performans denemesini bugüne kadar neden yapmadığımı açıklayayım.",[14,47,48],{},"Çok uzun süredir AWS EC2 sunucularını kullanıyorum fakat AWS üzerinde konteyner teknolojisi ile bir deneyimim olmamıştı. EC2 üzerinde Nginx web sunucumu kurup, SQL\u002FNoSQL tarafında Amazon'un barındırılan (hosted) servislerini kullanıyordum. Tüm sunucuları tek bir EC2 üzerinde kurmayı denemiş olsam da ortalık çok karıştığı için kendimi pek de rahat hissedemiyordum.",[14,50,51],{},"Geçmişte Docker'ı daha çok son kullanıcı uygulaması olarak çalıştıracağım veya hazır paketlenmiş araçlar için kullanıyordum. Geliştirme ortamım, tüm sunucu yazılımlarını yerel makineme klasik yöntemle kurarak oluşturulmuştu. Son bir senedir geliştirme ortamında da her şeyi yavaş yavaş Docker üzerine alınca, son geliştirdiğim uygulamayı AWS'ye taşırken barındırılan servisleri kullanmak aksine zor geldi. Sonuç olarak tüm sistemi tek bir EC2 makinesinde çalışan Docker konteynerleri üzerine inşa ettim.",[14,53,54],{},"Bütün sunucu ortamını sanallaştırarak kendim oluşturduğum için büyük bir projede yedekleme (backup), kalıcı depolama (persistent storage) ve yüksek erişilebilirlik (High-Availability) konularına da ekstra kafa yormam gerekecek (ki bence bu süreç gayet eğlenceli). Ancak sunucu ortamına %100 hâkim olma duygusu da ayrı bir güven veriyor.",[56,57],"hr",{},[59,60,62],"h3",{"id":61},"aws-ec2-üzerinde-çalışan-konteynerler-ve-ortalama-kaynak-tüketimi","AWS EC2 Üzerinde Çalışan Konteynerler ve Ortalama Kaynak Tüketimi",[64,65,66,86],"table",{},[67,68,69],"thead",{},[70,71,72,77,80,83],"tr",{},[73,74,76],"th",{"align":75},"left","Konteyner \u002F Servis",[73,78,79],{"align":75},"Rolü \u002F İşlevi",[73,81,82],{"align":75},"Ortalama RAM Tüketimi",[73,84,85],{"align":75},"CPU Yükü (Boşta)",[87,88,89,106,121,137,153,168],"tbody",{},[70,90,91,97,100,103],{},[92,93,94],"td",{"align":75},[18,95,96],{},"Portainer",[92,98,99],{"align":75},"Docker Konteyner Yönetimi",[92,101,102],{"align":75},"~30 MB",[92,104,105],{"align":75},"\u003C%0.1",[70,107,108,113,116,119],{},[92,109,110],{"align":75},[18,111,112],{},"Nginx",[92,114,115],{"align":75},"Ters Proxy ve Web Sunucu",[92,117,118],{"align":75},"~15 MB",[92,120,105],{"align":75},[70,122,123,128,131,134],{},[92,124,125],{"align":75},[18,126,127],{},"PHP-FPM",[92,129,130],{"align":75},"PHP Uygulama Sunucusu",[92,132,133],{"align":75},"~50 MB (İstek başına dinamik)",[92,135,136],{"align":75},"\u003C%0.5",[70,138,139,144,147,150],{},[92,140,141],{"align":75},[18,142,143],{},"MariaDB",[92,145,146],{"align":75},"İlişkisel Veri Tabanı",[92,148,149],{"align":75},"~120 MB",[92,151,152],{"align":75},"\u003C%0.2",[70,154,155,160,163,166],{},[92,156,157],{"align":75},[18,158,159],{},"Redis",[92,161,162],{"align":75},"Önbellek ve Oturum Yönetimi",[92,164,165],{"align":75},"~10 MB",[92,167,105],{"align":75},[70,169,170,175,178,181],{},[92,171,172],{"align":75},[18,173,174],{},"RabbitMQ",[92,176,177],{"align":75},"Asenkron Kuyruk Yönetimi",[92,179,180],{"align":75},"~90 MB",[92,182,183],{"align":75},"\u003C%0.3",[56,185],{},[187,188,190],"h2",{"id":189},"_1-donanım-ve-sunucu-altyapısı","1. Donanım ve Sunucu Altyapısı",[14,192,193,194,197],{},"Kurulumu AWS'de uzun süredir boş bekleyen t3a.small instance'ı üzerinde yaptım. ",[18,195,196],{},"t3a.small instance'lar 2 vCPU ve 2.0 GiB bellek (RAM)"," içeriyor.",[14,199,200],{},"Bu instance üzerine Ubuntu 20.04 LTS Server sürümünü ve daha sonra onun da üzerine Docker'ı ekleyerek temiz bir kurulum yaptım.",[14,202,203,204,207],{},"Docker üzerinde ",[18,205,206],{},"Portainer (Docker yönetimi için), Nginx, PHP-FPM, MariaDB, Redis ve RabbitMQ"," için aktif konteynerler çalışıyor.",[14,209,210],{},"Çalışan PHP kodum, anlık olarak en fazla 3-4 kullanıcının girdiği, veri tabanı tarafı için herhangi bir cache vb. kullanılmayan (bu yükteki bir sistem için optimizasyonla uğraşmaya değmezdi) hafif bir kod tabanına sahip.",[56,212],{},[187,214,216],{"id":215},"_2-kaynak-tüketimi-ve-i̇zlenimler","2. Kaynak Tüketimi ve İzlenimler",[14,218,219],{},"AWS izleme (monitor) sayfasını incelediğimde sistemin CPU kullanım oranının %1 seviyesinde olduğunu görüyorum. Portainer, Docker Swarm kullanırken sistemin geneli ile ilgili istatistik veriyor ama tek başına Docker kullanırken sadece konteyner istatistiklerini verdiğini fark ettim. Bunları incelediğimde toplam hafıza (RAM) kullanımının 300-400 MB seviyesinde olduğu görülüyor.",[14,221,222],{},[223,224],"img",{"alt":225,"src":226},"","\u002Fimages\u002Faws-ec2-uzerinde-docker-ve-full-stack-web-performansi\u002Fimage.avif",[14,228,229],{},[230,231,232],"em",{},"AWS CPU kullanım oranı",[14,234,235],{},"Sistemi henüz yoğun yük altında denemedim fakat boşta çalışırken gösterdiği bu kararlılık, iyi bir optimizasyonla yük altında da yeterli olacağını gösteriyor. Bulut ortamının en güzel yanı, kaynaklar yetmediğinde yatay veya dikey büyümeyi son derece kolaylaştırıyor olmasıdır.",[14,237,238],{},"Mevcut şartlarda hem sistemin geneli hem de tek tek sunucular gayet performanslı çalışıyor. Yerel ortamda 80-100ms arasında açılan sayfalar, AWS üzerinde 8-10ms'de açılır hâle geldi. Kod ve sistem optimizasyonu ile birlikte sunucunun tatmin edici bir yükü rahatlıkla kaldırabileceğini düşünüyorum.",[14,240,241],{},"Gerektiğinde sistemin ölçeklenmesi (scaling) ile ilgili de bir şeyler yazacaktım; fakat bunu ayrı bir yazı konusu yaparsam daha faydalı olacağını düşündüğüm için bu yazıya burada son vereceğim.",[56,243],{},[245,246,248],"h5",{"id":247},"bu-yazıda-yapılan-değişiklikler","Bu Yazıda Yapılan Değişiklikler",[22,250,251,254],{},[25,252,253],{},"11.05.2022: Yazı özeti düzenlendi.",[25,255,256],{},"21.06.2026: Kelime tekrarları (\"incelediğimde de incelediğimde\" -> \"incelediğimde\") ve \"Ubuntu 20 LTE\" sürüm ismi hatası düzeltildi. Türkçe imla kuralları (her şeyi, fark ettim, açılır hâle vb.) ve teknik terimler (High-Availability, RAM vb.) güncellendi. Giriş için TL;DR özet paneli ve konteyner kaynak tablosu eklenerek yazı zenginleştirildi.",{"title":225,"searchDepth":258,"depth":258,"links":259},2,[260,262,263],{"id":61,"depth":261,"text":62},3,{"id":189,"depth":258,"text":190},{"id":215,"depth":258,"text":216},[265],"technical",null,"2021-02-01","AWS EC2 t3a.small üzerinde Ubuntu ve Docker Konteynerleri ile kurduğum Nginx, PHP-FPM, MariaDB, Redis ve RabbitMQ yığınının performans analizi.",false,"md","\u002Fimages\u002Fhero\u002Fcloud-docker.avif",{},true,"\u002Ftr\u002Faws-ec2-uzerinde-docker-ve-full-stack-web-performansi",{"title":6,"description":268},"aws-ec2-uzerinde-docker-ve-full-stack-web-performansi","tr\u002Faws-ec2-uzerinde-docker-ve-full-stack-web-performansi",[279,280],"aws","docker","2026-06-21","jkC3PS0brwViBF1qSz8EU-S-kI07e6C0EUKxDylg4x8",{"prev":284,"next":287,"others":290,"lucky":409,"readingTime":261},{"path":285,"title":286},"\u002Ftr\u002Frest-api-uri-yapisi-nasil-olmali","REST API URI Yapısı Nasıl Olmalı?",{"path":288,"title":289},"\u002Ftr\u002Fdocker-swarm-nedir","Docker Swarm Nedir?",[291,294,297,300,303,306,309,312,315,318,321,324,327,328,331,334,337,340,343,346,349,352,355,358,361,364,367,370,373,376,379,382,385,388,391,394,397,400,403,406],{"path":292,"title":293},"\u002Ftr\u002Fes17-nedir-ecmascript-2026-nedir","ES17 nedir? ECMAScript 2026 nedir?",{"path":295,"title":296},"\u002Ftr\u002Fes13-nedir-ecmascript-2022-nedir","ES13 nedir? ECMAScript 2022 nedir?",{"path":298,"title":299},"\u002Ftr\u002Fmerhaba-gluster","Merhaba Gluster: Dağıtık Dosya Sistemi Nedir?",{"path":301,"title":302},"\u002Ftr\u002Fbuilder-tasarim-deseni-nedir","Builder Tasarım Deseni Nedir?",{"path":304,"title":305},"\u002Ftr\u002Ftailwind-css-just-in-time-modu","Tailwind CSS Just-in-Time (JIT) Modu Nedir?",{"path":307,"title":308},"\u002Ftr\u002Fearly-return-erken-donus-nedir","Early Return \u002F Erken Dönüş nedir?",{"path":310,"title":311},"\u002Ftr\u002Fflyweight-tasarim-deseni-nedir","Flyweight Tasarım Deseni Nedir?",{"path":313,"title":314},"\u002Ftr\u002Flinuxda-golang-kurulumu","Linux'ta Golang Kurulumu",{"path":316,"title":317},"\u002Ftr\u002Flitespeed-web-server-performans-artisi","Konfor Alanından Çıkıp, Konforlu Bir VPS'e Geçmek: LiteSpeed Web Server",{"path":319,"title":320},"\u002Ftr\u002Ftemiz-moduler-ve-yeniden-kullanilabilir-php-kodu-yazma-rehberi","PHP'de Temiz, Modüler ve Yeniden Kullanılabilir Kod Yazma Rehberi",{"path":322,"title":323},"\u002Ftr\u002Fself-hosted-api-gateway-nasil-kurulur-kapsamli-rehber","Self-Hosted API Gateway Nasıl Kurulur? Kapsamlı Rehber",{"path":325,"title":326},"\u002Ftr\u002Fopenlitespeed-ve-litespeed-enterprisei-reverse-proxy-olarak-kullanmak","OpenLiteSpeed ve LiteSpeed Enterprise Sunucularını Reverse Proxy Olarak Kullanmak",{"path":288,"title":289},{"path":329,"title":330},"\u002Ftr\u002Fes5-nedir","ES5 Nedir? JavaScript Geliştiricileri İçin Kılavuz",{"path":332,"title":333},"\u002Ftr\u002Fprototype-tasarim-deseni-nedir","Prototype Tasarım Deseni Nedir?",{"path":335,"title":336},"\u002Ftr\u002Fcodeserver-nedir-codeserver-nasil-kurulur","Code-Server Nedir? Bulutta VS Code Geliştirme Ortamı Kurulumu",{"path":338,"title":339},"\u002Ftr\u002Fgo-veri-tipleri-struct","Go Veri Tipleri: Struct",{"path":341,"title":342},"\u002Ftr\u002Fstrategy-tasarim-deseni-nedir","Strategy Tasarım Deseni Nedir?",{"path":344,"title":345},"\u002Ftr\u002Ffactory-method-ve-abstract-factory-farki-nedir","Factory Method ve Abstract Factory Farkı Nedir?",{"path":347,"title":348},"\u002Ftr\u002Fes12-nedir-ecmascript-2021-nedir","ES12 Nedir? ECMAScript 2021 Nedir?",{"path":350,"title":351},"\u002Ftr\u002Fdocker-ile-mongodb-kurulumu","Docker ile MongoDB Kurulumu",{"path":353,"title":354},"\u002Ftr\u002Fnostalji-ibibik-online","Nostalji: İbibik Online (1998'den Bir Web Macerası)",{"path":356,"title":357},"\u002Ftr\u002Fwordpress-yonetici-sifresini-wp-cli-kullanarak-sifirlama","WordPress Yönetici Şifresini WP-CLI Kullanarak Sıfırlama",{"path":359,"title":360},"\u002Ftr\u002Fekran-filtresi-mavi-isik-filtresi-flux","Gözlere dost, mavi ışığa düşman ekran filtresi f.lux",{"path":362,"title":363},"\u002Ftr\u002Ftailwind-css-nerede-kullanilir-tailwind-css-nerede-kullanilmaz","Tailwind CSS Nerede Kullanılır? Tailwind CSS Nerede Kullanılmaz?",{"path":365,"title":366},"\u002Ftr\u002Fdocker-ile-rabbitmq-kurulumu","Docker ile RabbitMQ Kurulumu",{"path":368,"title":369},"\u002Ftr\u002Fjavascriptde-moduller","JavaScript'te Modüller",{"path":371,"title":372},"\u002Ftr\u002Fsingleton-tasarim-deseni-nedir","Singleton Tasarım Deseni Nedir?",{"path":374,"title":375},"\u002Ftr\u002Fdocker-ile-litespeed-enterprise-kurulumu","Docker ile LiteSpeed Enterprise Kurulumu",{"path":377,"title":378},"\u002Ftr\u002Fdocker-ile-redis-kurulumu","Docker ile Redis Kurulumu",{"path":380,"title":381},"\u002Ftr\u002Fproxy-tasarim-deseni-nedir","Proxy Tasarım Deseni Nedir?",{"path":383,"title":384},"\u002Ftr\u002Fphp-generator-ve-iterator-farki","PHP'de Generator ve Iterator Arasındaki Temel Farklar",{"path":386,"title":387},"\u002Ftr\u002Fapi-gateway-nedir","API Gateway Nedir? Ne İşe Yarar?",{"path":389,"title":390},"\u002Ftr\u002Fgo-ve-degiskenler","Go ve Değişkenler",{"path":392,"title":393},"\u002Ftr\u002Fgoda-iota-nedir-iota-ne-zaman-ve-nerede-kullanilir","Go'da iota Nedir? iota Ne Zaman ve Nerede Kullanılır?",{"path":395,"title":396},"\u002Ftr\u002Fmutable-ve-immutable-kavrami","Mutable ve Immutable Kavramları Nedir?",{"path":398,"title":399},"\u002Ftr\u002Fheadless-wordpress-hakkinda-her-sey","Headless WordPress Hakkında Her Şey",{"path":401,"title":402},"\u002Ftr\u002Fgraylog-nedir-docker-ile-nasil-kurulur","Graylog Nedir? Docker Compose ile Adım Adım Kurulum Rehberi",{"path":404,"title":405},"\u002Ftr\u002Fes6-nedir-ecmascript-2015-nedir","ES6 Nedir? ECMAScript 2015 Nedir?",{"path":407,"title":408},"\u002Ftr\u002Fvue-js-nedir","Vue.js Nedir? Yeni Başlayanlar İçin Rehber",{"path":383,"title":384},[411,413,415,417],{"path":350,"title":351,"date":412},"2021-03-13",{"path":401,"title":402,"date":414},"2021-03-12",{"path":365,"title":366,"date":416},"2021-03-11",{"path":377,"title":378,"date":418},"2021-03-09",[420,422,426],{"path":301,"title":302,"date":421},"2021-08-03",{"path":423,"title":424,"date":425},"\u002Ftr\u002Fmerhabadunya","Merhaba Dünya","2020-12-07",{"path":427,"title":428,"date":429},"\u002Ftr\u002Fdecorator-tasarim-deseni-nedir","Decorator Tasarım Deseni Nedir?","2021-09-12",1782142071854]