Recently I have been asked to work on few resiliency improvement in our system. As part of that I had to work on implementing different retry strategies to handle partial failures, batching, queuing etc. I learnt a good deal from few articles and sharing them here:
- Implementing Resilient Applications – This is a good resource from Microsoft documentation which talks about different resiliency patterns.
- Marc Brooker has couple of good articles on Exponential back off and Jitter. Definitely a good read.
- Polly – Polly is a .NET resilience and transient-fault-handling library. This is a very rich library and if you go through the github link you would also find some great links to PluralSight tutorials and many interesting reading links.
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 Services. As I have joined new team, I wanted to recollect some of my memories.
- 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 :)).
- 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 😉
- I have done improvements in the Load test framework.
- 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.
- As part of this team, I worked on initial scale improvements to meet our preview goals.
- Worked in building telemetry collection, analysis and building dashboards.
- Built experiences in VS for configuring and viewing Application Insights data.
- Built the first user experience in Azure DevOps Portal for CLT
- Built key experiences in Microsoft Azure Portal for Load testing Azure App Service.
- After spending a good 4 years in building CLT, moved to Release Management aka Azure Pipelines.
- Built key experiences:
- Azure App Service CD – Connect 2016
- Azure DevOps Project – Connect 2017
- Azure Kubernetes support in Azure DevOps – Build 2018
- Gained deep understanding of Azure Portal architecture.
- 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 am moving to a team in Microsoft 365 which has very interesting challenges and they work at a massive scale. Hope to have a good learning curve in the new team.
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.
- Introduction to Blockchain by Mark Russinovich – This is definitely a must watch video.
- Blockchain basics on LinkedIn – This got me started with Blockchain.
- 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.
- 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.
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.
- Good to have a high level understanding of containers (Docker etc)
- 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.
- 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.
- 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
- A very good site to understand few internal details about K8S, worth the read – Julia Evans Kubernetes
- 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:
- 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
- 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?
- you can consider them as shared storage
- each node has a kubelet
- manages the pod and containers running on it
- its an agent which helps the nodes to talk to master
- 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.
(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:
- 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
- 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.
- Take 2 copies of the Sale deed on both sides. One is needed for address change and the other for title change.
- 2 Passport size photos
- ID Proof
- Latest electricity bill
- You would need a Rs.100 Title Change Indemnity bond.
- You need to pay a Rs.25 challan
- Link document (both sides) if flat is land owner’s flat
- 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 🙂
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”.
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 🙂
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.
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):
- Azure Friday Video on Performance Testing Web Apps
- 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?
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.
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.
Roslyn is the .NET Compiler Platform which provides open-source C# and Visual Basic compilers with rich code analysis APIs. Roslyn exposes modules for syntactic analysis of code, semantic analysis, dynamic compilation to CIL, and code emission
I heard about Roslyn during one of the Hackathon events but didn’t get a chance to explore it till couple of days back. As part of the recent Hackathon, I got a chance to work on a project which needed Roslyn help to make my work quick and easy. I was amazed at the easy at which we can use the compiler service. This tutorial helped me to quickly get on track, thanks to the author – Learn Roslyn Now. The same author have a FAQ section which gave me a path to many of my requirements for the project like given a particular piece of code in a workspace how do I find all the references across the solution etc etc.
This Hackathon was a great learning and a great fun. The most memorable part being demoing this project to one of our CVPs :). I should be very thankful to one of my team mate for the idea!
Do read about Roslyn and get amazed 🙂
I have been working on TypeScript for the last few months and would like to share a list of getting started pointers to quickly get a hang of the language.
If you are wondering what is TypeScript:
Any browser. Any host. Any OS. Open Source.”
1. Introduction to TypeScript by Anders Hejlsberg, the man who developed this language. You should definitely read about his earlier works, pretty impressive 🙂
2. There is no better place to start than from the official TypeScript language page – TypeScriptLang (Yes the above definition is from this link)
– You have a nice playground to play around TypeScript right inside the browser under the Play tab
– Language spec, samples, Handbook, tutorials etc.
3. Recently I have noticed a good course on edx.org and found it good – Edx Introduction to TypeScript
– This has introductory talk from Anders Hejlsberg
– Exercises to work on.
4. The rise of TypeScript – Interesting reading
5. Channel9 do have many videos on TypeScript.
Hopefully the above reading should help you understand why should you use TypeScript when building heavy applications for web.
For those who are interested in exploring further – I found some real good discussion on Pros and Cons of using TypeScript which gives you a good food for thought. Do search on web and read those as well
As always please do share any interesting articles on TypeScript for other readers.