Di era transformasi digital, perusahaan membutuhkan Human Resource Information System (HRIS) yang andal untuk mengelola data karyawan, presensi, pengumuman, dan laporan. Namun tidak semua bisnis punya tim IT besar atau infrastruktur server sendiri.
AWS Elastic Beanstalk adalah solusi PaaS yang memungkinkan developer fokus pada logika aplikasi, sementara AWS mengelola provisioning, load balancing, auto-scaling, dan monitoring.
Artikel ini menyajikan studi kasus implementasi HRIS untuk perusahaan teknologi. Kita akan membahas dari development lokal sampai deployment production-ready di Elastic Beanstalk, lengkap dengan konfigurasi high availability, networking, instance profile, dan testing.
Ringkasan Studi Kasus: Kebutuhan & Tantangan
Perusahaan ini merupakan perusahaan teknologi yang memiliki 200 karyawan yang ingin membangun sistem HRIS internal, mencakup fitur:
- Employee Attendance System (presensi digital real-time)
- HR Announcements (portal pengumuman)
- Employee Dashboard (monitoring & statistik)
- Real-time Reporting (laporan kehadiran & analytics)
Tantangan yang Dihadapi
- Tim IT terbatas (2 developer)
- Tidak ada server dedicated
- Budget terbatas untuk hardware & maintenance
- Butuh skalabilitas saat peak usage (awal bulan, performance review)
- Requirement high availability dan security
Solusi: Deploy aplikasi Flask sederhana sebagai prototype HRIS menggunakan AWS Elastic Beanstalk dengan konfigurasi High Availability, integrasi ke layanan AWS (RDS/S3/CloudWatch) nanti saat production.
Sekilas: Apa itu AWS Elastic Beanstalk?
AWS Elastic Beanstalk adalah layanan PaaS yang memudahkan deploy dan scale aplikasi web. Developer cukup upload kode; Elastic Beanstalk yang mengurus instance EC2, load balancer, auto-scaling, health monitoring, dan integrasi ke layanan AWS lainnya.
Mengapa AWS Elastic Beanstalk Jadi Pilihan?
Perusahaan digital tersebut memilih AWS Elastic Beanstalk karena alasan berikut:
- Kemudahan Deployment: cukup upload aplikasi, AWS mengurus infrastruktur
- Manajemen Otomatis: patching OS, monitoring, scaling dilakukan otomatis
- Cost-Effective: model pay-as-you-use, tanpa biaya tambahan untuk Beanstalk
- Skalabilitas Otomatis: mampu menangani lonjakan trafik HR di periode sibuk
- Security & Compliance: fitur keamanan bawaan sesuai standar AWS
- Integrasi Mudah: dapat dihubungkan dengan RDS, S3, CloudWatch, dan layanan AWS lain
Arsitektur Solusi HRIS

Diagram ini menggambarkan bagaimana komponen HRIS terhubung: aplikasi Flask > Elastic Beanstalk > Load Balancer > Auto Scaling Group > end user.
Langkah Implementasi HRIS di AWS Elastic Beanstalk
Persiapan Aplikasi (Development)
Struktur proyek:
Sederhana, cukup untuk prototype HRIS:

Kode Aplikasi Utama (application.py)
Aplikasi dibangun menggunakan Flask, dengan data dummy sederhana untuk pengumuman dan absensi. Kode lengkapnya mencakup fitur dashboard, presensi digital, dan health check system.



Dependencies
Tambahkan dependencies berikut dalam file requirements.txt:

Deployment ke AWS Elastic Beanstalk: Panduan Langkah-demi-Langkah
Langkah 1 — Persiapan AWS Account
Sebelum mulai, pastikan:
- Akun AWS aktif dengan billing setup.
- IAM User punya permission minimal AWSElasticBeanstalkFullAccess, EC2FullAccess, S3FullAccess.
- Pilih region yang diinginkan (contoh di artikel ini menggunakan us-east-1 / N. Virginia).

Langkah 2 — Create Elastic Beanstalk Application
Login ke AWS Console > cari Elastic Beanstalk > klik Create Application.
Isi nama aplikasi; kita sebut hris-system. Beri tag untuk memudahkan management dan billing:
- Project: HRIS
- Environment: Production
- Department: HR

Langkah 3 — Platform Settings (Create Environment)
Setelah membuat Application, buat Environment baru:
Pilih Create Environment pada aplikasi yang sudah dibuat.

Poin penting yang harus di-set:
- Environment tier: pilih Web server environment (karena aplikasi menerima HTTP/HTTPS dari user).
- Environment information: isi nama domain unik — AWS akan cek ketersediaan domain.

Platform yang digunakan pada artikel ini:
- Platform: Python
- Platform branch: Python 3.9 running on 64bit Amazon Linux 2023
- Platform version: (recommended — latest)

Langkah 4 — Upload Application Code
Upload paket kode aplikasi (hris-system.zip) yang berisi application.py, requirements.txt, dan folder templates/.

Konfigurasi High Availability (HA)
HA Configuration
Agar memenuhi syarat skalabilitas:
Pilih preset High Availability.

Langkah 5 — Service Access
Untuk service role: create dan gunakan new service role (buat role baru)

Tambahkan permission untuk role terkait:
- AWSElasticBeanstalkEnhancedHealth
- AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy
- Klik Next.

Kemudian klik Create role bila diminta.

EC2 Instance Profile (buat role baru)

Pilih AWS Service, Use Case → EC2, klik Next.

Tambahkan permission berikut pada role:
- AWSElasticBeanstalkMulticontainerDocker
- AWSElasticBeanstalkWebTier
- AWSElasticBeanstalkWorkerTier
Klik Create role.

