Showing posts with label Azure. Show all posts
Showing posts with label Azure. Show all posts

Visual Studio Team Services - 5 Good Reasons that make it a Great DevOps Toolkit for Everyone

Microsoft Visual Studio Team Services - A great DevOps Toolkit for Agile Teams

Really, I hear you ask? Why is that? Are there not more established players with better tools in the market? Well, let's give it a bit of context...

Traditionally we would run projects at work the old fashioned way, employing a traditional waterfall delivery model. Like everyone else however, we were wondering what all the hype of Agile, Lean, Scrum and goodness-knows-what was all about. You know, all this new age rage that promises to be so much more effective in delivering projects.

Not wanting to miss out, we grabbed the opportunity as soon as a software development centric project rolled along. We decided to challenge ourselves and deliver this one using Agile. But where do you start with all that? Luckily, some of us had some formal yet basic Agile training and with a bit of research and chatting to like minded folk we felt we had a good basis to get going.

We quickly decided that an Agile wall with sticky notes, cards and blutack was not for us, even though I am of the firm opinion that you can effectively manage projects in that fashion. We wanted a tool to help us, as we set out to manage our work items like Epics, Features, Stories and Tasks, needed a Git based repository for our code, and a visual way of reporting our progress.

Looking around for tools, we quickly zeroed in on the Atlassian kit as they are certainly setting the trend in a fragmented DevOps space and appear to have mature offerings that get good reviews. However, we remembered that Microsoft are playing in this space these days with their Visual Studio Team Services (VSTS) product. In fact, Gartner recognises Microsoft as a Leader in their 2017 Magic Quadrant for Enterprise Agile Planning Tools.

So we decided to have a closer look, and here is where it got interesting. VSTS has a freemium pricing model, where small DevOps teams of up to five people can join a VSTS subscription/workspace, and use this for work item management, Git repositories, load tests and other things for free. Continuous Integration and Delivery pipelines can be set up and appear to work well particularly when used in context of Microsoft's Azure cloud services.

But I digress. The purpose of this post was to outline the key reasons why I think it is worthwhile looking at VSTS if you are a small team wanting to get in on the Agile act and you are looking for a tool to help.  So here we go, in no particular order...

Five Good Reasons that make VSTS a great DevOps toolkit

1. Ease of setup and onboarding - get going fast

Just head over the visualstudio.com/team-services and sign up for free to create your workspace. Then simply create a New Project, give it a Name and Description, select your Version Control format as Git, and your Work Item Process methodology as Agile.


Voila, this will give you a new project shell, with a dashboard for visualisation, a git repository to manage your code, and a work item management area with initial iterations configure.  There is a bit more setting up to do, but it is all very intuitive and within an hour or two you will have everything exactly as you need it to start managing your project

2. It's free for up to 5 people

Yes, free.  Free private Git repos, work tracking, load testing (to a degree), CI and CD pipelines.  And if you have a MSDN subscription by chance, you don't count against the limit of 5 free people but can access it in addition.  Free stakeholder access also included

3. Seamless Git integration with Visual Studio

If you develop in Visual Studio, VSTS will seamlessly integrate.  Push and pull / synch your code to the Git repo online.  Never leave your IDE.

4. Collaborative work item management

Easily manage your backlog, plan your sprints and work collaboratively using mentions to easily keep team members up to date on progress

5. Visually track progress

Sprint burn down, cumulative flow and team velocity charts come out of the box and together with your backlog and task board views allow you to keep track of what is happening at any point during your project


VSTS really served us well and was simple and intuitive to use.  We delivered the full scope of the project right on time and budget.  Reporting and tracking was a breeze thanks to the built in charts that came right out of the box.  And did I mention it did not cost us a cent to get the tool? \

I have to admit I am a bit of a fan - not often you get a useful solution like this for free.  Give it a shot if you are out there wondering about Agile DevOps tooling to use in your next project, and let me know how you went.

Cheers

MB


Some further reading:

Visual Studio Team Services
Atlassian






Load Test Your Web App in 5 Minutes

Recently I have been exploring the capabilities and merits of Microsoft Azure and Application Insights, and have stumbled onto another rather interesting and useful piece of functionality.

Application Insights can easily be combined with Visual Studio Team Services to quickly set up a load test for your web application.

