JSF in the cloud : Finding the PaaS - Part 3 : Jelastic
Introduction
I found Jelastic while googling for TomEE PaaS offerings. I found an article on jaxenter featuring a quote from David Blevins, a founder of Apache TomEE :
“They have put a significant amount of time into offering TomEE users the best experience possible. It’s very tightly integrated with the functionality of all the other layers of their stack including load-balancing, replication, persistence to SQL or NoSQL databases and more.”
So, I signed up for a two-week free trial offering me to try:
- 1 environments per account
- 2 app servers per environment
- 2 cloudlets per app server
- 1 GB storage per app server
Jelastic partnered with 30 hosting services across the world. They proposed me to test their offer on a French hosting service, lunacloud.
It just works
Creating an environment takes a few minutes. Deploying the first sample app too. Then you are proposed a link to do what you really want to do : deploy your own application as a WAR or with git and maven.
My simple test app immediatly worked. I set it up in a git repo on github. It just deployed and worked. Slowly because the default free test config has no muscle, but that is not an issue.
Maven plugin
Jelastic provides a maven plugin. Using it, I could setup an automatic deployment on the server.
This is performed when you
mvn -Pjelastic clean deploy
This pom.xml also automatically publishes release artefaces on github (or when the deploy-github profile is activated).
Netbeans plugin
Jelastic officially provides a netbeans plugin.
The plugin allows full control of the environments and claims to support remote debugging. I wanted to test this feature and tried to upgrade to a regular account. With LunaCloud, it involved paperwork such as sending a copy of my ID, electricity bill and credit card, which I really did not want to do for a simpletest. So, I switched to Magic.fr Jelastic offer. The version of Jelastic it provides seems a bit older, but I could pay for an account without providing a DNA sample... However, even when paying and activating the public IPv4 address feature, I still could not perform remote debugging.
Conclusion
Jelastic fulfilled all my requirements, with no hassle. It is definitely an offer I would consider if I have to use a PaaS for serious things. It seems to provide everything I can expect in a cloud environment in terms of load balancing, database replication, and so on. I tried to use a nginx and performed smoothly vertical and horizontal scaling, transparently.
I even went a bit further than my initial, very restricted test, and coded a (little) more advanced one, dosleg-test. I performed the quick scaling tests with this last project. This test uses data provided by the French Senate on its opendata platform (full disclosure : as of the writing of this note, I am working there). I just sampled it to make an auto-deployable test case. It is a bit slow on startup because it must create the database schema then insert thousands of records, but it performs quite well then. Moreover, no platform specific API is used, just plain JEE6 MyFaces 2.2 / DeltaSpike 1.1 / OpenWebBeans 1.2.6 / JPA 2.0 / Hibernate 4.2 / PrimeFaces 5.1.
To use it, you will have to provide a profile such as :
<profile> <id>jelastic</id> <properties> <jelastic.login>yourmain@yourdomain</jelastic.login> <jelastic.password>password</jelastic.password> <jelastic.testcontext>context</jelastic.testcontext> <jelastic.testenvironment>environment</jelastic.testenvironment> <jelastic.api_hoster>api of your hosting service</jelastic.api_hoster> <dosleg.url>URL of your hosted pgsql instance</dosleg.url> <dosleg.user>db user</dosleg.user> <dosleg.password>db password</dosleg.password> </properties> </profile>
and define your github server profile :
<server> <id>github</id> <username>your_account</username> <password>your_password</password> </server>
...then deploy it using
mvn -PJelastic clean deploy
or build then upload the war file using the admin panel.
Jelastic is also available as a private cloud offering, claims to offer an ssh access and other key features.