Archive

Archive for December, 2015

Latest trends in the application test practices

December 22, 2015 Leave a comment

Paradigm shift

New approach in the application testing is innovative and would require some time to digest. The biggest paradigm shift is to stop chasing bugs and focus on the identifying and changing processes and practices yielding high frequencies of production problems. According to Microsoft, it is possible to achieve practically acceptable threshold of bugs in production only by tuning up SDLC pipeline. The previous statement requires a clarification:

  • Limited number of bugs are allowed in the production
  • The major source of bugs is not implementation but processes and practices
  • If amount of bugs does not exceed the threshold there is no need for the QA organization. The rational is that Developers writing automated test, feedback from Insiders/Preview/Production users , green-blue deployment and the implementation of the feature toggle practices is enough framework to deliver quality at speed.

Functional testing

The message for functional testing is very clear:

  • Test has to be automated
  • Test has to be written and not recorded
  • Test has to be written only by a developer who introduces a change and is fully responsible for the application working in production
  • Test has to be written before or right after a change.

Non-Functional tests

The value of the non-functional tests has to be re-visited through a prism of new emerging concepts such as Continuous insight, elastic scaling and fabric deployment. Continuous Insight has three parts: Availability check, Telemetry and Usage. Availability check performs intelligent application pings and is a substitute for any type of connectivity tests. The application telemetry and usage in the new cloud-born architecture are connected to the stream analytics and integrated with elastic services in order to notify self-balanced , self-healing , resilient fabric cluster with provisioning or de-provisioning events. It seems to me that classic performance testing goals – identifying application breaking or throttling points in pre-production environment and resource planning are becoming obsolete. The recommendation is to identify resources consumption anomalies within telemetry stream that might be due to poor application design or implementation and convert them into technical debt backlog items.

What types of functional tests are necessary?” is not a correct question. The only type of automated test to start with is an isolated requisite based test . All other tests should be a result of an application evolution – found bugs, common inconsistencies, consumer’s feedback, etc..

In conclusion, I would suggest the elimination of the multiple obsolete test practices; along with documentation waste and expensive tooling makes application lifecycle management much chipper , much simple , much cleaner and much faster.

Advertisements
Categories: DevOps, Test

Microsoft cross-platform offerings

December 16, 2015 Leave a comment

Run-time Cross-platform

The natural focus of a .NET developer is typically narrowed to a runtime built on the top of the CLR. However, there are different programmable runtimes supported by Windows outside of the .NET platform.   Among all of the choices of platforms – JavaScript is most recognized, supported and adopted by developers.  Below is an ECMA world diagram for the ECMAScript

ecma-cloud

JavaScript is supported by every browser, OS or mobile device, creating a perfect candidate for Cross platform development.  Client side JavaScript libraries, such as AngularJS, React.js and Express.js, have earned recognition within IT Industry, and should be a part of the mix for any .NET Web Application development. MEAN (MongoDB, Express, Angular, Node) is an end-to-end JavaScript based call stack and is one of the most popular cross-platform development choices.

Hosting Cross-platform

Microsoft and Java are have been pursuing interoperable hosting platform for more than a decade.  Java community offers multiple JVM languages such as Java, Scala, Clojure and JVM oriented application servers – Jboss, WebLogic, WebSphere.  Microsoft hosting platform is built on top of CLR and provides COM+, IIS, NT Services and self hosting.  It also supports any .NET language such as C#, VB.NET, IronPython, ClojureCLR and others.
Lately there are a couple of other developments that require community attention – Microsoft Docker support and HttpPlatformHandler for IIS hosting.
HttpHendlers and HttpModules are classic reliable IIS hosting extensions mechanism. HttpPlatformHandler is a module that allows to redirect HTTP traffic to any HTTP listener such as Tomcat, Ruby or Kestrel without losing IIS comprehensive process run-time and security management.  It has been used by Microsoft Azure cloud services and now is offered as a separate install for IIS 8.
Docker is an emerging technology that has a potential to impact all aspects of SDLC.  Docker architecture allows to package business logic, runtime and configuration aspects and to ship it as a single image to the docker registry for future consumption by any runtime.  Microsoft offering in this space would be Windows Container Server, Nano Server (No UI scriptable Windows Server with CLI, REST, WinRT, PowerShell DSC access).  .NET community would definitely need to catch up with understanding of the Docker infrastructure, PowerShell DSC, SSH, YAML manifest format and docker related Windows Server architecture.
 
