Choosing the Right Infrastructure: VPS vs Dedicated Server for Hospital Information System (HIS)
N
Back to Blog

Choosing the Right Infrastructure: VPS vs Dedicated Server for Hospital Information System (HIS)

Industri Kesehatan
Nugroho Setiawan · Konsultan IT & Full Stack Developer 14 Jun 2026 13 min baca 3,727 kata 335 views
Choosing the right server infrastructure for a Hospital Information System (HIS) is a crucial decision that affects performance, security, and scalability. This article will discuss an in-depth comparison between VPS and Dedicated Server, helping you determine the best choice according to your hospi

Hospital Information System (SIMRS) is the operational and clinical backbone of every modern healthcare facility. SIMRS stores highly sensitive patient data, manages thousands of medical transactions daily, and must always be available 24/7. Therefore, choosing the right server infrastructure – whether it's a Virtual Private Server (VPS) or a Dedicated Server – is not just a technical choice, but a strategic decision that directly impacts performance, data security, regulatory compliance, and the continuity of hospital services. Mistakes in selecting or managing infrastructure can lead to costly downtime, illegal data breaches, or slow system performance, all of which can endanger patient safety and institutional reputation. As an Operations Manager and Full Stack Developer with extensive experience in SIMRS implementation, I fully understand the complexity and high stakes behind this decision. This article will thoroughly examine the comparison between VPS and Dedicated Server, from basic concepts to technical implementation details, complete with concrete examples, code, and best practices to help you make the most appropriate decision for your SIMRS.

Basic Concepts of VPS and Dedicated Server for SIMRS

Understanding the fundamental differences between VPS and Dedicated Server is the first step in determining the right infrastructure choice for your Hospital Information System (SIMRS). Both options offer different hosting environments with significant implications for performance, security, and cost.

Virtual Private Server (VPS) is a virtual server environment that runs on a physical server shared with several other VPSs. Each VPS has isolated resource allocations (CPU, RAM, storage) and its own operating system, giving users full administrative control. Despite sharing physical hardware, modern virtualization technologies such as KVM or VMware ensure good isolation between VPSs. VPS is ideal for small-scale SIMRS implementations, such as primary clinics, community health centers, or type D hospitals with relatively few concurrent users, for example, less than 100 active users per day. The main advantages of VPS include lower costs, ease of provisioning and management, and flexibility to scale specifications up or down as needed. For example, a clinic with 30-50 patients per day might optimally run SIMRS on a VPS equipped with 8 CPU cores, 16GB RAM, and 200GB high-speed NVMe SSD storage.

On the other hand, Dedicated Server is a complete physical server entirely allocated to a single tenant or institution. This means all hardware resources, from CPU, RAM, to storage, are fully dedicated to your SIMRS without sharing with other parties. Full control over hardware, operating system, and network environment enables extreme customization and maximum performance optimization. Dedicated Server is highly suitable for SIMRS implementation in large hospitals (type A or B) that serve hundreds to thousands of patients daily, have very high transaction volumes, and require complex integration with various other systems such as laboratory, radiology, or BPJS Kesehatan. Its main advantages are consistent and maximum performance, absolute security isolation, and the ability to handle peak workloads without significant performance degradation. For example, a type B hospital with more than 500 concurrent users and 1,000+ transactions per hour would greatly benefit from a Dedicated Server with specifications such as 2x Intel Xeon E5-2690v4 (total 28 cores), 128GB ECC RAM, and 4x 1.92TB NVMe SSDs configured in RAID 10 for redundancy and I/O speed.

These fundamental differences influence your choice based on the hospital's operational scale, IT budget, and the level of need for uncompromised performance and data security. Choosing VPS means sacrificing a little isolation and peak performance potential for cost efficiency and ease of management, while Dedicated Server offers full power and absolute control with a larger investment.

Implementation Details and Technical Specifications

The decision between VPS and Dedicated Server for SIMRS is not only about cost, but also about how the system will operate under real workloads, how secure patient data is, and how easily the system can scale in the future. Aspects of performance, security, and scalability become very crucial in the context of health information systems.

