An introduction to the Yugabyte cloud free tier
Tags: cloudnative, database, postgres, yugabyte
Published: 2021-11-05 14:07:53

In september 2021 we launched our cloud, which allows you to use YugabyteDB as a service in the cloud. As part of this launch, we introduced our free tier. The free tier is something that I think is a distinct advantage, because our definition of free is 'free forever'. So in other words: you don't need to worry if it's going to shut down because the free tier trail period is over, or worry about a credit card suddenly going to be charged.

The free tier is limited in the sense that it doesn't provide redundancy, because it's setup with a replication factor of one, on a single machine with 2G of memory and 1 vCPU, and a total amount of operating system storage of 10G (when data is flushed to disk, it is compressed).

Using the free tier has some consequences, which are important to realize, and don't apply to using the full version: no data redundancy, which is a key feature of YugabyteDB, along with node redundancy. There are no backups possible and memory and processing power is limited. This should not be an issue for the intended use-case of the free tier: testing, logical proof-of-concepts and experimentation. 

#Creating a free-tier Yugabyte database
It is extremely easy to setup a Yugabyte database. Let me walk you through the steps:
Apply for a Yugabyte cloud account at https://cloud.yugabyte.com
![yugabyte cloud login](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dx09y2tnrg6kwdadaxa3.png)
In order to sign up, you have to click the 'sign up' link, which takes you to the sign up screen:
![yugabyte cloud signup](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vl7u4zq5zoo6121p8fzz.png)
Fill out the details, and click the 'start using yugabyte cloud' button. This takes you to a screen that asks you to verify your email address. An email is sent to the email address that is entered, and contains a link that is valid for 1 day. 
Validate the email address and login
If you click on the link in the email, the email address is verified, and you can login with the password that you set:
![yugabyte cloud login](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/geyoik1zmzglifkssfwd.png)
Create a free cluster
![yugabyte cloud console](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6myq0z27ducft61pap40.png)
In the cloud console, you can create the free cluster with the big purple button in the middle.
![1 select cluster](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9sja1nmy815kaz8cop7b.png)
The first choice is the type of cluster. The Yugabyte free tier is selected by default. Click 'next'.
![2 cluster settings](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tsb16b95h0lrg8npx12p.png)
With cluster settings you can choose between AWS and GCP, name your cluster and select a region. Please mind the explicit notion of no fault tolerance and no backups. Click 'next'.
![3 database admin credentials](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mxza21i5wa51r747h0zg.png)
In the database admin credentials screen you get the admin user and a password that has been generated for you. You cannot proceed to creating the cluster before you have downloaded the credentials file. The credentials file is a text file that contains the cluster name, and the admin user and password for both YSQL (postgres compatible access) and YCQL (cassandra compatible access). Both passwords at this point are identical. Click 'create cluster'.
![free cluster provisioning](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xral9rs8tklbuc8jjt1o.png)
After pushing the create cluster button, the cluster creation takes place.
![free cluster ready](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qky77ldghkdrwo876nam.png)
Once the database cluster is ready for use, the Yugabyte cloud console provides you an overview of some key metrics.

#Connect to the database: cloudshell
There are a number of ways to connect to the database you have just created. The simplest one is via the cloud shell. You can simply select 'Clusters' on the left-hand side of the screen, and then select the free-tier cluster marked with [free]. The cluster detail screen provides a big purple button saying 'Launch Cloud Shell'. This is the same screen that is shown when the cluster has been created, which is shown above.

![launch cloud shell](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1znqrqcbm8chz7bybi3j.png)
When you press the 'Launch Cloud Shell' button, you are asked to provide database name, user name and the API type. The yugabyte database is a database that is always created by default, and the admin user is the default cloud user. I am going to look at the YSQL API only, which is the postgres compatible API. If you click 'Confirm', another window is opened (which might trigger your pop-up blocker), which shows a progress bar for the setup of the cloud console. After it is done, it asks for password of the user specified in the launch dialogue.
![cloud shell](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qrucyausa5fs4hyaoueq.png)
After the password validation, the cloud shell is launched, which provides a version of the YugabyteDB ysqlsh CLI tool in the browser, which is the quivalent of the postgres psql utility. Please mind the cloud shell might not work correctly in (OSX) Safari, use another browser such as Google Chrome.

#Connect to the database: dbeaver
The first thing that needs to be done to allow access using a client tool, is to allow access from the computer system that launches the client tool ([dbeaver](https://dbeaver.io)). 

Click on 'Network Access' on the left-hand side, and on the '(+) Add IP Address' button in the detail screen:
![add ip allow list](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n4oxxcehtkl4l1ix5yer.png)
Choose a meaningful name for the ip address you are going to add, which in my case is 'home', and enter that with 'name'. 'description' is an optional field, leave that empty for now.

If you look at the 'ip address(es) or range' heading you see '<...> Detect and add my IP to this list'. This is a link, and if you click it, it will add your current internet ip address. That is a very nifty feature!

Now click on 'clusters' on the left-hand side, and click on the free tier cluster. On the detail screen in the top middle, it says 'Connect to your cluster', '(1) Configure network access' and 'Add IP Allow List'. Click on 'Add IP Allow List'
![add ip allow list](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0rs0ozvn9qpvov0mjs44.png)
Check the box with the 'home' IP Allow list, and click 'save'.

To connect dbeaver to the cloud database, additional details are needed. A link to these details is available with the cluster detail screen accessible via 'clusters', then select the cluster. On the detail screen in the top right side, it says 'Connect to your cluster', '(2) connect' and 'Run your own application'. Click on 'Run your own application'.
![connect to cluster](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8ggujnr29439j34byqyq.png)
Click on the link 'Download CA Cert' to download the Certificate Authority certificate. Select and copy the hostname in the connect string in the rectangle. The hostname quite large and is between the '@' character and the ':' character.

Now start dbeaver, and create a new connection: database, new connection, or click the plug with the green plus.
From the list of databases, select 'YugabyteDB'. It's ordered by alphabet, so you have to scroll down, in my screen it's the the last one. Click 'next'.
![connection specification](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/whhtuw6qnr1lgdf3qvss.png)
In 'Main':
Host: paste the hostname. 
The port (5433) and database (yugabyte) can be left unchanged.
Username: change to 'admin'. 
Password: obtain the password from the credentials file that is downloaded for the admin user.
In 'SSL':
Check/enable 'Use SSL'.
Add the previously downloaded CA certificate to the 'CA Certificate' parameter. 
Advanced, SSL mode: set to 'verify-full'.
Click 'finish'.

Now the connection is defined. Click on the '>' in front of the connection to connect to it. It will add a small green square with a white checkmark if the connection succeeds, and display the database below it, which is 'yugabyte'. Right click on the database name, and select 'SQL Editor' and 'Open SQL Console'.
![dbeaver sql console](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kjvp0shczdc34i52suq3.png)
Now you can use the database from the convenience of a client tool: (an example of select * from pg_stat_activity):
![dbeaver sql execution](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xgttm12nhmsz0btwjgfn.png)