0% found this document useful (0 votes)
2 views33 pages

Report PaaS

This document provides a comprehensive analysis of various Platform-as-a-Service (PaaS) platforms, including Heroku, DigitalOcean, Railway, and Vercel, focusing on their features, GitHub integration, Docker support, and cost structures. It aims to assist developers in selecting the most suitable platform for their web development projects by comparing the advantages and limitations of each service. The report includes detailed sections on each platform's functionalities, deployment processes, and pricing models.

Uploaded by

leo chicaiza
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views33 pages

Report PaaS

This document provides a comprehensive analysis of various Platform-as-a-Service (PaaS) platforms, including Heroku, DigitalOcean, Railway, and Vercel, focusing on their features, GitHub integration, Docker support, and cost structures. It aims to assist developers in selecting the most suitable platform for their web development projects by comparing the advantages and limitations of each service. The report includes detailed sections on each platform's functionalities, deployment processes, and pricing models.

Uploaded by

leo chicaiza
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 33

Central University

of Ecuador
Faculty of Engineering and Applied
Sciences

Information Systems Engineering

Distributed Programming

Platform-as-a-Service
(PaaS)

Name: Leonardo Chicaiza


Elein Inaquiza

Date: Monday, 12th May 2025


1
Contents
Introduction ................................................................................................................................. 3
Objective ...................................................................................................................................... 3
Heroku.......................................................................................................................................... 3
Features .................................................................................................................................... 3
Fuction...................................................................................................................................... 4
GitHub...................................................................................................................................... 5
Docker ................................................................................................................................... ...7
Costs ......................................................................................................................................... 9
Digital Ocean ............................................................................................................................. 12
Features .................................................................................................................................. 12
Function ................................................................................................................................. 12
GitHub.................................................................................................................................... 14
Docker .................................................................................................................................... 15
Costs ....................................................................................................................................... 17
Raiway ........................................................................................................................................ 20
Features .................................................................................................................................. 20
Fuction.................................................................................................................................... 20
GitHub.................................................................................................................................... 21
Docker .................................................................................................................................... 22
Costs ....................................................................................................................................... 22
Vercel.......................................................................................................................................... 24
Fuction.................................................................................................................................... 25
GitHub.................................................................................................................................... 25
Docker .................................................................................................................................... 27
Costs ....................................................................................................................................... 28
Comparative Table of PaaS Platforms………………….……...…….………………………30

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:

• Buildpacks and Slugs


Buildpacks are scripts that automate the process of compiling application code
and creating a "slug," which is a pre-packaged version of the application
optimized for deployment.
When a developer pushes code to Heroku using Git, the platform identifies the
appropriate buildpack based on the application's language and dependencies.
The buildpack retrieves necessary dependencies and runtime, resulting in a slug
that is then deployed to dynos for execution.
• Dynos, Config Vars, and Releases
Dynos are lightweight, isolated containers that run applications on Heroku. They
can be scaled up or down based on demand.
Configuration variables (config vars) allow developers to manage sensitive
information without hardcoding it into the application. These can be set via the
command line or the Heroku Dashboard.
Each deployment or change in configuration creates a new release, allowing
easy rollbacks to previous versions if needed.
• Heroku Add-Ons
Heroku offers over 175 add-ons that provide additional services such as
databases, monitoring, and messaging.

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.).

Use the Heroku CLI for manual deployments

1. Install Heroku CLI


- Download and install Heroku CLI from:
https://devcenter.heroku.com/articles/heroku-cli
2. Log in from the terminal
bash
heroku login
3. Link your local repository to Heroku
- git remote add heroku https://git.heroku.com/your-app-name.git
“Replace your-app-name with your Heroku app name”
4. Deploy to Heroku from your local Git repository
git push heroku main
“Replace main if you use a different Branch”

Advanced steps for Continuous Integration (CI/CD)

1. Create a Heroku Pipeline


- In the Heroku dashboard, within your app, create a Pipeline to manage
environments such as development, staging, and production.
2. Enable Review Apps
- In the Pipeline settings, enable Review Apps to automatically deploy
branches opened as pull requests.
3. Configure GitHub Actions for automatic deployment

6
Basic workflow example “.github/workflows/deploy.yml”:

“You will need to add HEROKU_API_KEY as a secret in your GitHub repository.”


Docker
Steps to deploy Docker containers to 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 a Heroku application
- In the Heroku dashboard, click "New" → "Create new app".
- Assign a unique name and select your region.
3. Install Heroku CLI
- Download and install the Heroku CLI from
https://devcenter.heroku.com/articles/heroku-cli
4. Log in to Heroku Container Registry
bash
heroku container: login
5. Prepare your Dockerfile

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

Automate deployment with GitHub Actions

Example workflow file “.github/workflows/deploy-docker.yml”:

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:

- Not suitable for apps that require constant availability.


