[This article was written by Pavel Suchman.]
As a developer with fifteen years of experience in IT, I’ve dedicated the past five years to working with the cloud. I’ve been involved with cloud services from AWS cloud (since 2010) and Azure. A bit over nine months ago, I started working almost exclusively with Google Cloud (GCD) and Google Compute Engine as part of a consulting project I led. The project involved building a backend for a high performance web application. At first, the customer thought to use their own data center, which I discouraged. Then, Google approached them and offered a package that included free support and better pricing for their services, which the customer agreed to take.
I’ve been working on this project for a few months now and in many ways, Google Cloud Platform (GCP) has been great to work with. However, it’s the first time that I’ve seen such great challenges compared to my experience working with other clouds. It feels like these challenges stem from Google’s isolated development culture, with their “my way or the highway” approach. In this article I would like to address these thoughts and provide you with a few suggestions.
One of the challenges I’ve experienced is with Gmail. Although a library that sends emails is the result of complicated machinery, most email providers have succeeded to hide this fact well. This is not so in Google’s case. I needed to use their email service for our project and watched a video about a new cool Gmail API, which linked to the documentation and code examples. I checked the code snippet for Python. The simple usage example contained about 50 lines of code, which is a lot for Python! I have experience with email APIs from other providers and they would typically only contain about five lines of code for Python. Additionally, many dependencies needed to be installed that later proved not to work. I found that this experience was had by others, and was reminded of the popular developer saying “but it works on my machine”.
Another challenge popped up when we started our project, which involved transferring an existing WordPress site to Google’s Application Engine (GAE). We thought that this was a good decision because it’s not easy to scale WordPress sites manually, and GAE has a great record when it comes to autoscaling all kinds of applications. It took us about a month, but we managed to transfer the site and then saw that we had some very serious performance problems on our hands. It turned out that each database request took somewhere between three to five seconds to complete, which was unacceptable. After looking into it, we concluded that it was impossible to fix because Google’s database access simply doesn’t support better latencies for our use case. So we had to return to self-hosted machines.
On the upside, I found that the network between machines is great, with an easy networking setup and optimal boot times. Additionally, when managing Google cloud VMs from your browser, a “connect via SSH” button is available, quickly opening a new browser window and an SSH session. I work on Linux machines so I don’t use this feature a lot, but I can appreciate how great it works in light of its backend complexity.
Dear Google, Your Cloud Is Great, but..Here’s My Feedback
I have the utmost appreciation for GCP. Along with the challenges I’ve mentioned, I think it’s important to share my experience and help GCP and its users.
For starters, and as I assume you agree, feedback is crucial. After a new service is released, and documentation is created, it’s important to have others that aren’t involved in the creation of your product or perhaps not a part of Google at all, walk through tutorials and provide feedback. This would allow you to tap into a world of information to help improve any product on many levels. In the example I provided above regarding email libraries, Google provides a video about the Gmail API, stating that it’s easier to work with than classic email protocols like IMAP. After watching the video and continuing on to the following, seemingly straightforward step, nothing was simple. With more concise documentation and feedback from others, I truly believe that an already great cloud can be even better.