In terms of performance and scalability, VPS offers limited vertical scalability; you can increase CPU or RAM, but there is often a physical limit from the host server. IOPS (Input/Output Operations Per Second) and disk throughput on a VPS can vary, especially if there is a “noisy neighbor” that uses disk resources intensively. This can cause SIMRS to become slow when performing heavy database operations, such as when creating monthly financial reports or mass patient data synchronization. For a Dedicated Server, performance is its main asset. IOPS and disk throughput are much higher and more consistent, allowing databases such as PostgreSQL 16 or MySQL 8.x to operate at peak efficiency. Vertical scalability on a Dedicated Server is also greater, allowing significant hardware component upgrades. For horizontal scalability, both VPS and Dedicated Server can be implemented with microservices architecture or database clusters, but Dedicated Server provides a more stable and robust foundation for clustering. Key metrics that must be monitored are CPU utilization (ideally averaging below 70%), RAM usage (below 80%), and disk I/O latency (target below 5ms).

Security and compliance are top priorities for SIMRS. On a VPS, although modern hypervisors are very reliable at isolating VMs, there is still a potential theoretical risk from multi-tenancy. Therefore, hardening the operating system (for example Ubuntu Server 22.04 LTS or CentOS Stream 9) with strict firewall configuration (UFW/firewalld), Intrusion Detection/Prevention System (IDS/IPS) such as Snort or Suricata, as well as data encryption *at rest* (disk encryption) and *in transit* (SSL/TLS 1.3) is a must. Dedicated Server, with its physical isolation, inherently offers a higher level of security against multi-tenancy risks. This makes it easier for hospitals to meet strict compliance standards such as the Minister of Health Regulation (PMK) Number 82 of 2013 concerning Hospital Information Systems, Law Number 27 of 2022 concerning Personal Data Protection (UU PDP), and international certifications such as ISO 27001. Regular security audits and penetration testing become easier and more effective in a Dedicated Server environment.

In terms of supporting technology, infrastructure choices also affect implementation. For databases, PostgreSQL 16 or MySQL 8.x are popular choices for relational SIMRS, while MongoDB 7.x can be used for non-relational data. Dedicated Server allows more aggressive and optimal database tuning because of exclusive resources. Backend applications can be built with Laravel 11.x (PHP 8.3), Node.js 20 LTS (with Express.js), or Spring Boot 3.x (Java 17), while the frontend often uses React 18 or Vue 3. Interoperability integrations, such as HAPI FHIR 6.8 for FHIR R4 implementation or HL7 v2.5.1 parsers, often require significant computing and memory resources to process high message volumes, especially in environments integrated with the SatuSehat or BPJS ecosystems. Dedicated Server can provide performance guarantees for these intensive workloads, ensuring medical data exchange runs smoothly and in real-time.

Example Configuration and Implementation Code

To provide a more concrete picture, let us look at several examples of configurations and code relevant to managing SIMRS infrastructure, both in VPS and Dedicated Server environments. These implementations are crucial to ensure system performance, security, and availability.

Nginx Configuration as a Reverse Proxy for SIMRS Applications

Nginx is a very efficient web server and reverse proxy, often used in front of SIMRS applications to handle connections, SSL/TLS, and load balancing. This configuration ensures all traffic to SIMRS is encrypted and correctly directed to the backend application.

# /etc/nginx/sites-available/simrs_app.conf

server {
listen 80;
server_name simrs.rumah-sakit-anda.id;
# Redirect HTTP ke HTTPS untuk keamanan
return 301 https://$host$request_uri;
}

server {
listen 443 ssl http2;
server_name simrs.rumah-sakit-anda.id;

# Lokasi sertifikat SSL/TLS (misal dari Let's Encrypt)
ssl_certificate /etc/letsencrypt/live/simrs.rumah-sakit-anda.id/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/simrs.rumah-sakit-anda.id/privkey.pem;

# Pengaturan SSL/TLS yang direkomendasikan untuk keamanan
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_protocols TLSv1.3 TLSv1.2; # Prioritaskan TLS 1.3
ssl_ciphers "TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256";
ssl_prefer_server_ciphers on;
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";
add_header X-Frame-Options "DENY";
add_header X-Content-Type-Options "nosniff";
add_header X-XSS-Protection "1; mode=block";

location / {
# Meneruskan permintaan ke aplikasi SIMRS backend (misal Laravel Octane/Swoole atau Node.js)
proxy_pass http://127.0.0.1:8000;
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;
proxy_read_timeout 900; # Timeout lebih panjang untuk permintaan SIMRS yang kompleks
proxy_send_timeout 900;
}

# Contoh endpoint untuk HAPI FHIR Server
location /fhir/ {
proxy_pass http://127.0.0.1:8080/fhir/; # Ganti dengan port server HAPI FHIR Anda
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;
}
}

