Strategi SSO dan Load Balancing Arkatama : Solusi Keamanan dan Performa Aplikasi

Arkatama Multi Solusindo
Arkatama
Published in
16 min readApr 18, 2024

--

Hi, we’re back. In this time we will discuss about Single Sign On (SSO) and Load Balancing. Dua konsep ini merupakan masalah yang cukup krusial dalam kesuksesan implementasi software/aplikasi.

Load Balancing dan Single Sign On

Singkatnya, SSO memungkinkan user untuk mengakses berbagai layanan dengan satu set kredensial (username & password). Sedangkan Load Balancing memastikan distribusi lalu lintas yang merata ke server-server backend sehingga meminimalkan risiko server overload.

Terkait SSO, menurut laporan dari Badan Siber dan Sandi Negara RI, pada tahun 2023 sebanyak 86% dari serangan siber yang terjadi adalah akibat dari kredensial yang lemah. Sedangkan dalam survei yang dilakukan oleh Ping Identity pada tahun 2020, 64% responden menyatakan bahwa SSO sangat penting bagi strategi identity security mereka sehingga dapat mencegah penyalahgunaan hak akses.

Selain itu terkait dengan load balancing, HubSpot mengungkapkan bahwa 47% konsumen mengharapkan halaman web dimuat dalam 2 detik atau kurang.

🧩 Let’s define the problem

Single Sign On (SSO)

🙅🏻‍♂️(Let’s position ourselves as : User) — Sebagai user, pernahkah Anda merasa kewalahan dengan berbagai akun dan kata sandi yang harus diingat?

👨🏻‍💻(Now let’s posisition ourselves as : Admin) — Sebagai admin yang harus mengelola banyak sistem, pernahkah Anda mengalami kewalahan untuk mengelola seluruh sistem? Ditambah dengan banyaknya user pada sistem tersebut?.

Secara tidak langsung, kondisi tersebut menuntut admin untuk dapat mengelola user account seluruh sistem aplikasi dengan baik agar tidak disalahgunakan oleh pihak yang tidak bertanggung jawab.

Salah satu metode security user account untuk memecahkan masalah tersebut adalah dengan menerapkan authentication SSO (Single Sign On). SSO ini ibarat pahlawan super dalam dunia user experience, privasi, dan keamanan. SSO memungkinkan user menggunakan satu set detail login untuk masuk ke semua jenis aplikasi dan layanan.

Seperti aplikasi terintegrasi berbasis SSO milik Arkatama (SIPINTAR) di bawah ini:

Aplikasi Terintegrasi Berbasis SSO (Signle Sign On) Arkatama

SIPINTAR Arkatama merupakan pengintegrasian berbagai aplikasi melalui sistem single sign on (SSO) untuk menunjang kinerja pengelolaan akademik di perguruan tinggi.

Melalui pengintegrasian berbasis SSO ini:

  1. User tidak perlu mengingat banyak username dan password. Cukup dengan satu credential dan melakukan proses autentikasi sekali saja untuk mendapatkan izin akses terhadap semua layanan aplikasi yang tersedia di dalam jaringan SIPINTAR.
  2. Kemudahan pemrosesan data. Jika setiap layanan aplikasi memiliki data user masing-masing, maka pemrosesan data user (create, update, delete) harus dilakukan pada setiap aplikasi yang ada. Sedangkan dengan menggunakan sistem SSO, cukup hanya melakukan sekali pemrosesan pada server database backend-nya. Penggunaan sistem SSO dapat meningkatkan efisiensi waktu dan kepraktisan dalam memproses data.
  3. Menghemat biaya untuk pemeliharaan password. Ketika harus melakukan reset password karena user lupa pada passwordnya, pengelola layanan tidak perlu menghabiskan waktu dan bandwith untuk menemukan data credential.

Now let’s try to define the problem of Load Balancing

