What are the implications of developing for this particular PaaS?
Geva Perry, board member and advisor at various tech companies
Platform as a Service (PaaS) has potential to greatly increase the speed of development cycles; however, it can also be fraught with perils, such as vender lock-in. As such, PaaS is quickly becoming a major concern for Java architects and developers. When it comes to developing applications with Java, PaaS may usher in a new future of freedom from the worries of infrastructure, but it may also limit some choices when designing Java applications for PaaS deployment.
This discussion of Platform as a Service will consider the meaning of state-of-the-art and touch on several points to consider and questions to ask when looking at PaaS and moving Java application development into the cloud computing architecture. This video lesson brings us Geva Perry and his 15-plus years of experience as a high tech industry executive and advisor to Heroku, Twilio, large telcos and others.
Developing Java applications with PaaS does not necessarily mean writing Java in the cloud. The lion's share of development is still done on the developer's machine. PaaS kicks in once the code is ready to deploy and run. The focus of Java PaaS providers is to remove all the infrastructure concerns away from Java developers so they, in turn, can focus on the business logic and high-level code that makes each application unique. PaaS providers may also be able to improve availability, scalability and maintenance issues.
Perry tells us that PaaS came after IaaS (Infrastructure as a Service) and built on the concepts of scalable resources for applications. PaaS goes further into abstracting away hardware and infrastructure concerns. Components such as the database and app servers are provided directly to developers without the complication of raw compute resources underneath.
What are the implications if I ever want to move the application off of this PaaS?
On the other hand, because the app server is provided as a service, it will be fairly language-specific. Some venders may be able to support several languages, according to Perry, but many PaaS providers specialize in one specific language, such as PHP. Two large PaaS providers of note -- Cloud Foundry and Heroku -- each have their own language of origin but have grown to support other languages as well. Still, each one is still strongest in the language they started with, according to Perry. So Heroku will likely be better for Ruby on Rails developers, while CloudFoundry might be best for Java developers.
Apart from the main language or languages your development team is using, there are also other considerations to think about before deciding on a PaaS provider. According to Perry, any platform -- whether it's a cloud-based PaaS or a more traditional platform like Ruby -- will have a certain kind of lock-in. It's not exactly vender lock-in because it's not proprietary and it won't necessarily keep a development team from migrating to a new deployment model. However, there will be a certain way of doing things that works best on that platform. Perry suggests asking the development team, "What are the implications of developing for this particular Platform as a Service?" and "What are the implications if we ever want to move the application off of this PaaS?"
What did you think of this lesson? How can we make future Java University lessons more valuable for you? Let us know.