Kurs
Konteynerleştirme uygulama dağıtımının temel taşlarından biri haline geldi. Bir uygulamayı ve bağımlılıklarını konteyner adı verilen tek, hafif ve taşınabilir bir birim içinde paketlemeyi sağlayan bir teknolojidir. Konteynerleştirme, uygulamaları daha küçük ve yönetilebilir hizmetlere (mikro hizmetler) bölmek için sıklıkla kullanılır.
Bir konteyner basitçe çalışan bir imajdır. Bir imaj, uygulama kodu, çalışma zamanı, kütüphaneler, ortam değişkenleri ve bağımlılıklar gibi bir yazılım parçasını çalıştırmak için gereken her şeyi içeren yürütülebilir bir pakettir.
Konteynerler, uygulamaları bir kez inşa edip her yerde çalıştırmamıza olanak tanır; geliştirme, test ve üretim ortamlarında tutarlılık sağlar. Peki uygulamalarımızı kolayca yönetmek, ölçeklemek ve dağıtmak için konteynerleri nasıl kullanabiliriz? Bir konteyner orkestrasyon aracına başvurmamız gerekir.
İyi bilinen iki AWS konteyner orkestrasyon aracı Elastic Container Service (ECS) ve Elastic Kubernetes Service (EKS)’tir. Bu yazıda, kullanım kolaylığı, ölçeklenebilirlik, esneklik ve maliyet açısından Amazon ECS ve EKS’i karşılaştırarak, kullanım senaryonuza hangisinin daha uygun olduğuna karar vermenize yardımcı olacağız.
Konteyner Orkestrasyonu Nedir?
Konteyner orkestrasyonu, konteynerlerin yaşam döngüsü boyunca otomatik olarak yönetilmesidir. Konteynerleri mevcut kaynaklarda (ör. bir sunucu) çalıştırmak üzere tahsis eder, çökerlerse yeniden başlatır ve daha fazlasını yapar. Orkestratörler, uygulamaları birden çok sunucu arasında yük dengeleyecek şekilde yapılandırılabilir; yüksek erişilebilirlik sağlar ve trafiğe bağlı olarak yatayda ölçekler.
Orkestrasyon, konteynerlerin ve mikro hizmetlerin dağıtık ortamlarda—birden çok sunucu, şirket içi veya bulut fark etmeksizin—uyum içinde çalışmasına yardımcı olur. Kubernetes, Amazon ECS ve Docker Swarm gibi araçlar, modern karmaşık uygulamaların yönetimini basitleştirerek güvenilirliklerini ve operasyonel verimliliklerini artırır.
ECS nedir?
ECS, Amazon’un tescilli, yönetilen konteyner orkestrasyon hizmetidir. Konteynerleştirilmiş uygulamaları çalıştırmanın basit ve güvenli bir yolunu sunar. Sadelik için tasarlanan ECS, ölçek veya özelliklerden ödün vermeden, bilişim, ağ ve güvenlik yapılandırmalarıyla ilgili kararları müşteriler için azaltır.
ECS için aşina olmanız gereken birkaç terim ve bileşen vardır.
- Küme (Cluster)
- Kapasite sağlayıcı (Capacity provider)
- Görev tanımı (Task definition)
- Görev (Task)
- Hizmet (Service)
Küme
Bir ECS kümesi; hizmetler, görevler ve kapasite sağlayıcılardan oluşur. Ayrıca AWS tarafından yönetilen ve bizim göremediğimiz ECS kontrol düzlemini de içerir.
Kapasite sağlayıcı
Konteynerlerin çalışması için, bulutta bir sanal makine ya da yerel bilgisayarınız gibi bir sunucuya ihtiyaç vardır. ECS bağlamında, konteynerlerinizi Elastic Compute Cloud (EC2) veya Fargate üzerinde çalıştırmak için “Başlatma Türü”nü (Launch Type) seçebilirsiniz.