This Nginx configuration is very important for SIMRS infrastructure for several fundamental reasons. First, it automatically redirects all HTTP traffic to HTTPS, ensuring that all communication between users and SIMRS is encrypted using the TLS 1.3 protocol, which is the highest security standard currently available. This protects sensitive patient data from interception and man-in-the-middle attacks. Second, Nginx acts as a reverse proxy, efficiently forwarding requests to your SIMRS backend application (for example, running on port 8000) and the FHIR server (for example, on port 8080). This setup allows you to run multiple services on the same server and serve them under one domain, simplifying the architecture. In addition, Nginx also adds important HTTP security headers such as Strict-Transport-Security (HSTS) to prevent protocol downgrade attacks, X-Frame-Options to prevent clickjacking, and X-Content-Type-Options to prevent MIME-sniffing. Increasing the `proxy_read_timeout` and `proxy_send_timeout` values to 900 seconds is highly relevant for SIMRS applications that often involve long-running requests, such as generating complex reports or large data synchronization processes.

Connection Pool Configuration for PostgreSQL in Node.js

Efficient database connection management is key to SIMRS performance, especially when serving many concurrent users. Connection pooling reduces the overhead of establishing a new connection for each request, improving system responsiveness and stability.

// db.js - Konfigurasi koneksi database PostgreSQL
const { Pool } = require('pg');

const pool = new Pool({
user: process.env.DB_USER || 'simrs_user',
host: process.env.DB_HOST || 'localhost',
database: process.env.DB_NAME || 'simrs_db',
password: process.env.DB_PASSWORD || 'your_secure_password',
port: process.env.DB_PORT || 5432,
max: 20, // Jumlah koneksi maksimum dalam pool. Sesuaikan dengan kebutuhan dan kapasitas server.
idleTimeoutMillis: 30000, // Tutup koneksi idle setelah 30 detik
connectionTimeoutMillis: 2000, // Timeout saat mencoba mendapatkan koneksi dari pool
});

pool.on('error', (err, client) => {
console.error('Unexpected error on idle client', err);
// Implementasi logika penanganan error lebih lanjut, misal notifikasi ke Sentry/Slack
});

module.exports = {
query: (text, params) => pool.query(text, params),
getClient: () => pool.connect(),
};

// Contoh penggunaan dalam aplikasi
// const db = require('./db');
// async function getUser(userId) {
// try {
// const res = await db.query('SELECT * FROM pasien WHERE id = $1', [userId]);
// return res.rows[0];
// } catch (err) {
// console.error('Error fetching user:', err);
// throw err;
// }
// }

Database connection management is one of the most crucial aspects in ensuring the performance and stability of SIMRS applications, especially in environments with many concurrent users. The JavaScript code above demonstrates the implementation of connection pooling for PostgreSQL using the `pg` library in Node.js. With the parameter `max: 20`, we limit the number of active connections that the application can create to the database to 20. This prevents the database server from being overwhelmed by too many simultaneous connections, which can cause performance degradation or even crashes. `idleTimeoutMillis: 30000` ensures that database connections that are idle for 30 seconds will be closed and returned to the operating system, saving resources. Meanwhile, `connectionTimeoutMillis: 2000` sets a 2-second timeout for the application to obtain a connection from the pool; if it takes longer than that, it will produce an error, preventing the application from waiting indefinitely. Connection pooling significantly improves the efficiency and responsiveness of SIMRS applications because it eliminates the repeated overhead of establishing and closing database connections for each request, making it a standard practice for maintaining optimal SIMRS database stability and performance.

Critical Data and Error Handling

In SIMRS operations, accurate data exchange and effective error handling are two main pillars for maintaining the integrity of patient information and service continuity. We will look at an example of a standard data payload and how to handle critical errors that may occur.

Example FHIR R4 Data Payload (Patient Resource)

Fast Healthcare Interoperability Resources (FHIR) is a standard recommended by the Ministry of Health of the Republic of Indonesia for health data interoperability, particularly within the SatuSehat ecosystem. The following is an example JSON payload for a patient resource (Patient Resource) according to the FHIR R4 standard.

