2

Here is my case: I have about 100 EC2 instances and everyone runs a java application (Java SE application, not Java EE application), I want to deploy my complied jar files and library to all the instances and then make the application run on everyone's application. Because the application is changing from time to time, every time I have to spend two hours to do this job.

Do you know if there's a management tool or software that can help me to do this work automatically, and what is your practice to deploy this application?

Do you have an auto deployment workflow for development on AWS?

Arjan Tijms
  • 37,782
  • 12
  • 108
  • 140

4 Answers4

4

Kwatee (http://www.kwatee.net), our free and lightweight deployment tool, supports EC2 instances as well as elastic load balancing. There's a short screencast of a small EC2 deployment here.

mac
  • 5,627
  • 1
  • 18
  • 21
  • thanks, it seems a very cool system, does it support the pure Java SE application? – user1246500 Mar 04 '12 at 15:04
  • It deploys any files/executables and is completely language agnostic. Deployment takes place over ssh (better to have kwatee on an EC2 instance and use private addresses) and you configure deployment actions that are executed on an ssh shell to perform installation operations, start and stop the processes. – mac Mar 05 '12 at 09:32
3

Since you're using java you can utilize AWS Elastic Beanstalk.

Development Lifecycle:

http://docs.amazonwebservices.com/elasticbeanstalk/latest/dg/create_deploy_Java.sdlc.html

Managing the Environment:

http://docs.amazonwebservices.com/elasticbeanstalk/latest/dg/using-features.managing.html

There are many more article links on the same page, probably will need to read all of them but these are the two that I feel are most related too your question. I haven't used this product so i can't give any first hand experience but it seems to be designed to help you with your exact problem.

bwight
  • 3,300
  • 17
  • 21
  • Elastic Beanstalk only works with WAR files, not general Java applications packaged in a JAR. – Max Jul 22 '15 at 17:19
1

Boxfuse does exactly what you want.

For your Java SE application you literally only have to execute:

boxfuse create my-javase-app -apptype=load-balanced
boxfuse scale my-javase-app -capacity=100:t2.micro
boxfuse run my-javase-app-1.0.jar -env=prod

This will

  1. Create a new application and configure it to use an ELB
  2. Scale it to 100 t2.micro instances
  3. Create AMI
  4. Create an ELB
  5. Create a security group
  6. Create an auto-scaling group
  7. Launch your instance(s)

Any subsequent update will be done as a zero downtime blue/green deployment.

Axel Fontaine
  • 34,542
  • 16
  • 106
  • 137
1

You can use AutoScaling Launch Configuration and AutoScaling Group to launch 100 EC2 instances. But hold on, Need to request EC2 instance limit with EC2 instance type to AWS Support. Typically, It will take 1 business day to complete the request.

  • First you suppose to create AutoScaling Launch Configuration in AWS Console. AutoScaling Launch Configuration includes type, storage, security group and you can add scripts to run at launch of EC2 Instance.
  • Next is AutoScaling Group. You have to choose which launch configuration is suitable for your autoscaling group. In AutoScaling Group configuration, you must mention min and max count (i.e) it will launch EC2 instances based on min count and launches upto max count. CloudWatch monitoring can be used for AutoScaling group. CloudWatch will work based on EC2 instance CPU Utilization and alarm settings.
  • Elastic Load Balancing will help to distribute traffic among EC2 Instances. If you want to use ELB, you have to create before AutoScaling Group. In AutoScaling Group you may include ELB to handle and distribute traffic.
Kumaresh Babu N S
  • 1,648
  • 5
  • 23
  • 39