• Basic Dynos
Base Costs: Approx. $0.01 per hour, up to a maximum of $7 USD per month.
Features:
- Designed for small-scale personal projects.
- Dynos remain always active (no sleep mode).
- Support for up to ten process types.

9
- Includes free SSL and automatic certificate management.

Limitations:

- Does not include advanced scalability or high availability features.


• Standard Dynos
Costs:
- Standard 1X: $25 USD per month.
- Standard 2X: $50 USD per month.

Features:

- Suitable for business applications with moderate performance needs.


- Includes app metrics and zero downtime deployments.
- Support for up to 512 MB (1X) or 1 GB (2X) RAM.

Limitations:

- No dedicated support or advanced security features.


• Performance Dynos
Costs:
- Performance M: $250 USD per month.
- Performance L: $500 USD per month.

Features:

- Designed for mission-critical and high-performance applications.


- Includes dedicated CPU and higher RAM capacity.
- Ideal for applications with high traffic volume or intensive processing.

Limitations:

- Higher cost, suitable only for specific high-performance use cases.


• Enterprise
Costs: Custom pricing (contact sales).
Features:
- Comprehensive solution for large enterprises.
- Includes 24/7 support, regulatory compliance (PCI, HIPAA, ISO, SOC), and
private deployments.
- Scalability and customization based on client requirements.

10
Limitations:

- Requires direct negotiation and evaluation of specific needs.

Database Plans (Heroku Postgres)

• 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.

Additional Services and Add-ons

• 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.

Steps to Deploy Our App on DigitalOcean

1. Create and log in to your DigitalOcean account


- Visit https://www.digitalocean.com/ and create an account or log in if
you already have one.
2. Create a Droplet (virtual server) in DigitalOcean
- From the DigitalOcean dashboard, click “Create” → “Droplets”.
- Select the operating system, Droplet size, region, and options.
- Configure SSH access (recommended) or password.
- Create the Droplet.
3. Create a GitHub repository and have your code ready
- Ensure your project is pushed to a GitHub repository.
4. Configure SSH access from the Droplet to GitHub (for manual deployment)
- On your local machine, generate an SSH key if you don't have one:
ssh-keygen -t rsa -b 4096 -C [email protected]

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.

Automate deployments with GitHub Actions

Basic workflow example “.github/workflows/deploy.yml”:

Docker

Steps to Deploy Our Dockerized App on DigitalOcean

1. Create and log in to your DigitalOcean account

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.”

Use DigitalOcean App Platform for automatic deployment from DockerHub

1. In DigitalOcean Dashboard, choose App Platform → Create App.

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

Base Cost: $0/month

• 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

Base Cost: $0/month

• 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

Shared Instances Suitable for lightweight, low-traffic apps.

Plan ID vCPUs RAM Transfer Cost/Month Auto- Features


scaling

17
apps-s- 1 512 50 GiB $5 No HTTPS, custom
1vcpu- MiB domains, unlimited
0.5gb teams,
GitHub/Docker
deployment

apps-s- 1 1 GiB 100 GiB $10 No Includes 1 GiB


1vcpu- RAM
1gb-
fixed
apps-s- 1 1 GiB 150 GiB $12 Yes Manual autoscaling
1vcpu- enabled
1gb
apps-s- 1 2 GiB 200 GiB $25 Yes Increased RAM and
1vcpu- transfer
2gb
apps-s- 2 4 GiB 250 GiB $50 Yes Higher CPUs and
2vcpu- RAM
4gb

Suitable for lightweight, non-critical apps.

vCPUs RAM Transfer Cost/Month Auto-scaling


Plan ID
apps-s-1vcpu-0.5gb 1 512 50 GiB $5 No
MiB
apps-s-1vcpu-1gb- 1 1 GiB 100 GiB $10 No
fixed
apps-s-1vcpu-1gb 1 1 GiB 150 GiB $12 Yes
apps-s-1vcpu-2gb 1 2 GiB 200 GiB $25 Yes
apps-s-2vcpu-4gb 2 4 GiB 250 GiB $50 Yes

Dedicated Instances For critical, high-performance applications.

Plan ID vCPUs RAM Transfer Cost/Month Auto- Features


scaling
apps-d- 1 512 100 GiB $29 Yes Dedicated CPU,
1vcpu- MiB optimized RAM,
0.5gb SSL, automatic
autoscaling
apps-d- 1 1 GiB 200 GiB $34 Yes Increased RAM
1vcpu-
1gb
apps-d- 1 2 GiB 300 GiB $39 Yes Additional RAM
1vcpu-
2gb

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

For apps with higher performance needs.

Plan ID vCPUs RAM Transfer Cost/Month Auto-scaling


