SlideShare a Scribd company logo
1 of 26
Download to read offline
Shelly Cloud



Painless Ruby deployment
                      Giedrius Rimkus
                            2012 July
Cloud Computing?

Pay-per-use
On-demand
Computing resources
Alternatives?
EngineYard http://www.engineyard.com
Heroku http://www.heroku.com
Scalarium http://www.scalarium.com
others..
What Shelly Cloud is?
Delivering platform as a service

Deployments are done by pushing with git
Example of git push
  giedrius@rubylt:~/Projects/store (master) $ git push
  gstore master
  Counting objects: 81, done.
  Delta compression using up to 4 threads.
  Compressing objects: 100% (72/72), done.
  Writing objects: 100% (81/81), 27.62 KiB, done.
  Total 81 (delta 6), reused 0 (delta 0)
  remote:
  remote: ---> Received push to cloud 'gstore'
  remote: ---> Checking Gemfile
  remote: ---> Push accepted
  remote: ---> Start your cloud using: `shelly start --
  cloud gstore`
  remote:
  To git@git.shellycloud.com:gstore.git
  * [new branch]      master -> master
Aim
Helping developers
Developers focus on building application and
not on deployment nor infrastructure
Requirements
- Ruby versions
     ●   MRI Ruby (1.9.3)
     ●   MRI Ruby (1.9.2)
     ●   Ruby Enterprise Edition (1.8.7)

-   Bundler
-   "shelly-dependencies" gem (optional)
-   Rails 3.x support
-   Rails 2.3.x support
-   Rack-based apps
-   Gems with native extensions
Shelly Cloud
○ Running Ruby applications
○ It doesn't have to be Rails application
  ○ Sinatra
  ○ or any other which is compatible with Rack
    interface




                                       full list of supported frameworks
              https://github.com/rack/rack#supported-web-frameworks
Shelly Gem
A tool for managing clouds on Shelly Cloud
from command line.
Cloudfile
Your cloud management place

You can edit settings of your Cloud by making
changes to the Cloudfile, committing them to
the git repository and pushing those changes
to the shelly git remote.
Features
○   Running periodic tasks
○   Background processing
○   Storing Files
○   Caching (frontend, backend)
○   Sending emails
○   SSL support
○   Websockets support
Running periodic tasks
Cron job is a periodic task
Whenever

Modify Clouldfile
1. Add whenever to Gemfile
   gem "whenever"
2. Run bundle
3. $ bundle exec wheneverize .
4. define cronjobs in config/schedule.rb

                          env :MAILTO, "email@example.com"
Background processing
Delayed_jobs gem is used for this task.
Set up one of your apps for delayed_jobs
Add it to your Gemfile
Add jobs*
Commit and push (deploy)



                   * https://github.com/collectiveidea/delayed_job/blob/master
Storing files
Kind of sharing files between instances and
deployments

For example
uploads/
Caching
Frontend caching using Varnish
Backend caching using Memcache.
  ● cache is cleared after every deploy.
Sending emails
Sending emails works out of the box
SPF record (trusted mails)
1 mail server IP
SSL Support
When using domain code-name.shellyapp.com
you get free SSL.

If you want own SSL, you will have to purchase
SSL certificate from any CA as well as private
IP from Shelly Cloud.
Websockets
You can run a separate thin server on any of
your servers that will handle websockets
traffic.

Create a websockets.ru file in the root
directory of your project. Use this file to
configure the application handling websockets
traffic.
Architecture
Supported Databases

PostgreSQL

MongoDB

Redis



        https://shellycloud.com/documentation/supported_databases
Shelly Console
You can use the shelly gem to run rails console
or IRB for rack applications.

Console is ran on random application server
with user privileges.

To run console, use shelly console
Price comparison / Small app
3 thin workers, 1 delayed_job, 1GB database

Heroku
$107(workers) + $15 (shared database) = $122 ~ €100