AWS ECS konsolunun Altyapı sekmesi.
Görev
Bir görev, bir görev tanımına göre yapılandırılmış çalışan konteyner(ler) kümesidir. Esasen, bir görev tanımının örneğini temsil eder; tıpkı bir konteynerin bir imajın örneği olması gibi.
Görev tanımı
Uygulamamız için bir Dockerfile’ımız var ve ondan bir imaj oluşturduk. İmajı DockerHub veya AWS ECR gibi bir konteyner kayıt defterine gönderdik. Peki şimdi ne olacak? Bir görev tanımı oluştururuz; bu, konteynerlerimiz (bir ECS kümesine dağıtılacak) için aşağıdaki bilgileri içeren bir yapılandırma veya plandır:
- İmaj(lar). Bir görev birden fazla imaj içerebilir.
- Uygulamamızla iletişim kurmak için kullanılacak bağlantı noktası (port) numarası.
- Hacimler (Volumes).
- Uygulamalarımız için ayrılacak kaynaklar (CPU ve bellek).

AWS ECS konsolunda görev tanımı.
Hizmet
Bağımsız bir konteyner çalıştırıp çökerse ne olur? Hiçbir şey olmaz. Çökme durumunda kalır. ECS’de bağımsız bir görev oluşturursak da davranış aynıdır. Uygulamalarımızın her zaman ayakta olmasını sağlamak için ECS hizmetini kullanırız. Bir hizmet, istenen sayıda görevin her zaman çalışır durumda olmasını temin eder.
Bir görev çökerse veya onu barındıran (dolayısıyla konteyneri barındıran) alttaki sunucu kapanırsa, hizmet kullanılabilir bir kapasite sağlayıcıda yeni bir görev oluşturur.
ECS’nin uygulanması
Artık ECS’nin temellerini ele aldığımıza göre basit bir Nginx imajını çalıştırıp erişelim. Yukarıdaki ECS kümesi ve görev tanımını kullanarak, görev tanımına referans veren bir hizmet oluşturacağım:

AWS ECS konsolunda Hizmetler.
Bu hizmet de bir görev oluşturacaktır.

AWS ECS konsolunda bir görev.
Görevin genel IP adresine erişim:

ECS üzerinde çalışan uygulamaya başarıyla erişildi.
EKS nedir?
Elastic Kubernetes Service’e (EKS) geçmeden önce Kubernetes’in ne olduğunu anlamak önemlidir. Kubernetes, konteynerleştirilmiş uygulamaların dağıtımını, ölçeklenmesini ve yönetimini otomatikleştiren açık kaynaklı bir konteyner orkestrasyon motorudur.
Daha fazla bilgi için Introduction to Kubernetes kursuna göz atmanızı öneririm.
Bununla birlikte, sıfırdan bir Kubernetes kümesi kurmak ve yönetmek karmaşık ve zaman alıcı olabilir. Kubernetes’i kurmak için gereken birçok bileşen ve yapılandırma, kuruluşlar ve ekipler arasında benzerdir. Fark yaratmayan bu ağır işleri soyutlamak ve Kubernetes benimsemesini basitleştirmek için AWS, EKS’i geliştirdi.
EKS, AWS tarafından sunulan ve operasyonel yükün büyük kısmını üstlenen yönetilen bir Kubernetes hizmetidir. Kullanıcılar adına kontrol düzlemini yöneterek Kubernetes’in dağıtımını, ölçeklenmesini ve yönetimini basitleştirir. Bu bileşenleri yönetme ihtiyacını soyutlayarak, Amazon EKS, kullanıcıların konteynerleştirilmiş iş yüklerini çalıştırmaya ve çalışan düğümleri yönetmeye ya da sunucusuz bilişim için AWS Fargate’i kullanmaya odaklanmasına olanak tanır.
Bu bölüm EKS’i kısaca ele almaktadır. Daha fazlası için AWS Elastic Kubernetes Service (EKS) ile Konteyner Orkestrasyonunun Temelleri makalesine bakın.
EKS için aşina olmanız gereken birkaç terim ve bileşen vardır:
- Küme (ana ve çalışan düğümler)
- Manifest dosyaları
- Pod’lar
- ReplicaSet
kubectlkomut satırı aracı
Küme
Bir Kubernetes kümesi, Kubernetes iş yüklerinin çalıştığı sunucu veya sanal makineler grubudur. Ana düğümden (genellikle kontrol düzlemi olarak anılır) ve çalışan düğümlerden oluşur.
EKS’te ana düğüm AWS tarafından kendi VPC’sinde yönetilir; bize soyutlanmıştır. Bu arada, çalışan düğümleri EC2 örnekleri aracılığıyla yönetebilir veya Fargate ile sunucusuz kullanıma geçebiliriz.
EKS kontrol düzlemi ağ bağlantısı. Görsel kaynağı: AWS
Pod’lar
Pod, bir Kubernetes API kaynağıdır. Kubernetes’te dağıtılabilen en küçük birimlerdir. Bir veya daha fazla konteyner grubudur ve kullanılacak imaj, port, komutlar vb. hakkında özellikler içerir.