Sebagai user yang konsumtif, tentu kita pernah mengakses aplikasi marketplace seperti Tokopedia, Shopee, dll. Pengunjung aplikasi tersebut bahkan melonjak selama acara penjualan besar-besaran. Meski demikian, aplikasi marketplace tersebut jarang mengalami gangguan atau server down.

🙅🏻‍♂️ Bayangkan jika, user mengeluhkan lamanya waktu loading halaman, bahkan beberapa user mengalami kesulitan mengakses aplikasi secara keseluruhan. Hal ini tentu akan menyebabkan penurunan penjualan dan ketidakpuasan user.

Ketidakseimbangan Distribusi Lalu Lintas

Tidak seimbangnya distribusi lalu lintas ke server-server backend-lah yang membuat aplikasi bisa mengalami server down atau tidak bisa diakses. Beban lalu lintas yang tidak merata menyebabkan server overload. Sehingga untuk mengatasi masalah tersebut perlu mengimplementasikan load balancing.

Implementasi Load Balancing

Load balancing merupakan proses pendistribusian traffic jaringan ke beberapa server untuk memastikan salah satu server tidak menanggung terlalu banyak beban permintaan.

Load Balancing Solutions

Secara sederhana, prinsip kerja load balancing adalah sebagai berikut:

  1. Mendistribusikan permintaan atau beban jaringan secara efisien di beberapa server. Dengan pemerataan distribusi, website atau aplikasi menjadi lebih tanggap dan stabil ketika diakses oleh user.
  2. Memastikan ketersediaan dengan mengirimkan permintaan hanya ke server yang sedang online.
  3. Memberikan fleksibilitas untuk menambah atau mengurangi server sesuai permintaan.

Load balancing menjadi metode paling terukur dalam menangani banyaknya permintaan akses dari workflow multi aplikasi dan multi perangkat. Dengan akses tanpa batas saat ini, load balancing memastikan pengalaman user yang lebih baik.

Beberapa keuntungan dari penerapan load balancing antara lain:

  • Scalability: Ketika beban sistem meningkat, kita dapat melakukan perubahan terhadap sistem agar dapat mengatasi beban sesuai dengan kebutuhan.
  • High Availability: Load balancer secara terus menerus melakukan pemantauan terhadap server. Jika terdapat server yang mati, maka load balancer akan menghentikan request ke server tersebut dan mengalihkannya ke server yang lain.
  • Manageability: Mudah ditata meskipun secara fisik sistem yang ditanam sangat besar.
  • Security: Untuk semua lalu lintas yang melewati load balancer, aturan keamanan dapat diimplementasikan dengan mudah. Dengan private network digunakan untuk server, alamat IP nya tidak akan diakses secara langsung dari luar sistem.

Now, let’s see how Arkatama solves Security and Application Performance problems

Disclaimer ❗❗ Penting untuk diingat bahwa dalam memilih strategi SSO dan load balancing untuk aplikasi, tidak ada pendekatan yang benar atau salah. Setiap strategi memiliki kelebihan dan kelemahan tergantung pada konteks, kebutuhan, dan infrastruktur aplikasi yang bersangkutan.

Ada standar dan protokol berbeda yang digunakan solusi single sign on (SSO) untuk memvalidasi dan mengautentikasi kredensial user. Teknologi SSO yang paling umum saat ini adalah SAML, OAuth2, dan Open ID.

Singkatnya, SAML atau Security Assertion Markup Language, adalah protokol atau kumpulan aturan yang digunakan aplikasi untuk bertukar informasi autentikasi dengan layanan SSO. OAuth adalah standar terbuka yang memungkinkan aplikasi untuk secara aman mengakses informasi user dari situs web lain tanpa memberinya kata sandi. OpenID adalah cara untuk menggunakan satu set kredensial user untuk mengakses beberapa situs.

