You’re a Java developer, it’s the end of Sprint 1, and you have no environment for demo. This new Java project of yours is a POC of a new service your company would like to launch and the resources you were promised from day one keep getting re-allocated to something else.
Of course, this would never happen to you, it’s just a theoretical situation.
So theoretically speaking, how would you go about solving this? Your client (this could be the main stakeholder or a representative of the stakeholder, since this is an internal project) expects a working POC he can share with the rest of the company.
Congratulations, you are now the tech lead, it doesn’t matter if you’re the only one in the team, the senior or the only one worrying about this, what matters is how you approach the situation.
The old saying “not making a decision is the worst thing you can do” holds true, so leaders have a bias for action. In this case, remembering we are engineers, we could turn to the engineering method of problem solving:
1. Define the Problem
We could discuss about many things here but for the purpose of this article, let’s define the problem as: “Our client can’t test our POC and our QA engineer can’t test our features without the necessary environments”.
2. Research the Problem
A cup of tea/coffee later and some googling, you find that everybody is talking about the cloud and how wonderful (much less horrible) it is.
The cloud offers many services and we could talk about them for the whole article, but this picture should do for now:
3. Brainstorming Solutions
It is important to watch for a classic trap called the “Not Invented Here Syndrome” which is defined as:
“the tendency towards reinventing the wheel (reimplementing something that is already available) based on the belief that in-house developments are inherently better suited, more secure, more controlled, quicker to develop, and incur lower overall cost (including maintenance cost) than using existing implementations.”
This means you need to avoid reinventing the: load balancer, the deployment tool, the monitoring tool and so on, because you can.
How do you approach the creation of a new app? Do you start writing it from scratch, every time?
Nope, you use a framework like SpringBoot and then you add some open source components to make your life easier. So why not treat infrastructure the same way?
From the ten things you could build, there are one or two that differentiate your Java project from others which you should focus on, for the others we want to offload as much as possible to the cloud vendor (right side of the above picture).
Unfortunately, in our context, the app development has already started and choosing a serverless architecture would require:
- Re-architecting the app
- Learning new skills
- Learning new tools
This is not achievable when the demo session is scheduled for tomorrow!
So, we’re going with the next best thing: PaaS or Platform as a Service where we don’t have to re-architect and we can use the same skills and tools.
4. Choose the Best Solution
Awesome, we’ll use a PaaS solution, now what cloud should we choose? (let’s pretend you didn’t read the title of the article 😊)
Well, AWS has released 1,957 features in 2018 alone and it’s been named the leader in Gartner’s Magic Quadrant for infrastructure for the 9th consecutive year.
So many customers are choosing AWS that its revenue has jumped (with a jetpack on its back) by 47% from 2017 to 25.7 BILLION dollars.
With that type of reach, you can be sure there are some resources out there that can help you: blog posts, videos, courses, and webinars (as the one I’ll be mentioning shortly).
Use AWS for Your Java Project’s Success!
Interested in how you can build a POC with ElasticBeanstalk, test, and launch it? Watch our webinar replay.
AWS PaaS offering is called Elastic Beanstalk and its description goes as follows:
“AWS Elastic Beanstalk is an easy-to-use service for deploying and scaling web applications and services developed with Java, .NET, PHP, Node.js, Python, Ruby, Go, and Docker on familiar servers such as Apache, Nginx, Passenger, and IIS.
You can simply upload your code and Elastic Beanstalk automatically handles the deployment, from capacity provisioning, load balancing, auto-scaling to application health monitoring. At the same time, you retain full control over the AWS resources powering your application and can access the underlying resources at any time.
There is no additional charge for Elastic Beanstalk – you pay only for the AWS resources needed to store and run your applications.”
It supports JAVA – good, it handles the deployment – nice, it has a nice feature list – cool, and it’s free – awesome!
This webinar is the first in a series where we focus on a lot of AWS use cases, so stay tuned, we’ll be announcing all our webinars on Pentalog’s Facebook page.
Subscribe to the next AWS webinar: How to Up Your PHP Microservices Game with AWS!