Experience working in Azure DevOps team

I have been working with Azure DevOps for the last 6 years and it has been an amazing experience. I have been part of the team since it was called TFS Online, then VS Online, then VSTS and now Azure DevOps. As I have joined new team Azure Compute, I wanted to recollect some of my memories.

  1. I still remember the day I joined Visual Studio team when we were developing Visual Studio 2013 (it was still under development). We use the earlier version of VS to build the next version and I was thrilled about it (using VS to build VS :)).
  2. Our team owned the Load test framework which was part of VS Ultimate SKU. I felt proud that we are one of the key contributors to the revenue ūüėČ
  3. I have done improvements in the Load test framework.
  4. After a couple of months, we started building Cloud Load Test Service Рthis is the first Azure DevOps services built from Hyderabad and it was great experience to be part of it.
    1. As part of this team, I worked on initial scale improvements to meet our preview goals.
    2. Worked in building telemetry collection, analysis and building dashboards.
    3. Built experiences in VS for configuring and viewing Application Insights data.
    4. Built the first user experience in Azure DevOps for CLT
    5. Built key experiences in Azure Portal for Load testing Azure App Service.
  5. After spending a good 4 years in building CLT, moved to Release Management aka Azure Pipelines.
    1. Built key experiences:
      1. Azure App Service CD ‚Äď Connect 2016
      2. Azure DevOps Project ‚Äď Connect 2017
      3. Azure Kubernetes support in Azure DevOps ‚Äď Build 2018
    2. Gained deep understanding of Azure Portal architecture.
  6. Feel really proud of receiving good awards and recognition.

Made good number of friends, had a great time with team outings (Lonavala, Kerala, Goa), worked with real best brains, great technologies (we being the developer services org need to maintain the best practices), fantastic managers, even better management.

Pretty amazing time, memories to stick for a very long time.

I have been planning to go deep into Azure and now jumping into it by joining the Compute team. Hope I would be of some use for the new team to make Azure better and best.

Advertisements

Learning Blockchain

A few days back, when I was looking at my LinkedIn profile, I got a recommendation to learn “Blockchain Basics”. Given that the course was for an hour I could finish it. Though it was a good introduction, the course made me curious (of course left me confused leaving so many questions :P). Today I happened to watch a video by Mark Russinovich (CTO of Microsoft Azure) which gave a very good technical information of Blockchain, bitcoin, ethereum, COCO framework etc.

This blog is to share pointers to the getting started with blockchain.

  1. Introduction to Blockchain by Mark Russinovich – This is definitely a must watch video.
  2. Blockchain basics on LinkedIn – This got me started with Blockchain.
  3. How did Satoshi manage to mine bitcoins as the first user РThank god there is an answer to this. I had the same question as you need to do some proof of work for transactions to earn bitcoins (as per my initial understanding). This post gave an answer how you can earn.
  4. What is a smart contract? – This is a pretty well written blog. I liked the analogy with buying movie tickets which made it easier to understand the concept better.

I should probably find more time to explore ethereum and solidity and try out to create a small ICO on my private cluster as shown by Mark in his video.

Blockchain is pretty exciting.

 

Getting started with Kubernetes

I have started understanding Kubernetes aka k8s as part of my work recently and went through some learning. I will share some high level notes which I have made while reading through different content and also the links to resources for a quick getting started.

Pre-req:

  • Good to have a high level understanding of containers (Docker etc)

Learning links:

  1. Kubernetes tutorial Рthis is the first link I went through to get a very high level overview of what Kubernetes is and how do we go about using different commands on the k8s cluster.
  2. Scalable Microservices with Kubernetes Рthis is a very good course on Udacity which gives very good overview. This same course is referenced from the above tutorial.
  3. Using Visual Studio Team Service to deploy applications to Azure Container Service РThis blog talks about using VSTS Release Management solution to automate deployments to K8S
  4. A very good site to understand few internal details about K8S, worth the read –¬†Julia Evans Kubernetes