Namun, pada artikel ini kita akan berfokus pada pengembangan teknologi SSO di Arkatama dengan menggunakan pendekatan terpusat (centralized approaches). Melalui pendekatan ini, pengembangan SSO dilakukan dengan membuat sistem autentikasi terpusat yang mengarahkan user ke halaman login ketika user mengakses langsung ke aplikasi yang sudah terintegrasi SSO.

Jadi, secara umum ketika pengelola layanan memilih untuk mengaplikasikan sistem SSO, maka dapat dipilih salah satu dari tiga pendekatan SSO, yakni Centralized, Distributed, atau Federation Approches.

1️⃣Centralized Approaches : Pendekatan ini mempunyai sebuah lokasi yang terpusat dimana seluruh identifikasi disimpan.

2️⃣Distributed Approaches : Pendekatan ini mengizinkan kumpulan pernyataan identifikasi yang dilokalisasikan dari tiap-tiap aplikasi dengan diteruskan menggunakan komponen client-based

3️⃣Federation Approches : Pendekatan ini menyediakan identifikasi terpusat dan layanan manajemen autentikasi yang sejalan dengan kumpulan pernyataan identifikasi yang dilokalisasikan.

🕹️ Pengembangan Custom Teknologi SSO Session-based menggunakan framework Laravel

Session-based Single Sign-On (SSO) adalah pendekatan di mana user hanya perlu melakukan autentikasi (login) sekali untuk mendapatkan akses ke berbagai layanan atau aplikasi yang terhubung, dan sesi autentikasi ini berlaku untuk jangka waktu tertentu. Selama sesi autentikasi masih aktif, user tidak perlu login ulang ketika mengakses layanan yang terhubung.

SSO session-based tidak memiliki standar protokol yang khusus, tetapi biasanya didukung oleh platform atau framework tertentu.

Implementasi spesifik dari SSO Session-based, termasuk manajemen sesi, pengelolaan token, dan kebijakan keamanan lainnya, diatur oleh framework yang digunakan untuk mengimplementasikan SSO tersebut, yakni dalam hal ini adalah framework Laravel.

Framework Laravel

Apakah harus menggunakan framework Laravel?

Tidak harus karena perlu juga mempertimbangakn kebutuhan dan spesifikasi dari proyek yang akan dibangun.

Namun menggunakan framework Laravel dapat mempermudah proses pengembangan karena Laravel menyediakan berbagai fitur dan alat yang mempercepat pembuatan aplikasi web.

Kelebihan penggunaan framework Laravel dalam pengembangan SSO Session-based :

  • Memiliki fitur autentikasi bawaan yang memudahkan pembuatan sistem autentikasi, termasuk manajemen user, login, logout, dan reset password.
  • Memudahkan developer mengembangkan aplikasi, karena Laravel memiliki sintaks yang mudah dipahami dan dokumentasi yang lengkap.
  • Menyediakan berbagai fitur keamanan, seperti proteksi CSRF (Cross-Site Request Forgery), proteksi XSS (Cross-Site Scripting), dan enkripsi data, yang penting dalam pengembangan teknologi SSO.
  • Memiliki performa yang baik dan skalabilitas yang memadai, sehingga cocok digunakan untuk aplikasi web yang membutuhkan kinerja tinggi, termasuk aplikasi berbasi SSO.

Cara kerja SSO Session-based

SSO Session-based dapat memberikan pengalaman user yang lebih baik karena hanya perlu login sekali, dapat meningkatkan keamanan karena user tidak perlu mengingat banyak kredensial, dan manajemen kredensial oleh admin menjadi lebih efisien.

How SSO Session-based work

