LAB NOTES

“As A Service” Soup – efficiently deploying web and mobile apps

Worry Free Labs“As A Service” Soup – efficiently deploying web and mobile apps
Worry Free Labs“As A Service” Soup – efficiently deploying web and mobile apps
Over the past several years, the deployment processes usually involved in building web applications have changed dramatically. A slew of new services have come about that make life easier (usually) when it comes to deploying your shiny new app. We’ll take a few minutes to break down the various ‘as a service’ options, what they do, and when you might want to use them.

Old school

  It may sound odd to call a deployment strategy ‘old school’, but the idea of serving your app to users using hardware that you own is rarely seen in vast majority of web apps on the Internet today. Managing your own physical servers (or paying a data center / co-lo site to do so) can be challenging. You have to worry about hardware failures, physical security, and numerous other headaches. But, for some apps it’s still the best way to go.
There are a couple of different types apps and situations where the old school approach makes sense. An app that leverages hardware directly (e.g. uses GPUs to do complex math) will almost certainly have to run servers that are custom built and maintained. More commonly, if you already have servers and a data center that you control (e.g. within the IT department at a larger company) it can quite often be cheaper to leverage the existing infrastructure than pay someone else to do the hosting for you.

The cloud

cloud If specialized hardware isn’t needed for your app and you don’t already have a data center at your disposal, then the next tier in hosting options is managed services. This includes everything from dedicated large servers to small virtual systems (VPSs). These types of managed instances are by far the most popular hosting solution in use and there is a commensurate number of providers as a result. The most popular providers are Amazon EC2 and Rackspace, but there are many more.
Managed instances give you full administrative access to your server. They typically come with an operating system preinstalled but you'll be responsible for everything else from setting up your application (including services like web or database servers) to making sure that the latest security updates are installed.
This type of hosting comes with a lot of advantages. First of all, you have full control of your server, but you don’t need to worry about things like physical security or hardware problems (those are handled by the hosting company). Another benefit is that you simply figure out how much horsepower you need and everything will be set up for you (dedicated instances typically have some startup costs and/or time commitments, but VPS instances can typically be setup or shutdown in minutes); there's no need to shop for hardware or compare brands.
The drawback of managed instances is that you still need to think about your server hardware at least on some level. You have to plan out which instances in your system will be used as web servers vs. database servers vs. load balancers and you have to make sure to get the right sized systems to support that (and size includes everything from processor to RAM to disk space). This type of hosting can also be expensive when you’re just starting out (typically around $30/mo per instance on the lower end). The last issue is that you need to stay on top of software updates and security. Since you’re the system administrator, you have that responsibility.

Platform as a service

If you don’t want to or are less able to handle the devops (system administration of servers for web apps) side of deploying an app, then the next tier that’s available are what are known as platforms as a service (PaaS). In the Ruby on Rails world, Heroku is the best known PaaS but there are quite a few other options. For other stacks such as Python, PHP, and Java, Google App Engine has a very similar approach to Heroku’s. There are lots of competitors with big names in the PaaS space: Amazon’s Elastic Beanstalk, Oracle Cloud Platform, and Rackspace Cloud plus a host of others.
The biggest advantage of using a PaaS is that you don’t have to worry about managing your app servers. Almost all of the PaaS providers will keep the systems up-to-date and as your user base grows, it’s a simple matter of changing some configuration or payment plan options in the PaaS. Deployment is usually as easy as pushing your code to the cloud. Database servers are typically included for a fee with almost no setup required. Most PaaS providers also partner with other services to offer everything from exception handling to image processing (see Heroku’s Add-Ons list for an idea of what’s available).
Using a PaaS is not without its downsides. First of all you have to conform to the stack you’re deploying to; you have to make sure your app is configured to run on the platform. Also, most PaaS’s don’t have filesystems that you can easily access or save to so any kind of storage or other file-level interactions will need to be handled by something like Amazon’s S3 or similar services.
For many app developers, the advantages of a PaaS outweigh the disadvantages. When building Ruby on Rails apps at Worry Free Labs, we almost always recommend hosting it on Heroku and we’ve had virtually no occasions where features we needed couldn’t be supported directly on the platform or by a partner add-on. PaaS service starts affordably and scales easily so it’s a great choice for startups.

Backend as a service


With the explosion of smartphone apps, a new type of service provider has popped up: the backend as a service (BaaS). BaaS providers started as a way to simply persist data into the cloud so that if upgraded your device or wanted to share some data with other users, you have an easy way to do it without custom-building an API and the associated servers. There are a large number of BaaS providers (many of them specializing in specific use cases) but Parse, Stackmob, Kinvey, and Firebase are some of the big ones. Many even allow you to do a basic degree of server-side processing so that you can build a truly smart API for your app.
As Javascript frameworks such as Backbone, Angular, and Ember have matured, app developers have realized the way data is stored and accessed in rich web apps that run in client-side Javascript isn't very different from how you do it in mobile apps. This means that those types of apps can also take advantage of a BaaS. The result of this is that you can now build a full-featured app that includes server-side storage (provided by the BaaS) and all you need to host is static web pages and Javascript files.
When you build this type of app, since only static files need to be served to users, an entire app can be hosted on Amazon S3 or any other CDN service for very low cost and you never have to worry about infrastructure. The BaaS handles all of the data storage and you can focus on your users’ experience.
Of course there are some major disadvantages to these server-less apps. First of all, anything to do with file handling and upload can be tricky since browsers sandbox Javascript to prevent web sites from infecting your computer or collecting personal information. You also need to pay close attention to what Javascript features are supported in what browsers as some of the features of your framework might not be available in older versions of browsers. Last, there are some significant security and intellectual property concerns since 100% of your application source code is available to anyone who visits your site. This means you have to be much more diligent with how you manage access to your users’ data and you have to keep an eye on who might be using your code for nefarious purposes.

Conclusion

When building a web or mobile app, there are a plethora of different options for how to deploy that app. Whether you go for the completely in-house or the completely outsourced solution will depend on your framework of choice, your app’s requirements, and also your personal preference. Whatever option you choose, chances are there’s at least one ‘as a service’ provider to help you get the job done.

Related Posts

Drop us a note
we're just an email away!
470-223-4370