{"id":37091,"date":"2025-12-27T08:30:32","date_gmt":"2025-12-27T05:30:32","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/gelistirme-ortamini-uretime-entegre-etmek-ec2-ortaminiza-bir-dev-alt-alan-adi-ekleme\/"},"modified":"2025-12-27T08:30:32","modified_gmt":"2025-12-27T05:30:32","slug":"gelistirme-ortamini-uretime-entegre-etmek-ec2-ortaminiza-bir-dev-alt-alan-adi-ekleme","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/gelistirme-ortamini-uretime-entegre-etmek-ec2-ortaminiza-bir-dev-alt-alan-adi-ekleme\/","title":{"rendered":"Geli\u015ftirme Ortam\u0131n\u0131 \u00dcretime Entegre Etmek: EC2 Ortam\u0131n\u0131za Bir `dev` Alt Alan Ad\u0131 Ekleme"},"content":{"rendered":"<h2>Geli\u015ftirme Ortam\u0131n\u0131 \u00dcretime Entegre Etmek: EC2 Ortam\u0131n\u0131za Bir <code>dev<\/code> Alt Alan Ad\u0131 Ekleme<\/h2>\n<p>Modern yaz\u0131l\u0131m geli\u015ftirme s\u00fcre\u00e7lerinde, \u00fcretim ortam\u0131na benzer bir geli\u015ftirme veya haz\u0131rl\u0131k (staging) ortam\u0131na sahip olmak kritik \u00f6neme sahiptir. Bu, yeni \u00f6zelliklerin, hata d\u00fczeltmelerinin ve g\u00fcncellemelerin canl\u0131 sisteme zarar vermeden kapsaml\u0131 bir \u015fekilde test edilmesini sa\u011flar. Bu makalede, mevcut bir AWS EC2 \u00fcretim ortam\u0131n\u0131za <code>dev<\/code> alt alan ad\u0131 ekleyerek bu bo\u015flu\u011fu nas\u0131l kapataca\u011f\u0131n\u0131z\u0131, altyap\u0131dan DNS yap\u0131land\u0131rmas\u0131na kadar t\u00fcm ad\u0131mlar\u0131 detayl\u0131 bir \u015fekilde inceleyece\u011fiz. Bu yakla\u015f\u0131m, geli\u015ftirme ve test s\u00fcre\u00e7lerinizi daha g\u00fcvenli, verimli ve kontrol edilebilir hale getirecektir.<\/p>\n<h3>Neden Bir <code>dev<\/code> Alt Alan Ad\u0131na \u0130htiya\u00e7 Duyar\u0131z?<\/h3>\n<p>\u00dcretim ortam\u0131na do\u011frudan m\u00fcdahale etmek, ciddi riskler ta\u015f\u0131r ve potansiyel kesintilere yol a\u00e7abilir. Bir <code>dev<\/code> alt alan ad\u0131 olu\u015fturmak, bu riskleri minimize ederken geli\u015ftirme s\u00fcrecine esneklik ve g\u00fcvenlik katar.<\/p>\n<h4>G\u00fcvenli Test Ortam\u0131<\/h4>\n<p>Yeni kod de\u011fi\u015fikliklerini, veritaban\u0131 \u015fema g\u00fcncellemelerini veya altyap\u0131 de\u011fi\u015fikliklerini \u00fcretim ortam\u0131n\u0131 etkilemeden test etmek i\u00e7in izole bir ortam sa\u011flar. Bu sayede olas\u0131 hatalar canl\u0131 kullan\u0131c\u0131lar taraf\u0131ndan fark edilmeden \u00f6nce tespit edilip d\u00fczeltilebilir.<\/p>\n<h4>Geli\u015ftirme ve \u0130\u015fbirli\u011fi Kolayl\u0131\u011f\u0131<\/h4>\n<p>Geli\u015ftiricilerin, \u00fcretim ortam\u0131na yak\u0131n bir ortamda \u00e7al\u0131\u015fmalar\u0131n\u0131 ve birbirlerinin de\u011fi\u015fikliklerini entegre etmelerini kolayla\u015ft\u0131r\u0131r. Farkl\u0131 \u00f6zellik dallar\u0131 (feature branches) bu ortamda birle\u015ftirilip test edilebilir. Bu, \u00f6zellikle birden fazla geli\u015ftiricinin \u00e7al\u0131\u015ft\u0131\u011f\u0131 projelerde koordinasyonu art\u0131r\u0131r.<\/p>\n<h4>Performans ve Y\u00fck Testleri<\/h4>\n<p>Yeni \u00f6zelliklerin veya altyap\u0131 de\u011fi\u015fikliklerinin performans \u00fczerindeki etkilerini \u00f6l\u00e7mek i\u00e7in kullan\u0131labilir. \u00dcretim ortam\u0131n\u0131n bir kopyas\u0131 \u00fczerinde yap\u0131lan y\u00fck testleri, canl\u0131ya \u00e7\u0131kmadan \u00f6nce potansiyel darbo\u011fazlar\u0131 ortaya \u00e7\u0131karabilir.<\/p>\n<h4>H\u0131zl\u0131 Geri D\u00f6n\u00fc\u015f ve \u0130terasyon<\/h4>\n<p>Geli\u015ftiriciler, yapt\u0131klar\u0131 de\u011fi\u015fikliklerin an\u0131nda <code>dev<\/code> ortam\u0131nda g\u00f6r\u00fcnmesini sa\u011flayarak h\u0131zl\u0131 geri d\u00f6n\u00fc\u015fler alabilir ve iterasyon s\u00fcre\u00e7lerini h\u0131zland\u0131rabilirler. Bu, Agile ve DevOps yakla\u015f\u0131mlar\u0131n\u0131n temelini olu\u015fturur.<\/p>\n<h3>Altyap\u0131 Haz\u0131rl\u0131\u011f\u0131: EC2 ve G\u00fcvenlik<\/h3>\n<p><code>dev<\/code> ortam\u0131n\u0131z i\u00e7in \u00fcretim ortam\u0131n\u0131za benzer bir altyap\u0131 kurmak, tutarl\u0131l\u0131k ve g\u00fcvenilirlik a\u00e7\u0131s\u0131ndan \u00f6nemlidir. Bu b\u00f6l\u00fcmde, gerekli AWS bile\u015fenlerini ve g\u00fcvenlik ayarlar\u0131n\u0131 ele alaca\u011f\u0131z.<\/p>\n<h4>Yeni Bir EC2 \u00d6rne\u011fi Olu\u015fturma<\/h4>\n<p><code>dev<\/code> ortam\u0131n\u0131z i\u00e7in mevcut \u00fcretim EC2 \u00f6rne\u011finizin bir kopyas\u0131n\u0131 veya benzer \u00f6zelliklere sahip yeni bir EC2 \u00f6rne\u011fi ba\u015flatman\u0131z gerekecektir. AMI (Amazon Machine Image) kullanarak mevcut \u00fcretim sunucunuzun bir anl\u0131k g\u00f6r\u00fcnt\u00fcs\u00fcn\u00fc al\u0131p bundan yeni bir \u00f6rnek ba\u015flatmak en pratik yoldur. Bu, i\u015fletim sistemi, kurulu yaz\u0131l\u0131mlar ve ba\u011f\u0131ml\u0131l\u0131klar a\u00e7\u0131s\u0131ndan tutarl\u0131l\u0131k sa\u011flar.<\/p>\n<pre><code class=\"language-bash\">\n# Mevcut \u00fcretim EC2 \u00f6rne\u011finizin AMI'sini olu\u015fturun\naws ec2 create-image --instance-id i-xxxxxxxxxxxxxxxxx --name \"Production-AMI-$(date +%Y%m%d)\" --description \"AMI for dev environment\"\n\n# Yeni EC2 \u00f6rne\u011fini olu\u015fturulan AMI'den ba\u015flat\u0131n\naws ec2 run-instances \\\n    --image-id ami-xxxxxxxxxxxxxxxxx \\\n    --instance-type t3.medium \\\n    --key-name your-key-pair \\\n    --security-group-ids sg-xxxxxxxxxxxxxxxxx \\\n    --subnet-id subnet-xxxxxxxxxxxxxxxxx \\\n    --tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=dev-environment}]'\n<\/pre>\n<p><\/code><\/p>\n<h4>G\u00fcvenlik Gruplar\u0131 ve A\u011f Yap\u0131land\u0131rmas\u0131<\/h4>\n<p><code>dev<\/code> ortam\u0131n\u0131z i\u00e7in ayr\u0131 bir g\u00fcvenlik grubu (Security Group) tan\u0131mlamak iyi bir uygulamad\u0131r. Bu, <code>dev<\/code> ortam\u0131na eri\u015fimi daha k\u0131s\u0131tl\u0131 hale getirmenize olanak tan\u0131r. \u00d6rne\u011fin, sadece belirli IP adreslerinden (geli\u015ftirici ofisi IP'leri) SSH (Port 22) ve HTTP\/HTTPS (Port 80\/443) eri\u015fimine izin verebilirsiniz. \u00dcretim ortam\u0131yla ayn\u0131 VPC (Virtual Private Cloud) i\u00e7inde olmalar\u0131, i\u00e7 a\u011f ileti\u015fimi a\u00e7\u0131s\u0131ndan avantaj sa\u011flayabilir.<\/p>\n<pre><code class=\"language-json\">\n{\n  \"Description\": \"Security group for dev environment\",\n  \"IpPermissions\": [\n    {\n      \"FromPort\": 22,\n      \"ToPort\": 22,\n      \"IpProtocol\": \"tcp\",\n      \"IpRanges\": [\n        {\"CidrIp\": \"YOUR_OFFICE_IP\/32\", \"Description\": \"SSH from office\"}\n      ]\n    },\n    {\n      \"FromPort\": 80,\n      \"ToPort\": 80,\n      \"IpProtocol\": \"tcp\",\n      \"IpRanges\": [\n        {\"CidrIp\": \"0.0.0.0\/0\", \"Description\": \"HTTP from anywhere (for testing)\"}\n      ]\n    },\n    {\n      \"FromPort\": 443,\n      \"ToPort\": 443,\n      \"IpProtocol\": \"tcp\",\n      \"IpRanges\": [\n        {\"CidrIp\": \"0.0.0.0\/0\", \"Description\": \"HTTPS from anywhere (for testing)\"}\n      ]\n    }\n  ]\n}\n<\/pre>\n<p><\/code><\/p>\n<h4>Veritaban\u0131 ve Di\u011fer Ba\u011f\u0131ml\u0131l\u0131klar<\/h4>\n<p>E\u011fer uygulaman\u0131z bir veritaban\u0131 kullan\u0131yorsa, <code>dev<\/code> ortam\u0131n\u0131z i\u00e7in ayr\u0131 bir veritaban\u0131 \u00f6rne\u011fi (\u00f6rne\u011fin, AWS RDS) olu\u015fturman\u0131z veya mevcut veritaban\u0131n\u0131z\u0131n bir kopyas\u0131n\u0131 alman\u0131z gerekir. \u00dcretim verilerinin <code>dev<\/code> ortam\u0131na kopyalanmas\u0131 durumunda hassas verilerin maskelenmesi veya anonimle\u015ftirilmesi g\u00fcvenlik a\u00e7\u0131s\u0131ndan kritik bir ad\u0131md\u0131r. Ayr\u0131ca, Redis, SQS, S3 gibi di\u011fer AWS servisleri i\u00e7in de <code>dev<\/code> ortam\u0131na \u00f6zel kaynaklar tan\u0131mlamak \u00f6nemlidir.<\/p>\n<h3>Web Sunucusu Yap\u0131land\u0131rmas\u0131: Nginx ve Apache<\/h3>\n<p><code>dev<\/code> alt alan ad\u0131n\u0131z\u0131n do\u011fru i\u00e7eri\u011fi sunabilmesi i\u00e7in web sunucunuzda (Nginx veya Apache) sanal ana bilgisayar (virtual host) veya sunucu blo\u011fu (server block) yap\u0131land\u0131rmas\u0131 yapman\u0131z gerekir.<\/p>\n<h4>Nginx ile <code>dev<\/code> Sunucu Blo\u011fu<\/h4>\n<p>Nginx kullan\u0131yorsan\u0131z, <code>dev.alanadiniz.com<\/code> i\u00e7in yeni bir sunucu blo\u011fu olu\u015fturman\u0131z gerekecektir. Bu blok, <code>server_name<\/code> direktifini kullanarak gelen iste\u011fin <code>dev<\/code> alt alan ad\u0131na y\u00f6nelik olup olmad\u0131\u011f\u0131n\u0131 kontrol eder ve ilgili uygulama dizinine y\u00f6nlendirir.<\/p>\n<pre><code class=\"language-nginx\"># \/etc\/nginx\/sites-available\/dev.alanadiniz.com\nserver {\n    listen 80;\n    listen [::]:80;\n    server_name dev.alanadiniz.com;\n    root \/var\/www\/dev_app; # Geli\u015ftirme uygulaman\u0131z\u0131n k\u00f6k dizini\n    index index.html index.htm index.nginx-debian.html;\n\n    location \/ {\n        try_files $uri $uri\/ =404;\n        # PHP uygulamalar\u0131 i\u00e7in:\n        # include snippets\/fastcgi-php.conf;\n        # fastcgi_pass unix:\/var\/run\/php\/php8.1-fpm.sock;\n    }\n\n    # SSL yap\u0131land\u0131rmas\u0131 i\u00e7in (Let's Encrypt ile):\n    # listen 443 ssl http2;\n    # listen [::]:443 ssl http2;\n    # ssl_certificate \/etc\/letsencrypt\/live\/dev.alanadiniz.com\/fullchain.pem;\n    # ssl_certificate_key \/etc\/letsencrypt\/live\/dev.alanadiniz.com\/privkey.pem;\n    # include \/etc\/letsencrypt\/options-ssl-nginx.conf;\n    # ssl_dhparam \/etc\/letsencrypt\/ssl-dhparams.pem;\n}<\/pre>\n<p><\/code><br \/>\nBu dosyay\u0131 <code>sites-enabled<\/code> dizinine ba\u011flamay\u0131 ve Nginx'i yeniden ba\u015flatmay\u0131 unutmay\u0131n:<\/p>\n<pre><code class=\"language-bash\">\nsudo ln -s \/etc\/nginx\/sites-available\/dev.alanadiniz.com \/etc\/nginx\/sites-enabled\/\nsudo nginx -t\nsudo systemctl restart nginx\n<\/pre>\n<p><\/code><\/p>\n<h4>Apache ile <code>dev<\/code> Sanal Ana Bilgisayar<\/h4>\n<p>Apache kullan\u0131yorsan\u0131z, <code>dev.alanadiniz.com<\/code> i\u00e7in yeni bir sanal ana bilgisayar yap\u0131land\u0131rmas\u0131 olu\u015fturman\u0131z gerekir. Bu, <code>VirtualHost<\/code> blo\u011fu i\u00e7inde <code>ServerName<\/code> direktifi ile yap\u0131l\u0131r.<\/p>\n<pre><code class=\"language-apache\"># \/etc\/apache2\/sites-available\/dev.alanadiniz.com.conf\n<VirtualHost *:80>\n    ServerAdmin webmaster@localhost\n    ServerName dev.alanadiniz.com\n    DocumentRoot \/var\/www\/dev_app # Geli\u015ftirme uygulaman\u0131z\u0131n k\u00f6k dizini\n\n    ErrorLog ${APACHE_LOG_DIR}\/error.log\n    CustomLog ${APACHE_LOG_DIR}\/access.log combined\n\n    <Directory \/var\/www\/dev_app>\n        Options Indexes FollowSymLinks\n        AllowOverride All\n        Require all granted\n    <\/Directory>\n\n    # SSL yap\u0131land\u0131rmas\u0131 i\u00e7in (Let's Encrypt ile):\n    # SSLEngine on\n    # SSLCertificateFile \/etc\/letsencrypt\/live\/dev.alanadiniz.com\/fullchain.pem\n    # SSLCertificateKeyFile \/etc\/letsencrypt\/live\/dev.alanadiniz.com\/privkey.pem\n    # Include \/etc\/letsencrypt\/options-ssl-apache.conf\n<\/VirtualHost><\/pre>\n<p><\/code><br \/>\nBu yap\u0131land\u0131rmay\u0131 etkinle\u015ftirmek ve Apache'yi yeniden ba\u015flatmak i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">\nsudo a2ensite dev.alanadiniz.com.conf\nsudo apache2ctl configtest\nsudo systemctl restart apache2\n<\/pre>\n<p><\/code><\/p>\n<h3>DNS Y\u00f6netimi: AWS Route 53 ile <code>dev<\/code> Alan Ad\u0131<\/h3>\n<p><code>dev<\/code> alt alan ad\u0131n\u0131z\u0131n do\u011fru EC2 \u00f6rne\u011fine y\u00f6nlendirilmesi i\u00e7in DNS yap\u0131land\u0131rmas\u0131n\u0131 AWS Route 53 \u00fczerinden yapman\u0131z gerekmektedir.<\/p>\n<h4>Yeni Bir A Kayd\u0131 Olu\u015fturma<\/h4>\n<p>Route 53 konsolunda, alan ad\u0131n\u0131z\u0131n bar\u0131nd\u0131r\u0131ld\u0131\u011f\u0131 \"Hosted Zone\"a gidin. Burada, <code>dev.alanadiniz.com<\/code> i\u00e7in yeni bir \"A kayd\u0131\" (A record) olu\u015fturman\u0131z gerekecek. Bu kay\u0131t, <code>dev<\/code> alt alan ad\u0131n\u0131 <code>dev<\/code> EC2 \u00f6rne\u011finizin genel IP adresine veya bir Elastic IP adresine (\u00f6nerilir) y\u00f6nlendirecektir. E\u011fer bir Load Balancer kullan\u0131yorsan\u0131z, A kayd\u0131n\u0131 Load Balancer'\u0131n DNS ad\u0131na y\u00f6nlendirebilirsiniz (Alias record).<\/p>\n<pre><code class=\"language-bash\">\n# EC2 \u00f6rne\u011finizin genel IP adresini al\u0131n (veya Elastic IP kullan\u0131n)\naws ec2 describe-instances \\\n    --filters \"Name=tag:Name,Values=dev-environment\" \\\n    --query \"Reservations[].Instances[].PublicIpAddress\" \\\n    --output text\n\n# Route 53 i\u00e7in bir de\u011fi\u015fiklik seti (change batch) olu\u015fturun\n# Bu JSON dosyas\u0131n\u0131 kaydedin: route53-dev-record.json\n<\/pre>\n<p><\/code><\/p>\n<pre><code class=\"language-json\">{\n  \"Comment\": \"CREATE a new A record for dev subdomain\",\n  \"Changes\": [\n    {\n      \"Action\": \"CREATE\",\n      \"ResourceRecordSet\": {\n        \"Name\": \"dev.alanadiniz.com.\",\n        \"Type\": \"A\",\n        \"TTL\": 300,\n        \"ResourceRecords\": [\n          {\n            \"Value\": \"YOUR_DEV_EC2_PUBLIC_IP\" # dev EC2 \u00f6rne\u011finizin genel IP adresi\n          }\n        ]\n      }\n    }\n  ]\n}<\/pre>\n<p><\/code><\/p>\n<pre><code class=\"language-bash\">\n# De\u011fi\u015fiklik setini uygulay\u0131n\naws route53 change-resource-record-sets \\\n    --hosted-zone-id YOUR_HOSTED_ZONE_ID \\\n    --change-batch file:\/\/route53-dev-record.json\n<\/pre>\n<p><\/code><\/p>\n<h4>SSL Sertifikas\u0131 Yap\u0131land\u0131rmas\u0131<\/h4>\n<p><code>dev<\/code> ortam\u0131n\u0131z\u0131n g\u00fcvenli olmas\u0131 i\u00e7in HTTPS kullanmak \u00f6nemlidir. AWS Certificate Manager (ACM) kullanarak <code>dev.alanadiniz.com<\/code> i\u00e7in \u00fccretsiz bir SSL sertifikas\u0131 talep edebilir ve bunu Load Balancer'\u0131n\u0131za veya do\u011frudan EC2 \u00f6rne\u011finizdeki web sunucusuna (Let's Encrypt ile) entegre edebilirsiniz. Let's Encrypt, web sunucusu \u00fczerinde \u00e7al\u0131\u015fan ve otomatik yenileme sa\u011flayan pop\u00fcler bir se\u00e7enektir.<\/p>\n<h3>Uygulama Da\u011f\u0131t\u0131m\u0131 ve S\u00fcre\u00e7 Y\u00f6netimi<\/h3>\n<p><code>dev<\/code> ortam\u0131na uygulama da\u011f\u0131t\u0131m\u0131, \u00fcretim ortam\u0131ndan farkl\u0131 bir i\u015f ak\u0131\u015f\u0131 gerektirebilir. Otomasyon, bu s\u00fcreci daha verimli hale getirir.<\/p>\n<h4>Otomatik Da\u011f\u0131t\u0131m (CI\/CD)<\/h4>\n<p><code>dev<\/code> ortam\u0131na yap\u0131lan da\u011f\u0131t\u0131mlar\u0131 otomatikle\u015ftirmek i\u00e7in CI\/CD (S\u00fcrekli Entegrasyon\/S\u00fcrekli Teslimat) boru hatt\u0131 kurmak idealdir. Git (\u00f6rne\u011fin, <code>develop<\/code> veya <code>staging<\/code> dal\u0131) \u00fczerinde yap\u0131lan her de\u011fi\u015fikli\u011fin otomatik olarak <code>dev<\/code> ortam\u0131na da\u011f\u0131t\u0131lmas\u0131n\u0131 sa\u011flayabilirsiniz. AWS CodePipeline, CodeBuild, CodeDeploy gibi servisler bu s\u00fcre\u00e7te size yard\u0131mc\u0131 olabilir.<\/p>\n<pre><code class=\"language-yaml\">\n# \u00d6rnek bir CodeBuild buildspec.yml dosyas\u0131\nversion: 0.2\nphases:\n  install:\n    commands:\n      - echo Installing dependencies...\n      - npm install\n  build:\n    commands:\n      - echo Building the application...\n      - npm run build\n  post_build:\n    commands:\n      - echo Deploying to dev environment...\n      # SCP veya AWS CodeDeploy agent kullanarak da\u011f\u0131t\u0131m\n      - rsync -avz --exclude 'node_modules' .\/build\/ user@dev.alanadiniz.com:\/var\/www\/dev_app\/\nartifacts:\n  files:\n    - '**\/*'\n<\/pre>\n<p><\/code><\/p>\n<h4>Ortam De\u011fi\u015fkenleri ve Konfig\u00fcrasyon<\/h4>\n<p><code>dev<\/code> ortam\u0131n\u0131z\u0131n \u00fcretim ortam\u0131ndan farkl\u0131 veritaban\u0131 ba\u011flant\u0131 dizeleri, API anahtarlar\u0131 veya di\u011fer yap\u0131land\u0131rma ayarlar\u0131 olacakt\u0131r. Uygulaman\u0131z\u0131n bu farkl\u0131l\u0131klar\u0131 ortam de\u011fi\u015fkenleri (environment variables) veya ayr\u0131 yap\u0131land\u0131rma dosyalar\u0131 arac\u0131l\u0131\u011f\u0131yla y\u00f6netmesi \u00f6nemlidir. AWS Systems Manager Parameter Store veya Secrets Manager, bu hassas bilgileri g\u00fcvenli bir \u015fekilde saklamak ve <code>dev<\/code> ortam\u0131na iletmek i\u00e7in kullan\u0131labilir.<\/p>\n<pre><code class=\"language-bash\">\n# dev ortam\u0131 i\u00e7in .env dosyas\u0131 \u00f6rne\u011fi\nDB_HOST=dev-database.xxxxxxxx.eu-central-1.rds.amazonaws.com\nDB_USER=dev_user\nDB_PASSWORD=dev_password\nAPP_ENV=development\n<\/pre>\n<p><\/code><\/p>\n<h3>G\u00fcvenlik, \u0130zleme ve En \u0130yi Uygulamalar<\/h3>\n<p><code>dev<\/code> ortam\u0131, \u00fcretim kadar kritik olmasa da, yine de g\u00fcvenlik ve izleme a\u00e7\u0131s\u0131ndan dikkatli olunmal\u0131d\u0131r.<\/p>\n<h4>Eri\u015fim Kontrol\u00fc ve Kimlik Y\u00f6netimi<\/h4>\n<p><code>dev<\/code> ortam\u0131na eri\u015fimi sadece yetkili geli\u015ftiriciler ve test ekipleriyle s\u0131n\u0131rlay\u0131n. IAM rolleri ve politikalar\u0131 kullanarak EC2 \u00f6rneklerine, veritabanlar\u0131na ve di\u011fer AWS kaynaklar\u0131na eri\u015fimi s\u0131k\u0131 bir \u015fekilde y\u00f6netin. SSH anahtar \u00e7iftlerini g\u00fcvenli bir \u015fekilde saklay\u0131n ve d\u00fczenli olarak denetleyin.<\/p>\n<h4>G\u00fcnl\u00fck Kayd\u0131 ve \u0130zleme<\/h4>\n<p><code>dev<\/code> ortam\u0131ndaki uygulaman\u0131z\u0131n ve sunucunuzun performans\u0131n\u0131 ve hatalar\u0131n\u0131 izlemek i\u00e7in AWS CloudWatch veya ELK Stack gibi ara\u00e7lar\u0131 kullan\u0131n. Hata g\u00fcnl\u00fcklerini (error logs) d\u00fczenli olarak kontrol etmek, sorunlar\u0131 erken a\u015famada tespit etmenizi sa\u011flar. <code>dev<\/code> ortam\u0131nda dahi metrikler ve alarmlar kurmak, beklenmedik durumlar\u0131 h\u0131zla fark etmenize yard\u0131mc\u0131 olur.<\/p>\n<h4>Maliyet Optimizasyonu<\/h4>\n<p><code>dev<\/code> ortamlar\u0131 genellikle s\u00fcrekli \u00e7al\u0131\u015f\u0131r durumda kalmas\u0131 gerekmeyen ortamlard\u0131r. Kullan\u0131m d\u0131\u015f\u0131 zamanlarda (gece veya hafta sonlar\u0131) EC2 \u00f6rneklerini durdurarak veya k\u00fc\u00e7\u00fclterek maliyetleri optimize edebilirsiniz. AWS Instance Scheduler gibi ara\u00e7lar bu otomasyonu sa\u011flayabilir. Ayr\u0131ca, <code>dev<\/code> ortam\u0131 i\u00e7in daha k\u00fc\u00e7\u00fck ve daha az g\u00fc\u00e7l\u00fc EC2 \u00f6rnekleri se\u00e7mek de maliyetleri d\u00fc\u015f\u00fcrecektir.<\/p>\n<pre><code class=\"language-bash\">\n# Belirli bir EC2 \u00f6rne\u011fini durdurma\naws ec2 stop-instances --instance-ids i-xxxxxxxxxxxxxxxxx\n\n# Belirli bir EC2 \u00f6rne\u011fini ba\u015flatma\naws ec2 start-instances --instance-ids i-xxxxxxxxxxxxxxxxx\n<\/pre>\n<p><\/code><\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Bir <code>dev<\/code> alt alan ad\u0131 olu\u015fturarak \u00fcretim EC2 ortam\u0131n\u0131za eklemek, yaz\u0131l\u0131m geli\u015ftirme ve da\u011f\u0131t\u0131m s\u00fcre\u00e7lerinizi \u00f6nemli \u00f6l\u00e7\u00fcde iyile\u015ftiren stratejik bir yat\u0131r\u0131md\u0131r. Bu makalede ele ald\u0131\u011f\u0131m\u0131z ad\u0131mlar\u0131 takip ederek, g\u00fcvenli, izole ve verimli bir geli\u015ftirme ortam\u0131 kurabilir, yeni \u00f6zellikleri ve hata d\u00fczeltmelerini g\u00fcvenle test edebilir ve nihayetinde daha sa\u011flam bir \u00fcretim ortam\u0131 sa\u011flayabilirsiniz. Unutmay\u0131n, iyi planlanm\u0131\u015f bir <code>dev<\/code> ortam\u0131, uzun vadede zaman, para ve stres tasarrufu anlam\u0131na gelir.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<h4>1. <code>dev<\/code> ortam\u0131 i\u00e7in \u00fcretim ortam\u0131yla ayn\u0131 EC2 \u00f6rne\u011fini kullanabilir miyim?<\/h4>\n<p>Hay\u0131r, kesinlikle \u00f6nerilmez. <code>dev<\/code> ortam\u0131, \u00fcretim ortam\u0131ndan tamamen izole edilmi\u015f olmal\u0131d\u0131r. Ayn\u0131 sunucuyu kullanmak, geli\u015ftirme s\u00fcrecindeki hatalar\u0131n veya performans sorunlar\u0131n\u0131n do\u011frudan canl\u0131 siteyi etkileme riskini ta\u015f\u0131r. Ayr\u0131 bir EC2 \u00f6rne\u011fi veya hatta farkl\u0131 bir AWS hesab\u0131 kullanmak en g\u00fcvenli yakla\u015f\u0131md\u0131r.<\/p>\n<h4>2. <code>dev<\/code> ortam\u0131 i\u00e7in bir Load Balancer (ALB\/NLB) kullanmal\u0131 m\u0131y\u0131m?<\/h4>\n<p>E\u011fer <code>dev<\/code> ortam\u0131n\u0131z\u0131n y\u00fcksek eri\u015filebilirlik veya otomatik \u00f6l\u00e7eklendirme gibi \u00f6zelliklere ihtiyac\u0131 varsa veya \u00fcretim ortam\u0131n\u0131z\u0131 birebir taklit etmek istiyorsan\u0131z bir Load Balancer kullanmak faydal\u0131 olabilir. Ancak sadece temel testler i\u00e7in tek bir EC2 \u00f6rne\u011fi yeterli olacakt\u0131r ve maliyetleri d\u00fc\u015f\u00fcrecektir.<\/p>\n<h4>3. <code>dev<\/code> ortam\u0131ndaki veritaban\u0131 verilerini nas\u0131l g\u00fcncel tutmal\u0131y\u0131m?<\/h4>\n<p>\u00dcretim veritaban\u0131n\u0131z\u0131n d\u00fczenli olarak anonimle\u015ftirilmi\u015f veya maskelenmi\u015f bir kopyas\u0131n\u0131 <code>dev<\/code> ortam\u0131na aktarabilirsiniz. Bu i\u015flem otomatikle\u015ftirilebilir. Hassas m\u00fc\u015fteri verilerinin <code>dev<\/code> ortam\u0131nda bulunmad\u0131\u011f\u0131ndan emin olmak \u00e7ok \u00f6nemlidir.<\/p>\n<h4>4. <code>dev<\/code> alt alan ad\u0131 i\u00e7in SSL sertifikas\u0131 gerekli mi?<\/h4>\n<p>Evet, <code>dev<\/code> ortam\u0131nda da HTTPS kullanmak \u015fiddetle tavsiye edilir. Bu, uygulaman\u0131z\u0131n \u00fcretim ortam\u0131nda nas\u0131l davranaca\u011f\u0131n\u0131 daha do\u011fru bir \u015fekilde test etmenizi sa\u011flar ve g\u00fcvenlik en iyi uygulamalar\u0131n\u0131 takip eder. Let's Encrypt veya AWS Certificate Manager gibi \u00fccretsiz se\u00e7enekler mevcuttur.<\/p>\n<h4>5. <code>dev<\/code> ortam\u0131n\u0131n maliyetlerini nas\u0131l optimize edebilirim?<\/h4>\n<p><code>dev<\/code> EC2 \u00f6rneklerini sadece ihtiya\u00e7 duyuldu\u011funda \u00e7al\u0131\u015ft\u0131rarak (\u00f6rne\u011fin, mesai saatleri d\u0131\u015f\u0131nda durdurarak), daha k\u00fc\u00e7\u00fck instance tipleri se\u00e7erek ve gereksiz AWS servislerini kapatarak maliyetleri d\u00fc\u015f\u00fcrebilirsiniz. AWS Instance Scheduler gibi ara\u00e7lar bu durdurma\/ba\u015flatma i\u015flemlerini otomatikle\u015ftirebilir.<\/p>\n","protected":false},"excerpt":{"rendered":"Geli\u015ftirme Ortam\u0131n\u0131 \u00dcretime Entegre Etmek: EC2 Ortam\u0131n\u0131za Bir dev Alt Alan Ad\u0131 Ekleme\nModern yaz\u0131l\u0131m geli\u015ftirme s\u00fcre\u00e7lerinde, \u00fcretim ortam\u0131na &#8230;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-37091","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Geli\u015ftirme Ortam\u0131n\u0131 \u00dcretime Entegre Etmek: EC2 Ortam\u0131n\u0131za Bir `dev` Alt Alan Ad\u0131 Ekleme - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/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:\/\/fatihsoysal.com\/blog\/gelistirme-ortamini-uretime-entegre-etmek-ec2-ortaminiza-bir-dev-alt-alan-adi-ekleme\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Geli\u015ftirme Ortam\u0131n\u0131 \u00dcretime Entegre Etmek: EC2 Ortam\u0131n\u0131za Bir `dev` Alt Alan Ad\u0131 Ekleme\" \/>\n<meta property=\"og:description\" content=\"Geli\u015ftirme Ortam\u0131n\u0131 \u00dcretime Entegre Etmek: EC2 Ortam\u0131n\u0131za Bir dev Alt Alan Ad\u0131 Ekleme Modern yaz\u0131l\u0131m geli\u015ftirme s\u00fcre\u00e7lerinde, \u00fcretim ortam\u0131na ...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/gelistirme-ortamini-uretime-entegre-etmek-ec2-ortaminiza-bir-dev-alt-alan-adi-ekleme\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-27T05:30:32+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/gelistirme-ortamini-uretime-entegre-etmek-ec2-ortaminiza-bir-dev-alt-alan-adi-ekleme\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/gelistirme-ortamini-uretime-entegre-etmek-ec2-ortaminiza-bir-dev-alt-alan-adi-ekleme\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Geli\u015ftirme Ortam\u0131n\u0131 \u00dcretime Entegre Etmek: EC2 Ortam\u0131n\u0131za Bir `dev` Alt Alan Ad\u0131 Ekleme\",\"datePublished\":\"2025-12-27T05:30:32+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/gelistirme-ortamini-uretime-entegre-etmek-ec2-ortaminiza-bir-dev-alt-alan-adi-ekleme\/\"},\"wordCount\":1774,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/gelistirme-ortamini-uretime-entegre-etmek-ec2-ortaminiza-bir-dev-alt-alan-adi-ekleme\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/gelistirme-ortamini-uretime-entegre-etmek-ec2-ortaminiza-bir-dev-alt-alan-adi-ekleme\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/gelistirme-ortamini-uretime-entegre-etmek-ec2-ortaminiza-bir-dev-alt-alan-adi-ekleme\/\",\"name\":\"Geli\u015ftirme Ortam\u0131n\u0131 \u00dcretime Entegre Etmek: EC2 Ortam\u0131n\u0131za Bir `dev` Alt Alan Ad\u0131 Ekleme - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-12-27T05:30:32+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/gelistirme-ortamini-uretime-entegre-etmek-ec2-ortaminiza-bir-dev-alt-alan-adi-ekleme\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/gelistirme-ortamini-uretime-entegre-etmek-ec2-ortaminiza-bir-dev-alt-alan-adi-ekleme\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/gelistirme-ortamini-uretime-entegre-etmek-ec2-ortaminiza-bir-dev-alt-alan-adi-ekleme\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Geli\u015ftirme Ortam\u0131n\u0131 \u00dcretime Entegre Etmek: EC2 Ortam\u0131n\u0131za Bir `dev` Alt Alan Ad\u0131 Ekleme\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Geli\u015ftirme Ortam\u0131n\u0131 \u00dcretime Entegre Etmek: EC2 Ortam\u0131n\u0131za Bir `dev` Alt Alan Ad\u0131 Ekleme - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","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:\/\/fatihsoysal.com\/blog\/gelistirme-ortamini-uretime-entegre-etmek-ec2-ortaminiza-bir-dev-alt-alan-adi-ekleme\/","og_locale":"tr_TR","og_type":"article","og_title":"Geli\u015ftirme Ortam\u0131n\u0131 \u00dcretime Entegre Etmek: EC2 Ortam\u0131n\u0131za Bir `dev` Alt Alan Ad\u0131 Ekleme","og_description":"Geli\u015ftirme Ortam\u0131n\u0131 \u00dcretime Entegre Etmek: EC2 Ortam\u0131n\u0131za Bir dev Alt Alan Ad\u0131 Ekleme Modern yaz\u0131l\u0131m geli\u015ftirme s\u00fcre\u00e7lerinde, \u00fcretim ortam\u0131na ...","og_url":"https:\/\/fatihsoysal.com\/blog\/gelistirme-ortamini-uretime-entegre-etmek-ec2-ortaminiza-bir-dev-alt-alan-adi-ekleme\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-12-27T05:30:32+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"12 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/gelistirme-ortamini-uretime-entegre-etmek-ec2-ortaminiza-bir-dev-alt-alan-adi-ekleme\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/gelistirme-ortamini-uretime-entegre-etmek-ec2-ortaminiza-bir-dev-alt-alan-adi-ekleme\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Geli\u015ftirme Ortam\u0131n\u0131 \u00dcretime Entegre Etmek: EC2 Ortam\u0131n\u0131za Bir `dev` Alt Alan Ad\u0131 Ekleme","datePublished":"2025-12-27T05:30:32+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/gelistirme-ortamini-uretime-entegre-etmek-ec2-ortaminiza-bir-dev-alt-alan-adi-ekleme\/"},"wordCount":1774,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/gelistirme-ortamini-uretime-entegre-etmek-ec2-ortaminiza-bir-dev-alt-alan-adi-ekleme\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/gelistirme-ortamini-uretime-entegre-etmek-ec2-ortaminiza-bir-dev-alt-alan-adi-ekleme\/","url":"https:\/\/fatihsoysal.com\/blog\/gelistirme-ortamini-uretime-entegre-etmek-ec2-ortaminiza-bir-dev-alt-alan-adi-ekleme\/","name":"Geli\u015ftirme Ortam\u0131n\u0131 \u00dcretime Entegre Etmek: EC2 Ortam\u0131n\u0131za Bir `dev` Alt Alan Ad\u0131 Ekleme - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-12-27T05:30:32+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/gelistirme-ortamini-uretime-entegre-etmek-ec2-ortaminiza-bir-dev-alt-alan-adi-ekleme\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/gelistirme-ortamini-uretime-entegre-etmek-ec2-ortaminiza-bir-dev-alt-alan-adi-ekleme\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/gelistirme-ortamini-uretime-entegre-etmek-ec2-ortaminiza-bir-dev-alt-alan-adi-ekleme\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Geli\u015ftirme Ortam\u0131n\u0131 \u00dcretime Entegre Etmek: EC2 Ortam\u0131n\u0131za Bir `dev` Alt Alan Ad\u0131 Ekleme"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37091","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=37091"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37091\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=37091"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=37091"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=37091"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}