Setelah role dibuat, isi EC2 Instance Profile dengan role tersebut. Untuk EC2 key pair (opsional) bisa dikosongkan jika tidak memerlukan SSH access. Klik Next.

Langkah 6 — Networking & Database
- VPC: Default VPC
- Instance subnets: Pilih available subnets
- Database: Skip (akan disiapkan terpisah untuk production)

(Alasan skip: untuk awal prototyping, kita fokus pada aplikasi. Untuk production, gunakan RDS/private subnets & parameter group yang sesuai.)
Langkah 7 — Instance Configuration
Atur volume & security:
- Root volume type: General Purpose 3 (gp3)
- Size: 50 GB

Buat Security Group baru (misal: ElasticBeanstalk) yang mengizinkan: HTTP, HTTPS, dan ICMP.
Langkah 8 — Capacity Settings
Agar aplikasi dapat scale-out dan scale-in otomatis, gunakan konfigurasi berikut:
- Capacity: Load balanced
- Minimum instance: 1
- Maximum instance: 2 (dapat disesuaikan dengan kebutuhan aplikasi)
- Fleet composition: On-Demand instances
- Instance types: t3.medium (atau sesuai kebutuhan)
- Architecture: x86_64
- Visibility: Public

Untuk Load Balancer, pilih minimal dua Availability Zone.

Auto Scaling Configuration:
- Metric: CPUUtilization
- Statistic: Average
- Unit: Percent
- Period: 1 minute
- Breach Duration: 5 minutes
- Upper Threshold: 80 (scale up)
- Scale-up increment: +1
- Lower Threshold: 20 (scale down)
- Scale-down increment: -1

Load Balancer Type: Application Load Balancer
Listeners: Port 80, Protocol HTTP
Klik Next.

Langkah 9 — Updates & Monitoring
Atur pengaturan monitoring dan update seperti berikut:
Managed platform updates: Disable (pilihan awal; dapat diaktifkan dengan kebijakan update terencana)

Untuk pengaturan rolling updates and deployments:
- Deployment policy: All at once
- Batch size type: Percentage
- Rolling update type: Disable
- Ignore health check: False
- Health threshold: OK
- Command timeout: 600 seconds
Terakhir klik Create untuk membuat environment.

Langkah 10 — Review & Deploy (Deployment Process)
Sebelum melakukan deployment, lakukan pengecekan:
- Review seluruh konfigurasi environment
- Klik Submit untuk memulai deployment
- Pantau progress di dashboard Elastic Beanstalk
- Estimasi waktu: sekitar 5–10 menit untuk environment baru sampai status green (tergantung ukuran instance & network).
Testing dan Validasi HRIS
Functional Testing
Cek endpoint aplikasi:
- Base URL: http://hris-system.region.elasticbeanstalk.com
- Dashboard: / — tampilkan pengumuman & ringkasan

Attendance: /absensi — form absensi & daftar hadir

Announcements: /pengumuman — daftar semua pengumuman

Pastikan form POST presensi bekerja, flash message muncul, dan halaman dashboard memuat data.
Load Testing
Tahap berikutnya adalah evaluasi performa dan skalabilitas aplikasi. Tujuannya untuk memastikan bahwa sistem dapat melakukan scale-out otomatis ketika terjadi peningkatan beban kerja dan penggunaan sumber daya.
Skenario awal: environment memulai dengan 1 instance.

Saat peak traffic: ketika CPU > 80%, auto-scaling akan spin-up instance tambahan.

Aplikasi HRIS tetap bisa diakses selama scale-out.

Saat trafik turun < 20%, sistem akan scale-down kembali ke 1 instance untuk efisiensi biaya.

Dampak Implementasi HRIS di AWS bagi Transformasi Digital Bisnis
Implementasi HRIS di Elastic Beanstalk menjadi fondasi transformasi digital perusahaan karena:
- Memudahkan integrasi dengan sistem existing (misalnya Payroll, ERP)
- Memungkinkan pengembangan analytics & insights HR berbasis data real-time
- Meningkatkan pengalaman karyawan melalui akses yang lebih mudah dan cepat
- Menyiapkan perusahaan untuk adopsi teknologi HR masa depan (chatbot, generative AI untuk talent insights, dsb)
AWS Elastic Beanstalk menyediakan jalur praktis, cost-effective, dan scalable untuk memulai journey cloud-based HRIS.
Penutup & Catatan Implementasi
Artikel ini disusun berdasarkan pengalaman implementasi HRIS menggunakan AWS Elastic Beanstalk, lengkap dengan troubleshooting dan optimisasi selama development dan deployment.
Untuk production-ready deployment, pertimbangkan poin berikut:
- Gunakan RDS untuk penyimpanan data produksi (Postgres/MySQL) di private subnets
- Tambahkan HTTPS (ACM + ALB) untuk keamanan transport
- Implementasikan backup & DR untuk database
- Setup logging & monitoring (CloudWatch Logs, alarms).
- Pertimbangkan autoscaling policies lebih matang (target tracking scaling, notifikasi).
- Terapkan best practices AWS Well-Architected Framework (security, reliability, performance, cost optimization, operational excellence).
Ingin tahu lebih dalam atau butuh panduan lanjutan terkait tutorial ini? Hubungi tim CDT untuk berdiskusi bagaimana solusi ini bisa diadaptasi sesuai kebutuhan Anda.
Source Code & Referensi
Source Code:
https://github.com/leo-cloud-source/hris-system.git
Referensi:
- AWS Elastic Beanstalk Documentation
- Flask Documentation
- Bootstrap Documentation
- AWS Well-Architected Framework
- Python pytz Documentation
Penulis: Ade Ridwan
Editor: Wilsa Azmalia Putri – Content Writer CTI Group