AWS EKS konsolunda Kaynaklar sekmesi.
ReplicaSet
Bir pod ile aynı şekilde, ReplicaSet de bir Kubernetes API kaynağıdır. İstenen sayıda pod’un her zaman çalıştığından emin olur.
Manifest dosyaları
Kubernetes manifest dosyaları, Kubernetes kaynaklarının istenen durumunu bildirime dayalı bir şekilde tanımlamak için kullanılan yapılandırma dosyalarıdır. Bu dosyalar, bir Kubernetes kümesinde hangi kaynakların bulunması gerektiğini, yapılandırmalarını ve birbirleriyle nasıl etkileşim kurduklarını açıklar.
Manifest dosyaları genellikle YAML ile yazılır:
# pod.yml - Pod manifest
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
labels:
app: nginx
spec:
containers:
- name: nginx-container
image: nginx:1.27
ports:
- containerPort: 80
# service.yml - Kubernetes Service manifest
apiVersion: v1
kind: Service
metadata:
name: nginx-node-port-service
spec:
type: NodePort
selector:
app: nginx
ports:
- protocol: TCP
port: 8080
targetPort: 80
nodePort: 31000
kubectl
Kubernetes kümesiyle iletişim kurmak için komut satırı aracıdır. kubectl komutunu kullanarak Kubernetes kaynaklarını emredici biçimde oluşturabilir, yönetebilir ve silebilir ya da manifest dosyalarıyla birlikte bildirime dayalı olarak kullanabiliriz.
# Create a pod that runs a container with the nginx:1.27 image
kubectl run nginx-pod --image nginx:1.27
# Create a replicaset with 2 pods
kubectl create replicaset --replicas=2 --image nginx:1.27
EKS’nin uygulanması
Şimdi aynı Nginx imajını çalıştırıp erişerek EKS’in nasıl çalıştığını gösterelim.
Basit tutmak için, genel bir alt ağda bir EC2 örneği/çalışan düğüm oluşturacak, uygulamayı oraya dağıtacak, Kubernetes hizmet kaynağını NodePort türünde dışa açacak ve örneğin genel IP’si üzerinden erişeceğim.
Yukarıdaki pod ve hizmet manifestlerini ve pod’u oluşturmak için kubectl komutunu kullanacağım:
# Update local .kube/config file
aws eks update-kubeconfig --region ap-southeast-1 --name i-love-datacamp-eks-cluster
# Create the pod
kubectl create -f pod.yml
# Create the service
kubectl create -f service.yml
EKS kümesinde bir EC2 örneği bulunmaktadır:

EC2 örneği/çalışan düğüm.
Örneğin genel IPv4 adresini bulun.

EC2 örneğinin/çalışan düğümün genel IP adresi.
Örneğin genel IP adresine 31000 portuyla erişim:

EKS üzerinde çalışan uygulamaya başarıyla erişildi.
ECS ve EKS: Benzerlikler
ECS ve EKS’in temellerini ele aldığımıza göre, aralarındaki bazı benzerlikleri görebiliriz. Bu şaşırtıcı değildir; sonuçta ikisi de konteyner orkestrasyon aracıdır.
Hesaplama kapasitesi
Her iki hizmet de uygulamaların EC2 üzerinde—kullanıcıların EC2 örneklerini bakım, yama ve yükseltmeden sorumlu olduğu—ya da AWS’in alttaki sunucuları yönettiği, altyapı yönetimi ihtiyacını ortadan kaldıran sunucusuz seçenek AWS Fargate üzerinde çalışmasına izin verir.
İş yükü yönetim modeli
Her iki hizmet de uygulama kaynaklarını yönetme ve sürdürme konusunda benzer yapılara ve yaklaşımlara sahiptir.
AWS ECS’de konteynerlerin nasıl çalışacağını tanımlayan yapılandırmaya görev tanımı denirken, AWS EKS’de bu, pod manifest dosyasıyla gerçekleştirilir. Dağıtıldıktan sonra, ECS’de konteynerleştirilmiş uygulama bir görev içinde, EKS’de ise bir pod içinde çalışır. İstenen sayıda görev veya pod’un her zaman çalıştığından emin olmak için ECS bir hizmet kullanırken, EKS bu işlev için bir replica set’e güvenir.
Diğer AWS hizmetleriyle derin entegrasyon
AWS üzerinde bir konteyner hizmeti olarak Amazon, ECS ve EKS’in diğer AWS hizmetleriyle iyi entegre olmasını sağlamak için büyük çaba gösterdi.
Ağ iletişimi için, konteynerlerin ağ yapılandırmaları, güvenlik grupları ve alt ağlar üzerinde tam denetimle izole ortamlarda çalışmasına olanak tanıyan Amazon VPC vardır. Trafiği konteynerlere yönlendirmek için yük dengeleyiciler.
Konteynerleştirilmiş uygulamaların kalıcı depolama gereksinimlerini karşılamak için EBS, EFS ve S3 gibi çözümler mevcuttur.
Her iki hizmet de erişim ve izinleri ayrıntılı şekilde kontrol etmek için AWS IAM kullanır. Bu, konteynerleştirilmiş uygulamanın S3, DynamoDB veya RDS gibi hangi AWS kaynaklarına erişebileceğini belirler.
Temel benzerliklerin özeti
|
ECS |
EKS |
|
|
Hesaplama kapasitesi |
Hem EC2 hem de Fargate |
|
|
İş yükü yönetim modeli |
Konteyner yapılandırmasını tanımlamak için görev tanımları kullanır; görevler, istenen sayıyı korumak için bir hizmet içinde çalışır. |
Konteyner yapılandırmasını tanımlamak için pod manifest dosyaları kullanır; pod’lar, istenen sayıyı korumak için bir replica set içinde çalışır. |
|
AWS ile derin entegrasyon |
Ağ, depolama ve erişim kontrolü için VPC, yük dengeleyiciler, EBS, EFS, S3 ve IAM ile entegredir. |
|
ECS ve EKS: Farklılıklar
Amazon ECS ve Amazon EKS arasındaki farkları anlamak, aralarında seçim yaparken önemlidir.
Bu bölümde, teknik gereksinimleriniz ve iş hedeflerinizle en iyi uyum sağlayanı belirlemenize yardımcı olmak için kullanım kolaylığı, ölçeklenebilirlik, özelleştirme ve maliyet açısından temel farklılıklarını ele alacağız.
Kullanım kolaylığı ve öğrenme eğrisi
EKS, Kubernetes üzerine inşa edilmiştir; dolayısıyla Kubernetes kavramları ve araçlarına aşinalık gereklidir. Bu nedenle EKS’in öğrenme eğrisi, ECS’e kıyasla daha dik olacaktır. Bu, kubectl komutunun nasıl çalıştığını ve hizmetler (ECS bağlamındaki “hizmet” terimiyle karıştırılmamalıdır), config map’ler, ingress vb. bazı temel Kubernetes API kaynaklarını anlamayı içerir. Yukarıdaki “EKS nedir” bölümü, EKS’in sunduklarının yalnızca yüzeyine değinmektedir.
ECS ve EKS, CloudWatch, IAM, ASG vb. AWS hizmetleri hakkında bilgi gerektirir. Neyse ki bu, ECS için gerekenlerin tamamıdır; ancak EKS için yeterli değildir. Dolayısıyla kullanım kolaylığı açısından kazanan ECS’tir.
Ölçeklenebilirlik
Her iki hizmet de doğru yapılandırıldığında eşit derecede iyi ölçeklenebilir. Ancak, ölçeklenme biçimleri farklıdır. ECS, görevler için ECS Service Auto Scaling’i ve örnekler için ECS Cluster Auto Scaling’i destekler. Yalnızca CloudWatch metrikleri ve ASG ölçekleme ilkeleri gibi AWS yerel hizmetlerini kullanır.
Öte yandan EKS, pod’lar için Horizontal Pod Autoscaler (HPA) ve örnekler için Cluster Autoscaler gibi Kubernetes-yerel ölçekleme özelliklerini kullanır. Cluster Autoscaler, varsayılan olarak EKS kümesine kurulu değildir; bu nedenle kullanıcının kendisinin kurması gerekir. Bu da, Cluster Autoscaler’ın çalışması için hem AWS kaynaklarında (ör. IAM rollerinde) hem de Kubernetes API kaynaklarında (ör. hizmet hesaplarında) doğru yapılandırma gerektirdiğinden karmaşıklık katar; çünkü ölçekleme için AWS API çağrıları yapılması gerekir.
EKS için yakın zamanda sunulan EKS AutoMode adlı yeni bir özellik, bu ek karmaşıklığı giderebilir. EKS çalışan düğümlerinin yönetimini ve ölçeklenmesini AWS’e devreder; ancak ek maliyetleri vardır.
Esneklik ve özelleştirme
Belirtildiği gibi, ECS, sadelik için tasarlanmış, Amazon’un tescilli yönetilen konteyner orkestrasyon hizmetidir. AWS, çoğu küme yönetim görevini üstlenir ve yaygın konteyner iş yüklerine uygun ön tanımlı yapılandırmalar sunar; ancak niş gereksinimleri karşılamayabilir. Karmaşıklığı azaltırken, Kubernetes’e kıyasla özelleştirme seçeneklerini sınırlar.
EKS, Kubernetes’in tüm gücünü sunar; kullanıcıların ihtiyaçlarına göre dağıtımları, pod zamanlamasını, depolama sınıflarını ve ağ ilkelerini özelleştirmesine olanak tanır. Özel kaynak tanımları (CRD) ve operatörler gibi gelişmiş orkestrasyon özellikleri, uygulama tasarımında benzersiz bir esneklik sağlar.
EKS ayrıca Prometheus, Grafana ve Istio gibi Kubernetes ekosistemindeki çeşitli açık kaynak araçlar ve eklentilerle entegre edilebilir; bu da geliştiricilerin yüksek düzeyde özelleştirilmiş çözümler oluşturmasını sağlar. Dolayısıyla esneklik ve özelleştirme yarışında kazanan EKS’tir.
Maliyet
Hem ECS hem de EKS için geçerli olan standart ağ kaynakları (ör. genel IPv4 adresleri, NAT ağ geçitleri) ile bilişim ve depolama kaynaklarının (ör. EC2 örnekleri, Fargate ve EBS birimleri) maliyetlerine ek olarak, ECS daha düşük maliyete ve çok daha basit bir maliyet yapısına sahiptir.
ECS kontrol düzlemi için ücret alınmaz. Başka bir deyişle, hiç çalışan göreviniz olmayan bir ECS kümesi oluştursanız bile maliyete katlanmazsınız. Buna karşılık, EKS’te, Kubernetes kümesinde herhangi bir uygulama çalıştırıp çalıştırmadığınızdan bağımsız olarak AWS tarafından yönetilen kontrol düzlemi için maliyetler vardır.
EKS kontrol düzlemi maliyeti, kullanılan Kubernetes sürümüne göre değişir. Standart destek kapsamındaki bir Kubernetes sürümü küme başına saatlik 0,10 ABD doları, genişletilmiş destek kapsamındaki bir sürüm ise küme başına saatlik 0,60 ABD dolarıdır.
Temel farklılıkların özeti
|
Özellik |
ECS |
EKS |
|
Orkestrasyon platformu |
AWS-yerel |
Kubernetes tabanlı |
|
Karmaşıklık |
Basit |
Daha karmaşık |
|
Taşınabilirlik |
Yalnızca AWS |
Çoklu Bulut |
|
Ölçekleme |
ECS Service Auto Scaling |
Kubernetes Otomatik Ölçekleyicileri |
|
Maliyet |
Kontrol düzlemi ücreti yok |
Kontrol düzlemi için asgari 0,10 ABD doları/saat |
ECS Ne Zaman Tercih Edilmeli?
Seçim, uygulamanızın gereksinimlerine, iş hedeflerinize, ekip uzmanlığınıza, operasyonel bütçenize ve genel önceliklerinize bağlıdır.
Daha basit ve daha maliyet etkin olan ECS, bütçesi daha sınırlı, pazara çıkış süresi daha kısa ve operasyonları sadeleştirmeyi tercih eden ekipler için idealdir. Çoklu bulut veya hibrit ortamlarda taşınabilirlik gerektirmeyen ve yalnızca AWS üzerinde çalışacak şekilde tasarlanmış uygulamalar için özellikle uygundur. AWS’ye özgü bir hizmet olarak ECS, AWS ekosistemiyle sınırlı iş yükleriyle kusursuz şekilde uyum sağlar.
Hem ECS hem de EKS, sunucusuz konteyner dağıtımları için Fargate’i desteklese de, ECS daha doğrudan bir entegrasyon sunar. ECS’de görevlerin Fargate üzerinde çalıştırılmasını doğrudan seçebilirsiniz; ek yapılandırma gerekmez. Buna karşılık, EKS ile Fargate, hangi iş yüklerinin Fargate üzerinde çalışacağını belirlemek için pod etiketleri belirtilmesini gerektirir ve bu da ek karmaşıklık katar. Bu, daha basit bir sunucusuz deneyim arayan ekipler için ECS’yi cazip kılar.
EKS Ne Zaman Tercih Edilmeli?
EKS’in temelini oluşturan Kubernetes, buluttan bağımsızdır; iş yüklerinin AWS, diğer bulut sağlayıcıları ve şirket içi ortamlarda tutarlı şekilde çalışmasını sağlar. Bu taşınabilirlik, çoklu bulut kurulumları veya hibrit şirket içi altyapıyla çalışan kuruluşlar için özellikle faydalıdır. Azure ve Google Cloud da yönetilen Kubernetes hizmetleri—sırasıyla Azure Kubernetes Service (AKS) ve Google Kubernetes Engine (GKE)—sunarak Kubernetes’in modern bulut ortamlarındaki yaygınlığını ortaya koyar.
Uygulamanız veya kullanım senaryonuz gelişmiş özelleştirme ve genişletilebilirlik gerektiriyorsa EKS idealdir. Örneğin Kubernetes, Özel Kaynak Tanımları (CRD) oluşturmayı destekler; bu sayede belirli uygulama yapılandırmalarını yönetmek veya harici sistemlerle bütünleşmek için özel kaynaklar tanımlayabilirsiniz. Bu esneklik, EKS için önemli bir ayırt edicidir.
EKS kontrol düzlemini soyutlayıp yönetimini AWS’e bıraksa da, EKS ortamında etkili şekilde çalışmak yine de Kubernetes API kaynakları ve kavramlarına aşinalık gerektirir. Bu nedenle, ekibin Kubernetes uzmanlığı platformdan etkin biçimde yararlanmak için kritik önemdedir.
EKS ayrıca küme işlevselliğini genişletmek için kurulabilen çok çeşitli özelleştirilebilir eklentiler sunar. Bu eklentiler, gerekli operasyonel araçlarla bir kümenin sağlanmasını kolaylaştırarak kurulumu basitleştirir ve üretkenliği artırır.

