Projenizde Maven kullanıyorsanız ve ortaya çıkan artifact’i Nexus artifact deposuna göndermek istiyorsanız bunu yapmak için Maven’ın deploy plugininden faydalanabilirsiniz.

Bu yazıda bunu yapmak için kullanabileceğiniz iki yöntemden bahsedeceğim. Bu yöntemleri deploy ve deploy file olarak iki ayrı şekilde inceleyebiliriz.

Öncelikle iki yöntemden hangisini kullanırsanız kullanın, Nexus deponuzun bilgilerini sunucuya vermeniz gerekiyor. Bunun için /etc/maven/settings.xml içinde servers kısmına aşağıdaki gibi bilgileri yazmanız gerekiyor. Bu noktada bu bilgileri ~/.m2/settings.xml altına da ekleyebilirsiniz. Buradaki fark; ilk belirttiğim dosya global ayarlar dosyasıyken ikinci dosya kullanıcıya ait ayarlar dosyasıdır. Eğer ikisi birden mevcutsa, ikisi birlikte aktif olur ve kullanıcının ayarları diğerini ezer. …


Hello everyone! I hope everyone is safe and well in this trying times.

I want to talk about Pomodoro technique and how you can adapt it to your teams in this article.

Pomodoro Technique is a time management method in which you work for 25 minutes followed by a 5 minute break.

The name has an interesting story. Pomodoro means ‘tomato’ in Italian. When Francesco Cirillo, the inventor of the method, was a university student, he used a tomato shaped kitchen timer and therefore the name later remained as Pomodoro!

I always find this story very inspiring because it reminds…


Telegraf, InfluxDB, Chronograf ve Kapacitor’un baş harflerinden oluşan TICK stack, sunucu monitor etmek için kullanılan bir uygulamalar bütünüdür. Sunucu monitor etmek, farklı durumları tespit etmek ve ortaya çıkan sorunlardan kısa sürede haberdar olup çözebilmek ilk adımıdır. TICK stack de, şu anda dünyada en yaygın kullanılan kabul görmüş takip sistemlerinden birisidir.

TICK stack’ı kısaca açmak gerekirse;

Telegraf — Telegraf, ölçümleri toplayıp InfluxDB’ye iletmekle sorumlu uygulamadır. Telegraf’ın en güçlü taraflarından bir tanesi, dünyada popüler yüzden fazla servisin ölçümlerini toplamamıza yardımcı olan plugın sistemi olmasıdır diyebiliriz.

InfluxDB — InfluxDB, yüksek performanslı, açık kaynak zaman serilerini saklayabildiğimiz bir veritabanıdır.

Chronograf — Chronograf, bu uygulama…


Python için sık kullanılan database çözümlerinden bir tanesi olan SQLAlchemy ile select, update, delete gibi birçok database işlemini kolaylıkla gerçekleştirebilirsiniz. Pek çok Python kütüphanesi gibi SQLAlchemy’de Flask ile uyumlu çalışacak bir versiyona dönüştürülmüştür. Bu yazıda Flask ile yazılmış uygulamanızı Flask-SQLAlchemy kullanarak nasıl çalıştırabileceğinizi anlatacağım.

Aşağıdaki gibi bir uygulama yapımız olduğunu varsayıyorum.

flask-app
├── templates
│ ├── index.html
├── app.py
├── config.py
└── requirements.txt

İlk olarak uygulamamızda (app.py) SQLAlchemy’yi ve config dosyasını import ediyoruz.

from flask_sqlalchemy import SQLAlchemy
import config

Bu uygulama için postgresql kullandım. Database bilgilerinin config.py dosyasında durdugunu varsayıyorum.

CONFIG = {
'postgresUrl':'localhost:5432',
'postgresUser':'dbuser',
'postgresPass':'123qwe123',
'postgresDb':'dbname',
}

Uygulamamızda database…


Kubernetes üzerinde çalıştırdığınız uygulamaların loglarını elasticsearch ile takip etmek istiyorsanız, bu logları toplamanın birden fazla yöntemi var. Bunlardan öne çıkan ilk iki tanesi Filebeat ve Fluentd. Biz standart olarak sistemlerimizde Filebeat kullanıyoruz. Kubernetes Cluster’ımızda uygulamaların dev ortamları çalıştığı için bu uygulamaların loglarının takibini merkezi bir yerden yapmak istedik.

Bunu yapabilmek için üç yöntem var: Birincisi Cluster içindeki her node’a ayrı ayrı Filebeat kurmak. Bu yöntem kolay olsa da işi yapan üzerinde ekstra iş yükü olmasına sebep oluyor. İkincisi Cluster’ın master node’una external olarak Filebeat kurmak. Bu yöntemi tercih ettiğiniz zaman filebeat.yml dosyasında ekstra host ve config dosyası gibi bilgileri belirtmeniz…


Bugün sizlere herkesin başına gelebilecek, karmaşık gibi görünen ama aslında birkaç önlemle engelleyebileceğiniz, başımızdan geçen bir olayı anlatmak istiyorum.