Windows Cross-Platform

Microsoft OS system is going through a dramatic change in order to remove legacy code, legacy architecture and over 30 years of dependencies.  During those years Microsoft OS was supporting multiple kernels such as Windows, Windows Server, Xbox and others which have proved difficult to manage and secure.

Windows Platform Convergence

With the Windows 10 and Windows Server 2016 Microsoft is in the process of completing a convergence to a much cleaner model which in a lot of sense looks like a Linux Distributions.  The Core OS will be hosting a kernel and will be a part of any Windows Distribution Client, Server, Mobile, Tablet and Xbox.

As a result, applications written with the scope of CoreOS will be able to run on any Windows device without changes.  Such applications are branded as a UniversalUniversal Application has to be considered as the platform of choice for any smart/rich/thick desktop application as well as tablet or mobile client.

W10-MultiDevice.png

 

.NET Cross-Platform

.NET platform is an abstraction layer on a top of the Windows, goes through the significant re-write. While .NET 4.6 is the new fully featured Window .NET implementation of the CLR, Microsoft has also put full commercial backing of the  Mono-Linux CLR implementation.  It has also introduced CoreCLR which is a subset of the CLR capable to run cross-platform (Windows, Linux, Mac OS). Both Mono and CoreCLR are open sourced.  However Mono focuses explicitly on the maturity of the Linux implementation,  while CoreCLR on the portability.

NetPlatform

.NET community should react to the current Microsoft and Industry trends and start to extend Windows oriented skills set to the unfamiliar territories such as Linux and dnx/dnvm. Selecting CoreCLR libraries and tools will make the applications portable across multiple platforms and devices, creating a significant return on investment.  ASP.NET 5, MVC 6, EF 7 and Kestrel web server are a complete re-write of corresponding technologies using only CoreCLR subset of the .NET 4.6.

Windows10PlatformAndTool
 
Cloud Cross-Platform

A Cloud Cross-Platform concept is known as PaaS – Platform as a Service. The idea behind PaaS is the abstraction from the technical aspects of the hardware and OS and focuses on the service offering only. Below is a diagram showing PaaS scope in comparison:

SeparationOfResponsibilities

A good example which highlights PaaS mindset  is an implementation of asynchronous message interchange  scenario between B2B or EAI applications.  This enterprise pattern usually requires a reliable queue with duplicate message detection and poising messages routing.   Azure’s “Service Bus” queue and AWS’s “SQS” provide such services as well as REST or AMQP channels to access them.  Artifacts such as hardware, OS, runtime are irrelevant.  Moreover,  protocol abstruction like REST over HTTP or AMQP allows to switch from one cloud to another without the lost of the functionality

Categories: Cloud Tags:

Microsoft Connect()-2015; feedback

December 15, 2015 Leave a comment

Microsoft

Microsoft continues to surprise the IT industry with bold efforts to re-brand its image. As of now, Microsoft is a Open Sourced, Cross-Platform, Cross-Cloud global player and is fully committed to the end-user experience and satisfaction. A few of the latest announcements that re-enforce and emphasize Microsoft’s message are the Docker, RedHat, Sonatype partnerships, and the CoreCLR, .NET libraries, Visual Studio open sources.

 

Note: During Day 2 of the group meeting, I had a chance to speak with the Product Manager of the iOS mobile platform for one of the communications company… The team he manages has decided to use Azure Mobile Services for push notifications, and Azure Active Directory and Microsoft Intune in order to implement security policies. He was asked “Why choose the Microsoft cloud platform instead of AWS?” and his response was “capabilities, simplicity, and it’s relatively inexpensive”. In my opinion it’s quite meaningful and promising to hear such a response from a representative of the once “alien” culture.

  

