Flag Servisler Nelerdir?
Kabaca flag servisler, deployment yapmaya gerek kalmadan, işlevleri uzaktan etkinleştirmek veya devre dışı bırakmak için kullanılan bir yazılım geliştirme sürecidir. Yeni özellikler, kullanıcılara görünür hale getirilmeden dağıtılabilir.
Bu sayede bazı özellikler istediğimiz zaman kullanıcılara görünür olup istediğimiz zaman görünmez olabilir.
Örnek vermek gerekirsek diyelim ki bir mobil uygulama yada bir web servisimiz olsun. Buradaki bazı hesaplamalar yapılıyor olsun. Burada yapılacak hesaplar bazı durumlarda değiştirilmek istenebilir(indirim vb dönemleri gibi). Bu tarz durumlarda bu kodları değiştirip deploy almak gün bitince ise tekrar deploy almak maliyetli ve akıllıca bir yol olmayabilir.
Burada dışarıdan okuyacağımız bir değer ile basitçe açıp kapatabilsek yada bizim için çok sık değişebilecek değerleri okuyup o duruma göre davransak nasıl olurdu?
Bu tarz durumlara çözüm olmak için bunun gibi ücretli yada ücretsiz servisler kullanabiliriz.
Bu tarz sistemlerin alternetifleri için link :
https://alternativeto.net/software/switchover-feature-flag-management/
Bugün sizlere bu tarz sistemleri ücretsiz olarak (sadece server ücreti vererek) nasıl kendinize ait bir flag service kullanabileceğinizden bahsedeceğim.
İstediğimiz veri türlerini kapsayan mongo db ve redis kullanan open source bir servis paylaşmak istiyorum. Kendi ihtiyaçlarım nedeniyle oluşturduğum bu yapıyı meraklıları için anlatmak istiyorum.
Coeus tamda bu ihtiyaç nedeni ile golang ile geliştirdiğim bir servis. Bu servisi test etmek isterseniz kolayca heroku üzerinden deploy alabilirsiniz. Bunu node js uygulamalarında kolayca kullanabilmeniz için bir npm kütüphaneside mevcut.
Test için heroku’nun bedava serverına kurulum yapmak için:
Link
Kurulumdan sonra bunu nasıl kullanabilirim?
Kurulum tamamlandıktan sonra herokudan , Open app diyoruz. Bu bizi panel sayfamıza yönlendiriyor.
Panelden kurulum yaparken gerekli id ve pass bilgilerimizi yazıyoruz. Ve Create new config diyerek bilgilerimizi yaratabiliriz.
const coeus = require('coeus-client');
const config = require('../../config');
coeus.connect({
url: config.coeus.url,
identity: config.coeus.identity,
password: config.coeus.password,
interval: config.coeus.interval,
});
coeus.client.addKeys({ keys: ['co:email', 'co:json', 'co:NUMBER_OF_GOOD_TIMES'] });
// this is updated event on every interval
coeus.client.on('updated', (configs) => {
console.log(configs);
});
// this error event for when getting error on server
coeus.client.on('error', (value) => {
console.log(value);
});
const express = require('express')
const app = express()
const port = 3000
app.get('/', (req, res) => {
res.send(coeus.client.getConfig({ key: 'co:NUMBER_OF_GOOD_TIMES' }))
})
app.listen(port, () => {
console.log(`Example app listening on port ${port}`)
})
Bu şekilde istediğiniz her noktadan daha önceden belirlediğiniz value’ları alarak istediğiniz şekilde kullanabilirsiniz.