Why Bother with Load Tests?

But why bother with load tests, you might ask?  Is it not good enough that a web application functions as designed with no errors when you do your user acceptance testing?  Surely that's all that matters, right?

Not necessarily.  There have been many recent examples of rather embarrassing failures of high profile web applications due to the sheer number of people trying to access it at the same time.  Who could forget the first Click Frenzy event, or more recently the Australian Census.

Digital businesses rely on web app performance and reliability

It becomes very real if you are a modern digital business, relying on the availability and performance of your web application for revenue, customer satisfaction and brand loyalty.  Your next big online promotion is coming up and you are hoping to drive sales and revenue hard.  But if your promo turns out to be a cracker, is your web application ready for the onslaught of your customers?

The answer is that you absolutely should test and push your application to its limits, so you can understand the capacity of compute you need to sustain the targeted number of concurrent visitors.  Of course you could just use the power of the cloud and automatically scale your application horizontally. But that would make for a whole other post another time.

Visual Studio Team Services to the rescue

Enter Visual Studio Team Services.  If your web app happens to run in Azure, most likely you have already set up an Application Insights workspace to gain visibility on your application's performance and availability. Right from the portal you can also set up a Load Test.  If you haven't already linked a VSTS account, you can do so by creating one on the fly.



Next simply configure the parameters of your load test, give it a name,  what URL to test, duration, how many concurrent users, and from what location to test.  Then sit back and let Azure App Insights and VSTS do the heavy lifting for you.


It will only take a little while to acquire the required resources to run the test but soon enough your test will kick in and the user load is generated.

Are there alternatives?

Of course there are many other testing and load generator tools available in the market.  Some of the more traditional options in this space that I am aware of and know reasonably well are HP LoadRunner and IBM Rational. These don't just do web applications but can also deal with legacy and LOB application testing. Add to this many newer generation web application centric testing tools and you can take your pick for what suits your circumstances best.

In Summary

Application Insights and VSTS are interesting, capable and low cost options and are worth a look if you are a developer in the Microsoft space and/or your applications already run on Azure.  I found the quick and easy setup for simple URL based load tests valuable.  Knowing ahead of time what loads your web application can handle will mean you are always well prepared for the next online sales drive or promotional event.


Watch This Quick Demo



Links

Microsoft Application Insights
HP LoadRunner
IBM Rational Functional Tester

Set Up Web Site Availability Monitoring Using Azure Application Insights In 5 Minutes

Have you got a website where availability matters?  Do you know what the user experience is like for people browsing your site?  Is your online store open for business 24/7?  Why would you even care?

Well, as soon as we are talking "business" and revenue generating web sites I guess the answer becomes obvious.  Customers won't put up with slow performing sites, with errors or unavailability when they want to shop with you.  They will simply move on to the next online store, and most likely not come back.

Of course there are many different ways, tools and services that allow you to monitor your web sites for availability and performance. However, since I'm looking into Azure Application Insights at the moment I was wondering what that would look like and whether this Microsoft option is capable and fit for purpose.

So I guess here goes...  for the purposes of this post let's use this sample raffle ticket sales promo site, which is already hosted in Azure. That's not a pre-requisite, but it is handy. So is it possible to get some web availability monitoring set up in under 5 minutes?  We'll give it a go.

Log into the Azure Portal. If you haven't already, set up an Application Insights workspace for your web application by selecting your web application, select Application Insights, give this new resource a name, and click OK.

How to create a new Application Insights resource in Azure Portal

Within a few seconds, you will get a confirmation in the portal stating that the resource has been created.  With a few clicks you can also instrument your Azure Web App for deeper monitoring, but for the purposes of this post we'll focus on web availability tests.

Select the Application Insights workspace linked to your web app, in our case the QLDNSWFundraising one.  As this app has already got some availability monitoring running, we actually have an Availability percentage straight on the Overview screen.  This is driven by a web test for the home page of this sample web site.

Let's click on Availability on the left and set up another web test monitor. This could be for a shopping cart page, a catalogue item search or any such thing.  You could even set up a multi step web test to simulate an actual customer transaction through your site.  That is however a topic for another post, and in fact Microsoft charges for these multi step web tests separately.


 You will see this following screen


