Mikroservis Mimarisi Nedir?
Mikroservis mimarisi, uygulamaların küçük, bağımsız ve birbirinden izole servisler olarak inşa edilmesidir. Bu servisler kendi başlarına çalışabilir, başka sistemlerle iletişim kurabilir ve gerektiğinde ölçeklenebilirler. Artık monolitik yapılar yerine, küçük modüler servislerle her şeyin daha hızlı, daha verimli ve daha güvenilir bir şekilde çalıştığını görebiliyoruz.
Kubernetes ile Mikroservis Dağıtımı
Kubernetes, konteynerleştirilmiş uygulamaların yönetimini otomatikleştiren bir platformdur. Her mikroservis, bir konteyner içinde çalıştırılabilir ve Kubernetes bu konteynerleri yönetir, gerektiğinde ölçeklendirir ve bakımlarını yapar.
İlk adım, Kubernetes'i kurmaktır. Eğer kendi altyapınızda Kubernetes kurulumunu yapmayı planlıyorsanız, [Minikube](https://minikube.sigs.k8s.io/docs/) gibi araçlar ile basitçe bir ortam kurabilirsiniz. Ayrıca, bulut tabanlı servisler üzerinden de Kubernetes kümeleri oluşturmak oldukça kolay. Örneğin, [Google Kubernetes Engine (GKE)](https://cloud.google.com/kubernetes-engine) ve [Amazon EKS](https://aws.amazon.com/eks/) gibi seçeneklerle altyapı kurulumunu hızlıca gerçekleştirebilirsiniz.
# Adım 2: Mikroservislerinizi Konteynerleştirme
Mikroservislerinizi kapsüllemek için Docker gibi araçları kullanabilirsiniz. Her bir servis için ayrı bir Dockerfile yazmanız gerekecek. Örneğin, Node.js tabanlı bir mikroservis için aşağıdaki gibi bir Dockerfile yazabilirsiniz:
FROM node:14
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 8080
CMD [ "node", "app.js" ]
Bu Dockerfile, uygulamanızın çalışması için gereken her şeyi içerecek ve konteynerinizin düzgün çalışmasını sağlayacaktır.
# Adım 3: Kubernetes Config Dosyalarını Yazma
Kubernetes'i kullanırken, her mikroservis için bir "Deployment" dosyası oluşturmanız gerekir. Bu dosya, Kubernetes'in mikroservisi nasıl yöneteceğini belirtir. Örnek bir Deployment dosyası şöyle olabilir:
apiVersion: apps/v1
kind: Deployment
metadata:
name: node-service
spec:
replicas: 3
selector:
matchLabels:
app: node-service
template:
metadata:
labels:
app: node-service
spec:
containers:
- name: node-service
image: node-service:latest
ports:
- containerPort: 8080
Bu dosya, Kubernetes’e mikroservisinizi 3 kopya ile çalıştırmasını söyler ve her bir kopyanın 8080 portundan hizmet verdiğini belirtir.
# Adım 4: Servis Tanımlama
Mikroservislerinizi birbirine bağlamak için Kubernetes servislerini kullanmanız gerekecek. Kubernetes'teki servisler, pod’lar arasında ağ iletişimini yöneten soyutlamalardır. Her servis için bir "Service" dosyası oluşturabilirsiniz:
apiVersion: v1
kind: Service
metadata:
name: node-service
spec:
selector:
app: node-service
ports:
- protocol: TCP
port: 80
targetPort: 8080
type: LoadBalancer
Bu servis, dışarıdan gelen trafiği mikroservisinize yönlendirecektir.
# Adım 5: İzleme ve Ölçeklendirme
Mikroservislerinizi başarılı bir şekilde dağıttıktan sonra, Kubernetes’in sunduğu izleme ve ölçeklendirme özelliklerinden faydalanmalısınız. Kubernetes, otomatik olarak pod’larınızı izler ve gerektiğinde yeniden başlatır. Ayrıca, servisinizi daha fazla talep olduğunda otomatik olarak ölçeklendirebilirsiniz.
Kubernetes sadece dağıtım ve yönetim için harika bir araç değil, aynı zamanda güvenlik özellikleriyle de dikkat çekiyor. Kubernetes'i kullanarak uygulamanızın ağ iletişimini şifreleyebilir, erişim kontrol listelerini (ACL) belirleyebilir ve API erişimlerini sınırlayabilirsiniz.
### Sonuç
Mikroservis mimarisine geçmek ve Kubernetes kullanmak başlangıçta karmaşık gibi görünebilir, ancak doğru adımları izlediğinizde çok daha esnek ve ölçeklenebilir bir altyapıya sahip olabilirsiniz. Kubernetes, mikroservislerinizi kolayca yönetmenizi sağlayarak işinizi büyük ölçüde kolaylaştıracaktır. Artık yazılım geliştirme süreçleriniz çok daha verimli ve güvenli olacak!