EngineYard
$90 (small instance, 1 CPU, 1.7GB of RAM) ~ €73
(no backups included)

Shelly Cloud
€40(1 large instance, 2 CPUs, 2GB of RAM) + €0.60 (1 GB DB storage) = €40.6
Price comparison / Medium app
10 workers, 3 delayed_job, 10GB database (dedicated)

Heroku
$431 (workers) + $250 dedicated database = $681 ~ €558

Shelly Cloud
€160 (4 large instances for workers, 2 GB RAM, 2 CPUs) + €40 (1 large instance
dedicated db) + €6 = €206
In total 10 GB of RAM, 10 virtual CPUs

EngineYard (Similar in case of RAM to shelly setup)
$444 (2 medium inst 3.75GB of RAM (each), 2 CPUs, 1 small 1 CPU, 1.7GB of
RAM),
$24 (storage and bandwidth) = $468 ~ €384
Let's do it in
practice


LIVE deployment on   Shelly Cloud
Questions?
Thank You



        Giedrius Rimkus
             Software Engineer
                    @giedriusr

More Related Content

What's hot

Infrastructure as code with Puppet and Apache CloudStack
Infrastructure as code with Puppet and Apache CloudStackInfrastructure as code with Puppet and Apache CloudStack
Infrastructure as code with Puppet and Apache CloudStack
ke4qqq
 

What's hot (20)

OSv at Cassandra Summit
OSv at Cassandra SummitOSv at Cassandra Summit
OSv at Cassandra Summit
 
Automation with Packer and TerraForm
Automation with Packer and TerraFormAutomation with Packer and TerraForm
Automation with Packer and TerraForm
 
Amazon EC2 Container Service in Action
Amazon EC2 Container Service in ActionAmazon EC2 Container Service in Action
Amazon EC2 Container Service in Action
 
CloudConf2017 - Deploy, Scale & Coordinate a microservice oriented application
CloudConf2017 - Deploy, Scale & Coordinate a microservice oriented applicationCloudConf2017 - Deploy, Scale & Coordinate a microservice oriented application
CloudConf2017 - Deploy, Scale & Coordinate a microservice oriented application
 
Couch to OpenStack: Neutron (Quantum) - August 13, 2013 Featuring Sean Winn
Couch to OpenStack: Neutron (Quantum) - August 13, 2013 Featuring Sean WinnCouch to OpenStack: Neutron (Quantum) - August 13, 2013 Featuring Sean Winn
Couch to OpenStack: Neutron (Quantum) - August 13, 2013 Featuring Sean Winn
 
Kubernetes in 30 minutes (2017/03/10)
Kubernetes in 30 minutes (2017/03/10)Kubernetes in 30 minutes (2017/03/10)
Kubernetes in 30 minutes (2017/03/10)
 
Docker Swarm 0.2.0
Docker Swarm 0.2.0Docker Swarm 0.2.0
Docker Swarm 0.2.0
 
Cloudinit
CloudinitCloudinit
Cloudinit
 
Consuming Cinder from Docker
Consuming Cinder from DockerConsuming Cinder from Docker
Consuming Cinder from Docker
 
Running High Performance & Fault-tolerant Elasticsearch Clusters on Docker
Running High Performance & Fault-tolerant Elasticsearch Clusters on DockerRunning High Performance & Fault-tolerant Elasticsearch Clusters on Docker
Running High Performance & Fault-tolerant Elasticsearch Clusters on Docker
 
How to operate containerized OpenStack
How to operate containerized OpenStackHow to operate containerized OpenStack
How to operate containerized OpenStack
 
Cloud init and cloud provisioning [openstack summit vancouver]
Cloud init and cloud provisioning [openstack summit vancouver]Cloud init and cloud provisioning [openstack summit vancouver]
Cloud init and cloud provisioning [openstack summit vancouver]
 
Docker Machine & Docker Swarm
Docker Machine & Docker SwarmDocker Machine & Docker Swarm
Docker Machine & Docker Swarm
 
