Nama | NRP | Task |
---|---|---|
Keisya Nabila | 5027211058 | Worker |
Rangga Aldo | 5027211059 | Database |
Adiba Zalfa | 502721160 | Worker |
Tarisha Icha | 502721161 | Worker |
Anisa Ghina | 502721162 | Worker |
Dzakirozaan Uzlah Wasata | 502721166 | Load Balancer |
Athaya Reyhan | 502721167 | Load Balancer |
Anda adalah seorang lulusan Teknologi Informasi, sebagai ahli IT, salah satu kemampuan yang harus dimiliki adalah Kemampuan merancang, membangun, mengelola aplikasi berbasis komputer menggunakan layanan awan untuk memenuhi kebutuhan organisasi.(menurut kurikulum IT ITS 2023 😙)
Pada suatu saat teman anda ingin mengajak anda memulai bisnis di bidang digital marketing, anda diberikan sebuah aplikasi berbasis API File: app.py dengan spesifikasi sebagai berikut.
Kemudian anda diminta untuk mendesain arsitektur cloud yang sesuai dengan kebutuhan aplikasi tersebut. Apabila dana maksimal yang diberikan adalah 1 juta rupiah per bulan (65 US$) konfigurasi cloud terbaik seperti apa yang bisa dibuat?
-
Berikut adalah rancangan arsitektur yang telah kami buat untuk final project kami.
Terdapat 3 rancangan arsitektur yang kami buat:
- Database dan Worker
- Database, Worker 1, Worker 2, dan Load Balancer (Costum Droplet)
- Database, Worker 1, Worker 2, dan Load Balancer (Digital Ocean)
-
Kami memilih untuk menggunakan Digital Ocean sebagai lingkungan cloud yang akan kami gunakan. Berikut adalah tabel harga spesifikasi VM yang kami buat
klik tombol create dan pilih yang databases
![Untitled](https://private-user-images.githubusercontent.com/107627453/290599308-07bf63c7-b699-4bb6-8a55-3c1c7d92d94a.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTg0MjI2MjIsIm5iZiI6MTcxODQyMjMyMiwicGF0aCI6Ii8xMDc2Mjc0NTMvMjkwNTk5MzA4LTA3YmY2M2M3LWI2OTktNGJiNi04YTU1LTNjMWM3ZDkyZDk0YS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNjE1JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDYxNVQwMzMyMDJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1kYWUxYzA1ODZjMmY3M2NjZGE5ODBjZDE5NGJlN2NmNWU1OTVhZjhlODk4ZjJjY2E1YTQ5MzUyOTBlMDQ4M2E5JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.zdhin-4_mlp9r4l0VfUNn5fHCbtDE9L536tzplc-hzw)
kemudian pilih datacenter terdekat, disini kami pilih singapura dan untuk database enginenya kami pilih mongodb
![Untitled 1](https://private-user-images.githubusercontent.com/107627453/290599437-a7e7cc6b-4e10-4280-bcad-96646a13ab6d.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTg0MjI2MjIsIm5iZiI6MTcxODQyMjMyMiwicGF0aCI6Ii8xMDc2Mjc0NTMvMjkwNTk5NDM3LWE3ZTdjYzZiLTRlMTAtNDI4MC1iY2FkLTk2NjQ2YTEzYWI2ZC5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNjE1JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDYxNVQwMzMyMDJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT00NGM5ZjJiYjYxOWQ5MTk2OGNmMjI5ZWI5ODFmZWZmNWY1NTMwYWRhZDNlN2IzYTRjZGViZmFiZmEwYmI1Mjc0JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.8_8YAbQ3XMPEd895aRIR8UvFDFD7n-p2aChjcdFkNTs)
selanjutnya kita select budget sesuai dengan rancangan arsitekturnya yaitu $15
![Untitled 2](https://private-user-images.githubusercontent.com/107627453/290599561-7a635393-28fe-4ce2-9156-2a4b1d934d2a.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTg0MjI2MjIsIm5iZiI6MTcxODQyMjMyMiwicGF0aCI6Ii8xMDc2Mjc0NTMvMjkwNTk5NTYxLTdhNjM1MzkzLTI4ZmUtNGNlMi05MTU2LTJhNGIxZDkzNGQyYS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNjE1JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDYxNVQwMzMyMDJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT04YTRkMTY2YWUzMGQ5MjQyNzUxZGVhN2Q1MGFkN2U4NDYyOGYwNDJiMTZkOTJhNDNjOTE2YzkxOWRjZGEyZDgxJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.EQUpAKR_eZE-NEVIWvNZruXZsMdkTVqfConkBVOVdXs)
Selanjutnya klik Create Database Cluster. Lalu masukkan IP Worker dan masukkan IP laptop yang digunakan untuk mengakses. Untuk mengecek IP laptop bisa menggunakan link berikut https://whatismyipaddress.com/
Masukkan pada restricted inbound connections seperti berikut
![Untitled 3](https://private-user-images.githubusercontent.com/107627453/290599682-a2164faf-9e04-48f3-a2e0-5a0f61258f2a.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTg0MjI2MjIsIm5iZiI6MTcxODQyMjMyMiwicGF0aCI6Ii8xMDc2Mjc0NTMvMjkwNTk5NjgyLWEyMTY0ZmFmLTllMDQtNDhmMy1hMmUwLTVhMGY2MTI1OGYyYS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNjE1JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDYxNVQwMzMyMDJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1hNWM1MmRkMjM3NDNiOWFiNjc2MzA1MzRkODllYjc5ZWRjMGM0ODRmNGJjMWQ5MjdhZDkyNDhmODdjODBmYzEwJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.gTOOKWbqRYLbtCgCXIBzPXrDScJH0dVDnRU6sXiUXPk)
Lalu pada connection details ganti settingan pada connection string dan klik copy
![Untitled 4](https://private-user-images.githubusercontent.com/107627453/290599798-0a8760b4-221e-4994-ad30-116854a1e815.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTg0MjI2MjIsIm5iZiI6MTcxODQyMjMyMiwicGF0aCI6Ii8xMDc2Mjc0NTMvMjkwNTk5Nzk4LTBhODc2MGI0LTIyMWUtNDk5NC1hZDMwLTExNjg1NGExZTgxNS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNjE1JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDYxNVQwMzMyMDJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0zYWJhODNmZWZlMTliM2QwMTZmZDkzZWJlYTUwZGNhYzNhNjAwMTY0ZDFjZDNiZWZkMGY1OWUyMzA1MjcxNzI0JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.65lJPAUTwEbrj7jSMEii5lI0jxIEQjm01w6CVyWkfN0)
Jangan lupa untuk mengganti dengan password yang didapatkan saat membuat database. Kemudian install mongo DBCompass pada link berikut https://www.mongodb.com/products/tools/compass . Setelah selesai instalasi, bukalah mongoDB compass dan buatlah new connection. Kemudian, masukkan connection string beserta password yang sudah kita copy tadi seperti berikut dan klik connect.
![Untitled 5](https://private-user-images.githubusercontent.com/107627453/290599906-870d209d-f78f-4970-93ab-66b1fa30dd21.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTg0MjI2MjIsIm5iZiI6MTcxODQyMjMyMiwicGF0aCI6Ii8xMDc2Mjc0NTMvMjkwNTk5OTA2LTg3MGQyMDlkLWY3OGYtNDk3MC05M2FiLTY2YjFmYTMwZGQyMS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNjE1JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDYxNVQwMzMyMDJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT04NDdlNTFjNGUyODNjODliNjY4NTk1NjA1ODlhNzA3M2E2MTk1MzVhZDc2N2E0YTE0ZjNlZmJhOWZmZDMyZGUyJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.wwJCN97jxYmfg1rZ1PCGjx8LiapenfJYED2o6IOjMRY)
Jangan lupa masukkan nama database (myDatabases) dan nama collection (orders_db) Apabila sudah database akan tersimpan seperti berikut
Terakhir, untuk menggunakan connection string untuk worker database yang sebelumnya admin bisa diubah dengan myDatabases yang sudah dibuat sebelumnya
![Untitled 7](https://private-user-images.githubusercontent.com/107627453/290600196-14a796a0-50ce-4a15-a420-111cbc88db86.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTg0MjI2MjIsIm5iZiI6MTcxODQyMjMyMiwicGF0aCI6Ii8xMDc2Mjc0NTMvMjkwNjAwMTk2LTE0YTc5NmEwLTUwY2UtNGExNS1hNDIwLTExMWNiYzg4ZGI4Ni5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNjE1JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDYxNVQwMzMyMDJaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT02ODdjMGQ1MjI5Yzc1NGM4MDQ1MjA2M2M0NWYwYTdjMjQ5OTY1NTkyYzQ1ZGUxYzRiZDU2YTkzZGY0ZmEyZDdhJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.rdnzJbPGH3d4mPopu4R9bFjvt63FuUxRwb4TXTxlx84)
Pada digital ocean, klik tombol create dan pilih droplets
Region yang dipilih adalah Singapura karena merupakan negara terdekat
Kemudian, pilih Image. Image yang kami gunakan adalah Ubuntu versi 22.04 (LTS) x64
Selanjutnya, pilih Size. Di sini, kami menentukan Droplet Type dan CPU untuk droplet yang akan dijadikan worker. Sesuai dengan rancangan, kami memilih droplet dengan spesifikasi 2GB/2CPUs seharga $12
Untuk authentication mode, kami memilih menggunakan password
Terakhir, beri nama droplet dan tekan tombol Create Droplet untuk membuat droplet
Masuk ke droplet yang sudah dibuat melalui SSH
root@178.128.88.111
Kemudian masukkan password yang tadi sudah dibuat
Jika sudah masuk, lakukan langkah-langkah berikut untuk melakukan set-up worker pada droplet
nano setup-worker.sh
Masukkan code berikut pada file setup-worker.sh
#!/bin/bash
sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
apt-cache policy docker-ce
sudo apt install docker-ce -y
sudo systemctl status docker
mkdir worker1
cd worker1
echo 'FROM python:3.9-slim
WORKDIR /app
COPY . /app
RUN pip install -r requirements.txt
CMD ["gunicorn", "-w", "4", "-b", "0.0.0.0:8000", "app:app"]
' > Dockerfile
echo 'version: '3.1'
services:
worker1:
build: /root/worker1
restart: always
ports:
- "8080:8000"
' > docker-compose.yml
echo 'fastapi==0.78.0
uvicorn==0.18.2
pymongo
pydantic
uuid
Flask
Flask-PyMongo
gunicorn
' > requirements.txt
echo 'from flask import Flask, jsonify, request
from flask_pymongo import PyMongo
from bson import ObjectId
app = Flask(__name__)
# Configuration for MongoDB
app.config['MONGO_URI'] = 'mongodb+srv://doadmin:<password>@db-mongodb-sgp1-55072-cf745936.mongo.ondigitalocean.com/myDatabases?replicaSet=db-mongodb-sgp1-55072&tls=true&authSource=admin'
mongo = PyMongo(app)
# Routes
# Get all orders
@app.route('/orders', methods=['GET'])
def get_orders():
orders = mongo.db.orders.find()
orders_list = []
for order in orders:
order['_id'] = str(order['_id']) # Convert ObjectId to string
orders_list.append(order)
return jsonify({"orders": orders_list})
# Get a specific order by ID
@app.route('/orders/<string:order_id>', methods=['GET'])
def get_order(order_id):
order = mongo.db.orders.find_one({'_id': ObjectId(order_id)})
if order:
order['_id'] = str(order['_id']) # Convert ObjectId to string
return jsonify({"order": order})
else:
return jsonify({"message": "Order not found"}), 404
# Create a new order
@app.route('/orders', methods=['POST'])
def create_order():
data = request.json
new_order = {
'product': data['product'],
'quantity': data['quantity'],
'customer_name': data['customer_name'],
'customer_address': data['customer_address']
}
result = mongo.db.orders.insert_one(new_order)
new_order['_id'] = str(result.inserted_id) # Convert ObjectId to string
return jsonify({"message": "Order created successfully", "order": new_order})
# Update an order by ID
@app.route('/orders/<string:order_id>', methods=['PUT'])
def update_order(order_id):
data = request.json
updated_order = {
'product': data.get('product'),
'quantity': data.get('quantity'),
'customer_name': data.get('customer_name'),
'customer_address': data.get('customer_address')
}
mongo.db.orders.update_one({'_id': ObjectId(order_id)}, {'$set': updated_order})
updated_order['_id'] = order_id
return jsonify({"message": "Order updated successfully", "order": updated_order})
# Delete an order by ID
@app.route('/orders/<string:order_id>', methods=['DELETE'])
def delete_order(order_id):
result = mongo.db.orders.delete_one({'_id': ObjectId(order_id)})
if result.deleted_count > 0:
return jsonify({"message": "Order deleted successfully"})
else:
return jsonify({"message": "Order not found"}), 404
if __name__ == '__main__':
app.run(debug=True)
' > app.py
cd /root
Kemudian, pada direktori root jalankan command
chmod +x worker-setup.sh
./worker-setup.sh
Setelah command dijalankan, worker akan ter set up hanya saja belum dijalankan. Worker akan dijalankan menggunakan docker dengan command berikut
(command dijalankan pada direktori worker1)
cd worker1
Membuat docker images :
docker build -t worker1-app -f Dockerfile .
Menjalankan container :
docker run -p 8000:8000 -d worker1-app
Kita bisa melihat apakah worker sudah berhasil berjalan melalui command
docker ps
Jika berhasil, maka akan keluar seperti berikut
Untuk memeriksa apakah worker sudah berjalan di IP, port, dan endpoint yang sesuai, kita bisa mengeceknya melalui Insomnia/Postman
Di sini, kami memeriksa menggunakan endpoint GET /orders
Lakukan hal yang sama pada droplet lain untuk mengsetup worker, jangan lupa untuk menyesuaikan nama sesuai kebutuhan.
Load balancer kami buat dengan menggunakan image Ubuntu 23.10 dan memiliki spesifikasi 1 CPU, 1 GB Memory, dan 25 GB SSD. Pricing yang dimiliki load balancer kami ada di angka 6 dolar.
-
Pertama-tama klik tombol Create pada navbar Digital Ocean dan pilih menu Load Balancer.
-
Kemudian, pilih region sesuai dengan region kita saat ini.
- Lalu sesuaikan jumlah droplet yang ingin terhubung ke Load Balancer. Pada arsitektur yang kami buat, kami menggunakan 2 worker.
- Setelah itu atur forwarding rules untuk melakukan konfigurasi port dari Load Balancer menuju ke 2 worker. Disini kami menggunakan port 8000 untuk keduanya.
- Terakhir berikan nama yang sesuai untuk Load Balancer yang ingin kita buat, kemudian klik Create untuk membuat Load Balancer.
Setelah Load Balancer berhasil dibuat, kita dapat mengakses dashboard Load Balancer untuk melihat status droplet yang terhubung ke Load Balancer kita. Apabila Load Balancer sudah berjalan dan tidak ada masalah pada kedua node, maka harusnya health check di dashboard bernilai 100%.
Load balancer kami buat dengan menggunakan image Ubuntu 23.10 dan memiliki spesifikasi 1 CPU, 1 GB Memory, dan 25 GB SSD. Pricing yang dimiliki load balancer kami ada di angka 6 dolar.
Load balancer kami menggunakan nginx. Pertama-tama, lakukan sudo apt-get update
dan lakukan instalasi nginx dengan menjalankan command sudo apt-get install nginx -y
.
Setelah berhasil, buatlah konfigurasi nginx untuk membuat load balancer. Konfigurasi nginx kami adalah sebagai berikut:
upstream app {
server 178.128.88.111:8000;
server 139.59.243.183:8000;
}
server {
listen 80;
server_name _;
location / {
proxy_pass http://app;
}
}
Konfigurasi kami buat di direktori
/etc/nginx/sites-enabled
dengan cara melakukan symlink dengan command sudo ln -s /etc/nginx/sites-available/loadbalancer /etc/nginx/sites-enabled/
.
Selanjutnya, restart service nginx dan pastikan nginx sudah berjalan dengan menjalankan command sudo service nginx status
.
Peak concurrency maksimum (spawn rate 25, rps 60 detik)
-- Peak concurrency maksimum (spawn rate 25, rps 60 detik)
Didapatkan RPS yang lebih tinggi ketika menggunakan load balancer buatan kami sendiri menggunakan Nginx. Namun, setelah beberapa kali testing seringkali RPS yang tinggi juga diikuti dengan tingkat failures sebesar 5-9 persen. Apabila dibandingkan dengan Load Balancer dari Digital Ocean, Load Balancer Nginx memiliki potensi untuk menghandle request yang jauh lebih besar dengan harga yang lebih fleksibel, namun tidak lebih konsisten dibandingkan dengan Load Balancer dari Digital Ocean
Berikut ini merupakan hasil dari 3 rancangan arsitektur kelompok kami
Hasil terbaik didapatkan oleh rancangan arsitektur pertama yaitu
Berikut ini adalah hasil screenshot dari testing arsitektur pertama
- Endpoint /order
- RPS Maksimum (load testing 60 detik)
- Peak Concurrency Maksimum (spawn rate 25, load testing 60 detik)
- Peak Concurrency Maksimum (spawn rate 50, load testing 60 detik)
- Peak Concurrency Maksimum (spawn rate 100, load testing 60 detik)
- Setelah melakukan perbandingan harga digital ocean dan azure, harga untuk digital ocean lebih murah
- Setelah percobaan yang kami lakukan berulang kali dengan menggunakan 3 topologi yang berbeda, kita mendapat kesimpulan:
a.) Topologi 1 menggunakan worker yang spesifikasinya sangat tinggi sehingga dapat menangani request user yang banyak
b.) Topologi 2 menggunakan load balancer custom dapat mudah untuk melakukan config yang dimana dapat meningkatkan performa rps, tetapi dari kelompok kami mendapat kendala kurangnya config untuk menghilangkan cache atau meningkatkan performa pada load balancer sehingga dari uji coba kelompok kami mendapat banyak failure ketika Concurrency tinggi walaupun rps terbilang cukup bagus
c.) Topologi 3 menggunakan load balancer milik vendor digital ocean lebih mudah untuk digunakan tetapi sulit untuk meningkatkan performa karena tidak dapat diconfig melalui ssh, dan juga jika ingin meningkatkan performa kita perlu mengeluarkan biaya tambahan. Untuk hasil uji coba kita mendapatkan rps yang lebih stabil dan mendapat 0 failure untuk keseluruhan percobaan (1000-2000 Concurrency)
Kesimpulan Dilihat dari data yang didapat, jika dilihat dari performa untuk yang lebih baik adalah topologi 1, tetapi jika dilihat dari environment yang lebih sehat, stabil, dan pada umumnya digunakan adalah topologi 3
Saran
jumlah load balancer sebaiknya sama dengan jumlah worker karena ketika kami mencoba menggunakan 1 load balancer dan 3 worker terjadi down pada ketiga worker tersebut