Skip to content

ahmettoguz/Jmeter_Distributed_Load_Test

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Jmeter
Distributed Load Test



İçindekiler


📌 Proje Hakkında

Bu proje, dinamik olarak bulut üzerinde oluşturulan altyapı üzerinde dağıtık yük testi gerçekleştirmeyi ve bu hizmeti web servis aracılığı ile sunmayı hedeflemektedir.


☄️ Teknolojiler

Test

  • Jmeter

Web

  • NodeJS

  • TypeScript

  • Socket.io

  • JWT

  • jQuery


Database

  • MongoDB

DevOps

  • Docker

  • Kubernetes

  • Minikube

  • Terraform


Bulut Sağlayıcılar

  • AWS

  • Azure

  • DigitalOcean


✨ Özellikler

  • Minikube, Digital Ocean, Azure ve Aws ile farklı ortamlarlarda dinamik olarak test koşma olanağı.
  • Kullanıcı verilerinin veritabanına işlenmesi.
  • JWT access key ile kimlik doğrulaması.
  • Websocket ile anlık test durumunun kullanıcıya bildirilmesi.
  • Koşulan testlerin sonuçlarının dashboard üzerinden sergilenmesi ve servis edilmesi.
  • Http isteklerinin simülasyonu.

🔒 Bağımlılıklar

Programlar

  • Docker

  • Minikube

  • NodeJs

  • MongoDb


Cli Araçları

  • bash

  • kubectl

  • doctl

  • az

  • aws

  • terraform


Üyelikler

  • Digital Ocean

  • Azure

  • AWS


📋 Talimatlar

  • Bash scriptlerinin çalıştırılabilmesi için linux makine kullanılması önerilir. Bu sebeple Digital Ocean'dan bir dropleti projeyi çalıştırmak için kullanabilirsiniz. Aşağıda önce Digital Ocean dropletinin konfigürasyonunu ve sonrasında da gerekli programların kurulumları ve gerekli konfigüraysonları anlatılmaktadır.

  • Eğer projenin çalıştırılacağı makine uzak bir makine ise, web consolunu veya ssh bağlantısını kullanarak makineye bağlanabilirsiniz.


Makine Kurulumu

  • doctl Kurulumu
snap install doctl

  • Güvenlik Duvarı İzinleri
mkdir ~/.config
export XDG_CONFIG_HOME=~/.config
doctl auth init

doctl compute firewall list 
doctl compute firewall create --name porthost --inbound-rules "protocol:tcp,ports:80,address:0.0.0.0/0"
doctl compute firewall create --name portwebsocket --inbound-rules "protocol:tcp,ports:8080,address:0.0.0.0/0"
doctl compute firewall create --name portmongodb --inbound-rules "protocol:tcp,ports:27017,address:0.0.0.0/0"

Program Kurulumu

  • Docker Kurulumu
apt install docker.io

  • Node Js Kurulumu
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
source ~/.bashrc
nvm install node
nvm alias default node
node -v

  • Terraform Kurulumu
apt install unzip

curl -O https://releases.hashicorp.com/terraform/1.1.0/terraform_1.1.0_linux_amd64.zip
unzip terraform_1.1.0_linux_amd64.zip
sudo mv terraform /usr/local/bin/

  • Kubectl Kurulumu
snap install kubectl --classic

  • Aws Kurulumu
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

  • Az Kurulumu
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash

  • Minikube Kurulumu
wget https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
cp minikube-linux-amd64 /usr/local/bin/minikube
chmod 755 /usr/local/bin/minikube
minikube version

Program Konfigürasyonları

  • Minikube Memory ve Cpu konfigürasyonu
minikube config set memory 4096
minikube config set cpus 2

minikube config get memory
minikube config get cpus

  • kubectl dosyasının yetkilendirilmesi
chmod 777 /root/.kube/config

  • İletişim anahtarı oluşturulması
ssh-keygen -t rsa -b 2048

  • Azure yetkilendirmesi.
az login

  • AWS yetkilendirmesi.
aws configure

Bulut Sağlayıcılarının Anahtarlarının oluşturulması

sh tokenAll.sh <digitalocean api key> <azure service principle id> <azure service principle password> <aws access_key> <aws secret_key>

Veri Tabanının Çalıştırılması

  • Verilerin işlenmesi MongoDb ile yapılmaktadır. Veritabanını docker container'ı ayağa kaldırarak çalıştırıyoruz ve volume kullanarak verilerimizin saklıyoruz (şifreyi değiştirin).
docker run -d -p 27017:27017 --name mongo-c -v "$(pwd)/database:/data/db" -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=admin123 mongo

  • Veritabanını ayağa kaldırdıktan sonra MongoDb Compass yardımıyla veritabanına gui modunda erişebiliyoruz. Bağlantı stringi olarak bunu kullanıyoruz.
mongodb://admin:admin123@<remoteIp>/?authMechanism=DEFAULT&authSource=admin

Backend Servisinin Çalıştırılması

  • Backend dizinde paketlerin yüklenmesi.
npm install

  • Backend servisini çalıştırılması.
npm run start

Frontend ile servisin kullanımı

  • loadman_frontend repo'sunda vue frontendi ile servisler kullanılmaktadır.
  • Buna alternatif olarak geliştirilme aşamasında da Backend/src/request üzerinden de istekler simüle edilebilir.

👥 Geliştiriciler

🔝

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published