Hello, below I will write three posts series about the deployment of Ruby on Rails application into Azure Cloud Services where we compare them and try to describe pros and cons and hope it will help you to pick your Azure Service for running the application. Of course, this is not a silver bullet and it all depends on your current situation, application state, and where you plaining to be in terms of scaling and performance.
As a start point, we deploy an e-commerce shop using popular open-source Ruby on Rails engine called Spree, we fork it and apply our changes to deploy to Azure Cloud
Spree Starter (formerly Spark Starter Kit)
This is a Ruby on Rails application minimal template with Spree Commerce pre-installed, fully dockerized and ready to be deployed to Heroku.
Launch on Heroku
Install required tools and dependencies:
- Docker with docker-compose
Run setup script
Import sample data such as products, categories, etc (optionally)
docker-compose run web rake spree_sample:load
Running the project
Running rails console
docker-compose run web rails c
docker-compose run web bash bundle exec rspec
Adding new gems
Gemfile and run
bundle install docker-compose build
You will need to restart the server if running:
bundle update spree docker-compose build
|DEBUG_ASSETS||Enables/disables asset debugging in development||false|
|DB_POOL||database connection pool||5|
|MEMCACHED_POOL_SIZE||memcache connection pool||5|
|SENDGRID_API_KEY||API key to interface Sendgrid API|
Spree Starter (formerly Spark Starter Kit) is copyright…
We will compare Azure App Service, Azure Virtual Machines, and Azure Kubernetes Service.
It is a managed platform for the deployment of your containerized application. Deploy any application at your choice: Node.js, ASP.NET, .NET Core, Python, Ruby, Java, Go. Also has a multi-container application deployment like managed docker-compose into the cloud. Build your application image and deploy them using compose YAML definition.
pros: free pricing plan, headless setup
cons: limitations, preview mode
It's a classic Virtual Machine with different CPU/RAM has plans. If you need or want to manage and control everything by yourself.
pros: full control of OS & application-level
cons: effort to setup and scale
Managed Kubernetes Cluster - if you plan to be able to scale fast without any manual maintenance. Ability to manually one-click adding resources to the cluster or automatically depends on your loading through Azure CLI.
pros: easy to scale
cons: high learning curve
There is no silver bullet if you are small and no planning to grows in case of traffic because for example sale some niche product then App Service will be preferable. If you are a mid-size project and planning to grow at the same time have developers to maintain everything may be better to use your own docker swarm or Kubernetes cluster at Azure Virtual Machines. In another case, if you are don't want to be the maintainer for your own servers by yourself but same time wants to be able to scale fast then managed Kubernetes Cluster will be answering for you.
In the following posts, we deploy to all these services and you will pick more relevant solutions for you.
- CI/CD pipeline to build, test and push docker image to Azure container registry
- Azure App Service deployment
- Azure Virtual Machines deployment
- Azure Kubernetes Service deployment
These four articles will be published oned by one next few weeks.
The next one "Build, Test and push Docker image to Azure Container Registry using Github Actions" described how to build the docker image, run tests, and push it to Azure Container Registry. And uncovering the pros and cons of few approaches to build your CI pipeline coming soon next week.
Subscribe to not miss a notification next article about Github Actions docker image build and push to Azure Container Registry
You'll share your email address, username, name, and AzureFirst profile URL with. Once you do this, you cannot undo this.