Proses SSO session-based umumnya melibatkan langkah-langkah berikut:

  1. Login : Usermelakukan login ke sistem SSO dengan mengirimkan credentials (misalnya, username dan password).
  2. Autentikasi : Sistem SSO mengautentikasi kredensial user dan, jika valid, membuat sesi autentikasi baru.
  3. Token : Sistem SSO menghasilkan token autentikasi yang berisi informasi tentang user dan hak aksesnya. Token ini digunakan untuk autentikasi ke layanan/aplikasi yang terhubung.
  4. Sesi : Sistem SSO menyimpan informasi sesi, termasuk token autentikasi, yang digunakan untuk mengidentifikasi user dan memberikan akses ke layanan/aplikasi yang terhubung.
  5. Akses ke layanan/aplikasi : User dapat mengakses layanan/aplikasi yang terhubung tanpa perlu login ulang selama sesi atentikasi masih berlaku.
  6. Logout : User dapat mengakhiri sesi dengan melakukan logout dari sistem SSO, yang akan menghapus informasi sesi dan token autentikasi.

Namun, penting untuk mengimplementasikan kebijakan keamanan yang tepat, seperti batasan waktu sesi, untuk mengurangi risiko keamanan terkait dengan sesi yang dibiarkan terbuka terlalu lama.

Studi Kasus : Pengembangan Teknologi SSO Session Based pada Sistem Informasi Akademik Terpadu

Disclaimer : studi kasus ini berdasasarkan portofolio Arkatama dalam mengerjakan aplikasi milik salah perguruan tinggi yang bekerjasama dengan Arkatama untuk pengembangan custom software.

Clients Problem:

Dalam pengimplementasian sistem informasi di perguruan tinggi tersebut, proses autentikasi dan otorisasi penggunanya dilakukan secara terpisah oleh masing-masing sistem/modul-modul yang tersedia pada SIAKAD.

Autentikasi merupakan suatu proses untuk mengidentifikasi user yang masuk ke dalam sistem sedangkan otorisasi merupakan proses pemeriksaan privileges bagi user yang mengakses sistem tersebut sehingga fitur-fitur yang ada dapat disediakan sesuai dengan kebutuhan user.

Pada umumnya fitur autentikasi dan otorisasi diterapkan dengan menggunakan proses login. Seseorang memasukkan username dan password (credential) kemudian dilakukan autentikasi apakah credential tersebut valid atau tidak, jika valid maka seseorang tersebut boleh mengakses sistem tersebut.

Pada kasus perguruan tinggi tersebut, masalah utama yang diangkat adalah masalah sesi login yang berakhir terlalu cepat, sehingga menyulitkan user karena user harus mengirimkan credential setiap kali ingin masuk ke dalam sebuah sistem dalam waktu dekat.

Requirement Need:

Klien kami menginginkan implementasi SSO di dalam aplikasi atau lingkungan IT mereka sehingga proses autentikasi dilakukan melalui satu pintu. Sehingga user hanya perlu melakukan satu kali login untuk mengakses banyak aplikasi atau layanan yang terhubung tanpa perlu login ulang di setiap aplikasi.

Selain itu, dari sisi admin, akan mempermudah manajemen akses user karena admin dapat mengelola akses user secara keseluruhan melalui satu titik kontrol.

Serta mempermudah admin dalam proses maintenance karena pembaruan terhadap proses autentikasi atau kebijakan keamanan dapat diterapkan secara konsisten ke semua aplikasi yang terhubung tanpa perlu melakukan perubahan di setiap aplikasi secara terpisah.

What Arktama did:

Arkatama melakukan implementasi fitur SSO session based melalui penyesuaian konfigurasi sesi dan manajemen sesi.

Pada penyesuaian konfigurasi sesi, tim Arkatama mengatur ulang konfigurasi sesi SSO untuk memperpanjang waktu sesi menjadi 60 menit, sehingga meminimalisir gangguan user karena sesi yang berakhir terlalu cepat.

Pada penyesuaian manajemen sesi, tim Arkatama memperbarui manajemen sesi untuk memberikan fleksibilitas yang lebih besar dalam mengelola sesi user, yakni menggunakan Admin to Impersonate User, termasuk perubahan hak akses dan fitur aplikasi.

