DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Refcards Trend Reports Events Over 2 million developers have joined DZone. Join Today! Thanks for visiting DZone today,
Edit Profile Manage Email Subscriptions Moderation Admin Console How to Post to DZone Article Submission Guidelines
View Profile
Sign Out
Refcards
Trend Reports
Events
Zones
Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks

Golang Hosting From Jelastic PaaS

Jelastic is a great hosting solution for projects based in all kinds of popular web dev language. And now they support Go!

Tetiana Fydorenchyk user avatar by
Tetiana Fydorenchyk
·
Nov. 08, 18 · Tutorial
Like (2)
Save
Tweet
Share
6.60K Views

Join the DZone community and get the full member experience.

Join For Free

Jelastic PaaS is a truly multilingual cloud platform, which currently provides Java, PHP, Python, Ruby, Node.js, .NET, and, from now on, Go environments for running projects of all sizes and various natures. In this article, you'll get acquainted with the distinctive features of the Go hosting platform and will be introduced to the Go-related possibilities within Jelastic PaaS.

Go Environment Hosting

In order to host your Go application, you need to create the appropriate environment using the Jelastic Topology Wizard.

Switch to the Go engine tab, add Golang as your application server and any other software stack required for your project (e.g. load balancers, databases, or shared storage). If needed, adjust your environment nodes count, cloudlet limits for RAM and CPU, attach Public IPs, etc. 

Note: All instances at Jelastic are completely isolated containers, which are evenly distributed across the available hardware nodes (physical servers or VMs) using automatic anti-affinity rules. This eliminates the risk of application downtime, i.e. it ensures high availability.

For more information about setting up the environment, see the Create Environment documentation. 

Golang Versioning

Currently, the following versions of the Golang stack template are supported by Jelastic:

  • Golang 1.9.1
  • Golang 1.9.2
  • Golang 1.9.4
  • Golang 1.10

You can choose the preferred version during environment creation and change it later through container redeploy. Herewith, all the custom data inside the node(s) will be saved, which, for example, allows you to easily upgrade your software version upon the new stack's template release.

Go Application Deployment

After environment creation, you can deploy your Go project from the Git repository (the deployment from application archive will be implemented in the upcoming platform release).

It is possible to customize the deployment process by providing or adjusting the following container variables:

  • GO_RUN - sets a name of the executable binary file (if not specified, the deployment script will try to locate one based on the Git project name).
  • GOPATH - defines the deployment folder (/home/jelastic/webapp, by default).
  • GO_BUILD_OPTIONS - provides additional options for the build operation (-a , by default, to force rebuilding of packages that are already up-to-date).
  • GO_RUN_OPTIONS - provides additional options for the run operation.

During deployment, Jelastic PaaS automatically performs the following steps:

  • Parses the provided Git URL to get a link to the Go project.
  • Downloads the package with all the dependencies using the go get command.
  • Builds the project with the  go build command (using the additional options specified in the GO_BUILD_OPTIONS variable).
  • Runs the binary defined by the GO_RUN variable with the  go run command (using the additional options specified in GO_RUN_OPTIONS).

After successful deployment, the Go project is located in the directory set with the GOPATH variable. Herewith, the workspace hierarchy inside is based on the requirements in the official documentation.

You can learn more about Go applications deployment via the appropriate documents:

  • Deployment Manager
  • Deployment Guide
  • Auto-Deploy Overview
  • Deployment Hooks

Domains Management

With Jelastic PaaS, you can easily bind an external (custom) domain name to your Go application to be used instead of the default environment domain. Depending on the entry point used, there are two options:

  • CNAME redirect if using Shared Load Balancer; is recommended for dev and test environments.
  • DNS A Record if using Public IP; can handle high traffic load and is suitable for production environments.

Additionally, you can easily swap domains to redirect traffic from one environment to another (e.g. to switch to the newer application version without downtime).

Tip: For access via a Public IP, the traffic can be redirected to another environment with the help of the SwapExtIps API method (also, available via the CLI).

Automatic Vertical Scaling

Automatic vertical scaling is ensured by Jelastic ability to dynamically provide the resources (RAM and CPU) for a server within predefined limits according to its current demands, with no manual intervention required. This feature guarantees you never overpay for unused resources and saves your time due to eliminating the necessity of handling the load-related adjustments or architectural changes.

The scaling process is handled by the platform automatically, you just need to specify the lower and upper of cloudlets limit (each one equals to 128 MiB of RAM and 400 MHz of CPU) for your Go server through the topology Wizard:

Your application will work within these limits, reducing resource consumption when the load is down or increasing them when the load is up. Thus, you only pay for the resources that are actually consumed. For more information, please refer to the automatic vertical scaling documentation.

Manual Horizontal Scaling

Extra Golang servers can be easily added via the topology wizard during environment creation or adjustment. Just click the "+" button within the Horizontal Scaling section and add the required number of instances.

Image title

The maximum number of the same-type servers within a single environment layer depends on a particular hosting provider's settings (usually this limit stands for 16 nodes and can be enlarged by sending the appropriate request to support).

Also, you'll notice that upon the Golang server scaling, the load balancing node is automatically added to the environment topology (required for the proper requests distribution). Find more details about manual horizontal scaling in the documentation.

Automatic Horizontal Scaling

Automatic horizontal scaling is implemented through tunable triggers, which allow you to increase or decrease the number of nodes due to the application load. To configure automatic scaling, open the environment Settings > Monitoring > Auto Horizontal Scaling section and click the Add button.

Here, you can configure the triggers for specific stacks and resources (CPU, RAM, Network, Disk) by adjusting the conditions of scaling.

Learn more about automatic horizontal scaling in the corresponding document.

In addition, there is a set of other features and functionality provided by Jelastic Go hosting, among them:

  • Custom or Jelastic SSL.
  • Public IPv4 and IPv6.
  • Wide choice of managed databases.
  • Container firewalls, endpoints, and environment isolation.
  • User-friendly UI and direct SSH access for management.
  • Open API and Cloud Scripting for automation.
  • Pay-as-you-use pricing model.
  • Collaboration functionality for teamwork.
  • Multi-cloud distribution.

The released Go cloud hosting is ready for running dev, test and production environments. The registration is available at Jelastic PaaS.

Golang application Scaling (geometry)

Published at DZone with permission of Tetiana Fydorenchyk, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

Popular on DZone

  • Using JSON Web Encryption (JWE)
  • Beginners’ Guide to Run a Linux Server Securely
  • 7 Awesome Libraries for Java Unit and Integration Testing
  • Kubernetes vs Docker: Differences Explained

Comments

Partner Resources

X

ABOUT US

  • About DZone
  • Send feedback
  • Careers
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 600 Park Offices Drive
  • Suite 300
  • Durham, NC 27709
  • support@dzone.com
  • +1 (919) 678-0300

Let's be friends: