I am building bunch of services with embedded jetty. I prefer to deploy those services in Elastic Beanstalk. Elastic Beanstalk supported environments comes with Tomcat which is not required for me. So which environment should I use to run my services in Elastic Beanstalk? I just need a bare-bone EC2 instance with Java and my embedded jetty application are capable to run in different ports. Is Docker container is the best way to run these services, even in that case i am not sure which environment should I use.
Thanks
Related
I am trying to develop a Spring Cloud microservice and deploying into AWS cloud using Elastic Beanstalk. When I am searching deployment options I found that deployment environment of Beanstalk. I have a little confusion here. Can I deploy my microservice using Elastic Beanstalk without launching EC2 machine?
Here I am approaching only to Elastic Beanstalk service. Deploying microservice using Elastic Beanstalk without launching EC2 is possible?
I am a beginner in the AWS world.
You can use Elastic Beanstalk to deploy your microservices. When you use Elastic Beanstalk, in the backend Elastic Beanstalk creates the required EC2 instances and Load balancers to run and deploy your application. Hence you don't need to create an EC2 instance. I would recommend you to follow the tutorial here, which walks you through to launch a sample Multi Docker application.
Also, I would recommend you to research ECS/Fargate service which has more capabilities for hosting a Microservices application.
I am trying to deploy my Spring Boot microservices on using Elastic Beanstalk from AWS. It provides preconfigured environment for deployment. I have one Ubuntu machine with EBS with 80 GB(free tier option). I have some doubts. I am adding as points
When I am deploying using Elastic Beanstalk, where it actually deploying? In my EBS storage ? Or any other space which belongs to AWS ?
Is it possible to deploy anything without creating an EC2 instance? If possible, then where will it actually physical space occupy?
When I deploy my microservices, I choose Tomcat option. So under the box there is a sentence that Java Tomcat server environment is in Amazon Linux or something like that. I have Ubuntu machine; if Beanstalk using my EC2 instance, then why it showing message related to Amazon Linux 2017? Since my machine is Ubuntu?
And I found docs saying BeanStalk is not charging payments. Payment is going according to the AWS resources that we choose. So how I can relate this point with my 3rd point?
I'll start with #4 Elastic Beanstalk is a service you are NOT charged for, just the resources you consume, so EC2, EBS, ELB's.
When you deploy an Elastic Beanstalk application you select what version of Tomcat you want and with it the version of Linux
64bit Amazon Linux 2017.09 v2.7.2 running Tomcat 8 Java 8
64bit Amazon Linux 2017.09 v2.7.2 running Tomcat 7 Java 7
64bit Amazon Linux 2017.09 v2.7.2 running Tomcat 7 Java 6
https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/concepts.platforms.html#concepts.platforms.java
#1 - It is deploying to an environment on EC2, which is why there is an AMI in the platform you provision.
When you launch an environment, you choose a platform configuration.
We update platform configurations periodically to provide performance
improvements and new features. You can update your environment to the
latest platform configuration at any time.
https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.managing.ec2.html
#2 You can deploy your application on Docker, but that still needs EC2 hosts to run, you can manage them or you can use Multi Container platform, which provisions them to ECS .
https://docs.aws.amazon.com/elasticbeanstalk/latest
/dg/create_deploy_docker.html
#3 Elastic Beanstalk likes to keep resource under it's control, When you provision an Environment, it will provision the resources needed, no need to provision a machine outside of Elastic beanstalk.
You can create a custom platform if you want too based on Ubuntu.
Note
Modify the resources in your environment only by using Elastic Beanstalk. If you modify resources using another service's console,
CLI commands, or SDKs, Elastic Beanstalk won't be able to accurately
monitor the state of those resources, and you won't be able to save
the configuration or reliably recreate the environment. Out-of
band-changes can also cause issues when terminating an environment.
Some other points about Elastic Beanstalk from a great answer on Stack Overlfow
I need to create a scaleable infrastructure of ec2 instances, which will be Windows services that can run some processes.
How can I automate the deployment (including installation of this service) to each ec2 instance?
To make the same thing work for my web application I use the EB (Elastic Beanstalk) deployment tool:
C:\Program Files (x86)\AWS Tools\Deployment Tool\awsdeploy.exe
The EB service ensures both the installation and update of all EC2 instances that it manages.
Is there one simple way to spin up Windows services, similar to how Elastic Beanstalk works for instance creation?
Have been running Docker with Elastic Beanstalk to deploy a relatively simple app, and it has been working great. Now with ECS on the horizon, I am interested to know what the differences are between the two services, and why one might use one over the other?
Amazon's documentation says the following:
Q: How is Amazon ECS different from AWS Elastic Beanstalk?
AWS Elastic Beanstalk is an application management platform that helps customers easily deploy and scale web applications and services. It keeps the provisioning of building blocks (e.g., EC2, RDS, Elastic Load Balancing, Auto Scaling, CloudWatch), deployment of applications, and health monitoring abstracted from the user so they can just focus on writing code. You simply specify which container images are to be deployed, the CPU and memory requirements, the port mappings, and the container links. Elastic Beanstalk will automatically handle all the details such as provisioning an Amazon ECS cluster, balancing load, auto-scaling, monitoring, and placing your containers across your cluster.
Elastic Beanstalk is ideal if you want to leverage the benefits of containers but just want the simplicity of deploying applications from development to production by uploading a container image. You can work with Amazon ECS directly if you want more fine-grained control for custom application architectures.
Does AWS Elastic BeanStalk support deploy non-web Java application to EC2?
That is to say, I want to pass a jar to EC2 instance, and make it auto run when EC2 instance started.
As of today, you have to run Java based web applications or worker tier applications, both have to be modeled as web apps.
You could run a tomcat app that does some backend processing work but does not perform the usual functions of a web app.