apps-d-1vcpu-0.5gb 1 512 MiB 100 GiB $29 Yes
apps-d-1vcpu-1gb 1 1 GiB 200 GiB $34 Yes
apps-d-1vcpu-2gb 1 2 GiB 300 GiB $39 Yes
apps-d-1vcpu-4gb 1 4 GiB 400 GiB $49 Yes
apps-d-2vcpu-4gb 2 4 GiB 500 GiB $78 Yes
apps-d-2vcpu-8gb 2 8 GiB 600 GiB $98 Yes
apps-d-4vcpu-8gb 4 8 GiB 700 GiB $156 Yes
apps-d-4vcpu-16gb 4 16 GiB 800 GiB $196 Yes
apps-d-8vcpu-32gb 8 32 GiB 900 GiB $392 Yes

Additional Costs

• Data transfer over limit: $0.02 per GiB


• Dedicated IP: $25/month

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

• Easy Deployment: Railway enables developers to create and deploy applications


with minimal configuration, streamlining the process of moving applications from
development to production.
• GitHub Integration: Changes in the code can trigger automatic deployments,
simplifying the development and continuous delivery workflow.
• Docker Support: Developers can package their applications in Docker
containers, ensuring consistent performance across different environments.
• Scalability: Railway automatically manages the underlying infrastructure,
allowing applications to scale according to demand without manual intervention.
• User -Friendly Interface: The platform provides an intuitive interface that makes
project management and application status monitoring easy.

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.

Preview Deployments: Creates temporary environments for Pull Requests (PRs).

Rollbacks: Revert to previous versions via the dashboard.

Steps to Deploy Our App on Railway

1. We log in to Railway → Click "Login with GitHub".


2. We create a new project → "Deploy from GitHub repo".
3. We authorize GitHub access.
4. We select our repository (e.g., our-username/my-app).
5. Railway auto-detects the language (Node.js, Python, etc.).
6. We set environment variables in "Variables" (if needed).
7. Done! Our app will deploy to https://mi-app.up.railway.app.

21
Docker
Dockerfile Deployment: Automatically builds and runs from a Dockerfile.

Pre-built Images: Can deploy from public/private Docker registries.

Custom Builds: Configure build steps in railway.json.

Steps to Deploy Our Dockerized App on Railway

1. We prepare our Dockerfile (example for Node.js):

dockerfile
CopiarEditar
FROM node:18
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .
CMD ["npm", "start"]

2. We optionally push the image to Docker Hub:

sh
CopiarEditar
docker build -t our-username/my-app .
docker push our-username/my-app

3. We log in to Railway → Click "New Project".


4. We select "Deploy from Docker Image".
5. If we're using Docker Hub, we enter: our-username/my-app:latest.
6. Otherwise, we choose "Deploy from Dockerfile" and upload our project.
7. We set environment variables in "Variables".
8. Done! Railway will build and deploy the container.

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:

- Serverless Functions execute near users


- Edge Functions run at closest edge location
• Serverless Execution
API Routes: Deployed as serverless functions
Runtime Options:
- Node.js
- Edge Runtime (WebAssembly, lightweight JS)
- Cold Start Mitigation: Progressive booting of functions

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

1. Create an account and log in to Vercel


- Visit https://vercel.com/ and sign up or log in with GitHub for
easier integration.
2. Create a project in Vercel linked to GitHub
- In the Vercel dashboard, click "New Project".
- Authorize Vercel to access your GitHub account if you haven't
already.
- Select the GitHub repository you want to deploy.
3. Configure deployment options
- Choose the branch you want to deploy (default is usually main).
- Configure framework and build commands if needed (Vercel auto-
detects many frameworks).
- Add environment variables your project might need.
4. Deploy the project
- Vercel automatically deploys on every push to the configured
branch.
- You can monitor deployment status and view logs from the
dashboard.
5. Set up custom domains (optional)
- You can add custom domains to your project via the "Domains"
section in the dashboard.

Local setup script

1. Set up custom domains (optional)


- You can add custom domains to your project via the "Domains"
section in the dashboard.
- Install Vercel CLI
npm i -g vercel
2. Log in using Vercel CLI

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

1. Create and log in to Vercel


Visit https://vercel.com/ and sign up or log in.
2. Create a project in Vercel
- In the dashboard, click "New Project".
- Connect your GitHub repository that contains your Docker
project or set up a new one.
3. Prepare a Dockerfile in your repository
- Ensure your project has a Dockerfile at the root that defines how to build
the Docker image.
Basic 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 the Dockerfile as needed”
4. Configure deployment in Vercel
- Vercel automates deployment, but for Docker projects you need to
configure a vercel.json file with custom build commands.
Basic example vercel.json:

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.

Manual deployment with Vercel CLI

1. Push to your GitHub repository


- Every push to the configured branch will trigger Vercel to build and
deploy your Docker container automatically.
npm i -g vercel
2. Login to Vercel CLI
vercel login
3. Deploy your Docker project manually
vercel - - prod

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

Platform Best For Strengths Limitations Free Tier

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

DigitalOcean. (n.d.). Products documentation. DigitalOcean Docs. Retrieved May


11, 2025, from https://docs.digitalocean.com/products/

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

You might also like