Click Add test, give your new test a easily identifiable name - in our case Fundraising About - enter the actual URL of the page.  Leave the test frequency at default 5 minutes or change as desired.

You could at this point simply click Create and you would be done.  Pretty quick, hey?  But wait, there are a couple of neat advanced settings worth considering.

First, you may be interested in how availability and performance of your site differs from various geographic locations.  Why is that important?  Well, depending on where your site is hosted, performance and response times can vary greatly.  Of course there are mitigating options available such as content distribution/caching networks etc but that's another story.  Or it could be that local carrier outages prevent customers in some geographies from accessing your site but not others.  Good info for your customer service team.

Second, you may want to check the server response a little more in depth rather than just for a 200 response code (page served up okay).  This could be useful for a catalogue item search or the like, where you want to make sure the page returned has a specific word present.  This allows you to test dynamic pages that might be making database calls, which indirectly tests the health and availability of your full application stack.  Pretty neat trick, right?

Click on the Test locations and Success criteria sections respectively and configure these two blades with the desired settings.  Should look something like the following:



Finally click on Create and you have a working smart web availability test.  Within a few minutes, your new test will start running, and you will get the results back in the portal.  You can drill down on each test, check which locations may have failures or slow performance etc.



As a nice added bonus, you will also get a weekly digest email which will clearly show this week's performance and availability as compared to last week.  This can give you piece of mind that the site's performance is not deteriorating over time, or can highlight service level target issues etc.

In Summary

I'm actually quite impressed with the ease of setup, and the ease of accessing and consuming the availability and performance data.  Combine these web availability test with the full Application Insights instrumentation of your apps, and they will add significant value to your full stack monitoring.


Watch a Quick Demo

Is Microsoft Azure Application Insights Worth a Look?


The market for application performance monitoring products is pretty crowded these days. On one hand we have the traditional players with their at times old school APM solutions, and on the other hand we have new entrants who have disrupted the market with modern, web centric product offerings.

Traditional heavyweights such as IBM, HP, CA, Compuware and others are facing off with new kids on the block such as New Relic, AppDynamics and many others.  Conspicuously absent from this battleground was Microsoft.

While Microsoft acquired Avicode - a dotnet APM and diagnostic product - and subsequently baked it into its System Center Operations Manager - or SCOM in short - it never was given much love and development, at least it was not obvious.

Enter Azure Application Insights.  This has recently gone GA and it would appear that it is a key plank in Microsoft's APM strategy.  With hooks in Visual Studio, Application Insights would seem to be geared for the developer and is available at design time to Visual Studio developers to help troubleshoot their code.

Initially not sure why you would give it a second thought over the likes of AppDynamics or New Relic, I must say I find the product interesting and the depth of information, ease of access and consumption and the free tier pricing actually quite compelling.

It could not be simpler to actually instrument your application in Visual Studio.  A single checkbox allows to bake the SDK into your application code, and a couple of further configuration settings will send application telemetry straight to the Azure Portal based Application Insights service.

Of course you can also instrument your existing applications at run time without changing any code.  However, the level of insights and data you get is slightly different.  Do this for Azure Web Apps through a few clicks in the portal.

Certainly if you are a dotnet developer already on the Microsoft stack, developing in Visual Studio, running your applications on Azure either on IaaS or PaaS services, Application Insights seems a logical choice.  It seamlessly integrates with Microsoft's Azure based Log Analytics offering, which is a very interesting product in itself and worthy of its own post down the track.

Application Insights does not just work for dotnet applications and IIS in Azure, but also works for J2EE / Java applications, and on premise workloads.  To instrument on-premise servers, you can download an agent that will configure your IIS server to send telemetry back to Azure Application Insights.

In Summary

As a whole, Application Insights has got me curious, and I am keen to explore whether it actually has any merit in a commercial/enterprise context.

Its integration with log analytics, automatic graphical application and dependency mapping, code diagnostics capability, ability to combine with single or multi step web tests provide a pretty neat package for all-round availability and performance monitoring.

Related links for this post

Microsoft Azure Application Insights
Documentation for Application Insights - Get Started
New Relic
AppDynamics

Acronyms

APM = Application Performance Management
IIS = Internet Information Server
IaaS = Infrastructure as a Service
PaaS = Platform as a Service
GA = General Availability





Most Popular Posts