{
"resourceType": "Patient",
"id": "example",
"meta": {
"versionId": "1",
"lastUpdated": "2023-10-27T10:20:00Z",
"profile": [
"http://hl7.org/fhir/R4/StructureDefinition/Patient"
]
},
"text": {
"status": "generated",
"div": "<div xmlns=\"http://www.w3.org/1999/xhtml\"><p><b>Pasien: Budi Santoso</b></p><p>ID: 1234567890</p><p>Tanggal Lahir: 1985-05-15</p></div>"
},
"identifier": [
{
"use": "usual",
"type": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/v2-0203",
"code": "MR"
}
],
"text": "Medical Record Number"
},
"system": "http://simrs.rumah-sakit-anda.id/fhir/sid/mr",
"value": "MRN-1234567890"
},
{
"use": "official",
"type": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/v2-0203",
"code": "NIK"
}
],
"text": "Nomor Induk Kependudukan"
},
"system": "http://simrs.rumah-sakit-anda.id/fhir/sid/nik",
"value": "3273xxxxxxxxxxxx"
}
],
"active": true,
"name": [
{
"use": "official",
"family": "Santoso",
"given": ["Budi"],
"prefix": ["Tn."]
}
],
"telecom": [
{
"system": "phone",
"value": "+628123456789",
"use": "mobile"
},
{
"system": "email",
"value": "budi.santoso@example.com",
"use": "home"
}
],
"gender": "male",
"birthDate": "1985-05-15",
"address": [
{
"use": "home",
"line": ["Jl. Merdeka No. 10"],
"city": "Bandung",
"postalCode": "40111",
"country": "ID"
}
],
"maritalStatus": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/v3-MaritalStatus",
"code": "M"
}
],
"text": "Menikah"
},
"contact": [
{
"relationship": [
{
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/v2-0131",
"code": "N"
}
],
"text": "Next-of-Kin"
}
],
"name": {
"family": "Santoso",
"given": ["Dewi"]
},
"telecom": [
{
"system": "phone",
"value": "+628129876543",
"use": "mobile"
}
]
}
]
}

The JSON payload above is a standard representation of patient data using the FHIR R4 (Fast Healthcare Interoperability Resources Release 4) format. FHIR is a standard recommended by the Indonesian Ministry of Health (Kemenkes RI) through the SatuSehat program for interoperable and structured health data exchange. Each element, such as `resourceType` which indicates the resource type, `id` as a unique identifier, `identifier` for medical record number (MRN) and National Identity Number (NIK), `name`, `gender`, and `birthDate`, has a clear definition according to the FHIR specification. This structure ensures that data can be understood and exchanged consistently between different health information systems, both within the hospital's internal scope and with external entities such as BPJS or the SatuSehat platform. Managing and processing FHIR data payloads like this, especially in high volumes, requires a stable, responsive server infrastructure with adequate I/O capacity so that it does not become a bottleneck in the SIMRS workflow.

Examples of Critical Error Messages and Their Handling

One of the most critical errors in SIMRS is database connection failure. This can cause the entire system to stop functioning. The following is an example error message and its handling strategy.

HTTP/1.1 500 Internal Server Error
Content-Type: application/json

{
"timestamp": "2023-10-27T10:30:15.123Z",
"status": 500,
"error": "DatabaseConnectionException",
"message": "Failed to establish a database connection: connection timeout",
"path": "/api/v1/patients"
}

The error message `DatabaseConnectionException: connection timeout` with HTTP status 500 indicates that the SIMRS application failed to connect to the database server within the specified time limit. This is a very serious error because it can halt all SIMRS operations. The causes can vary: the database server is down, the database server is overloaded (too many connections or heavy queries), there is a network problem between the application and the database, or the connection pool configuration in the application is not optimal (for example, the maximum number of connections is too low or the timeout is too short). Effective handling requires a multi-aspect approach.

