HepFly Survives!

14 Sep 2016
by dsezen

hepfly_survivor

HepFly ile tanışıklığımız ucakbileti.com döneminde olmuştu. One-click deployment, Micro-Services Architecture, Behavior-Driven Monitoring and Cloud gibi konularda birlikte keyifli zamanlarımız oldu. 

 

Survivor'a reklam verip de gelen trafik karşısında sıkıntı yaşayan websitelerini duymuşsunuzdur. Daha önce bu amaçla kapımızı çalan müşterilerimiz olmuştu. Herbiri için de custom çözümler üretmek durumunda kaldık. Bu gibi benzer ihtiyaçlarda benzer patternlar yakalayabilir miyiz düşüncesi ile hep başlarız ama inanın her yazılımın iç dinamiği ve DevOps pratiklerinin nasıl uygulanabileceği birbiri arasında çok fark ediyor.

 

jmeter-Blazemeter performans testleri için vazgeçilmez araçlarımız arasında

 

HepFly ile tek çalışma amacımız bu olmasa da, Survivor'a çıkacağı haberi geldiğinde, hemen yönümüzü değiştirip, performans testleri koşmaya başladık. Öncelikle site içerisindeki kullanıcı pattern ine göre jmeter testlerinin yazılması gerekli idi. Bunun analizi sonrasında BlazeMeter'ın da yardımı ile yüksek concurrency testleri koştuk. 30 civarı mikro servis içeren mimari içerisinde, Bottleneck olan servisler hemen kendilerini belli etti. Buradaki refactoring ve scaling düzenlemelerinde sonra hazırdık ve non-500 bir reklam süreci geçirdik. 

blazemeter

 

Monitoring Measurement

 

DevOps dünyasında özellikle monitoring demekten kaçınıyoruz. Bunun yerine Measurement kelimesine rastlamışsınızdır. Klasik tabir ettiğimiz, OSI L3, L4 bazlı monitoringin gerçek dünyada çok bir katmadeğeri yok ve gerçek kullanıcı deneyimini de yansıtmıyor. Bunun yerine gerçek bir kullanıcının deneyimlediği çıktının gözlemlenmesi, ölçümlenmesi ve buradaki değerleri kullanarak "Continuous Improvement" döngüsünün işletilmesini daha çok tercih ediyoruz.

 

NewRelic Insights, Behavior-Driven Monitoring ihtiyaçlarınıza cevap verebiliyor 

 

newrelic_synthetics

 

HepFly'ın da Behavior-Driven Monitoring ihtiyaçları karşısında zaten kullanmakta oldukları NewRelic'deki Insights kullanmaya karar verdik. Burada yazılan custom kodlar ile HTML elementlerinin parse edilip, gerçekten istenen çıktının kullanıcıya gösteririp gösterilmediğini ölçümleyerek, kullanıcı şikayet etmeden HepFly aksiyon alabilen hale geldi.

İlgili kod blogu alttaki gibidir, github'dan inceleyebilirsiniz.

var assert = require('assert');

$browser.get('https://www.domain.com').then(function(){
  return $browser.findElement($driver.By.className('search-list-container')).then(function(element){
    return element.findElement($driver.By.tagName('li')).then(function(element){
         return element.getAttribute('att01').then(function(text){
        	assert.equal("text2beequal", text, "not found");
      });
    });
  });
});

HepFly, DevOps yolculuğundaki attığı adımlar ile rekabetçiliğini artırarak, reaktif bir yapı yerine, proaktif bir düzen ile hizmet vermeye devam ediyor.

Leave a Comment:

* - required fields

DevOps Consultancy © 2017