Throughout this book, various tools and technologies have been mentioned. In this final chapter is a list of those resources, by category. Since PaaS and its related services are in a constant state of evolution, no fixed list of resources can truly be complete. But the following links will, at the very least, provide a starting point for your research.
PaaS providers come in many flavors. It can be hard to distinguish which one is right for your needs sometimes, but some of the biggest differences between PaaS vendors can be understood when you determine the languages their offerings support, the portability of apps in the PaaS, what infrastructure the PaaS runs on, and whether you are responsible for running the PaaS or the vendor does that for you. The following terminology is important to keep in mind:
If you can easily move your application from one PaaS vendor to another, both are portable PaaS options. A PaaS that can run code largely unchanged from normal development processes is portable. For example, if the PaaS supports PHP and you can upload a WordPress PHP application without changing the fundamental code behind WordPress, this is a portable PaaS.
A PaaS that is bound to proprietary APIs that make it difficult to move to other PaaS vendors is non-portable.
Any PaaS that works on public clouds like AWS and Rackspace is a public cloud PaaS.
Any PaaS that works behind firewalls and on your own infrastructure is a private cloud PaaS.
A managed PaaS is a PaaS that you do not need to operate; you use it as a service.
An unmanaged PaaS is a PaaS that needs to be set up, secured, maintained, operated, and updated manually.
Here is a list of current PaaS providers:
AppFog—now owned by CenturyLink—was one of the first providers of first-class PHP support in PaaS. It has since grown in popularity and expanded to support Node.js, Ruby, Python, and Java solutions.
Apprenda focuses on deep .NET and Java support and integration for enterprise PaaS adoption behind the firewall. It helps with adding SaaS enablement to regular .NET and Java applications.
CloudBees started as a Java-only PaaS that incorporated common tools used within Java platforms. It has since expanded to support many more languages including Node.js, Go, and Erlang and others. CloudBees also has fantastic Jenkins integration for continuous integration.
Cloud Foundry offers a set of more than a dozen programs that are loosely coupled and work together to provide PaaS functionality.
DotCloud was the first PaaS to support multiple languages and technologies. It supports Ruby, Node.js, Python, PHP, and Java.
EngineYard was one of the first PaaS companies and has thousands of production customers. It supports Ruby, PHP, and Node. Developers get full root access to their dedicated virtual servers and the flexibility of custom Chef recipes to control and automate their entire environment, regardless of size. EngineYard’s highly regarded DevOps and support team has expertise in application analysis, code and security audits, custom Chef, deployment, scaling, and high availability strategies.
Force.com is SalesForce’s proprietary PaaS for accessing SalesForce data directly. It has been able to create an ecosystem of applications around CRM data.
Google App Engine was one of the very earliest forms of PaaS, with a large following and a large developer mindshare behind it. Its promise to take advantage of the power of Google has helped to make it a leader in PaaS.
Google App Engine started out as a non-portable PaaS but is moving toward portability and can even run WordPress applications with the addition of PHP support.
Heroku was one of the first cloud platforms. It supports Ruby, Java, Python, Clojure, Scala, Node.js, and other languages.
Azure started out as non-portable but has been moving slowly toward portability. Microsoft also provides standard services that can scale independently.
When it comes to provisioning virtual servers, IaaS is the fastest way to do it. With IaaS providers, you get dedicated servers with dedicated IP addresses. They start out as a blank slate, so you have to do all the system administration, software installation, tuning, and managing. You can use many of the private-cloud, unmanaged PaaS providers listed in this chapter on many of these providers:
AWS currently is the most popular IaaS in use. Amazon uses Xen to virtualize its infrastructure across more than a dozen availability zones around the world.
DataPipe offers its own infrastructure, as well as reselling Amazon Web Services with more managed services on top. The extra services include monitoring, patching, change management, deployment, and more.
GoGrid is a high-performance IaaS managed hosting provider.
Google has built its IaaS service to compete with Amazon and others. The performance is significantly higher than Amazon’s at the same price point.
HP Cloud is a relatively new IaaS offering in the market. It is a public cloud built on OpenStack technology running in various HP data centers around the world.
Joyent is an IaaS provider targeting large enterprises. Instead of virtualizing the OS like most traditional IaaS providers, Joyent uses its SmartOS technology (based on Solaris), which combines ZFS, DTrace, Zones, and KVM and has better performance characteristics than traditional virtualization.
OpenStack is an open source library made up of various components that aims to simulate the API experience of IaaS providers like AWS.
The components of OpenStack currently include:
Compute (code name Nova)
Object Storage (code name Swift)
Block Storage (code name Cinder)
Networking (code name Quantum)
Dashboard (code name Horizon)
Identity Services (code name Keystone)
Image Services (code name Glance)
Rackspace is a provider of fanatical support for managed hosting of both Linux and Windows. Rackspace worked with NASA to originally sponsor the OpenStack project and has incorporated OpenStack to run its public cloud IaaS today.
Savvis (now owned by CenturyLink) is a large enterprise−focused provider of VMware-based public cloud IaaS with the option of managed services. The servers run by Savvis can be completely managed and software upgraded by Savvis if you like.
TerreMark (now owned by Verizon) is another large enterprise−focused VMware-based public cloud IaaS that is sold in blocks of resources as opposed to virtual machine instances.
Although Azure started out as a PaaS application, it has expanded into IaaS capabilities. The Windows support is fantastic, and it even has support for Linux. However, the Linux support is currently limited to 20 virtual machines within a subnet, so it may not be as scalable as other providers in this list for Linux.
When approaching managed services, it’s critical that you plan ahead. Think about how to approach and get past the scalability limits of any particular service. As long as you have thought through these scenarios, starting with a managed service will always be faster than setting it up for yourself. The following sections list some of the options.
CloudAMQP: RabbitMQ-as-a-Service
Zerigo: DNS
CloudFlare: CDN + Security + Analytics
Codeship: Hosted continuous integration/continuous deployment
Legacy applications can come in all flavors, from blogs and content management systems to custom applications written long ago in a forgotten language. Here are a few links to resources for common blog and content management systems that should help you if you need to modernize and make your blog or other apps more cloudy.
When building new applications on PaaS, it is recommended to build them RESTfully. There are frameworks well suited to quickly generating RESTful applications in every language you can think of. Here are a few selected popular choices—there are many quality options not listed here, but this should get you started.
RESTful .NET (O’Reilly)