Sitemap

DevOps: Terimler ve Teknolojiler Sözlüğü - 1

7 min readApr 5, 2023

DevOps, yazılım geliştirme ve operasyon ekiplerini bir araya getirerek, yazılımın daha hızlı, güvenli ve sürdürülebilir bir şekilde dağıtımını sağlayan bir kültürel ve profesyonel bir harekettir. DevOps sürecinde, birçok araç ve teknik kullanılarak, geliştirme ve operasyon ekiplerinin birlikte çalışmayı mümkün kılar.

Press enter or click to view image in full size
Photo by Deva Darshan

DevOps süreci, geleneksel yazılım geliştirme süreçlerinden farklıdır. Geliştirme ve operasyon ekiplerinin bir arada çalışması, yazılımın daha hızlı ve güvenli bir şekilde dağıtımını sağlar. Bu süreçte, CI/CD süreçleri, yapılandırma yönetimi, konteyner teknolojileri, gözlemleme ve izleme teknikleri gibi birçok araç ve teknik kullanılır. Bu yazıda, DevOps terimlerine detaylı olarak değineceğiz. Yazıda genellikle kendi iş tecrübelerimden derlediğim teknolojiler ve araçlarla beraber alanında en popüler ve açık kaynaklı projeleri önceliklendirerek derledim ve paylaşmak istedim. Aynı zamanda her teknoloji ve araç içinde daha fazla detaya kolayca erişebilmeniz için detaylı dokümantasyon linklerini de açıklalamaların sonlarına eklemiş bulunmaktayım.

1. Genel Kavramlar:

DevOps: Yazılım geliştirme ve işletim ekibinin birleşmesini ve birlikte çalışmasını sağlayan kültürel ve profesyonel bir harekettir.
Kapsamlı Kaynak: DevOps Nedir?

Continuous Integration (CI): Yazılım geliştirme yöntemi olan CI, yazılımın farklı parçalarını sık sık birleştirerek hataları erken tespit etmeyi ve yazılımın kalitesini artırmayı hedefler. CI sürecinde, yazılımın otomatik olarak derlenmesi, test edilmesi ve hataların raporlanması gibi işlemler otomatik olarak gerçekleştirilir.
Kapsamlı Kaynak: Continuous Integration’a Giriş

Continuous Deployment (CD): CI’dan farklı olarak, CD süreci, yazılımın otomatik olarak test edilmesini, derlenmesini ve dağıtımını sağlar. CD süreci, yazılım geliştirme sürecinde hataların erken tespit edilmesine ve yazılımın hızlı bir şekilde dağıtılmasına yardımcı olur.
Kapsamlı Kaynak: Continuous Deployment

Continuous Delivery: Yazılım geliştirme yöntemi olan CD, yazılımın otomatik olarak dağıtımını hedefler. CI/CD süreçleri genel olarak kullanılan bir ismidir.
Kapsamlı Kaynak: Continuous Delivery

Infrastructure as Code (IaC): Yazılım geliştirme yöntemi olan IaC, altyapıyı kod olarak tanımlamayı hedefler. Bu sayede, altyapıların yönetimi ve dağıtımı kolaylaşır.
Kapsamlı Kaynak: Infrastructure as Code

2. CI/CD Araçları:

Jenkins: Java tabanlı bir açık kaynaklı CI/CD aracıdır. 2005 yılında Hudson olarak başladı, ancak Oracle Hudson’ı satın aldıktan sonra Jenkins adını aldı. Jenkins, ücretsiz ve açık kaynaklı bir araç olarak mevcuttur ve özelleştirilebilir bir arayüz sunar. Jenkins, kullanıcıların yazılım geliştirme sürecini otomatikleştirmelerine, test etmelerine ve dağıtmalarına olanak tanır. Resmi Dokümantasyon: Jenkins Kullanıcı Dokümantasyonu

