I have been googling all day for a good tutorial to help me start with a basic setup for a Java based web application on Amazon Web Services. The popular ones are outdated and the new ones are unclear. Here are a few doubts I have. Primarily I'm looking for a good "Getting started" tutorial.
What to choose to create my custom AMI and what is the best way to build it?
How to configure an EBS volume to store MySQL data and web application project files and how to deploy them from eclipse?
Is there any best practice for setting up an instance for persistence? Specifically, should I use an EBS-backed AMI or use an instance-store AMI and attach an EBS volume to store persistent data?
Please note that I'm looking for the most basic setup as I'm still in development stage but I should be able to scale the system without much trouble.
Any help would be appreciated.
i would suggest to try out grails, it is java (groovy) based, open source, and there are some tools to push your app to the cloud backed by amazon (check out http://www.cloudfoundry.com/ from spring) our to appengine.
http://grails.org
Related
My son has done a university project which is a web app using Java 8, Maven, Spring boot, Spring hibernate, Spring data and MySQL. I am helping him try to find a free or very cheap hosting solution, and was told AWS is one option. Is this correct? The application is small (15 tables) and the data is a few megs.
If AWS is the way to go, am I supposed to setup a virtual / instance and install all software and upload all code to the virtual? He is using Windows 10 to develop the application. Which instance should be used? There are various "Microsoft Windows Server" options.
A guide on how to do this and have it running on the web would be appreciated.
That isn't an entire guide, but a starting point to check on your options.
All depends on for how long you intend to have the application running.
If you only want to have a demonstration of the APP in School you could really use the AWS Free tier for new users.
If you intend to have it running for more than a year or scale it up, you will either have to refactor it as Micro services based architecture or a payment will be required, though it isn't really that much at all.
I sugges you have a look here:
https://aws.amazon.com/free/
https://aws.amazon.com/answers/web-applications/aws-web-app-deployment-java/
https://aws.amazon.com/elasticbeanstalk/pricing/
I was asked to provide a quick and easy solution for storing data in Java, and since I had experience in working with Google App engine, I thought that I could just use their Google Cloud Datastore (https://developers.google.com/datastore/). But, the project that I'm working on now is a desktop application with a GUI. My question is, would I be able to use these services even though the application I'm developing isn't a web app, and uses Java's GUI components?
Yes you can. The Cloud Datastore gives you access to the normal App Engine Datastore but does not require you to be running a web app. You can then use all the normal Datastore tools that App Wngine provides to manage your data.
You'll want to follow these instructions for setting up your Cloud Datastore project to connect from your GUI app.
It depends. dev_appserver isn't a hardened environment, and simulating a deployed environment is a priority over performance. dev_appserver provides a simulated Datastore, not the real thing. That said, I've built several single-user, locally-served web apps using both the Java and Python dev_appservers, because it was a convenient way to get started and performed well enough for my purposes.
I don't see why not,
Not a java dude, but it says it exposes a HTTP interface, so this:
code.google.com/p/google-http-java-client/
should allow you to communicate with it I believe.
Also perhaps have a read of this question
Database for Google App Engine and desktop application
I plan on making an instant messaging app on Android and iOS, where you can chat to other people with the app, along with some custom features.
I’m going to use the XMPP protocol, and make a custom extension for it. I plan on making a Java application running on Amazon Web Services (AWS) so it's scalable.
After researching server options I’ve decided to use Apache Vysper.
However, I’ve never made a proper Java application before, and have never used XMPP, AWS or Vysper – so I’m rather reliant on good documentation :-)
The Apache Vysper project is very new and so the docs are a bit sparse. I was wondering if I was missing something, should I be using the general MINA docs as well? Are there other resources
elsewhere I don’t know about?
“Apache Vysper can run stand-alone or embedded into another
application.”
To be honest I’m just as lost when it comes to working out what to use to make a Java application anyway. Do you know if the AWS Java SDK has everything I need to make an application to use on AWS? And then is it a simple matter of integrating Vysper into this? Or do I need to make a Java application using something such as the Spring framework?
Thanks for taking the time to help me. If you know anything that could clarify the situation I would really appreciate it :-) --and sorry be being a bit useless, but hey, we've all got to start somewhere right ;)
First of all, as the founder of Vysper I apologize that the documentation is lacking completeness.
To answer your question(s).
Most Java applications bring their own ready-to-go start scripts with them.
Vysper is no exception. You get the pre-packaged download here:
http://mina.apache.org/vysper-project/downloads.html
Ok, before running it, you need to have Java installed, whether you're on your own machine, AWS, a server or a virtual machine anywhere else. Get it from Oracle, or use the package management of your Linux distribution. Make sure that after installing Java, you can execute "java -version" on the command line and you are all set.
Then, unpack the Vysper download, change to the bin/ directory and execute "run.sh" or "run.bat", depending on your OS.
Please note that support for Vysper - besides here on StackOverflow - is available on the MINA user mailing list here:
http://mina.apache.org/vysper-project/mailing_lists.html
I've just started using Google App Engine and I have a few questions about it. I hope you can help me:
Once my Java web application is running on Google App Engine. What if one day I decide to run it on my own server. Which programs/services would I need? Is it difficult to configure?
I have a Javascript code that I would like to store on Google Application Engine, so that external webpages can run it directly. Is it possible? Otherwise could I deploy a Java application on Google App which returns this Javascript code? How could an external site ask on "execution time" for this code and run it?
THANKS!!
AppScale supports Java and allows users to deploy and host their own Google App Engine applications
Of course you can, although GAE is not meant to be used as a CDN.
Have a look to Static Files and Resource Files documentation.
It depends on what services you actually use. Take a look at AppScale, it will facilitate running your application on your own servers. I would also suggest looking at TyphoonAE (Python only), to see another software 'stack' providing similar services.
See the section on static files and resources in the docs.
If I develop my web application on GAE using Java, in future would I have easy migration opportunities, or will I stuck to GAE?
What can be other alternatives of Google App Engine + Java?
Not:
An GAE you are pretty much developing inside a Google managed Container - against restricted Java and other APIs. This is the PaaS - Platform As A Service approach to cloud computing. This would be similar to the Salesforce, Facebook etc approach.
However for most flexibility you should look at IaaS - Infrastructure As A Service Cloud platforms (like Amazon/Rackspace/etc..) where you have most flexibility.
We currently use both Rackspace and Amazon and have machines as our elastic containers on top of which we can deploy anything we want (custom Ubuntu image etc..)
With some care, you can write a Java app such that it will work both on and off App Engine. A better option, though, would be to use AppScale if you choose to leave App Engine. AppScale provides an App Engine compatible environment on your own hardware.
right now most viable competitor of GAE is Windows Azure. You can easily build a site/application in Azure without getting dependent on Azure framework. There is /very/ little from Azure APIs that you have to deal with(mostly for diagnostics). If you decide to use other Azure services, like table storage services, you'll want to get real good at abstracting yourself away from the table storage to make your code portable. Dealing with SQL Azure (at least from utilization perspective) is no different then using SQL Server and you would need to make a simple abstraction from actual rdbms implementation (most data access libraries do that anyway) to later utilize MySQL or Oracle, etc.
You will probably be stuck to GAE (or a very similar platform you could replicate on your own).
Alternatives: Amazon EC2? Windows Azure?
Using GAE requires you to design the app around their system so migration could require a rewrite. Certainly their NoSQL db at the least. Some people are saying Amazon EC2 is a better bet, but I haven't tried it yet. Also I prefer python-based stuff like Django, rather than Java stuff. Try the pyjamas client-side toolkit also.