Skip to main content

Cheap Grails hosting

We can use Amazon EC2 micro instance (~615mb RAM) to run grails application with Tomcat and Mysql. If you need higher JVM memory, we can try to keep the memory footprint low by using memcached or ehcache.
The price is nearly $5/month if you commit for a one year contract. Since November this year, this service is offered for free for the first year for new customers.
If your server server load is higher, with more number of visitors/hits, your website must be in revenue generation mode and I'm sure it will pay for itself for additional server resources.

Alternatively, you can run your Grails Application on Google AppEngine. There may be few constraints in terms using some of your favorite plugins. If you careful build the application keeping the constraints in mind, you may get away with almost free webhosting. ($0/month - provided usage is within the boundaries defined by GAE platform)

Both Amazon and GAE, have billing mechanisms based on the bandwidth, data storage and few add-on services. If the billing is compared with similar PHP based websites running on $5/month webhosting servers, the Grails apps will not cost us more.

Note that high volume PHP sites also require more computing resources and the comparative cost of running PHP and GRAILS applications will be identical.

So far, PHP websites enjoyed higher adoption because of
1) Low cost hosting
2) Availability of robust CMS frameworks Drupal, Joomla, Wordpress.
3) Easy deployment

Now that cost advantage of PHP is no more with the availability of Google App Engine and Amazon EC2 (micro) instances Java/Grails based web-applications are ready for prime time.

PHP community is also not far behind in innovation and have come up with GRAILS/RAILS killer with similar frameworks like CodeIgnitor. The higher developer productivity we gain by using GRAILS can also be accomplished with CodeIgnitor.

Amazon hosting services(EC2 - micro instance) can also be used for web applications based on JSP, Servlets, Struts, and scores of other web frameworks that are available today. Custom TCP/IP applications and other enterprise applications can also leverage these servers for cheap hosting.

Google App Engine, GAE, on the other hand have certain limitations and needs to carefully evaluated before adopting. However, it is good choice for testing your "web based business idea" with out having to worry about the
- infrastructure cost
- configuration for high availability and scalability.

Comments

  1. This is first time i am reading about this concept and great read for me.web hosting provider

    ReplyDelete
  2. excellent post, thank you!

    ReplyDelete

Post a Comment

Popular posts from this blog

Grails - cross-field Date validation

Often we run into domain classes with date fields. If the domain class has two datefields, startDate and endDate, and the rule for a valid combination is "endDate to be greater than startDate", how do we handle? I listed below two of the options, either using domain level constraints or using the domain classes. Option 1: Using domain constraints. Let us take a sample Grails Domain class class Student{ String name String school Date startDate Date endDate } Add the following constraints to enforce validation rules where name, school, startDate cannot be blank and endDate if present should be greater than startDate.

Grails - Querying complex associations

Criteria class allows performing complex searches on grails objects. There are number of shortcut methods for performing queries but these methods have limitations in terms of number of conditions used in "where clauses". Traditional sql "joins" are not possible as shown in some of the Grails "Finder" methods shown below. Sample 1: def list = AccountTransaction.findAllByCompanyCodeAndVoucherDateBetween(branch, fromDate, toDate, params) Sample 2: def list = AccountTransaction.findAllByCompanyCodeAndVoucherDateGreaterThanEquals(branch, fromDate, params) Sample 3: def list = AccountTransaction.findAllByCompanyCodeAndTransGroup(branch, group, params) "params" contains attributes related to sorting, paging etc. It is very easy to use finder methods but when you want to filter objects by more conditions we need to look for alternatives. For understanding the relationships used in this sample, I listed the grails domain classes. class TransactionTyp

Implementing advanced sort in Grails

The "list" pages generated by inbuilt scaffolding/template features of grails have pagination and sorting features. However, if the domain object displayed in the list is a nested object having another domain object as a property, you may notice that sort is not enabled for that field. Boiler plate code for the header of the list is shown below. As you would have noticed few columns have sortable columns automatically generated by Grails command, generate-all or generate-views. The properties 'partyAccount' and 'bankAccount' in this sample are domain classes nested in the domain class 'partyTransaction'. We could convert them to sortable columns by using the tag g:sortableColum