GitLab CI/CD: GitLab üzerinde kod, test ve dağıtım için tek bir platform sağlar. GitLab CI/CD, kullanıcıların herhangi bir kod değişikliği yapıldığında otomatik olarak test etmelerine ve dağıtmalarına olanak tanır. Resmi Dokümantasyon: GitLab CI/CD

Travis CI: Travis CI, açık kaynaklı bir CI aracıdır ve GitHub entegrasyonu sağlar. Travis CI, kullanıcıların projelerini otomatik olarak test etmelerine ve dağıtmalarına olanak tanır. Travis CI, özelleştirilebilir bir yapıya sahip ve farklı programlama dilleri için destek sunar.
Resmi Dokümantasyon: Travis CI Kullanıcı Dokümantasyonu

CircleCI: CircleCI, bulut tabanlı bir CI/CD aracıdır. Kullanıcıların kodlarını test etmelerine, dağıtmalarına ve hızlı bir şekilde geri bildirim almalarına olanak tanır. CircleCI, kullanıcıların farklı programlama dilleri için özelleştirilebilir yapılandırmalar oluşturmalarına olanak tanır. CircleCI, AWS, Docker, GitHub ve Bitbucket gibi birçok popüler hizmetle entegrasyon sağlar. Resmi Dokümantasyon: CircleCI Dokümantasyonu

GitHub Actions: GitHub tarafından sunulan bir CI/CD aracıdır. Kullanıcıların GitHub reposunda kodlarını test etmelerine, dağıtmalarına ve otomatik olarak iş akışlarını özelleştirmelerine olanak tanır. GitHub Actions, birçok popüler programlama dili için destek sunar.
Resmi Dokümantasyon: GitHub Actions Dokümantasyonu

3. Konteyner ve Orkestrasyon:

Apache Mesos: Apache Mesos, açık kaynaklı bir konteyner orkestrasyon aracıdır. Kubernetes çözümleri ve ailesinin sektörü domine etmesi ile beraber pazar payı oldukça düşmüştür.
Resmi Dokümantasyon: Apache Mesos Dokümantasyonu

Docker: Docker, 2013 yılında çıkmış bir yazılım geliştirme yöntemi olarak, uygulamaların ve hizmetlerin hızlı bir şekilde dağıtımını ve çalıştırılmasını sağlar. Docker, konteyner teknolojisine dayanarak çalışır. Bu sayede, uygulamaların herhangi bir platformda (Windows, Linux, macOS) sorunsuz bir şekilde çalıştırılabilmesini sağlar. Docker, açık kaynaklı bir proje olarak geliştirilmiştir ve kullanımı oldukça popülerdir.
Resmi Dokümantasyon: Docker Dokümantasyonu

Kubernetes: Kubernetes, açık kaynaklı bir konteyner orkestrasyon aracıdır. Yazılım geliştirme süreçleri içerisinde konteynerlerin yönetimi ve dağıtımı için kullanılır. Resmi Dokümantasyon: Kubernetes Dokümantasyonu

Rancher: Rancher, konteynerlerin yönetimi için kullanılan bir açık kaynaklı platformdur. Rancher, birden fazla konteyner orkestrasyon aracı ile entegre olabilir ve konteynerlerin kolayca yönetilmesini sağlar. Rancher, kullanımı kolay bir arayüze sahiptir ve hizmet keşfi, otomatik yük dengeleme ve diğer özellikleri sunar.
Resmi Dokümantasyon: Rancher Dokümantasyonu

OpenShift: OpenShift, Red Hat tarafından geliştirilen bir konteyner orkestrasyon platformudur. OpenShift, Kubernetes üzerine inşa edilmiştir ve birçok ek özellik sunar. OpenShift, hızlı bir şekilde uygulama geliştirme ve dağıtımı yapmak için tasarlanmıştır ve hizmetlerin otomatik ölçeklendirilmesi, uygulama izleme ve güncelleme özellikleri sunar.
Resmi Dokümantasyon: OpenShift Dokümantasyonu