EKS eklenti seçimi.
Özetle, EKS; yüksek denetim ve ayrıntı gerektiren, çok sayıda birbiriyle bağlantılı bileşene sahip mikro hizmet mimarileri veya uygulamalar için uygundur. Gelişmiş özelleştirme seçeneklerine ihtiyaç duyan ekipler ya da iş yükü taşınabilirliğinin kritik olduğu ortamlarda çalışanlar için özellikle avantajlıdır.

ECS ile EKS arasında karar akış şeması. Görsel: Yazar.
Araçlar ve Entegrasyonlar
İster konteynerleştirilmiş bir uygulama, ister doğrudan bir VM üzerinde çalışan bir uygulama olsun, izleme ve gözlemlenebilirlik hayati önemdedir. AWS ekosistemi içinde, hem ECS hem de EKS, konteynerleştirilmiş uygulamalar için Yazılım Geliştirme Yaşam Döngüsü’nün (SDLC) tamamını geliştirmek amacıyla AWS araçları ve üçüncü taraf hizmetlerinden yararlanabilir.
İzleme ve günlükleme
İzleme ve günlükleme, uygulamalarınız ve altyapınız üzerinde görünürlük sağlamak için esastır. AWS, hem ECS hem de EKS için metrikler, günlükler ve alarmlar adına Amazon CloudWatch gibi yerel araçlar ve üçüncü taraf entegrasyonlarını destekler.
AWS X-Ray, mikro hizmetler genelinde istekleri izleyerek ECS görevleri veya EKS pod’larındaki performans sorunlarını analiz etmeyi ve hata ayıklamayı kolaylaştırır. Datadog, Prometheus, Grafana ve New Relic gibi üçüncü taraf araçlar, konteynerlere özel geliştirilmiş görselleştirme ve uyarı yetenekleri sunar.
CI/CD boru hatları
CI/CD boru hatları testleri, taramaları ve dağıtımları otomatikleştirerek daha hızlı yinelemeler ve daha az manuel çaba sağlar. GitLab boru hatları ve GitHub Actions gibi popüler CI/CD araçları, konteyner oluşturma, test ve dağıtım için ECS ve EKS ile entegre olur. Bu araçlar, ECS için Docker konteynerleriyle veya EKS için Helm chart’larıyla çalışır.
Kod Olarak Altyapı (IaC)
IaC, tutarlı ve tekrarlanabilir altyapı oluşturmak, sağlama süresini en aza indirmek ve AWS Yönetim Konsolu üzerinden yapılan manuel yapılandırmalarla ilişkili insan hatası riskini azaltmak için kritik öneme sahiptir.
Popüler IaC araçları arasında Terraform ve AWS CloudFormation bulunur. Her ikisi de yaygın olarak kullanılsa da, Terraform genellikle çoklu bulut yetenekleriyle tercih edilir; ekiplerin tek bir araçla birden fazla bulut sağlayıcısındaki altyapıyı yönetmesine olanak tanır.
Ağ ve güvenlik
AWS, hem ECS hem de EKS için güvenli iletişim ve erişim kontrolünü sağlamak üzere sağlam ağ ve güvenlik özellikleri sunar; örneğin AWS VPC ile kaynakları özel alt ağlarda izole etmek. AWS WAF ve Shield: ECS ve EKS üzerinde barındırılan uygulamaları yaygın web güvenlik açıkları ve DDoS saldırılarına karşı korur. AWS KMS: EBS birimlerini ve etcd’de saklanan Kubernetes sırlarını şifrelemek için.
Sonuç
ECS ve EKS, AWS tarafından sunulan, her biri farklı uygulama ihtiyaçlarına ve ekip önceliklerine göre uyarlanmış güçlü konteyner orkestrasyon hizmetleridir.
ECS, başlaması daha kolay, sağlama, dağıtım ve bakım açısından daha basit ve operasyonel maliyetleri daha düşüktür. Buna karşılık EKS, daha dik bir öğrenme eğrisine ve daha yüksek başlangıç karmaşıklığına sahiptir; ancak rakipsiz esneklik ve gelişmiş özelleştirme seçenekleri sunar ve özel ya da karmaşık gereksinimleri olan ekipler için idealdir.
ECS ile EKS arasındaki seçim, uygulamanızın ihtiyaçlarına, ekibin uzmanlığına ve sadelik ile denetim arasındaki istenen dengeye bağlıdır.
AWS bilginizi güçlendirmek istiyorsanız, AWS Concepts kursu harika bir başlangıçtır. AWS araç ve teknolojilerine daha derinlemesine dalmak için AWS Cloud Technology and Services kursuna göz atın. Ayrıca, konteynerleştirmeye hakim olmak isteyenler için Containerization and Virtualization Track değerli içgörüler sunarak konteynerleri yönetme ve dağıtma konusunda başarılı olmanıza yardımcı olur.
SSS
EKS için kubectl’e benzer, ECS için bir komut satırı aracı var mı?
Evet, AWS Copilot adlı bir komut satırı arayüzü vardır.
EKS’i kullanmadan önce Kubernetes hakkında ne kadar bilgi sahibi olmam gerekiyor?
Gerçekten de uygulamanızın gereksinimlerine ve karmaşıklığına bağlıdır. Yine de, gereksinimleriniz veya uygulamanız ne kadar basit olursa olsun pod’lar, replica set’ler, deployment ve hizmetler gibi Kubernetes API kaynaklarını bilmek şarttır.
ECS ve EKS üçüncü taraf araç ve hizmetlerle entegre olabilir mi?
Evet, ancak ikisi arasında entegrasyonun kapsamı ve kolaylığı farklılık gösterir. ECS, konteyner metrikleri ve günlüklerini toplamak için exporter’lar aracılığıyla Datadog, New Relic ve Prometheus ile entegre olur.
ECS, Istio ve Linkerd gibi üçüncü taraf servis mesh’lerine benzer özellikler sunan AWS App Mesh ile birlikte kullanılabilir.EKS, Prometheus ve Grafana için yerel destekle ve Datadog, New Relic ve Splunk gibi araçlarla entegrasyonlarla kapsamlı izleme seçenekleri sunar.
Gelişmiş servisler arası iletişim ve gözlemlenebilirliği uygulamak için Istio, Linkerd ve AWS App Mesh ile tamamen uyumludur.
ECS ve EKS arasındaki maliyet farkı nedir?
Aynı bilişim kaynaklarının (EC2 örnek türleri, spot fiyatlandırma veya Fargate kullanımı) her ikisinde de kullanıldığını varsayarsak, EKS kontrol düzlemi için en az günlük 2,4 ABD doları daha pahalı olacaktır. Bu da zamanla birikebilir. Diğer maliyet farklılıkları—ağ ek yükü, operasyonel karmaşıklık ve eklenti kaynak kullanımı gibi—ECS ve EKS arasında değişkenlik gösterebilir.
Terraform, GitLab CI/CD ardışık düzenleri ve geniş bir AWS hizmet yelpazesinde uzmanlığa sahip deneyimli bir Bulut Altyapısı ve DevOps Mühendisi olan Kenny, ölçeklenebilir, güvenli ve maliyet açısından optimize edilmiş bulut çözümleri tasarlamakta uzmandır. Yeniden kullanılabilir altyapılar inşa etmede, Python ve Bash ile iş akışlarını otomatikleştirmede ve CI/CD ardışık düzenlerine güvenlikle ilgili en iyi uygulamaları yerleştirmede başarılıdır. Kubernetes ve çeşitli gözlemlenebilirlik araçları konusunda kapsamlı saha deneyimiyle, Kenny mikro hizmetleri yönetme ve orkestre etme konusunda yetkindir; aynı zamanda güçlü gözlemlenebilirlik ve performans izlemesini güvence altına alır. Liderliği, mentorluk yaklaşımı ve yeniliğe bağlılığıyla tanınan Kenny, modern bulut-yerel uygulamalar için güvenilir ve ölçeklenebilir çözümler sunmayı sürekli başarır. Sektör trendlerinin ve ortaya çıkan teknolojilerin ön saflarında yer alma kararlılığını sürdürerek yetkinliklerini sürekli genişletip derinleştirir.