Handling Methods:

  1. Proactive Monitoring: Implement a comprehensive monitoring system (for example, Prometheus with Grafana or Zabbix) to monitor the database server status in real time, including metrics such as active connections, CPU usage, RAM, disk IOPS, and query latency. Configure automatic alerts (via email, SMS, or Slack) if critical metrics cross predetermined thresholds, enabling the IT team to respond quickly before a total failure occurs.
  2. Application and Database Log Analysis: Ensure the SIMRS application and database server (for example, PostgreSQL 16) log errors in detail, including stack traces and request context. These logs are very important for identifying the root cause of the problem. Regular log analysis can help detect problem patterns or anomalies.
  3. Retry Mechanism with Exponential Backoff: For temporary errors such as connection timeouts, implement a retry mechanism with *exponential backoff* on the application side. This means the application will retry the operation after a short delay, and if it fails again, the delay will be extended exponentially. This prevents the application from continuously flooding a troubled database and gives the database time to recover.
  4. By applying these three steps consistently, most database connection disruptions can be minimized. However, keep in mind that handling on the application and database side alone is not enough if the infrastructure foundation used is inadequate. This is where the importance of choosing between a VPS (Virtual Private Server) and a Dedicated Server as the foundation of your SIMRS comes in.

    Practical Tips for Choosing Infrastructure for SIMRS

    Before making a choice, perform a thorough needs analysis. Calculate the estimated number of simultaneous users, daily transaction volume, database size that will grow each year, and compliance requirements such as audit trail and data encryption. For small to medium-scale SIMRS (for example, a clinic or type C hospital with dozens of active users), a VPS with CPU specifications of 4–8 vCPU, 16–32 GB RAM, and NVMe storage is usually sufficient, provided you choose a provider that offers dedicated resource guarantees (not overselling). Conversely, type A/B hospitals with hundreds of users, BPJS integration, laboratory, radiology, and pharmacy should consider a Dedicated Server to avoid noisy neighbors and gain full control over kernel tuning and I/O allocation.

    Also pay attention to scalability and high availability aspects. VPS is generally more flexible for vertical scale-up (adding RAM/CPU) or horizontal scaling (adding instances for load balancing), but hypervisor limitations can become a bottleneck during peak load. Dedicated Server offers more stable raw performance, but its scalability is less flexible and its initial cost is higher. If the budget is limited but high performance is needed, consider a hybrid architecture: the SIMRS application on a VPS, while the database is on a Dedicated Server connected through a low-latency private network. Also ensure the service provider supports snapshots, automatic backups, and cross-zone replication for disaster mitigation.

    Do not forget the security and compliance aspects. Medical record data is personal data protected by law, so you must choose infrastructure that supports at-rest and in-transit encryption, managed firewalls, and role-based access. Both VPS and Dedicated Server can be equally secure, as long as hardening configuration is done correctly. Perform load testing before go-live to ensure the chosen infrastructure can handle spikes in patients during peak hours, for example in the morning when registration and outpatient clinics open simultaneously.

    FAQ

    Is a VPS sufficient for a SIMRS with 50 active users?

    Generally sufficient, as long as the specifications are adequate (minimum 4 vCPU, 16 GB RAM, NVMe) and the provider does not oversell. Monitor CPU, RAM, and IOPS metrics regularly; if they are consistently above 70%, consider upgrading to a Dedicated Server or separating the database onto a separate server.

    When should you migrate from a VPS to a Dedicated Server?

    Migration should be considered when you experience performance issues that can no longer be resolved by tuning, such as consistently high database IOPS, unstable latency due to noisy neighbors, or compliance requirements that mandate physical isolation. In addition, if the number of users exceeds 150–200 concurrent, a Dedicated Server is usually more recommended.

    Is a Dedicated Server automatically more secure than a VPS?

    Not automatically. Security is more determined by configuration, patch management, and operational practices. A Dedicated Server gives you full control over hardening, but it also demands greater responsibility. A VPS from a trusted provider is often already equipped with adequate built-in firewall and monitoring.

    What is the ideal backup strategy for a SIMRS?

    Apply the 3-2-1 principle: at least three copies of data, on two different media, with one copy off-site. Perform daily backups for the database, test restores regularly, and ensure backup encryption is enabled. For a SIMRS, the RPO (Recovery Point Objective) should ideally be under 1 hour and the RTO (Recovery Time Objective) under 4 hours.

    Choosing between a VPS and a Dedicated Server for a SIMRS is not merely about price, but a balance between performance, scalability, security, and budget. VPS offers cost efficiency and flexibility for small-to-medium scale, while Dedicated Server provides maximum performance and isolation for enterprise needs. Whatever the choice, ensure the infrastructure is managed with proactive monitoring, layered backups, and a tested disaster recovery plan. Do not hesitate to consult with our health infrastructure expert team to get the right recommendation according to your hospital's profile—contact us now for a free audit and planning a more reliable SIMRS architecture.

    This article is part of the education by Nugroho Setiawan, an IT consultant in Jogja. Related solutions: SIMRS BPJS & SatuSehat Bridging Integrator. Need free consultation?

Terakhir diperbarui 18 Oct 2026

Komentar

Komentar ditinjau sebelum tampil.

Belum ada komentar. Jadilah yang pertama!

Butuh bantuan implementasi?

Saya membantu konsultasi IT & pengembangan aplikasi untuk rumah sakit, klinik, dan bisnis di Yogyakarta (DIY), Magelang, dan sekitarnya.

Produk & Solusi SIMRS ERP Portfolio Konsultasi Gratis