Nomad: Nomad, HashiCorp tarafından sunulan açık kaynaklı bir konteyner orkestrasyon aracıdır. Nomad, konteynerlerin ve diğer iş yüklerinin yerleştirilmesi, ölçeklendirilmesi ve dağıtımı için kullanılır. Nomad, çoklu veri merkezlerinde çalışabilen, yüksek kullanılabilirlik özellikleri sunan, modern bir araçtır.
Resmi Dokümantasyon: Nomad Dokümantasyonu

Docker Swarm: Docker Swarm, Docker tarafından sunulan ve konteynerleri yönetmek için kullanılan bir araçtır. Swarm, birden fazla Docker ana bilgisayarını tek bir mantıksal ana bilgisayar olarak birleştirir ve bu sayede uygulamaların birden fazla bilgisayarda çalışmasını sağlar. Swarm, Docker Engine’in bir bileşeni olarak çalışır ve Docker API’ye uyumlu bir API sunar. Kubernetes teknolojileri ile beraber kullanımı yine oldukça nadir hale gelmiştir.
Kapsamlı Kaynak: Docker Swarm

4. Bulut Hizmetleri:

Amazon ECS: Amazon Elastic Container Service (ECS), AWS üzerinde çalışan konteyner uygulamalarını yönetmek için kullanılan bir hizmettir. Amazon ECS, Docker konteynerlerini kullanarak uygulamaların hızlı bir şekilde dağıtımını ve yönetimini sağlar. Amazon ECS, AWS üzerinde çalışan birçok farklı hizmetle entegre edilebilir ve kolayca ölçeklenebilir. Bu sayede, uygulamaların yüksek trafiği yönetmesi kolaylaşır. Resmi Dokümantasyon: Amazon ECS Dokümantasyonu

Microsoft Azure: Azure, Microsoft tarafından sağlanan bulut hizmetleri platformudur. Azure, yazılım geliştirme, test, dağıtım ve yönetim işlemlerini hızlandırmak için kullanılabilir. Azure, sanal makineler, depolama, veritabanları ve ağlar gibi çeşitli hizmetler sunar. Azure ayrıca, yapay zeka, büyük veri analitiği, IoT, blok zinciri ve daha birçok teknoloji alanında hizmetler sunar.
Kapsamlı Kaynak: Azure Dokümantasyonu

Google Cloud Platform (GCP): Google Cloud Platform (GCP), Google tarafından sağlanan bulut hizmetleri platformudur. GCP, Google’ın güçlü teknoloji altyapısını kullanarak, kullanıcılara sanal makineler, depolama, veritabanları, ağlar ve daha birçok hizmet sunar.
Kapsamlı Kaynak: GCP Dokümantasyonu

5. Yapılandırma Yönetimi ve Dağıtım:

Ansible: Ansible, açık kaynaklı bir yazılım dağıtım, konfigürasyon ve yönetim aracıdır. Basit, verimli ve güvenilir bir şekilde büyük ölçekli sistemlerin yönetimini sağlamayı hedefler. Ansible, Python dilinde yazılmıştır ve SSH ve WinRM protokollerini kullanarak sistemler arasında iletişim kurar. 2012 yılında Michael DeHaan tarafından geliştirilmeye başlanan Ansible, 2015 yılında Red Hat tarafından satın alınmıştır. Ansible, özellikle otomasyon ve bulut altyapısı yönetimi gibi alanlarda popülerdir. Resmi Dokümantasyon: Ansible Dokümantasyonu

Chef: Chef, açık kaynaklı bir yapılandırma yönetimi aracıdır. Ruby dilinde yazılmıştır ve geniş bir kullanıcı tabanına sahiptir. Chef, sistemi istenen duruma getirmek için kaynak dosyalarını tanımlayan kılavuzlar (cookbook) kullanır. 2009 yılında Adam Jacob tarafından geliştirilmeye başlanan Chef, 2013 yılında Opscode adlı şirketin Chef’in geliştirilmesine odaklanmak amacıyla ismini Chef Software olarak değiştirmiştir. Chef, özellikle büyük ölçekli sistemlerin yönetiminde ve bulut altyapısı yönetiminde kullanılır. Resmi Dokümantasyon: Chef Dokümantasyonu

