Wednesday, December 6, 2017

On a quest to explore Docker.

Part 1. Progress to date and next steps.


Backstory:

Earlier this year I had an opportunity to design a complex software system. I researched multiple options but decided to go with Microservices.

Microservices pattern seemed to be meeting the requirements of the project I was working on. It did require learning how to implement it professionally and my learning track was like this: Microservices -> Automation -> DevOps -> CI/CD -> VSTS/TFS (I am a .Net guy).

Docker was not in scope just yet, after all it does take time and effort to learn something, and learning professional Microservices & CI/CD was already enough. Spending time to learn Docker just did not seem to bring enough value.

Why look at Docker now? I have a strong opinion that it will be a valuable asset in my R&D toolset.

So, Docker. A container technology for deploying and scaling web applications with ease. Docker promises to eliminate "it works on my machine" situation and be sure that the app will work wherever it is deployed. I was fortunate enough to experience "it works on my machine" and that was not the most pleasant experience. The closer you get to production environment the more critical it becomes. Piece of mind that your application will "just work" is invaluable. Without further ado, let us see if the promise is true and how easy it is to get there.

My progress:

I began my journey by doing a Docker tutorial at "https://docs.docker.com/get-started/". It explained the concepts pretty well, I created a couple of my own diagrams (I am a visual learner) and do not recall any confusion with the concepts. Along with the tutorial, I created a Docker "image" with a simple "Python" web app. I was amazed how easy it was to follow the tutorial, considering I had never touched Python in my life.

I did hit a couple of roadblocks, the most annoying one was my Windows 10 being a "cheap" version and  virtualization-incompatible. Not willing to buy a Pro version, I installed Ubuntu on my second HDD and things worked just fine after that. (note: enabling virtualization in BIOS might f*ck up Windows 10 start-up, so make sure to disable it before going back to Windows)


Next steps: 

So, I did want to try Docker out, I did, I liked it, now it is time to see if it can bring value for my particular skillset. I am a .Net developer and my current learning focus is on .Net Core (to be more specific, it is on building Microservices based on ASP.Net Core MVC framework). So I am going to explore creating .Net core Web Api projects inside Docker images and deploying them to Docker Swarm on my local machine. This way I can try out replication, and become more comfortable with Docker before scaling to multiple machines or trying other orchestration tools.

Till next time.



2 comments:

  1. The information you've provided is useful because it provides a wealth of knowledge that will be highly beneficial to me about Kids Playground Equipment. Thank you for sharing that. Keep up the good work.

    ReplyDelete