Şirket içerisinde geliştirdiğimiz uygulamaların test ortamları için bir Kubernetes Cluster’ı kullanıyoruz. Bu Kubernetes Cluster’ını yönetmek için de high-availability olarak kurduğumuz Rancher’dan faydalanıyoruz. 1 master ve 3 node bulunan bu cluster’da şimdilik 4 adet projenin test ortamını yönetiyoruz.

1 Temmuz sabahı uyandığımda Rancher’ın çökmüş olduğunu gördüm. Bununla birlikte hata takip sistemi olarak kullandığımız Sentry’den de bazı hataların düştüğünü farkettim.

Hatanın tespiti

Öncelikle sorunu tespit etmek için ilk olarak Rancher master sunucusuna bağlanıp node’ların durumuna bakmak istedim.

kubectl cluster-info

Bu komutu çalıştırdığımda herhangi bir sonuç…


Flask, python tabanlı bir web geliştirme framework’üdür. Flask ile basit web uygulamaları geliştirmek oldukça kolaydır. Flask’ın resmi dokümanlarına linkten ulaşabilirsiniz.

Flask uygulamasını test ortamında deploy etmek için herhangi ekstra bir araca ihtiyacınız yok. Aşağıdaki gibi hello.py adında bir python dosyanız olduğunu varsayalım:

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
return "Hello World!"

if __name__ == "__main__":
app.run()

Bu uygulamayı iki şekilde ayağa kaldırabilirsiniz:

python hello.py veyaexport FLASK_APP=hello.py 
flask run

Fakat bu şekilde ayağa kaldırdığınızda size aşağıdaki gibi bir uyarı verecek:

WARNING: Do not use the development server in a production environment.

Bu yöntemler geliştirme veya test…


Docker ile çalışan uygulamalarınızı bir sunucudan başka bir sunucuya taşımak istediğiniz zaman kullanabileceğiniz iki tane yöntem vardır. Bunlardan ilki save ikincisi ise export methodudur.

Save methodu, o an çalışmayan bir image’i bir dosyaya kaydeder. Export methodu ise, çalışmakta veya durdurulmuş bir container instance’ını bir dosyaya kaydeder. Bu yazımızda export methodu ile çalışan bir container’ı başka bir sunucuya taşıma işleminin nasıl yapıldığını bulabilirsiniz.

Öncelikle çalışan docker instance’larını listeliyoruz.

docker ps

Ardından export etmek istediğimiz container’i aşağıdaki komutla bir gzip dosyası haline getiriyoruz. Biz örneğimizde locust uygulamasını kullandık.

docker export container_name | gzip > container_name.gz## örnek bir komutdocker export locust…


OpenJ9, IBM ve Eclipse tarafından geliştirilmiş bir JVM (Java Virtual Machine)’dir. Bize sunduğu avantajlar ise resmi sitesinde düşük memory kullanımı, uygulamaların ayağa kalkma süresinde hızlılık ve uygulama kullanımında verimlilik olarak sayılıyor. OpenJ9'ı isterseniz kendiniz derleyebilir isterseniz de hazır binary dosyasını indirebilirsiniz.

Biz de bugün blog yazımızda OpenJDK, Oracle JDK ve OpenJ9+OpenJDK ile Docker’da Spring Boot uygulamamızı ayağa kaldırdığımızda ne gibi farklarla karşılaşıyoruz bunu inceleyeceğiz. Biz uygulamayı docker swarm ile service olarak çalıştırdık. Aşağıdaki Dockerfile’lar örnek olarak verilmiştir. Sizin ihtiyaçlarınıza göre farklılık gösterecektir.

Oracle JDK

Oracle JDK ile uygulamayı derleyebilmek için içerisinde oracle JDK 8 bulunan alpine dağıtımı ile hazırlanmış bir image kullanıyoruz…


Sentry, açık kaynaklı bir hata takip aracı. Sentry ile geliştiricilerinize zaman kaybetmeden logdaki hatalara göz atabileceği bir ortam sunabilirsiniz. Böylece geliştirdiğiniz uygulamalardaki sorunları da en kısa zamanda, son kullanıcıdan geri bildirim beklemek zorunda kalmadan çözebilir ve son kullanıcıya çok daha iyi bir deneyim sağlayabilirsiniz.

Docker ile Sentry Kurulumu

Öncelikle Sentry deposunu klonlamanız gerekiyor.

git clone https://github.com/getsentry/onpremise.git
mv onpremise sentry
cd sentry

Bu aşamadan sonra datayı kaybetmemek amacıyla mount edebilmek için lokalimizde bir data dizini oluşturup içinde sentry ve postgres isimli iki dizin oluşturuyoruz.

mkdir -p data/{sentry,postgres}

Ardından bir secret key oluşturuyoruz. Bunu da aşağıdaki komutla yapabiliriz.

docker-compose run --rm web config generate-secret-key

elifcan cakmak

DevOps @ Kod Gemisi

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store