Puppet: Puppet, açık kaynaklı bir yapılandırma yönetimi aracıdır. Ruby dilinde yazılmıştır ve büyük ölçekli sistemlerin yönetiminde kullanılır. Puppet, istenen duruma getirilmesi gereken sistemler için kaynak dosyalarını tanımlayan manifest dosyalarını kullanır. 2005 yılında Luke Kanies tarafından geliştirilmeye başlanan Puppet, 2015 yılında Puppet Labs adlı şirketin Puppet’in geliştirilmesine odaklanmak amacıyla ismini Puppet Enterprise olarak değiştirmiştir. Puppet, özellikle bulut altyapısı yönetimi gibi alanlarda popülerdir. Resmi Dokümantasyon: Puppet Dokümantasyonu

SaltStack: Salt, açık kaynaklı bir yapılandırma yönetimi ve otomasyon aracıdır. Büyük ve karmaşık veri merkezleri ve bulut ortamları için ölçeklenebilir bir yapı sunar. Python tabanlı olması nedeniyle, konfigürasyon işlemleri de Python betikleri ile gerçekleştirilebilir. Resmi Dokümantasyon: SaltStack Dokümantasyonu

Terraform: Terraform, açık kaynaklı bir altyapı yönetim aracıdır. Yazılım geliştirme sürecinde altyapının yönetimi ve dağıtımını kolaylaştırır. Terraform, infrastructre-as-code (IaC) yöntemini kullanarak, altyapıyı kod olarak tanımlayarak yönetir.

Terraform, HashiCorp tarafından 2014 yılında geliştirilmeye başlandı ve o zamandan beri hızla popülerlik kazandı. Terraform, AWS, Google Cloud, Microsoft Azure ve diğer birçok bulut sağlayıcısı ile entegre olabilir.

Terraform, modüler bir yapıya sahip olması nedeniyle, büyük ve karmaşık altyapılar için bile kolayca ölçeklenebilir. Kod tabanlı altyapı yönetimi sayesinde, altyapı değişiklikleri kolayca yapılabildiği gibi, belirli bir altyapının geçmiş versiyonlarının takibi de mümkündür.

Resmi Dokümantasyon: Terraform Dokümantasyonu

6. Konteyner Kayıt ve Dağıtım:

Harbor: Harbor, açık kaynaklı bir Docker Registry ve Cloud Native Application Packaging (CNAB) deposudur. Uygulama ve hizmetlerin dağıtımı ve yönetimi için kullanılan bir platformdur. Harbor, tümleşik bir güvenlik duvarı, tarayıcı ve uygulama güvenliği için imza taraması gibi bir dizi güvenlik özelliği sunar. Harbor, ölçeklenebilir bir platformdur ve Kubernetes, Docker ve Helm desteği sunar. Resmi Dokümantasyon: Harbor Dokümantasyonu

Quay: Quay, açık kaynaklı bir Docker Registry ve Container Image deposudur. Red Hat tarafından satın alınan Quay.io, işletmelerin çoklu bulut platformlarına ve veri merkezlerine yönelik çözümler sağlar. Quay.io, Docker ve Helm desteği sunar, imza taraması, otomatik etiketleme, güvenlik duvarı ve son kullanma tarihleri gibi bir dizi özellik sunar. Resmi Dokümantasyon: Quay Dokümantasyonu

Nexus Repository: Nexus Repository, açık kaynaklı bir yazılım deposudur. Java, Ruby, npm, Docker ve yum deposu desteği sunar. Nexus, veri yönetiminde güçlü bir ölçeklenebilirlik sunar ve imza taraması, güvenlik duvarı, uygulama ve hizmet yönetimi için bir dizi özellik sunar. Resmi Dokümantasyon: Nexus Repository Dokümantasyonu

