So you just landed your first Junior Web Development job. Yay!
Say you joined Codegram. Double Yay!
And you start the onboarding process. 😱
Everything is very well explained, the tone is friendly and nice, step by step, everything is going smoothly... and then you make it to the technologies part.
You are a junior 🐣. A tiny little web-baby that just came out of her tiny little web-crib and started to make her first tiny little web-steps. In your web development bootcamp you used what? 5, 7, 10 different technologies? And at Codegram we use like, how many? A thousand??? (exaggeration alert❗️).
Ok, let’s stay calm 🧘🏻♀️. So I know about frameworks (more or less), languages (more or less), databases (yes, I know what a DB is… does that count?), frontend, backend, API… I can deal with that. But what about the systems part? How does it work? Mmmm, I feel like deepening a little bit into DevOps today.
I’m not really a DevOps person, but I want to have an overview beginning to end of what and how is happening, otherwise my brain goes like:
So, let's start. I’ll filter by “Systems”: Heroku, Docker, Kubernetes, AWS.
Oooooook now. 🤔
I know what Heroku is, right? - “Heroku is a cloud service provider and software development platform which facilitates fast and effective building, deploying and scaling of web applications. It has 140 inbuilt add-ons, ranging from alerts to analytic tool security services which are used for purposes like monitoring, caching and mailing or networking add-ons.”
Crystal clear. Basically it's where I’ll deploy my application, my server in the cloud. So no need to care for physical servers and operations. Heroku is easy to use. This is the basics of the basics of deployments.
Aaaaaand here is where my DevOps knowledge ends! 🤷🏻♀️ Moving forward...
Hey Docker! What do you do in life? - “Docker is a tool designed to make it easier to create, deploy, and run applications by using containers. Containers allow a developer to package up an application with all of the parts it needs, such as libraries and other dependencies, and ship it all out as one package. This allows for the application to work more efficiently in a different environment.“
Love the (mad) Linux penguin!
So, for juniors now. With Docker basically I’ll get my application, create a package with everything and then manage and ship everything as a whole. But where? Well, I could ship the docker containers to Heroku… but not only.
Meet Kubernetes! - “Kubernetes provides you with a framework to run distributed systems resiliently. It takes care of scaling and failover for your containerized application, provides deployment patterns, and more.”
“In other words, Kubernetes is a container orchestration platform.”
“Kubernetes can run without Docker and Docker can function without Kubernetes. But Kubernetes can (and does) benefit greatly from Docker and vice versa.”
Junior translation. You have your application, that you’ll package in Docker containers. You can run and test your application locally with Docker. Then you ship your containers to Kubernetes. Kubernetes takes care that your application is running all the time with load balancing and all. Easy right?
And what about AWS???
Ok, so, without surprise, AWS is like the God of the Cloud Services.
Want virtual servers in the cloud? AWS EC2. Want to deploy code without thinking about servers? AWS Lambda. Want to deploy Docker containers? Yep, that too. AWS ECS. Blockchain, NoSQL Databases, IoT, Machine Learning, you name it.
So, when should you use what you may ask? Well, sorry to disappoint you… I am just a junior dev…
Good news is, you can check with my senior colleagues at Codegram! Throw us a line at firstname.lastname@example.org and we'll be glad to help you!