OpenStack Development Using devstack
OpenStack Development Using devstackOpenStack Development Using devstack
OpenStack Development Using devstack
 
Infrastructure as code with Puppet and Apache CloudStack
Infrastructure as code with Puppet and Apache CloudStackInfrastructure as code with Puppet and Apache CloudStack
Infrastructure as code with Puppet and Apache CloudStack
 
Docker up and running
Docker up and runningDocker up and running
Docker up and running
 
Kubernetes Architecture and Introduction – Paris Kubernetes Meetup
Kubernetes Architecture and Introduction – Paris Kubernetes MeetupKubernetes Architecture and Introduction – Paris Kubernetes Meetup
Kubernetes Architecture and Introduction – Paris Kubernetes Meetup
 
CoreOS + Kubernetes @ All Things Open 2015
CoreOS + Kubernetes @ All Things Open 2015CoreOS + Kubernetes @ All Things Open 2015
CoreOS + Kubernetes @ All Things Open 2015
 
Automating CloudStack with Puppet - David Nalley
Automating CloudStack with Puppet - David NalleyAutomating CloudStack with Puppet - David Nalley
Automating CloudStack with Puppet - David Nalley
 
CoreOS in a Nutshell
CoreOS in a NutshellCoreOS in a Nutshell
CoreOS in a Nutshell
 

Similar to Painless ruby deployment on shelly cloud

Docker Online Meetup #3: Docker in Production
Docker Online Meetup #3: Docker in ProductionDocker Online Meetup #3: Docker in Production
Docker Online Meetup #3: Docker in Production
Docker, Inc.
 

Similar to Painless ruby deployment on shelly cloud (20)

Cloud meets Fog & Puppet A Story of Version Controlled Infrastructure
Cloud meets Fog & Puppet A Story of Version Controlled InfrastructureCloud meets Fog & Puppet A Story of Version Controlled Infrastructure
Cloud meets Fog & Puppet A Story of Version Controlled Infrastructure
 
Postgres the hardway
Postgres the hardwayPostgres the hardway
Postgres the hardway
 