Docker Hub: Docker tarafından yönetilen bulut tabanlı bir Docker imaj deposudur. Docker Hub, kullanıcıların Docker imajlarını depolamasına, yönetmesine ve paylaşmasına olanak tanır. https://www.docker.com/products/docker-hub

Google Container Registry: Google Cloud Platform ile entegre edilmiş bulut tabanlı bir Docker imaj deposudur. Geliştiriciler, Google Cloud Platform hesaplarını kullanarak imajlarını depolayabilir, yönetebilir ve paylaşabilirler. https://cloud.google.com/container-registry/

7. Hizmet Mesh ve Ağ Çözümleri:

Istio: Kubernetes için geliştirilmiş, açık kaynaklı bir servis ağıdır. İşletmelerin mikroservis uygulamaları için, trafiği yönlendirmek, güvenlik ve politika uygulamak gibi işlevleri yönetmelerine olanak tanır. Istio, Kubernetes’in yanı sıra, mesajlaşma sistemleri ve diğer hizmetler gibi çeşitli platformlarla da entegre olabilir. Detaylı Kaynak: Istio

Flannel: Kubernetes için tasarlanmış bir ağ çözümüdür. Flannel, her bir Kubernetes düğümüne özel bir ağ IP’si atanmasını ve bu düğümler arasında iletişim kurulmasını sağlar. Aynı zamanda, diğer Kubernetes ağ çözümleri gibi, bütünleşik ağ politikaları ve güvenlik özelliklerine sahiptir. Detaylı Kaynak: Flannel

Canal: Kubernetes için ağ politikalarının yönetimi için tasarlanmış bir çözümdür. Canal, Flannel ve Calico projelerini birleştirir. Bu sayede, ağ politikaları, hizmet keşfi ve güvenlik özellikleri, Kubernetes ağında daha da geliştirilebilir. Detaylı Kaynak: Canal

Linkerd: Linkerd, uygulama trafiklerini yönetmek, güvenli hale getirmek ve gözlemlemek için kullanılan bir servis mesh aracıdır. Linkerd, geleneksel HTTP ve gRPC trafiğine ek olarak, MongoDB, Cassandra, Redis ve diğer veri tabanları için de destek sunar. Bu sayede, kullanıcıların uygulama ve veri tabanı trafiklerini aynı yerden yönetmeleri ve izlemeleri mümkün hale gelir. Linkerd ayrıca, kullanıcıların uygulama trafiğini otomatik olarak yönetmesini sağlayan bir dizi özellik sunar. Linkerd, 2016 yılında çıktı ve CNCF tarafından desteklenen popüler bir servis mesh aracıdır. Resmi Dokümantasyon: Linkerd Dokümantasyonu

Consul: HashiCorp tarafından geliştirilen açık kaynaklı bir servis mesh aracıdır. Consul, servis keşfi, yapılandırma ve güvenlik için kullanılır. Consul, DNS, HTTP ve gRPC protokollerini destekler ve uygulama trafiğinin yönetimini kolaylaştıran bir dizi özellik sunar. Consul ayrıca, kullanıcıların servislerini merkezi bir yerden yönetmelerine ve izlemelerine olanak tanır. Consul, 2014 yılında çıktı ve popüler bir servis mesh aracıdır. Consul Resmi Dokümantasyonu: https://www.consul.io/docs/

Okuduğunuz için teşekkürler. Bir sorunuz olursa mail veya yorumlar yoluyla sorabilirsiniz. Yazı çok uzayacağı için ikinci bölümü sonra yayınlayacağım haberdar olmak için takipte kalabilirsiniz.
Umarım faydalı olmuştur. ❤

--

--

Canberk Duman
Canberk Duman

Written by Canberk Duman

Lead Engineer • Tech Trainer • Developer • TR/EN github.com/syswe

Responses (1)