2026-02-18
AWS ECS Başlangıç Rehberi: Temel Kavramlar ve Kurulum
AWSECSContainerDevOpsCloud
A
<div class="toc">
<ul>
<li><a href="#giris">Giriş</a></li>
<li><a href="#temel-bilesenler">Temel Bileşenler (Components)</a></li>
<li><a href="#launch-types">Launch Types: Fargate vs EC2</a></li>
<li><a href="#adim-adim-ornek">Adım Adım Örnek: İlk Servisinizi Oluşturun</a></li>
<li><a href="#sss">Sıkça Sorulan Sorular (SSS)</a></li>
</ul>
</div>
<h2 id="giris">Giriş: Amazon ECS Nedir?</h2>
<p>Amazon Elastic Container Service (ECS), AWS üzerinde konteyner tabanlı uygulamalarınızı çalıştırmanızı, durdurmanızı ve yönetmenizi sağlayan, tam yönetilen bir konteyner orkestrasyon hizmetidir. Kubernetes gibi karmaşık sistemlere kıyasla daha basit bir yapı sunar ve diğer AWS servisleriyle (IAM, ELB, CloudWatch) derinlemesine entegredir.</p>
<p>ECS, altyapı yönetimi yükünü üzerinizden alarak uygulamanıza odaklanmanızı sağlar. İster mikroservis mimarisi kurun, ister toplu işlem (batch processing) yapın, ECS ölçeklenebilir ve güvenli bir çözüm sunar.</p>
<h2 id="temel-bilesenler">Temel Bileşenler (Components)</h2>
<p>ECS'i anlamak için şu dört temel kavramı bilmeniz gerekir:</p>
<h3 id="cluster">1. Cluster (Küme)</h3>
<p>Cluster, konteynerlerinizin çalıştığı mantıksal bir gruplandırmadır. Bir cluster, arka planda EC2 instance'ları veya Fargate görevlerini barındırır. Uygulamalarınızı izole etmek için (örneğin Test ve Prod ortamları) farklı cluster'lar oluşturabilirsiniz.</p>
<h3 id="task-definition">2. Task Definition (Görev Tanımı)</h3>
<p>Bu, uygulamanızın şablonudur (blueprint). Hangi Docker imajının kullanılacağı, ne kadar CPU/RAM gerekeceği, hangi portların açılacağı ve çevre değişkenleri burada tanımlanır. Bir Task Definition oluşturmadan konteyner çalıştıramazsınız.</p>
<h3 id="task">3. Task (Görev)</h3>
<p>Task Definition'ın çalışan bir örneğidir (instance). Eğer Task Definition bir "sınıf" (class) ise, Task bir "nesne"dir (object). Tek seferlik işler veya sürekli çalışan servisler olabilir.</p>
<h3 id="service">4. Service (Servis)</h3>
<p>Belirlediğiniz sayıda Task'in sürekli ayakta kalmasını sağlar. Eğer bir Task çökerse, Service bunu fark eder ve hemen yenisini başlatır. Ayrıca Load Balancer entegrasyonu buradan yönetilir.</p>
<h2 id="launch-types">Launch Types: Fargate vs EC2</h2>
<p>ECS kullanırken iki ana çalıştırma modelinden birini seçebilirsiniz:</p>
<ul>
<li><strong>EC2 Launch Type:</strong> Konteynerlerin çalışacağı EC2 sunucularını siz yönetirsiniz. İşletim sistemi güncellemeleri, güvenlik yamaları ve ölçeklendirme sizin sorumluluğunuzdadır. Daha fazla kontrol sunar ve Reserved Instance kullanarak maliyet avantajı sağlayabilir.</li>
<li><strong>AWS Fargate:</strong> Sunucusuz (serverless) modeldir. Altyapı ile uğraşmazsınız; sadece CPU ve RAM miktarını seçersiniz. AWS, konteynerleri sizin için yönetilen bir ortamda çalıştırır. Yönetim yükü azdır ancak birim maliyeti EC2'ye göre biraz daha yüksek olabilir.</li>
</ul>
<h2 id="adim-adim-ornek">Adım Adım Örnek: İlk Fargate Servisinizi Oluşturun</h2>
<p>Aşağıda, AWS CLI kullanarak basit bir NGINX servisi oluşturma adımları yer almaktadır:</p>
<pre><code class="language-bash"># 1. Bir Cluster oluşturun
aws ecs create-cluster --cluster-name my-demo-cluster
# 2. Basit bir Task Definition kaydedin (Fargate uyumlu)
aws ecs register-task-definition --family my-nginx-task --network-mode awsvpc --requires-compatibilities FARGATE --cpu "256" --memory "512" --container-definitions '[{
"name": "nginx",
"image": "nginx:latest",
"portMappings": [{"containerPort": 80, "hostPort": 80}]
}]'
# 3. Bir Servis oluşturun (Public IP açık olsun)
# Not: subnet-id ve security-group-id kendi VPC'nize göre güncellenmelidir.
aws ecs create-service --cluster my-demo-cluster --service-name my-nginx-service --task-definition my-nginx-task --desired-count 1 --launch-type FARGATE --network-configuration "awsvpcConfiguration={subnets=[subnet-12345678],securityGroups=[sg-12345678],assignPublicIp=ENABLED}"
</code></pre>
<p>Bu komutlar, ECS üzerinde çalışan ve internetten erişilebilen bir NGINX sunucusu başlatacaktır.</p>
<h2 id="sss">Sıkça Sorulan Sorular (SSS)</h2>
<div class="faq-section">
<h3>ECS ve EKS arasındaki fark nedir?</h3>
<p>ECS, AWS'ye özgü ve daha basit bir orkestrasyon aracıdır. EKS (Elastic Kubernetes Service) ise açık kaynaklı Kubernetes'in yönetilen versiyonudur. Basitlik ve AWS entegrasyonu için ECS, taşınabilirlik ve karmaşık yapılandırmalar için EKS tercih edilir.</p>
<h3>Fargate kullanmalı mıyım?</h3>
<p>Eğer sunucu yönetimiyle uğraşmak istemiyorsanız ve operasyonel yükü azaltmak önceliğinizse Fargate en iyi seçenektir.</p>
<h3>ECS ücretsiz mi?</h3>
<p>ECS kontrol düzlemi (control plane) ücretsizdir. Sadece kullandığınız EC2 instance'ları veya Fargate kaynakları (CPU/RAM) için ödeme yaparsınız.</p>
</div>
<p>Kaynak / Source: https://awsfundamentals.com/blog/aws-ecs-beginner-guide</p>