When software developers who are used to working with monoliths projects start working with microservices it might be very frustrating because there are so many technologies we have to know when working with microservices. If developers don’t have the habit of constant learning, it will be hard to adapt to microservices technologies and new jobs.
That’s why I created this article, to help software developers have the following courses so working with microservices hopefully won’t be so painful to learn and adapt.
My conclusion is that learning those technologies deeply is not necessary, you just need to know enough to solve problems in the best way you can. Learning the following technologies deeply would take far more time. Instead, I recommend going deep into something that will last, for example, clean code concepts, effective tests, SQL skills, networking basic knowledge, the basics of HTTP, and the Linux operating system.
I also would like to thank my DevOps specialist friend Rodrigo Moutinho for recommending many of the courses I am sharing with you here!
Without further ado, let’s check the microservices courses list that will help you with your microservices understanding journey:
Docker – It’s crucial to know how to make your application portable to any environment, cloud or on-premises, with Docker you can easily isolate your application solving the problem of “it works on my machine”. The following course is great to understand better the power of Docker:
Bash/shell script – We use bash script all the time when working with micro-services, we use several commands when dealing with cloud machines because the vast majority of the machines are Linux based. One great way to get your shell/bash script sharper is to work on a Linux distribution, I recommend Ubuntu to start or Macbook so that you can use Unix-based commands.
Jenkins – In the DevOps culture, CI/CD (Continous Integration/Continuous Delivery) is essential and Jenkins does that very well, it builds, test, and deploy your application in an integrated way, which usually means that every time you push the code to GitHub, Jenkins will perform the necessary steps to deploy your application reliably on the cloud or on-premises.
Kubernetes – What if we want to orchestrate our application containers for a cloud environment? Kubernetes does this job, we can deploy a containerized application in the cloud by using Kubernetes with no need of having to configure this directly on your cloud provider. It’s possible to have better control under cloud applications by using Kubernetes because the truth about the application infrastructure will be orchestrated in the Kubernetes code.
If you want to learn a bit more about docker and how to deploy it using Kubernetes into AWS, the following course will help you:
If you want to focus more on Kubernetes, the following course is also good:
Terraform – Since the software infrastructure will be in the cloud when working with micro-services, we have to either create all cloud services manually or we also have the option of using automated scripts to provide whatever service we need in the cloud. The power of Terraform is to enable us to write our code infrastructure so it can be replicated and reprovisioned whenever we want, this means that we can spin down the whole infrastructure and spin up by using the Terraform scripts.
Prometheus – It’s hard to debug micro-services, there might be latency, performance, and code problems and to do that without a monitoring tool gets even harder. By strategically monitoring our cloud services, it’s possible to provide reliable micro-services where scalability is easier and it’s possible to identify problems more quickly.
AWS Amazon Web Services – It’s another huge cloud platform where we can deploy and run our applications. There are currently 168 services in the whole platform but fortunately, we don’t need to know all of them, only enough to be able to deploy and run Java or whatever other programming languages you are working with within the cloud.
To be able to solve problems with AWS, the following course will help you:
If you want to go even deeper into AWS, you can have the following course:
API/Rest/OAuth – The knowledge of APIs, HTTP protocol, Oauth, and tools to invoke endpoints is crucial. When working with micro-services we will be invoking endpoints very often. The following course will help you to have a better view of this:
Spring – It’s one of the most popular Java frameworks and it’s very mature when working with microservices. Knowing Spring is essential for every Java developer and the course that will help you to become better are the following:
or
By doing the mentioned courses you will be far more prepared for the microservices challenges. Just don’t make the mistake of only watching the videos, if you only watch you will still learn but your progress will be slower, instead, implement the examples explained in the videos or implement something of your own just to play around.
One powerful action you can take after acquiring the knowledge is to implement something useful, for example, if you learned Docker, you can containerize a Java application with Spring and MongoDB, then you can push that to DockerHub. If you learned Jenkins, you can create a full pipeline that will perform the CI/CD process for your application, and so on.
You don’t need to have a super complicated plan but make sure to be constantly taking action, if you can create a learning routine of 25 minutes every day, you will be on a whole new level with time. My recommendation is to never stop learning, learn what will help you in your career daily. If you think 25 minutes is too much, you can use 5 minutes of your day, the most important thing is to keep your consistency.
Important: Keep in mind that you DO NOT need to do all the courses. Instead, pick the course that will bring you the most benefit and is connected to your career goals, otherwise, doing all the courses will be a BIG waste of time.
I hope that helps you! Share your thoughts if you liked the post!
As always, be ready to break your limits constantly!
Good article. Thanks
Hi Vinit, thanks!
good post! thanks a lot
Thanks, Ruben! Remember, you don’t need to do all courses, pick the ones that will help you in your career the most.
Really helpful recommendations Rafael! Nice heads up and motivated by it.
Thanks, Habeeb! Microservices change a lot of the day-to-day work of software developers. Developers have to do a lot more infrastructure and architecture work.
You are very welcome Rafael! Please continue the good works and keeping us up to speed with Java and the Software World!
Hi Habeeb, thanks for your comment! Also, that’s for sure, I will keep posting more content and helping developers!