What is Application Hosting Services?

Edward Martins · Jan 24, 2020
what is application hosting service
What is Application Hosting Services?

Everything about Application Hosting!

Application Hosting Services is a software as a service (SaaS) solution that enables users to execute and deploy a software application like a web app built using NodeJS entirely from the remote cloud infrastructure.

The user's application is delivered and managed remotely. 

It means that the provider delivers the user's application on one set of common code and data definitions that are consumed by the user's application at any time on a pay-for-use or subscription basis depending on metrics.

Application Hosting Services is a software as a service (SaaS) solution that enables users to execute and deploy a software application like node.js web app entirely from the remote cloud infrastructure. The user's application is delivered and managed remotely. It means that the provider delivers user's application on one set of common code and data definitions that is consumed by user's application at any time on a pay-for-use basis or as a subscription-based on use metrics.

User's application is deployed easily compared to conventional software deployment as they require no upfront installation and have minimal integration requirements. 

What are the benefits of Application Hosting?

There are a few important key benefits of using Application Hosting Services:

Total Cost of Operation (TCO) – Application Hosting Services turns the costs of owning and maintaining data centers to on-demand pricing. This means that there are lower initial costs and you can operate on a leaner infrastructure.

Speed to market (S2M) – Affordable, fast, and available compute resources let businesses quickly move past the old steps of developing, test, migrate, deploy and re-architect.

Scalability –  Application Hosting Services help to avoid failures (built-in fault tolerance and redundancy) that occurs, for example, when a server is overwhelmed with requests, due to congested networks or other unexpected events.

Productivity – You can scale infinitely to meet customer demand (or lack thereof), and don’t have to upgrade your servers or databases constantly. 

Performance – On-demand scalability, or elasticity lets organizations save on costs by paying for usage, not the maximum capacity needed.

Reliability – Cloud-hosted software is often much more reliable than in-house infrastructure. With cloud-based software, you can offer a Service Level Agreement (SLA) that guarantees 24/7/365 and over 99.99% availability to your users.

The application hosting market segmentation is as follows:

By Service Type

  • Application Security
  • Application Monitoring
  • Application Programming Interface Management
  • Infrastructure Services
  • Database Administration
  • Backup and Recovery

By Hosting Type

  • Colocation Hosting
  • Managed Hosting
  • Cloud Hosting
  • Infrastructure as a Service
  • Platform as a Service
  • Software as a Service

By Organization Size

  • Small and Medium Enterprises
  • Large Enterprises

By Application

  • Mobile Based
  • Web-Based

By End Users

  • Banking, Financial Service, Insurance (BFSI)
  • Media and Entertainment
  • Energy and Utilities
  • Healthcare
  • IT and Telecom
  • Manufacturing
  • Retail and E-commerce
  • Others

How does Jexia deliver easy, powerful and scalable application hosting integrations?

We all dislike/hate repetitive work that keeps us occupied. With this in mind, we made application deployment so you can free your time and focus on other tasks.

Jexia Application Hosting provides solutions that allow low maintenance, easy-to-access, affordable and 24/7 support for:

  • Hosting for frameworks (like React, VueJS, Angular), NodeJS applications 
  • Subdomain in Jexia zone (jexia.app) available on the internet
  • Possibility of adding your custom domain (available for paid projects only)
  • SSL certificates for your subdomain
  • More free time without (dev ops) headaches to select, setup, control and monitor all of those points

Hosting your apps fastly with control and confidence.

Currently, you can host on Jexia Application Hosting a Node JS application.  

All can be started in one click. AppHosting can be used as Static File Hosting as well, using for example React, VueJs, and Angular as frameworks. 

Only what will be needed is to add the HTTP server as a dependency and make sure it listens on port 80.

What is needed for this? 

  1. Github repo (open or private)
  2. Project in Jexia
  3. A static application that supports NodeJS version 12 and NPM 
  4. Your application must contain package.json file with a build and start scripts
  5. The application must use port 80 for its API
  6. Application must listen 0.0.0.0

How does it work? 

When you initiate your application hosting, Jexia will clone your GitHub repo into a secure environment. 