Fitur user impersonate ini berguna saat menguji permission dan konten yang hanya dapat dilihat oleh user. Misalnya, jika user mengalami masalah saat menggunakan sistem, admin dapat menggunakan fitur user impersonate untuk memecahkan masalah.

Secara garis besar, hubungan antara database SSO dengan database aplikasi Siakad adalah sebagai berikut:

Hubungan antara Database SSO dengan Database Siakad

Pada database SSO terdapat 4 tabel yang akan berkaitan dengan database aplikasi Siakad. Ketika user sudah berhasil memperoleh token dari SSO, maka token tersebut dapat digunakan sebagai tiket untuk memperoleh informasi user yang sedang aktif. Data user yang dikirim dari SSO berupa json seperti pada gambar dibawah ini.

Struktur Data User dari SSO

Dari json itulah hubungan SSO dengan aplikasi Siakad terjadi. Aplikasi hanya perlu mencari username pada tabel user mereka berdasarkan data json dari SSO.

Sementara itu, berikut adalah model yang digunakan sebagai gambaran alur proses kerja otentikasi SSO secara keseluruhan.

Model Single Sign On

Diawali dengan user yang memasukkan credential ke SSO kemudian credential tersebut akan diverifikasi dengan data yang ada pada database SSO. Jika credential tersebut telah terverifikasi, maka SSO akan mengembalikan token kepada user dan token tersebut akan disimpan pada session aplikasi.

🕹️ Penerapan Strategi Load Balancing menggunakan Algoritma Round Robin

Load balancing adalah proses pendistribusian traffic jaringan ke beberapa server untuk memastikan salah satu server tidak menanggung terlalu banyak beban permintaan.

Seperti yang sudah dijelaskan pada awal artikel ini, bahwa perangkat load balancing mendistribusikan traffic ke beberapa server untuk memastikan tidak ada satu server pun yang menanggung beban berlebih. Dan secara efektif, load balancing ini meminimalkan waktu respon server.

Load balancing memiliki beberapa metode sebagai penyeimbang beban server, yakni Round Robin, Ratio, Fastest, Least Connection, dan
Modulo.
(Dalam artikel kali ini kita akan berfokus kepada metode Round Robin).

Pada dasarnya ada 2 jenis algoritma load balancing tergantung pada metode implementasinya diantaranya:

  1. Static Load Balancing Algorithm → keputusan tentang cara mendistribusikan lalu lintas dibuat sebelum waktu, berdasarkan prediksi atau konfigurasi statis. Algoritma ini cocok untuk aplikasi dengan beban kerja yang konsisten dan dapat diprediksi. Jenis algoritma ini bisa diimplementasikan menggunakan Round Robin.
  2. Dynamic Load Balancing Algorithm → keputusan tentang cara mendistribusikan lalu lintas dibuat secara dinamis, berdasarkan kondisi waktu nyata server dan jaringan. Algoritma ini cocok untuk aplikasi dengan fluktuasi beban kerja yang tinggi atau tidak terduga. Jenis algoritma ini bisa diimplementasikan menggunakan Fastest atau Least Connection.

Why are we using Round Robin Load Balancers?

Round Robin merupakan algoritma penjadwalan yang memperlakukan semua real server sama menurut jumlah koneksi atau waktu respon.

Round Robin adalah salah satu teknik penyeimbangan beban yang paling banyak digunakan. Meskipun banyak metode load balancing tingkat lanjut, Round Robin masih relevan karena mudah dipahami dan diterapkan.

Algoritma ini adalah cara yang relatif sederhana untuk mendistribusikan permintaan klien secara siklis ke beberapa server. Hal ini sangat berguna dalam situasi traffic tinggi di mana user akhir dapat mendistribusikan beban server secara merata dan mencegah kelebihan beban atau kegagalan total server.

Studi Kasus : Implementasi Sistem Application Load Balancing menggunakan Nginx dengan Algoritma Round Robin

Disclaimer : studi kasus ini berdasasarkan portofolio Arkatama dalam mengerjakan aplikasi milik subbidang kelembagaan pendidikan salah satu Kementerian di Indonesia yang bekerjasama dengan Arkatama untuk pengembangan custom software.

Clients Problem:

Subbidang kelembagaan pendidikan salah satu Kementerian di Indonesia memiliki sekitar 20.000 mahasiswa, sedangakan UPT TIPD (Unit Pelaksana Teknis Teknologi Informasi dan Pangkalan Data) mengelola aset dan layanan IT untuk sekitar 27 departemen berbeda yang mencakup seleksi masuk, keuangan, dan administrasi.

Pada kasus ini kita berbicara mengenai salah satu proses pendidikan, yakni metode seleksi menggunakan sistem Computer Assisted Test (CAT)

Selama periode ujian, situs web CAT sering mengalami lonjakan lalu lintas yang menyebabkan kinerja situs menjadi lambat dan bahkan tidak responsif. Hal ini tentu mengganggu proses ujian dan pengalaman pengguna secara keseluruhan.

Banyaknya jumlah mahasiswa yang mengakses aplikasi dengan spesifikasi server yang kurang memadai mengakibatkan penumpukan request pada server, sehingga mengakibatkan server down.

Requirement Need:

UPT TIPD perlu memastikan bahwa layanan ini dapat beroperasi tanpa kegagalan atau gangguan pada hardware maupun software, insiden keamanan, atau kebutuhan maintenance rutin.

UPT TIPD juga perlu mengelola lalu lintas yang tinggi dengan efisien tanpa menambahkan sumber daya infrastruktur yang signifikan.

Untuk memenuhi kebutuhan tersebut, UPT TIPD bekerjasama dengan Arkatama beralih ke solusi Load Balancing untuk diterapkan di seluruh layanan IT dan server web mereka.

What Arkatama did:

Arkatama melakukan implementasi sistem application load balancing menggunakan Nginx dengan algoritma Round Robin.

Application Load Balancing adalah metode load balancing yang dilakukan di tingkat aplikasi, di mana lalu lintas dibagi secara cerdas berdasarkan karakteristik aplikasi yang spesifik.

Application Load Balancer adalah fitur Elastic Load Balancing yang memungkinkan developer mengonfigurasi dan merutekan traffic pengguna yang masuk ke aplikasi berbasis di cloud publik AWS (Amazon Web Service).

Elastic Load Balancing adalah layanan manajemen traffic yang disediakan oleh AWS.

Arsitektur Sistem

Untuk mengimplementasikan application load balancing menggunakan Nginx dengan algoritma Round Robin, berikut langkah yang kami lakukan:

1. Menyiapkan 4 server (disini kita menggunakan Nginx).

 a. Server Load Balancer : 192.168.0.100
b. Server Application 1 : 192.168.0.1
c. Server Application 2 : 192.168.0.1
d. Server Application 3 : 192.168.0.1
Implementasi Load Balancing Sistem CAT

2. Installasi Nginx disetiap server (karena Nginx tersedia di repositori default Ubuntu, maka untuk menginstalnya kita menggunakan apt packaging system).

Karena ini adalah interaksi pertama kami dengan apt packaging system di sesi ini, kami akan memperbarui index paket lokal kami sehingga kami memiliki akses ke daftar package terbaru. Setelah itu, kita bisa menginstal Nginx:

$ sudo apt update
$ sudo apt install nginx

Setelah menerima prosedur, apt akan menginstal Nginx dan semua dependensi yang diperlukan ke server.

Selanjutnya adalah menyesuaikan firewall. Sebelum menguji Nginx, software firewall perlu disesuaikan untuk memungkinkan akses ke layanan. Nginx mendaftarkan dirinya sebagai layanan dengan ufw saat instalasi, membuatnya mudah untuk mengizinkan akses Nginx. Buat daftar konfigurasi aplikasi yang ufw tahu cara kerjanya dengan mengetik,

