Report PaaS
Report PaaS
of Ecuador
Faculty of Engineering and Applied
Sciences
Distributed Programming
Platform-as-a-Service
(PaaS)
Conclusions ................................................................................................................................ 31
Recommendations ..................................................................................................................... 31
References .................................................................................................................................. 32
2
Introduction
In today's software development landscape, Platform-as-a-Service (PaaS)
platforms have emerged as essential solutions for streamlining the process of building,
deploying, and managing cloud-based applications. Among the most prominent options
are Heroku, DigitalOcean App Platform, Railway, and Vercel, each offering distinct
features that facilitate integration with version control systems like GitHub, the use of
Docker containers, and the deployment of scalable applications. This report aims to
thoroughly analyze the functionalities, implementation methods, GitHub integration
processes, and cost structure of these platforms, providing a comparative perspective to
help select the most suitable option for various development scenarios.
Objective
To analyze and compare the PaaS platforms Heroku, DigitalOcean App
Platform, Railway, and Vercel, evaluating their features, GitHub integration processes,
Docker support, and cost structure to determine their advantages and limitations in web
development projects.
Heroku
Heroku is a Platform as a Service (PaaS) that allows developers to build, run,
and scale applications in the cloud without worrying about the underlying infrastructure.
Its managed container system and integrated ecosystem simplify the deployment and
management of modern projects.
Features
• Ease of Use: Heroku stands out for its intuitive interface, allowing developers to
focus on coding rather than server management. This results in a simplified
deployment process and a seamless user experience.
• Scalability: The platform enables horizontal scaling by creating multiple
instances of Dynos, making it easier to handle traffic spikes without
complications.
• Multi-Language Support: Heroku is compatible with multiple programming
languages, including Ruby, Java, Python, PHP, Node.js, Scala, and Clojure,
making it a versatile choice for various types of projects.
3
• Data Services: It offers fully managed database services such as Heroku
Postgres and Redis, enabling developers to efficiently and securely manage data.
• Integrations and Add-ons: The platform has a robust ecosystem of add-ons and
third-party services that extend the functionality of applications, facilitating the
integration of additional tools.
• Security and Compliance: Heroku maintains high security and compliance
standards, conducting regular audits and adhering to regulations such as PCI,
HIPAA, and ISO, providing confidence to developers and businesses handling
sensitive data.
Fuction
Heroku operates on a model that abstracts away the complexities of
infrastructure management, allowing developers to focus on building applications.
Here’s how it works:
4
These add-ons can be integrated into applications with minimal effort, often
with free tiers available for testing.
Developers can easily add or remove add-ons as needed, enhancing the
application's functionality without significant overhead.
• Logging and Routing
Heroku centralizes logging through a system called Logplex, which collates logs
from various parts of the application into a single stream.
This allows developers to monitor application performance and troubleshoot
issues effectively.
HTTP requests are automatically routed to the appropriate dynos based on the
application's hostname, ensuring efficient handling of incoming traffic.
• Deployment Process
The deployment process begins with creating a Heroku app and linking it to a
Git repository.
Developers push their code to Heroku, which triggers the buildpack to create a
slug and deploy it to the dynos.
The application is then accessible via the web, with Heroku managing the
underlying infrastructure and scaling as necessary.
GitHub
Steps to connect GitHub with Heroku
1. Create and log in to your Heroku account
- Visit [https://www.heroku.com/](https://www.heroku.com/) and create
an account or log in if you already have one.
2. Create an application in Heroku
- In the Heroku dashboard, click "New" → "Create new app".
- Assign a unique name and select your region.
3. Connect the app to GitHub
- Inside your app, go to the "Deploy" tab.
- Under "Deployment method", select GitHub.
- Authenticate your GitHub account if required.
- Search for your repository and click "Connect".
4. Enable automatic deployment (optional but recommended)
5
- In "Automatic deploys", select the branch you want to deploy
automatically (e.g., `main` or `master`).
- Click "Enable Automatic Deploys".
5. Deploy manually for the first time
- Under "Manual deploy", select the desired branch and press "Deploy
Branch".
6. Configure environment variables (config vars)
- Go to the "Settings" tab.
- Click "Reveal Config Vars".
- Add any necessary variables (e.g., `DATABASE_URL`, `API_KEY`,
etc.).
6
Basic workflow example “.github/workflows/deploy.yml”:
7
Create a Dockerfile in your project directory that defines your application
container
Example Dockerfile for a Node.js app:
FROM node:14-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install –production
COPY . .
CMD ["node", "index.js"]
EXPOSE 3000
“Adjust according to your app requirements”
6. Build your Docker image locally
docker build -t registry.heroku.com/your-heroku-app/web .
“Replace your-heroku-app with your Heroku app name”
7. Push the Docker image to Heroku Container Registry
docker push registry.heroku.com/your-heroku-app/web
8. Release the pushed container
heroku container:release web -a your-heroku-app
9. Open your app in the browser
heroku open -a your-heroku-app
8
“Make sure to add HEROKU_API_KEY as a secret in your GitHub repository settings”
Costs
• Eco Dynos
Base Costs: $5 USD per 1,000 dyno hours per month.
Features:
- Ideal for personal projects and small apps.
- Dynos enter sleep mode after 30 minutes of inactivity.
- Support for up to two process types.
- Consumes hours only when the app is active.
Limitations:
9
- Includes free SSL and automatic certificate management.
Limitations:
Features:
Limitations:
Features:
Limitations:
10
Limitations:
• Essential Tier
❖ Essential 0:
Costs: ~$0.007 per hour (max $5 USD per month).
Features:
1. GB of storage.
2. 20 connections.
3. Unlimited rows.
❖ Essential 1:
Costs: ~$0.012 per hour (max $9 USD per month).
Features:
1. Higher capacity and connections than Essential 0.
• Standard Tier
❖ Standard 0:
Costs: ~$0.069 per hour (max $50 USD per month).
Features:
1. Better performance and capacity than Essential plans.
2. Suitable for production apps with moderate needs.
• Premium and Enterprise Tiers
Costs: Ranges from ~$0.278 per hour (max $200 USD per month) to custom
pricing.
Features:
- Designed for mission-critical apps with higher performance and security
requirements.
- Includes advanced features like high availability, read replicas, and
regulatory compliance.
• Heroku Redis:
❖ Mini Plan:
11
Costs: ~$0.004 per hour (max $3 USD per month).
Features:
1. 25 MB storage.
2. Suitable for small apps or testing.
• Premium Plans:
Costs: Ranges from ~$0.021 per hour (max $15 USD per month) to ~$6.667 per
hour (max $4,800 USD per month).
Features:
- Increased capacity and performance.
- Advanced security and availability features.
Digital Ocean
DigitalOcean is a cloud service provider that offers infrastructure and platform
as a service (IaaS and PaaS) solutions designed to facilitate the development,
deployment, and management of applications in the cloud. Its focus is on simplicity and
accessibility for developers and businesses.
Features
• Droplets: Configurable virtual servers that can be created quickly.
• Managed Kubernetes: Orchestration of containerized applications without the
need to manage the underlying infrastructure.
• Managed Databases: Support for popular databases with automated
maintenance.
• Scalable Storage: Options for block and object storage that adapt to needs.
• Advanced Networking Tools: Load balancers, private networks, and firewalls
for security and traffic management.
• Intuitive Interface and API: User-friendly control panel and robust API for
automation.
• Marketplace: Library of pre-configured applications and services for quick
deployment.
Function
• Creating the Working Environment
When a user logs into DigitalOcean, they can create a project to organize
resources based on the specific needs of the application.
12
Users can deploy Droplets (virtual servers), which function as virtual machines
dedicated to running applications, databases, or storage.
Droplets are configured with various operating systems (Ubuntu, CentOS,
Debian, etc.) and hardware settings (CPU, RAM, storage).
• Code Management and Deployment
Developers can connect their code repositories from GitHub or GitLab.
Through App Platform, DigitalOcean detects the code and automates the build
and deployment process.
Developers can choose to
- Deploy source code directly.
- Use a Dockerfile to customize the runtime environment.
- Deploy pre-built Docker images from Docker Hub or DigitalOcean
Container Registry.
• Deployment Automation
Every time the code is updated in GitHub or GitLab, DigitalOcean can trigger a
continuous integration/continuous deployment (CI/CD) process to automatically
deploy the new version.
New containers are created, or existing ones are updated without interrupting the
service.
The App Platform manages load balancing and auto-scaling, adjusting resources
based on traffic demand.
• Database Management
Users can create managed databases (PostgreSQL, MySQL, Redis).
DigitalOcean handles the installation, configuration, and updates of the
databases.
Databases are configured for high availability, automatic backups, and vertical
scaling to accommodate data growth.
• Networking and Security
DigitalOcean organizes resources into a VPC (Virtual Private Cloud), allowing
developers to isolate applications and services.
Developers can configure firewalls to control access to Droplets or databases.
Floating IPs can be assigned to manage connections between servers.
13
Load balancers distribute traffic across multiple Droplets to prevent overload
and improve availability.
• Monitoring and Scaling
DigitalOcean provides real-time monitoring tools, allowing developers to track
server performance, CPU usage, memory, and network traffic.
If traffic spikes are detected, developers can create new Droplets or scale
existing ones.
The App Platform automatically adjusts containers to maintain optimal
performance.
• Storage and CDN
DigitalOcean offers various storage services:
- Block Storage: Additional disks that can be mounted to Droplets.
- Spaces (Object Storage): Scalable storage for large files.
- Backups and Snapshots: Scheduled backups for disaster recovery.
GitHub
Auto-Deploy: Connects to a GitHub repo and deploys on every git push.
Preview Deployments: Allows specific branches to be deployed as preview
environments. Rollbacks: Revert to previous deployments via the dashboard or API.
14
- Copy the public key:
cat ~/.ssh/id_rsa.pub
- Add this SSH key in GitHub → Settings → SSH and GPG keys → New
SSH key.
- On your Droplet, add your private key or use the SSH agent for
connection.
5. Clone your repository on the Droplet
git clone [email protected]:your-username/your-repository.git
6. Install and configure necessary applications on the Droplet
- For example, Node.js, Docker, nginx, etc., based on your project needs.
Docker
15
- Visit https://www.digitalocean.com/ and create an account or log in if
you already have one.
2. Create a Droplet or Kubernetes cluster (optional)
- From the DigitalOcean dashboard, create a Droplet (virtual server) or
Kubernetes cluster to run your containers.
3. Install Docker on your Droplet (if using Droplet)
- SSH into your Droplet:
ssh root@YOUR_DROPLET_IP
- Install Docker following the official instructions or using this quick
command:
curl -fsSL https://get.docker.com -o get-docker.sh &&
sh get-docker.sh
4. Build your Docker image locally
- In your project root, create an appropriate Dockerfile.
- Build the Docker image:
docker build -t your-username/image-name:tag .
5. Create a DockerHub account (if you don’t have one)
- Sign up at https://hub.docker.com/.
6. Log in to DockerHub from your local machine
docker login
7. Push the image to DockerHub
docker push your-username/image-name:tag
8. Run the image on DigitalOcean (Droplet)
- Ensure Docker is installed on the Droplet.
- Pull the image from DockerHub:
docker pull your-username/image-name:tag
- Run the container:
docker run -d -p 80:INTERNAL_PORT --name
container-name your-username/image-name:tag
“Replace INTERNAL_PORT with the port your app listens on inside the
container.”
16
2. Connect your GitHub repo or directly your DockerHub image.
3. Configure automatic deployment from the image, set routes and resources.
4. DigitalOcean will deploy and manage your container automatically.
Costs
• Features:
- Up to 3 static sites only
- 1 GiB data transfer per app
- Automatic HTTPS, custom domain support, CDN
- Unlimited teams
- Deployment from GitHub and GitLab
- DDoS mitigation
- Manual scaling (no autoscaling)
• Limitations:
- Additional static sites: $3/month
- Additional data transfer: $0.02 per GiB
- Aplicaciones adicionales de sitios estáticos: $3/mes
- Transferencia adicional: $0.02 por GiB
• Includes:
- Up to 3 static sites only
- 1 GiB data transfer per app
- HTTPS, custom domain support, CDN
- Unlimited team members
• Limitations:
- Additional static sites: $3/month each
- Extra data transfer: $0.02 per GiB
17
apps-s- 1 512 50 GiB $5 No HTTPS, custom
1vcpu- MiB domains, unlimited
0.5gb teams,
GitHub/Docker
deployment
18
apps-d- 1 4 GiB 400 GiB $49 Yes More RAM
1vcpu-
4gb
apps-d- 2 4 GiB 500 GiB $78 Yes Higher CPUs and
2vcpu- RAM
4gb
apps-d- 2 8 GiB 600 GiB $98 Yes Increased RAM
2vcpu-
8gb
apps-d- 4 8 GiB 700 GiB $156 Yes More CPUs and
4vcpu- RAM
8gb
apps-d- 4 16 800 GiB $196 Yes Additional RAM
4vcpu- GiB
16gb
apps-d- 8 32 900 GiB $392 Yes Highest CPU and
8vcpu- GiB RAM available
32gb
apps-d- 2 8 GiB 600 GiB $98 Yes Idem anterior +
2vcpu- más RAM
8gb
apps-d- 4 8 GiB 700 GiB $156 Yes Idem anterior +
4vcpu- más CPUs y RAM
8gb
apps-d- 4 16 800 GiB $196 Yes Idem anterior +
4vcpu- GiB más RAM
16gb
apps-d- 8 32 900 GiB $392 Yes Idem anterior +
8vcpu- GiB más CPUs y RAM
32gb
Additional Costs
19
• Development Database (512 MiB): $7/month
• Container storage: $0.02/GB/month
• Vertical and horizontal scaling: Charged based on additional resources allocated
Raiway
Railway is a Platform as a Service (PaaS) that allows developers to easily deploy
applications. It offers integration with GitHub for automatic deployments, supports
Docker for packaging applications, and has a usage-based pricing model with options for
developers and teams.
Features
Fuction
• Project Creation
Users can create a new project on Railway using templates or from scratch. The
platform provides a user-friendly interface to guide users through the setup
process.
• Environment Configuration
After creating a project, users can configure the environment by selecting
necessary variables, such as database connections, API keys, and other
environment-specific settings. Railway allows for easy management of these
environment variables.
• Deployment
20
Railway supports deployment from various sources, including GitHub
repositories and Docker images. Developers can push their code to a connected
GitHub repository, and Railway can automatically trigger deployments based on
changes.
Users can also deploy applications directly by specifying Docker images, which
allows for consistent deployment across different environments.
• Automatic Scaling
Railway automatically manages the underlying infrastructure, scaling resources
up or down based on the application's demand. This means that as traffic
increases, Railway can allocate more resources without manual intervention.
• Monitoring and Logging
Railway provides tools for monitoring application performance and accessing
real-time logs. Developers can view logs for builds, deployments, and application
runtime, making it easier to identify and troubleshoot issues.
• Collaboration
Railway supports team collaboration, allowing multiple developers to work on the
same project. Team members can be invited to projects, and permissions can be
managed easily.
GitHub
Auto-Deploy: Connects to a GitHub repo and deploys on every git push.
21
Docker
Dockerfile Deployment: Automatically builds and runs from a Dockerfile.
dockerfile
CopiarEditar
FROM node:18
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .
CMD ["npm", "start"]
sh
CopiarEditar
docker build -t our-username/my-app .
docker push our-username/my-app
Costs
• Free Tier
22
Designed for initial projects, proof-of-concept testing, and personal
development.
Technical Specifications:
Monthly Credits: $5 USD (applicable to resource consumption).
Allocated Resources: 512 MB RAM, 0.1 shared vCPU.
Storage: 1 GB.
Limitations:
- Inactivity: Applications suspend after 30 minutes without traffic.
- No priority support.
Recommended Use Cases:
- Academic projects or technical prototyping.
- Low-traffic demos or non-critical applications.
• Starter Plan
Targets small-scale applications in pre-production or production environments
with moderate traffic.
Technical Specifications:
Base Cost: Starting at $5 USD/month (pay-as-you-go or fixed subscription).
Allocated Resources: 1 GB RAM, 0.5 vCPU.
Storage: 5 GB.
Operational Advantages:
- Continuous execution (no inactivity suspension).
- Basic email support.
Recommended Use Cases:
- Small APIs or microservices.
- Personal websites with stable traffic.
• Pro Plan
Mid-to-high performance solution for demanding applications.
Technical Specifications:
Base Cost: Starting at $20 USD/month.
Allocated Resources: 2 GB RAM, 1 dedicated CPU.
Storage: 20 GB.
Operational Advantages:
- Manual resource scaling.
23
- Priority technical support.
Recommended Use Cases:
- Growth-stage startups.
- SaaS applications with hundreds of concurrent users.
• Team Plan
Designed for development teams requiring centralized collaboration.
Technical Specifications:
Base Cost: $20 USD per user/month (minimum 2 users).
Resources: Equivalent to Pro Plan (2 GB RAM, 1 vCPU).
Additional Features:
- Role-based access control.
- Unified billing.
Recommended Use Cases:
- Small businesses with multiple developers.
- Projects requiring shared environments.
• Enterprise Plan
Custom solution for mission-critical workloads.
Technical Specifications:
Base Cost: Customized (contact sales).
Resources: Dedicated (CPU, RAM, scalable SSD storage).
Operational Advantages:
- High availability (99.9% SLA).
- 24/7 support with guaranteed response times.
- Compliance with security standards (SOC 2, GDPR).
Recommended Use Cases:
- Large-scale enterprise applications.
- Sensitive data processing systems.
Vercel
Vercel is a cloud platform specializing in frontend deployment with optimized
support for Next.js, React, and other modern web frameworks. This report provides a
detailed examination of Vercel's pricing tiers, technical specifications, and strategic
recommendations for different use cases.
24
Fuction
• Git-Centric Deployment
Vercel operates on a Git-based workflow:
- Connect your repository (GitHub, GitLab, Bitbucket)
- Automatic triggers: Pushes to connected branches deploy instantly
- Preview Deployments: Every pull request generates a live preview URL
- Production Deployments: Merges to main branch deploy to production
• Build Process
When code is pushed:
- Detection: Vercel auto-detects your framework (Next.js, React, Angular,
etc.)
- Installation: Runs npm install/yarn for dependencias
- Build: Executes framework-specific build command (e.g., next build)
Optimization:
- Code splitting
- Automatic image optimization
- SSG/SSR preparation
• Edge Network Architecture
Deployed apps leverage:
- Global Edge Network: 30+ regions worldwide
- Static Assets: Served directly from edge locations
Dynamic Content:
GitHub
Auto-connect: Link GitHub repos via OAuth.
25
Real-time deploys: Each git push triggers production or preview.
PR Environments: Unique URLs for testing.
Permissions: Requires repo + workflow access.
Steps to connect with Vercel
26
vercel login
3. Deploy your project manually
vercel
This command detects your project and deploys using your configuration.
Docker
Steps to Deploy Our Dockerized App on Vercel
27
6. Push to your GitHub repository
- Every push to the configured branch will trigger Vercel to build and
deploy your Docker container automatically.
7. Push to your GitHub repository
- Every push to the configured branch will trigger Vercel to build and
deploy your Docker container automatically.
Costs
• Hobby Plan (Free)
Cost: $0 USD/month
Included Resources:
- 100 GB bandwidth/month
- 100 GB-hours serverless
- 500K Edge Function invocations
- 1 concurrent build (45 min max)
Key Benefits:
28
- Perfect for personal projects
- Unlimited deploys
- GitHub/GitLab integration
Critical Limits:
- No DDoS protection
- Apps sleep after inactivity
• Pro Plan ($20 USD/user/month)
❖ Pricing Model:
Base: $20 per user
Overage:
- $0.40/GB bandwidth
- $20/1M Edge Function calls
Core Features:
- 1 TB bandwidth
- 3 concurrent builds
- Advanced analytics
Ideal For:
- Growing startups
- Client projects
• Enterprise Plan (Custom)
Starting at ~$1,500 USD/month
❖ Enterprise-Grade:
- Private networking
- Dedicated infrastructure
- 24/7 security monitoring
29
Comparative Table of PaaS Platforms
Heroku Quick deployments, Simple setup, wide language Dynos sleep in free tier, Eco Dynos with sleep
educational projects, small support, strong add-on ecosystem limited backend scaling mode
apps
DigitalOcean Flexible infrastructure, Customizable setup, Kubernetes, More complex setup, requires 3 static sites, 1 GiB data
scalable backend services powerful infrastructure server management skills transfer
Railway Rapid prototyping, small Fast setup, GitHub integration, Free tier suspends apps, lower $5 usage credit/month, 512
teams, CI/CD automation automatic scaling resource limits MB RAM
Vercel Frontend frameworks Optimized for frontend, global Limited backend support, 100 GB bandwidth, 500K
(Next.js, React), static sites CDN, serverless functions Docker integration is basic Edge Function calls
30
Conclusions
1. Each PaaS platform offers unique strengths that make it suitable for specific use
cases. Heroku is ideal for rapid prototyping and educational environments,
DigitalOcean offers flexible and scalable infrastructure for more experienced
developers, Railway excels in simplicity and speed of deployment, and Vercel is
optimized for frontend frameworks and static/dynamic web applications.
2. GitHub integration and CI/CD support are robust across all platforms, enabling
modern DevOps practices. However, the degree of automation and user-
friendliness varies, with Railway and Vercel offering the most seamless
experiences.
3. Docker support is present in all platforms, but DigitalOcean and Heroku provide
more control and flexibility for complex backend or full-stack applications.
Vercel’s Docker integration is more limited and geared toward frontend-focused
workflows.
4. Scalability and performance are key differentiators. Platforms like DigitalOcean
and Railway provide automatic scaling and high configurability, while Heroku
offers horizontal scaling through dynos, and Vercel leverages edge functions for
global scalability.
5. Pricing varies significantly, with free tiers suitable for testing and development,
but production-ready apps requiring careful cost consideration. Railway and
Vercel have the most generous free offerings, while DigitalOcean offers cost-
efficient scaling options.
Recommendations
1. For Students and Beginners: Start with Heroku or Railway, as they provide
simplified interfaces, strong documentation, and minimal setup for deploying
small applications.
2. For Full-Stack or API-Based Projects: Consider DigitalOcean, which offers
more powerful infrastructure and better support for backend workloads, database
management, and high traffic handling.
31
3. For Frontend-Heavy or JAMstack Applications: Use Vercel, especially if you
are working with frameworks like Next.js, React, or Angular, and value rapid
deployments and global delivery via CDN and edge networks.
4. For Teams and Collaboration: Railway and Vercel provide excellent support for
collaborative environments, automatic preview deployments, and role-based
access control.
5. For Docker-Centric Workflows: Choose Heroku or DigitalOcean, which allow
direct control over containers and better integration with custom Docker images.
6. Monitor Costs Proactively: As applications scale, evaluate billing models and
hidden costs (like data transfer overages or sleeping apps), especially in Heroku
and Vercel.
References
Heroku. (n.d.). Reference documentation. Heroku Dev Center. Retrieved May 11,
2025, from https://devcenter.heroku.com/categories/reference
Railway. (n.d.). About Railway. Railway Docs. Retrieved May 11, 2025, from
https://docs.railway.com/overview/about-railway
Vercel. (n.d.). Documentation. Vercel Docs. Retrieved May 11, 2025, from
https://vercel.com/docs
32
33