Learning notes:

  • In simple terms you can consider k8s as a platform for containers cluster management.
  • A k8s cluster has a master node¬†– which manages the cluster and a set of other¬†nodes –¬†which are workers that run the applications. For a production traffic scenario, k8s cluster should have atleast 3 nodes
  • Key terms in k8s – Deployment, Pods, Volumes, Services, kubelet, ConfigMaps/Secrets etc
  • minikube¬†is a light weight k8s implementation that creates a VM on local machine and deploys a simple cluster with one node.
    • While following the Hello Minukube section on windows, you can run “minikube docker-env” instead of “eval $(minikube docker-env)“. Once the “minikube docker-env” command is executed it prints a message with the subsequent command (a for loop) to be run to set certain variables, ensure to run that step
  • kubectl¬†commands are used for all the cluster management

Lets understand the key terms:

  • Deployment:¬†
    • is a declarative way to say what goes where in the cluster
    • use ReplicaSets to maintain enough number of Pods as the desired config state
    • used to enforce the desired state as provided by the user
    • if a node goes down, deployment takes care of creating a new pod and place it into the available nodes
    • create a ReplicaSet to handle pod creation/deletion/updation
    • own and manage ReplicaSets
  • Pods:
    • Logical Applications
    • each pod has one more containers. When you have apps that have hard dependency on one another, you package them to the same pod
    • Shares volumes. Volumes live as long as the pod lives
    • has a shared namespace – help in containers to communicate with each other
    • each pod has one IP address
    • containers in a pod can communicate with each other using inter-process communication (IPC). Containers in different pods have different IPs, hence can’t communicate using IPC
    • Why Pods?
  • Volumes:¬†
    • you can consider them as shared storage
  • Kubelet:
    • each node has a kubelet
    • manages the pod and containers running on it
    • its an agent which helps the nodes to talk to master
  • Services:
    • defines logical set of pods and policy by which to access them
    • provide persistent endpoints for pods
    • enable loose coupling between pods
    • are defined using YAML/JSON
    • set of pods targeted by a service is determined by label selector
    • pod’s IPs are not exposed out of cluster without service
    • services have a integrated load balancer to distribute network traffic to all pods
    • you can expose you pods/containers using “kubectl expose” command
    • While creating the service following the “Hello Minikube” Section, set the type as NodePort in case the LoadBalancer type doesn’t work.

Kubernetes is very actively worked on and many things are rapidly changing. There is an interesting talk from Deis (PaaS on Kubernetes), in which it is mentioned that in CNCF “Kubernetes ¬†has been offered as a seed technology” – this also signifies that k8s is a good technology to invest your time to learn.

PS: Azure has a very strong support for containers, container registry, different orchestration platforms like Docker Swarm, DC/OS, K8s. Do try out things on Azure and keep learning.

Electricity transfer process for a new flat in Hyderabad

(First non-technical post on my blog ;-))

This post is to highlight the simplicity in the process of transferring electricity bill to an individual’s name from Builder and encourage people to avoid using an agent help (especially avoiding the special pricing¬†part). The overall process hardly take an hour and is cost effective.

Below are the steps and required documents:

  1. Take a printout of the document shared here, this document needs to be signed by your builder. Fill all the required details before giving the document to the builder
  2. Carry a Xerox of your latest EC. (not more than 3 months old). It takes about 250 Rupees to get a new EC. You would receive the EC within 4 days. You can save this 250 if you have a latest one.
  3. Take 2 copies of the Sale deed on both sides. One is needed for address change and the other for title change.
  4. 2 Passport size photos
  5. ID Proof
  6. Latest electricity bill
  7. You would need a Rs.100 Title Change Indemnity bond.
  8. You need to pay a Rs.25 challan
  9. Link document (both sides) if flat is land owner’s flat
  10. Rs.10 NOC by the joint owner, in case your flat is jointly owned.

Go to the near by electricity department with the above mentioned documents. There are enough shops around the electricity board where you can get bond mentioned in point 7 (even though it is 100/-, you would end up paying 160 or so depending on the shop). Usually there would be someone around in the board who would help you organise your documents and help in submission. I found the staff in Kukatpally electricity board really helpful and they didn’t expect any money.