$ sudo ufw app list

Kemudian akan mendapatkan listing dari applications profile.

Output
Available applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH

Seperti yang ditunjukkan oleh keluarannya, ada tiga profil yang tersedia untuk Nginx:

- Nginx Full: Profil ini membuka port 80 (lalu lintas web normal dan tidak terenkripsi) dan port 443 (lalu lintas terenkripsi TLS/SSL)
- Nginx HTTP: Profil ini hanya membuka port 80 (lalu lintas web normal dan tidak terenkripsi)
- Nginx HTTPS: Profil ini hanya membuka port 443 (lalu lintas terenkripsi TLS/SSL)

Disarankan agar kita mengaktifkan profil paling ketat yang masih mengizinkan traffic yang telah kita konfigurasikan. Saat ini, kita hanya perlu mengizinkan traffic di port 80.

Aktifkan traffic di port 80 dengan :

$ sudo ufw allow 'Nginx HTTP'

Kemudian verifikasi perubahan dengan :

$ sudo ufw status

Dan outputnya akan menunjukkan traffic HTTP mana yang diperbolehkan :

Output
Status: active

To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)

Selanjutnya adalah memeriksa web server. Di akhir proses instalasi, web server seharusnya sudah aktif dan berjalan. Kita dapat memeriksa systemd init untuk memastikan layanan berjalan dengan :

$ systemctl status nginx
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2020-04-20 16:08:19 UTC; 3 days ago
Docs: man:nginx(8)
Main PID: 2369 (nginx)
Tasks: 2 (limit: 1153)
Memory: 3.5M
CGroup: /system.slice/nginx.service
├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
└─2380 nginx: worker process

Seperti yang dikonfirmasi oleh hal di atas, layanan telah dimulai dengan sukses.

3. Membuat pengaturan load balancing pada server load balancer :

  $ nano /etc/nginx/conf.d/lb-cat.pusdiktan.id.conf
  upstream cat_app {
server 192.168.0.1; # server APP 1
server 192.168.0.2; # server APP 2
server 192.168.0.3; # server APP 3
}
server {
server_name cat.pusdiktan.id;

location / {
proxy_pass http://cat_app;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}

listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/cat.pusdiktan.id/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/cat.pusdiktan.id/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}
server {
if ($host = cat.pusdiktan.id) {
return 301 https://$host$request_uri;
} # managed by Certbot

server_name cat.pusdiktan.id;
listen 80;
return 404; # managed by Certbot
}

Dalam konfigurasi ini, upstream cat_app mendefinisikan grup server backend (server_name cat.pusdiktan.id) yang akan menerima traffic. Konfigurasi server mendefinisikan bagaimana Nginx akan meneruskan traffic ke grup server backend tersebut.

4. Melakukan restart Nginx server load balancer : Setelah melakukan perubahan pada konfigurasi, simpan file dan restart Nginx untuk menerapkan perubahan :

 $ sudo systemctl restart nginx

5. Membuat pengaturan web aplikasi pada server App 1, 2, dan 3 :

$ nano /etc/nginx/sites-avaible/cat.pusdiktan.id
  server {
listen 80;
index index.php index.html;
server_name cat.pusdiktan.id;
error_log /var/log/nginx/cat/error.log error;
access_log /var/log/nginx/cat/access.log;
root /var/www/html/full_cat;

location / {
# Check if a file or directory index file exists, else route it to index.php.
try_files $uri $uri/ /index.php$is_args$args;
}

location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_read_timeout 1000;
}

location /malang {
try_files $uri $uri/ /malang /malang/index.php$is_args$args;

location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_read_timeout 1000;
}
}
}

6. Mengaktifkan pengaturan web :

 $ ln -s /etc/nginx/sites-avaible/cat.pusdiktan.id /etc/nginx/sites-enable

