Building Boxcar to Scale with Google Cloud
Boxcar is a two-year-old startup that focuses on issues facing suburban commuters. Through our app, we link commuters looking for parking with underused spaces near train stations. We are a typical technology enabled start up in many ways. We began with a just a few people, a single developer, and a brand new concept, which meant focusing on building our product without a ton of time to spend on infrastructure. We knew that we would eventually scale up using the capabilities of our cloud provider but we didn't want to boil the ocean at the expense of delivering features.
There are many options available to developers today. In our case, growth in infrastructure has been relatively predictable and linear so we've been able to evolve our configuration very deliberately and steadily, from dead simple to increasingly sophisticated. We hope that sharing our experience will help start ups in a similar situation.
Starting
We chose the Google Cloud platform for the simplicity of spinning up servers on demand and its favorable pricing relative to peers. We knew we needed to start with a simple cloud-based strategy and with a provider that would scale up as our business and infrastructure grew. We looked at all of the big cloud providers, but decided on Google Cloud for both our test and production environments.
Google Cloud is modern, extremely capable, and integrated with other Google services that we also use heavily to support our business. Google made experimentation with their cloud infrastructure easy by providing $300 of credit for twelve months for new accounts. This allowed us to dial in our out-of-the-gate infrastructure strategy without a financial penalty for early iterations.
We started in the most straight-forward way: compute instances for our front and back end services using pre-configured servers from partners like Bitnami. Google Cloud supplies a large menu of pre-configured services from which to choose, provided either by Google or its many partners. Using this approach we were able to create Apache, Wildfly, and MySQL servers quickly and painlessly. As a start up focused on software, we don't have the time to spend on provisioning and configuring infrastructure. With Google Cloud we had our full stack up and running fast and were able to focus on our company's R&D roadmap.
Scaling
As our business has grown we've taken advantage of various features of Google's Cloud. For example, as we started to grow our customer base and they began to rely on our services for their day-to-day commute, our data requirements and need to scale and keep services available increased. We migrated away from dedicated MySQL servers and to Google's Cloud SQL as a result.
Cloud SQL took the worry out of managing scalability, clustering, failover, storage, and backups. We were able to quickly provision Google Cloud SQL, configure the MySQL parameters and type of failover we required, import our databases, set up security, and start using our new database servers. This is hands down the easiest way to scale MySQL in a high availability configuration.
Over time we've learned more about Google Cloud and this has confirmed that we've made a great choice. For example, Google's APIs are integrated and we're able to manage which APIs we use in one place as well as have a single place for monitoring our activity and billing.
We've also been impressed by Google Cloud’s rapid pace of improvement. We use the gcloud command line tools and there are constant rollouts of features, advancements, and fixes. The pace is staggering and a great indication of Google's commitment to remaining a leader in cloud-based services. Based on what we've seen, we're very confident that Google Cloud will continue to evolve rapidly and will certainly scale to handle our needs.
Usability has also been excellent. We like Google's UI, which is modern compared to peers. We use G Suite, Google DNS, Google APIs, Firebase, and deploy our app on Android, as well as Google Cloud services. Google seems to have a plan for making their services work similarly and seamlessly. It's nice to have a one-stop-shop for all of our company's needs and a cohesive experience at the same time. Google provides an outstanding assortment of services for startups.
What Comes Next
Most recently we've been containerizing our infrastructure. This involves creating docker containers for our app servers for our development, test, and production environments. Google provides a private repository for our docker containers where we can push and version our containers as needed. It offers Kubernetes, which allows us to declaratively configure and manage our infrastructure. Our next iteration of Boxcar's infrastructure will be even more simple, reliable, scalable, manageable, portable, modular, and secure.
Google Cloud (and the entire fleet of Google services) is a great way for a start up to manage its infrastructure and essential services. Google has a very competitive offering in terms of features and price. Google's breadth of services is simply wonderful: cloud, APIs, DNS, office, mobile. With Google Cloud it's simple to experiment with cloud services and to build simple to complex infrastructure that supports small to large businesses. We're looking forward to continuing to grow our business on Google Cloud.
Additional Resources
The benefits of Google Cloud don't end with their technology though. As a client we were recently invited to Google's NYC Headquarters for a mixer with other startups, investors, and job-seekers. It was a terrific opportunity to learn more about the product and meet the people behind the product.
Startups that are interested in taking advantage of similar programs to those that Google Cloud offers can learn more and apply here.
Photo: Google's latest startup ecosystem mixer, free to clients