[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview
[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview
[EXTENDED] Ceph, Docker, Heroku Slugs, CoreOS and Deis Overview
 
Infrastructureascode slideshare-160331143725
Infrastructureascode slideshare-160331143725Infrastructureascode slideshare-160331143725
Infrastructureascode slideshare-160331143725
 
Infrastructureascode slideshare-160331143725
Infrastructureascode slideshare-160331143725Infrastructureascode slideshare-160331143725
Infrastructureascode slideshare-160331143725
 
Infrastructure as code: running microservices on AWS using Docker, Terraform,...
Infrastructure as code: running microservices on AWS using Docker, Terraform,...Infrastructure as code: running microservices on AWS using Docker, Terraform,...
Infrastructure as code: running microservices on AWS using Docker, Terraform,...
 
Puppet at Opera Sofware - PuppetCamp Oslo 2013
Puppet at Opera Sofware - PuppetCamp Oslo 2013Puppet at Opera Sofware - PuppetCamp Oslo 2013
Puppet at Opera Sofware - PuppetCamp Oslo 2013
 
Build optimization mechanisms in GitLab and Docker
Build optimization mechanisms in GitLab and DockerBuild optimization mechanisms in GitLab and Docker
Build optimization mechanisms in GitLab and Docker
 
Dockerizing a Symfony2 application
Dockerizing a Symfony2 applicationDockerizing a Symfony2 application
Dockerizing a Symfony2 application
 
Shelly cloud & heroku & engineyard. Pros & Cons
Shelly cloud & heroku & engineyard. Pros & ConsShelly cloud & heroku & engineyard. Pros & Cons
Shelly cloud & heroku & engineyard. Pros & Cons
 
Docker Online Meetup #3: Docker in Production
Docker Online Meetup #3: Docker in ProductionDocker Online Meetup #3: Docker in Production
Docker Online Meetup #3: Docker in Production
 
CoreOS, or How I Learned to Stop Worrying and Love Systemd
CoreOS, or How I Learned to Stop Worrying and Love SystemdCoreOS, or How I Learned to Stop Worrying and Love Systemd
CoreOS, or How I Learned to Stop Worrying and Love Systemd
 
Introduction to Docker and Monitoring with InfluxData
Introduction to Docker and Monitoring with InfluxDataIntroduction to Docker and Monitoring with InfluxData
Introduction to Docker and Monitoring with InfluxData
 
[HKOSCon x COSCUP 2020][20200801][Ansible: From VM to Kubernetes]
[HKOSCon x COSCUP 2020][20200801][Ansible: From VM to Kubernetes][HKOSCon x COSCUP 2020][20200801][Ansible: From VM to Kubernetes]
[HKOSCon x COSCUP 2020][20200801][Ansible: From VM to Kubernetes]
 
Building Hopsworks, a cloud-native managed feature store for machine learning
Building Hopsworks, a cloud-native managed feature store for machine learning Building Hopsworks, a cloud-native managed feature store for machine learning
Building Hopsworks, a cloud-native managed feature store for machine learning
 
#OktoCampus - Workshop : An introduction to Ansible
#OktoCampus - Workshop : An introduction to Ansible#OktoCampus - Workshop : An introduction to Ansible
#OktoCampus - Workshop : An introduction to Ansible
 
Docker Overview
Docker OverviewDocker Overview
Docker Overview
 
Nodejs a-practical-introduction-oredev
Nodejs a-practical-introduction-oredevNodejs a-practical-introduction-oredev
Nodejs a-practical-introduction-oredev
 
Advanced Node.JS Meetup
Advanced Node.JS MeetupAdvanced Node.JS Meetup
Advanced Node.JS Meetup
 
Como creamos QuestDB Cloud, un SaaS basado en Kubernetes alrededor de QuestDB...
Como creamos QuestDB Cloud, un SaaS basado en Kubernetes alrededor de QuestDB...Como creamos QuestDB Cloud, un SaaS basado en Kubernetes alrededor de QuestDB...
Como creamos QuestDB Cloud, un SaaS basado en Kubernetes alrededor de QuestDB...
 

More from Giedrius Rimkus (6)

Write cross platform native apps in Ruby
Write cross platform native apps in RubyWrite cross platform native apps in Ruby
Write cross platform native apps in Ruby
 
Moving from Mandrill
Moving from MandrillMoving from Mandrill
Moving from Mandrill
 
Empowered productivity
Empowered productivityEmpowered productivity
Empowered productivity
 
DIRT RALLY
DIRT RALLYDIRT RALLY
DIRT RALLY
 
Single Founder. Everything is possible when you believe at what you do!
Single Founder. Everything is possible when you believe at what you do!Single Founder. Everything is possible when you believe at what you do!
Single Founder. Everything is possible when you believe at what you do!
 
What is Chef and how we use it at tripsta
What is Chef and how we use it at tripstaWhat is Chef and how we use it at tripsta
What is Chef and how we use it at tripsta
 

Recently uploaded

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Recently uploaded (20)

HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 

Painless ruby deployment on shelly cloud

  • 1. Shelly Cloud Painless Ruby deployment Giedrius Rimkus 2012 July
  • 4. What Shelly Cloud is? Delivering platform as a service Deployments are done by pushing with git
  • 5. Example of git push giedrius@rubylt:~/Projects/store (master) $ git push gstore master Counting objects: 81, done. Delta compression using up to 4 threads. Compressing objects: 100% (72/72), done. Writing objects: 100% (81/81), 27.62 KiB, done. Total 81 (delta 6), reused 0 (delta 0) remote: remote: ---> Received push to cloud 'gstore' remote: ---> Checking Gemfile remote: ---> Push accepted remote: ---> Start your cloud using: `shelly start -- cloud gstore` remote: To git@git.shellycloud.com:gstore.git * [new branch] master -> master
  • 6. Aim Helping developers Developers focus on building application and not on deployment nor infrastructure
  • 7. Requirements - Ruby versions ● MRI Ruby (1.9.3) ● MRI Ruby (1.9.2) ● Ruby Enterprise Edition (1.8.7) - Bundler - "shelly-dependencies" gem (optional) - Rails 3.x support - Rails 2.3.x support - Rack-based apps - Gems with native extensions
  • 8. Shelly Cloud ○ Running Ruby applications ○ It doesn't have to be Rails application ○ Sinatra ○ or any other which is compatible with Rack interface full list of supported frameworks https://github.com/rack/rack#supported-web-frameworks
  • 9. Shelly Gem A tool for managing clouds on Shelly Cloud from command line.
  • 10. Cloudfile Your cloud management place You can edit settings of your Cloud by making changes to the Cloudfile, committing them to the git repository and pushing those changes to the shelly git remote.
  • 11. Features ○ Running periodic tasks ○ Background processing ○ Storing Files ○ Caching (frontend, backend) ○ Sending emails ○ SSL support ○ Websockets support
  • 12. Running periodic tasks Cron job is a periodic task Whenever Modify Clouldfile 1. Add whenever to Gemfile gem "whenever" 2. Run bundle 3. $ bundle exec wheneverize . 4. define cronjobs in config/schedule.rb env :MAILTO, "email@example.com"
  • 13. Background processing Delayed_jobs gem is used for this task. Set up one of your apps for delayed_jobs Add it to your Gemfile Add jobs* Commit and push (deploy) * https://github.com/collectiveidea/delayed_job/blob/master
  • 14. Storing files Kind of sharing files between instances and deployments For example uploads/
  • 15. Caching Frontend caching using Varnish Backend caching using Memcache. ● cache is cleared after every deploy.
  • 16. Sending emails Sending emails works out of the box SPF record (trusted mails) 1 mail server IP
  • 17. SSL Support When using domain code-name.shellyapp.com you get free SSL. If you want own SSL, you will have to purchase SSL certificate from any CA as well as private IP from Shelly Cloud.
  • 18. Websockets You can run a separate thin server on any of your servers that will handle websockets traffic. Create a websockets.ru file in the root directory of your project. Use this file to configure the application handling websockets traffic.
  • 20. Supported Databases PostgreSQL MongoDB Redis https://shellycloud.com/documentation/supported_databases
  • 21. Shelly Console You can use the shelly gem to run rails console or IRB for rack applications. Console is ran on random application server with user privileges. To run console, use shelly console
  • 22. Price comparison / Small app 3 thin workers, 1 delayed_job, 1GB database Heroku $107(workers) + $15 (shared database) = $122 ~ €100 EngineYard $90 (small instance, 1 CPU, 1.7GB of RAM) ~ €73 (no backups included) Shelly Cloud €40(1 large instance, 2 CPUs, 2GB of RAM) + €0.60 (1 GB DB storage) = €40.6
  • 23. Price comparison / Medium app 10 workers, 3 delayed_job, 10GB database (dedicated) Heroku $431 (workers) + $250 dedicated database = $681 ~ €558 Shelly Cloud €160 (4 large instances for workers, 2 GB RAM, 2 CPUs) + €40 (1 large instance dedicated db) + €6 = €206 In total 10 GB of RAM, 10 virtual CPUs EngineYard (Similar in case of RAM to shelly setup) $444 (2 medium inst 3.75GB of RAM (each), 2 CPUs, 1 small 1 CPU, 1.7GB of RAM), $24 (storage and bandwidth) = $468 ~ €384
  • 24. Let's do it in practice LIVE deployment on Shelly Cloud
  • 26. Thank You Giedrius Rimkus Software Engineer @giedriusr