In this environment Jexia will run npm install, npm run build. As soon as it is finished, the repo will be deployed into the cloud environment and it will generate URL for your app. 

When the deployment is done Jexia will run the npm run start command from your package.json file. 

As a last step cloned repo will be deleted from the our secure environment. 

Your app must expose PORT: 80. Currently, we support NodeJS 12.10 and NPM

How do I do it? 

Step 1: Create a static application:

Step 2: Check if your application has package.json file

First of all, you need to be sure that your repo contains a package.json file. Inside it must contain the build and start commands.  See an example below:

As you can see in our example we use next to the start script:

"start": "HTTP-server ./dist -p 80"

We use HTTP-server to organize serving for static files. 

Here we listen to port 80 and use the dist folder, which contains our release. 

More options can be found on the HTTP-server package page. Feel free to implement the approach that suits you. All you need to remember is to use PORT:80 for your server.

Step 3: Organize your projects at Jexia

For Open Source GitHub projects.

Go to the Application Host menu, then click on 'Setup Application'

The next page is related to the GitHub repo setup. 

You can get it by clicking the Clone or Download button on the GitHub webpage.

Jexia will check if it can read the repo and will show the repo name on the page. 

Just under the name, you will see the generated URL for your application which you can use after the deployment is done.

Under the General tab, you can add environment variables. 

Inside your NodeJS app, those variables will be available via: 

process.env.<env name>

Under the Settings tab, you can adjust your GitHub repo

As soon as the setup is done and you are ready to go - click the Deploy button. 

You will be transferred to a page where you can select your API Key and API Secret. That information will be transferred to your NodeJS app and will be accessible as:

process.env.API_KEY
process.env.API_SECRET

It is not possible to use process.env.* approach with Angular, VueJS, React applications. Otherwise, your API Key and Secret will be available on the frontend. In this case, we recommend using the NodeJS backend, which will make additional validation. NodeJS can be run with Jexia AppHosting.    

By clicking Done the deployment process will start. You will be able to see an indication if the deployment is done or not. Depending on the size of the repo deployment process this can take a few minutes.

There are two states for deployment: Done (green dot) or Fail (red dot). 

In the case of a Fail (red dot), confirm you can build your repo locally, check if you have a package.json with the build and start sections, and try to re-deploy by clicking the Deploy button again. Please feel free to contact our support team as well!

Failures can also be caused if you try to use a private repo with a free project. Then the deployment will fail with the message: Could not clone repo….

When all goes well you will see a green dot:

As soon as the deployment is done your app will be accessible via a URL marked in blue on the screen.

How to update the application once deployed?

There are two possibilities to make redeployment. Jexia is supporting deployment without rebuilding code.

  1. When you need to update environment variables only or a full rebuild
  2. When the code will be downloaded from GitHub, build and redeploy with all mentioned environment variables.

To initiate redeployment, you need to click the Redeploy button (top right), which will appear as soon as the initial deployment is finished in the place of the Deploy button. 

After you will see the window with deployment option, where you can specify your API_KEY and API_SECRET as well as switch between building options. By default, we redeploy only environment variables, without pulling repository from GitHub and rebuild source code.

For private GitHub projects.

The flow for private repositories is almost the same. The only difference is that at the beginning you need to have a Jexia subscription and provide access for Jexia to your repo.

As soon as you have a subscription you will be able to see another button that will allow you to authorize Jexia in your private repo.

The rest of the process is the same as previously described.

Custom domain

There is a possibility to add to your application your own domain.

For this you need to have:

  1. Successfully deployed application 
  2. Domain have A DNS record and this record should point to your application IP
  3. Only one A record per domain should exist
  4. After the domain is added to Jexia configuration, you will need to redeploy your App. You can redeploy without rebuild option (see above) 

It might take some time until your App will be accessible via domain as DNS refreshment needs to happen.

It might take some time until your App will be accessible via domain as DNS refreshment needs to happen.

Delete Application

To delete the application you can go under the Settings tab and then use the Delete button. You would need to enter the repo name to confirm the delete operation. 

Be aware that you are not able to delete the project until you have the application running.