In this process, you would maximum spend an amount of 500/-. If you try to go through a broker you would pay around 1200/- to 1500/- (it can vary depending on your relation and negotiation). The difference here might not be high but the point is if we understand the system, we can appreciate how things are organised, else we keep cribbing about bribery. Even if couple of folks avoid paying additional prices after reading this, I would be happy ūüôā

Thanks!

Web debugging tip : Using Fiddler to load local files instead of remote files

I was recently asked a question by one of my team mates if there is a way to load a file locally instead of the remote file, keeping rest of the files served from the remote server. My instinct said it should be very well possible to do it. I did a quick search and found an interesting feature in Fiddler, it is named “AutoResponder”.

autoresponder

 

Here is a good video by Eric, the creator of Fiddler which talks about it

As shown in the video, you can create a rule which can say – given a request which matches a pattern pick a local file. After adding the rule, do select “Enable rules” for the rules to take affect. Make sure to select “Unmatched request passthrough”, else all the requests which doesn’t match the rule will fail.

You can also do little advanced things using FiddlerScript. For example: if you want to pick a local file which matches a pattern, you can write code in OnBeforeRequest() and specify the pattern match by your self.

And in order for these rules to work, you shouldn’t bundle your files for obvious reasons ūüôā

Continuous Delivery to Azure App Services using VSTS Release Management

Our team has been working on a very important feature addition to Azure App Service for the last couple of months which went Preview in the recent connect() 2016 event. I have built most of the UX and back end for enabling this experience.

This is feature is about how to make it easy for a customer to configure Continuous Delivery/Deployment from the new Azure Portal for a given App Service. The Source code can be either in VSTS (currently only Git Repos are supported) or Github and the applications can be either ASP.NET or ASP.NET Core.

A detailed blog post can be found here – Continuous Delivery to Azure App Service

A video of the demo shown at the Connect() event by Brian and Jamie can be found below (You can skip to 55 minutes to start seeing our experience :))

Do try out the new feature and share your comments.

https://channel9.msdn.com/Events/Connect/2016/ALM-DevOps-with-Brian-And-Jamie/player

Load Testing Azure WebApps from Microsoft Azure Portal

I am excited to share about a great feature added to Azure Web Applications experience in Azure Portal, which is the capability to do Load Testing of the web application right from the Azure Portal. There is a detailed blog post on Visual Studio MSDN Blogs about this announcement – Announcing Public Preview for Performance/Load Testing of Azure WebApp. Similar announcement on the Azure blog – Public Preview of Performance Test on Web and Mobile App.

Here are two videos on the topic on Channel9 (Do watch them):

  1. Azure Friday Video on Performance Testing Web Apps
  2. And follow up video on doing Advanced scenarios from Visual Studio Enterprise

I know what you are feeling, the experience and the User Interface looks just brilliant, right?. Yes, Its brilliant. There has been a great effort behind it building this experience :). There were good challenges and great great learning as well.

And I do think you would be interested in understanding how is the new Azure Portal being built. There is a very good blog from Justin Beckwith which explains this stuff perfectly РUnder the hood of the new Azure Portal. I recommend this as a must read blog to know about the new portal. Make sure you watch Steve Sanderson video as well, its really cool.

Please do try out the new feature and share your valuable feedback.

Question and Answers.

Question: How to use an existing Visual Studio Online account work with the new Load/Performance Test Experience in Azure Portal?

Answer: Your Visual Studio account should AAD backed. To know if you account is AAD back you can go to the account settings and figure if it AAD backed. Else you can follow the link provided there 

There is a blog post which should make things easy: Link Visual Studio Account to Azure

Question: [A very very rare scenario] I am facing issue setting an account like mentioned below. How to unblock my self?

SadCloud

Answer:¬†You shouldn’t be seeing this at all. But there is a very negligible chance you might face this. In such cases, you can click on the gear button at the top right corner of the Azure Portal that takes you to the “Portal Settings”. Here you can click on the “Discard modifications” button and things should start work.

Gear

Settings

The impact of this change is that it would clear any user settings in the Azure Portal like the pinned tiles on the home page will be cleared and specific user settings that are customized would be reverted and portal would be started afresh. Please note that it would not clear any application data.