Wednesday, December 13, 2017

Microsoft Tech Summit 2017 - Toronto - day 1

Today was an exciting day - I participated in a couple of activities hosted by Microsoft here in Toronto.

One of them was an Azure Cloud overview keynote, which summarized main areas of Microsoft's Azure cloud platform. A nice overview with customer stories and introduction to Azure cloud services.

What did I learn there?

  • There are quite a lot of companies/people working with Microsoft products. The auditorium was full! 
  • Microsoft does not like acknowledging their competitors by name. Even when the slide says AWS, they just say "other" cloud providers.
  • There were a lot of participants there!
  • Big audience keynote meetings do not always start on time. It was only 15 minutes after start time when everybody got seated.
Another event was about hosting Azure Web Apps Containers on Linux. This one was supposed to be a hands on lab, but due to some technical issues turned out to be an intro Docker/Containers/Kubernetes  session. I enjoyed it a lot. I am happy I was able to register for it.

One of the biggest takeaways from this event was Microsoft's approach/recommendation for product development strategy. They basically outlined a path from a monolith on premises product to microservices based solution hosted on Azure Service Fabric. The key in their advise was to find the stage that best matches the organizational needs/capabilities. I really liked how it was explained. For me personally this was one of the gray areas in terms of moving an existing application to a more sustainable state. If before I had a conceptual understanding, I was now presented with a more practical approach.

Very well done Microsoft and I am looking forward to the day 2!

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.