7. Memverifikasi load balancer : Untuk memastikan bahwa load balancing berfungsi dengan benar, buka browser dan akses URL situs web yang di-load balance. Refresh beberapa kali dan periksa apakah setiap request diteruskan ke server backend yang berbeda sesuai dengan algoritma Round Robin.

Baca juga : Cara setting load balancing denan Nginx

Best Practices dalam Menggunakan Nginx sebagai Load Balancer

  1. Implementasi Session Persistence : Untuk memastikan bahwa client yang terhubung secara konsisten diarahkan ke instance server yang sama selama sesi mereka berlangsung. Hal ini penting untuk aplikasi yang memerlukan stateful, seperti aplikasi web yang menyimpan informasi pengguna dalam sesi.
  2. Design for High Availability : Pastikan bahwa server yang digunakan dalam cluster load balancing memiliki tingkat ketersediaan yang tinggi. Hal ini dapat dicapai dengan menggunakan multiple server instances, dan mengelola resource dengan baik (agar tidak mencapai kapasitas maksimum — dalam hal ini Tim Arkatama mengatur batas processing di CPU sebesar 80%).
  3. Pilih metode load balancing yang tepat : Nginx menyediakan beberapa metode load balancing, seperti round robin, least connections, ip hash, dan lainnya. Pilih metode yang paling sesuai dengan karakteristik aplikasi dan kebutuhan. Misalnya, jika aplikasi memiliki beberapa arsitektur server, metode round robin akan lebih cocok.
  4. Pemantauan dan pencatatan (monitoring and logging) : Gunakan alat pemantauan seperti Grafana dan Prometheus untuk memantau kesehatan server, kinerja aplikasi, dan traffic web.

Conclusion

Melalui pengembangan teknologi SSO Session Based pada Sistem Informasi Terpadu dan pengimplementasian application load balancing pada aplikasi CAT mendapatkan beberapa hasil sebagai berikut:

  • Kemudahan akses : Implementasi SSO pada Siakad Perguruan Tinggi memungkinkan mahasiswa, dosen, dan staff administrasi untuk mengakses berbagai layanan akademik dengan satu login tunggal. Hal ini meningkatkan efisiensi dan kenyamanan user dalam mengelola akun.
  • Meningkatkan keamanan aplikasi : SSO memungkinkan penerapan kebijakan keamanan yang konsisten di seluruh sistem Siakad, termasuk autentikasi multi-faktor dan kontrol akses yang lebih ketat. Ini membantu melindungi data sensitif dan mengurangi risiko kebocoran informasi.
  • Meningkatkan performas aplikasi : Load balancing pada aplikasi CAT lembaga pendidikan memastikan bahwa lalu lintas yang masuk didistribusikan secara merata di antara server, mengurangi beban pada server tunggal dan meningkatkan responsivitas aplikasi. Hal ini penting terutama saat periode ujian di mana traffic bisa meningkat secara signifikan.

Dalam menghadapi tantangan keamanan dan performa aplikasi, solusi Single Sign On dan Load Balancing dapat menjadi langkah penting untuk memastikan aplikasi Anda siap menghadapi tuntutan masa depan.

Sebagai software house yang berpengalaman, Arkatama siap membantu Anda dalam menerapkan strategi ini secara efektif. Dengan berbagai layanan kami, termasuk konsultasi, pengembangan aplikasi, dan implementasi solusi IT, kami siap menjadi mitra terpercaya dalam menjaga keamanan dan performa aplikasi Anda.

Jangan ragu untuk menghubungi kami 👉🏻disini👈🏻 untuk mendapatkan solusi yang sesuai dengan kebutuhan aplikasi Anda.

Ingin bertanya atau mempunyai masukan serta tambahan terkait tulisan ini?

Silahkan ketik pertanyaan, masukan dan tambahan tersebut di Bagian Response di bawah.

Terima kasih telah meluangkan waktu untuk membaca.. 😊

Written by : Wiwit S.N. (Arkatama Team)

--

--