Microsoft DevOps practices

Microsoft is a huge supporter and practitioner of the Agile Project Management, Continuous Provisioning, Continuous Integration, Continuous Delivery, and Continuous Insight paradigms. They also mentioned the VSTS ( Visual System Team Services) and the Mobile Tools units that are very close to switching to Continuous Deployment (vs Continuous Delivery), and also that Bing is already a Continuously Delivered product.
 

Public Cloud adoption

Companies that went through the initial, and usually painful, cultural transition have gained trust for cloud security and the ability to support governments’ regulations and privacy requirements. They are now in position to benefit from the global cloud presence, have the ability to offload infrastructure concerns, and enjoy the quick rate of the innovation that cloud provides. Cost-wise – many suggest that initial cost saving is insignificant and is around 10% or less. However, with understanding how to tweak cloud transactions accompanied with cloud elastic services would bring savings up to 25-30%. The transition to a PaaS architecture might decrease spending in half.
 

SAFe

Microsoft definitely provides a set of tools to manage Scaled Agile practices. However, the feeling I got is that Microsoft internally does not use the approach. Instead, they completely rely on the consumer’s feedback. Microsoft speakers actually made a point of working on a feature only if it made to the top of the stack by end users or communities vote. Community-driven features such as Docker support are considered strategic. Recently acquired HockeyApp platform and feedback channel in every new Microsoft product provide an ability to collect user experience and react on it. The role of the business in this consumer oriented model is to adjust highly voted features with financial and market impact analytics and advertise them as soon they are entered into the preview mode. Microsoft intensively uses Power BI and Azure Machine Learning Services for the market and financial mining.
 

Test practices

Microsoft perspective on the application testing is innovative and would require some time to digest. In short – the recommendation is to stop chasing bugs and focus on the identifying and changing processes and practices yielding high frequencies of production problems. According to Microsoft, it is possible to achieve practically acceptable threshold of bugs in production only by tuning up SDLC pipeline. The previous statement requires a clarification:
  • Limited number of bugs are allowed in the production
  • The major source of bugs is not implementation but processes and practices
  • If amount of bugs does not exceed the threshold there is no need for the QA. The rational is that Developers writing automated test, feedback from Insiders/Preview/Production users , green-blue deployment and the implementation of the feature toggle practices is enough framework to deliver quality at speed.
Functional testing

The message for functional testing is very clear:

  • Test has to be automated
  • Test has to be written and not recorded
  • Test has to be written only by a developer who introduces a change and is fully responsible for the application working in production
  • Test has to be written before or right after a change.

 
Non-Functional tests

The value of the non-functional tests has to be re-visited through a prism of new emerging concepts such as Continuous insight, elastic scaling and fabric deployment. Continuous Insight has three parts: Availability check, Telemetry and Usage. Availability check performs intelligent application pings and is a substitute for any type of connectivity tests. The application telemetry and usage in the new cloud-born architecture are connected to the stream analytics and integrated with elastic services in order to notify self-balanced , self-healing , resilient fabric cluster with provisioning or de-provisioning events. It seems to me that classic performance testing goals – identifying application breaking or throttling points in pre-production environment and resource planning are becoming obsolete. The recommendation is to identify resources consumption anomalies within telemetry stream that might be due to poor application design or implementation and convert them into technical debt backlog items.

“What types of functional tests are necessary?” is not a correct question. The only type of automated test to start with is an isolated requisite based test . All other tests should be a result of an application evolution – found bugs, common inconsistencies, consumer’s feedback, etc..

In conclusion, I would suggest the elimination of the multiple obsolete test practices; along with documentation waste and expensive tooling makes application lifecycle management much chipper , much simple , much cleaner and much faster.

Categories: Cloud, DevOps