How We Are Managing Our HA Environment on Google Cloud

Having High Availability and High Scalability is important especially for the products offering solutions through SaaS infrastructure. Increase in the numbers of customers means more work for us, and if we don’t build an infrastructure to lift this much work we would be wasting our sources.

On-premise vs Cloud

Firstly we looked for a powerful infrastructure solution that we could use on our on-premise and cloud solutions. We first decided to proceed with Docker Swarm for this.

Change in the technological infrastructure and later the dockerization of the product precisely provided a flexibility in the selection that we would do in the services which offered Cloud solution.

Amazon AWS vs Google Cloud vs Microsoft Azure

Our first choice was the flexibility in the choice of an infrastructure and the ease would be given to us in the means of DevOps. Although the experience of AWS was very good, it required serious expertise to be used. It was obvious that in the tests we did not feel like “at home”. At the same time it was bothersome for us that there was extra payments for many things we couldn’t predict.

We were more familiar with the Azure environment than other environments since we have been using the majority of Microsoft products. In the tests we did, we could create the environment we wanted shortly. But this time we started to enter vendor lock-ins. Even though we were prepared for the environment, we let go of the flexibility we had for a little bit. Prices were clearer but more expensive than other vendors.

Finally, we tried Google Cloud. It’s not possible to be familiar with the simplicity and the flexibility of the environment quickly. The charges are very clear. You can make your cost calculations easily even in the middle of the month. You can intervene wherever you want. We quickly set up our environment, published it and did our tests.

Winner?

Of course it was Google Cloud. Right now our entire cloud system is geolocated on the Google Cloud. High Availability and High Scalability.

Which technologies we use?

DotNet Core (C#) & NodeJS as development language.

Asp.net Core & VueJS as application framework.

Postgresql & MSSQL as database.

Docker as containerization infrastructure.

Kubernetes & Docker Swarm as containerization environment.


How do we monitor?

Google Cloud allows us to track the entire infrastructure, both application-specific and system-specific. It provides a great visibility in Application Monitoring, System Monitoring, Exceptions and Logging.

We have the opportunity to connect to the containers on which the applications are running and to conduct detailed inspections whenever we want.

By creating an alert on the system side or on the application side, you can make your health-checks on your application and the system very easily.

Pros

– High Availability

– High Scalability

– Fully Customizable

– Pay as you go

– Geolocated

Cons

– You need to change the way you think 🙂 (Could be a pro too)

– You can’t bring your local stack as it is

– A professional consultancy will be needed


What about on-premise?

We had no problem establishing a cloud for on-premise lifecycle since the containerization technology and the infrastructure solution we have chosen is suitable for both on-premise and cloud models, Kubernetes and Docker Swarm (one can be used according to necessity) is also able to work smoothly in the on-premise environment.

Cost?

Pricing can be variable since the model we’re using is the “Pay as you go” model. But there is a fixed price for the infrastructure you use. This part is also very simple and you pay only the machine fee. You do not need to pay anything for management on Google Cloud.


Minimal Infrastructure

3x 4GB, 2 CPU Clustered = 12 GB Memory, 6 CPU

3 VM 1 Location (Europe, US or Asia)

or

1 VM (for each location) 3 Location

Optimal Infrastructure

3x 3 Geolocated 4GB, 2 CPU Clustered = 36 GB Memory, 18 CPU

9 VM, 3 Location