Archive for December, 2009

Windows Azure - Case Studies

Wednesday, December 30th, 2009

Windows Azure demonstrates the degree to which technology and services are available at the global level.  Companies around the world are using Azure to enable services and applications that serve local and global geographies.  Microsoft has done a great job of enabling Azure in many different geographies, as the following examples demonstrate.

                Sopima, a U.S. based company that provides services for managing business contract life cycles and OCCMundial, a Mexico based company that provides an online job listing application, both switched to the Windows Azure platform.  Each company plans to save U.S. $500,000 per year by using cloud services rather than maintaining their own infrastructure.  Both companies are excited that they will be able to have technical staff focus on development rather than infrastructure.  Kelley Blue Book (KBB) is moving its .NET 3.5 solution to Azure from two hosted data centers, and will be saving $100,000 per year.  KBB evaluated other software-plus-service solutions and selected Azure based on cost, ease of management and available features.

                TradeFacilitate, a company that helps importers and exporters in the European Union, needed a system that would allow them to scale out quickly and enable them to serve customers outside of the E.U. and enable efficient data transactions between the U.S. and the E.U. Utilizing the integrated development environment that is available in Visual Studio, they were able to quickly migrate their code base to run in the cloud.  By using Azure, they were able to scale their applications without needing more staff to manage a more complex infrastructure.

                TicketDirect International is a major ticketing service for venues in Australia and New Zealand.  The nature of ticket sales involves peak loads, and their internal solution requires extra staff and time to manage.  Working with a Microsoft partner, they have decided to move their solution to Windows Azure and their database to SQL Azure so that they can focus further on customer-centered needs, give up the cost of maintaining their own production hardware, and cost-efficiently enable scaling for peak loads.

                 Glympse provides a web-based location-sharing application for use with GPS-enabled phones.  The company constantly evaluates hosting services, and recently moved from Amazon to Azure for the integrated development environment.  The development environment and available services provided with Azure surpass those offered by Amazon.  Additionally, Glympse found that the performance of Azure exceeded that available with the Amazon service.

                The Associated Press provides news that is seen by more than half of the world’s population on any given day.  In an effort to encourage more applications to use information available from them, they created a highly scalable API that can be used by developers worldwide.  The company uses SQL Azure, Windows Azure and the Azure Service Bus to efficiently enable integrations, selectively expose services outside the firewall, take the worry out of capacity planning, and provide high quality development tools.  The management capabilities for deployment and capacity needs in Azure far exceeded those available with other cloud providers.

More case studies and detailed articles can be found at http://www.microsoft.com/windowsazure/evidence/

Windows Azure - Security

Wednesday, December 30th, 2009

Security is essential to any computing environment, and Windows Azure is no different.  In any given field, experience is the key element to success, and Microsoft has more experience in the delivery and consumption of online services than any other company out there.  Microsoft has been managing online computing environments since 1994 when MSN was launched.  They have partnerships in place in over 100 countries that enables them to remain compliant with standards and requirements, and they provide services to hundreds of millions of customers around the world on any given day.  These partnerships and the global exposure ensure that Microsoft exercises the most stringent compliance to standards and security practices.  The Microsoft Information Security Program draws on more than 15 years of experience, and is constantly maintained and updated based on threats and security evaluations.

                The Microsoft Online Services Security and Compliance (OSSC) team manages ongoing risk analysis and security control.  The OSSC team is responsible for enabling trustworthy online services through Azure.  This team has deployed a defense-in-depth approach to security that includes regular risk management reviews, development, and maintenance of a security control framework along with ongoing efforts and collaboration with law enforcement entities around the world.  This process is not new with Azure - it has been in place since MSN was launched in 1994.  Microsoft has been maintaining the Global Foundation Services (GFS) for years, as GFS provides the foundation for MSN, Windows Live and now the Windows Azure platform.  Their practices are tried and true, and have proven successful for hundreds of millions users.

                Physical security, which provides for data privacy and service availability, is provided multiple perimeters, with access being more restricted at each perimeter.  A least privileged security policy is used, ensuring that only essential personnel actually get near the equipment.  Security measures include password, hardware tokens, smart cards and biometrics.

                Specialized hardware such as load balancers, firewalls, and intrusion prevention devices ensure the integrity and security of the cloud network.  The infrastructure actively prevents denial of service attacks and uses gateway functions on dedicated hardware to perform packet inspection and take actions such as blocking suspicious activity.  A globally redundant internal and external DNS infrastructure provides for fault tolerance while additional security controls prevent distributed denial of service attacks and protect the integrity of DNS services.  Continuous monitoring for unauthorized software and DNS zone configuration changes as well as other disruptive service events ensures a secure, reliable DNS environment.

                Microsoft classifies information assets to determine the strength of security controls to apply to data.  A matrix including the business impact and data sensitivity of compromised data is used to classify data.   For example, assets falling in the moderate impact category are subject to encryption requirements when they reside on removable media or when they are involved in external network transfers.  High impact data is additionally subject to encryption requirements for storage and for internal system or network transfers.  In Azure, symmetric encryption requires more than 128 bit keys while asymmetric encryption requires keys that are at least 2,048 bits long.

Outsourcing eCommerce – Tips and Precautions

Monday, December 28th, 2009

Building and supporting a complete eCommerce business is complicated and generally requires a pretty large team with a diverse set of skills. You must have strategic leadership that understands your customers and competitors and can put together a strategic plan to gain a competitive advantage. You need merchandising & marketing analysts to plan and execute email campaigns, identify the best product associations to optimize cross-selling and up-selling online, analyze data from web analytics tools (e.g., Google Analytics, Omniture, etc.) and identify new ways to promote your site (e.g., Search Engine Marketing & Optimization, Pay-per-click, etc.). You need an integrated customer service function (i.e., systems, resources, processes) to respond to new issues you will encounter online. You need a world-class technical team to build your application and then 24/7 monitoring and support of the system once it is live. You need a fulfillment mechanism and integration with drop-ship vendors. You get the point – it can be very complicated and labor intensive to operate an eCommerce channel. That’s why it makes sense for many companies to outsource eCommerce to 3rd parties. However, if you fail to pick a great provider and structure your outsourcing deal properly you can end up with the headache of doing it yourself and none of the benefits you are expecting from outsourcing. Here are a few key things to consider when you begin to think about outsourcing eCommerce:

  • How to best structure the SOWs and other agreements to ensure you will get high quality service and competitive pricing after the go-live. It is easy to get into a scenario where you have little flexibility and there is no option for competition for future development and support - decreasing your leverage and the service you will receive.
  • Determining the appropriate roles and responsibilities for you, the outsourcing provider and any other 3rd parties that may be involved. It is important to align the expectations of “outsourcing” with your partner. Depending on how the deal is structured, you may have to have multiple FTEs dedicated to managing your provider, working on internal issues / business decisions, etc. This can be a bad surprise that has negative budget implications and causes strain on the relationship.
  • Time to Market can be very misleading for some outsourcing solutions. Picking a provider than can quickly provide a solution that meets your business requirements and making smart decision on when to adapt your business requirements to meet the solution will be key in actually realizing fast time-to-market associated with a fully outsourced solution. Also, if you have a significant number of custom eCommerce requirements – outsourcing won’t be a good fit.
  • Proper governance and management of the partner is critical. Even in a fully outsourced solution you will need to manage prioritization (i.e., issues, features), adherence to SLAs and new projects to ensure you get the most from this channel.

Outsourcing eCommerce can be a great fit – as long as you select a great partner and properly align expectations at the beginning.

Project Prioritization Framework – A simple approach to prioritizing eCommerce projects

Monday, December 28th, 2009

Every company I work with has a “wish list” of eCommerce projects longer than they will ever be able to complete. These come from different sources within the organization (e.g., marketing, sales, executive direction, technology projects, product managers, individual business units, etc.) and range from strategic, game changing initiatives to individual’s pet projects that will have little or no impact on the bottom line.

Without a disciplined framework and approach for prioritizing these projects you will end up with “squeaky wheel” prioritization where the team works on whatever project they are getting the most complaints about. There are a couple of major flaws with this approach:

  • It is not based on any type of return on investment (ROI) analysis. In this model, prioritization decisions are made in a silo – without consideration for the true business value or cost each of the initiatives will have.
  • It results in significant wasted effort and frustration from the development team. It is very common with this approach to be constantly changing priorities – without consideration for the opportunity cost of making that change (i.e., what is the team now not finishing because you have redirected their priority).

In an ideal world, you would have a team of business analysts standing by to complete a ROI assessment and full business case (e.g., quantitative benefits, qualitative benefits, full cost model and plan, etc.) for every project idea so that you can quickly and easily make an informed decision. The reality is this isn’t practical or even possible for the vast majority of companies.

Given that, we have developed a simple framework for project prioritization to allow you to quickly assess the relative business value and technical cost associated with each project – and use that information to drive the priority of the team.

The framework is based on a very simple and common sense premise. You should prioritize and work on the projects that provide the highest (relative to other projects being considered) business value (measured in increased profitable revenue or decreased cost) and lowest cost.

Technology Impact / Cost

To identify those projects, follow these steps:

prioritizationSteps

techImpactCost2

An underused resource – production log files (read on, this isn’t just for the operations team)

Monday, December 28th, 2009

If you are a Director of eCommerce or other eCommerce leader, you may think that the log files are just a tool the technical operations team uses to investigate a site outage or other technical problem. No doubt, they are useful for that – but they can also be a valuable source of information that will help you fine tune your site and increase sales. I was on the Customer Technology team at AA.com for about 4 years and one of the things that I took for granted there, and have since learned is not common practice, is the rigorous analysis of the production log files. We used it there for several key purposes:

  • We used it to validate production deployments by checking to see if new errors were introduced the day after a build
  • We used it to proactively identify customer issues – without having to wait for the call center to receive calls and notify us of the issue
  • We would assign a high priority (revenue impacting and frequently occurring) issue from the logs to a developer to research and resolve
  • We also used it to proactively identify issues that one of our 3rd party integrations (e.g., orbitz, aatms, etc.) was having and work with them to quickly resolve

Now, to do this effectively you have to ensure that your application is appropriately logging (instead of burying) errors and then write some scripts to parse, filter and summarize the information from the log files into a consistent and digestible format. This is an iterative process as you refine what is being logged, how verbose the logging is and establish trends for each of the common errors. Once you’ve done that you can begin trending the errors and looking for opportunities to improve your site.

Agile is perfect for eCommerce

Monday, December 28th, 2009

Agile development methodologies (e.g., Scrum, eXtreme Programming, etc.) have become very popular in recent years. The benefits of Agile development are generally thought to be improved flexibility, more frequent delivery of business value, increased collaboration between business and technical teams and the ability to handle frequently changing priorities.

eCommerce projects are perfect for Agile development. Things generally seem to move a little bit faster in eCommerce than in other areas. Priorities are constantly changing to keep up with competition and customer trends and to leverage the latest technology advancements to provide a rich, sexy experience. You need to release functionality early and often, then measure (through web analytics) what works, what doesn’t and iteratively refine it. There is also generally more of a convergence of business and technical SMEs in eCommerce (i.e., the eCommerce business SMEs are pretty technical and you don’t have to be an accountant, inventory manager or other business specialist to understand how your website will impact the business) – so collaboration can be very effective.

Agile and iterative development techniques can be used on any project (e.g., ERP implementations, operational systems, etc.), but nowhere is it a more natural fit that for eCommerce. I can’t imagine why you would do it any other way.

Google Analytics has come a long way

Monday, December 28th, 2009

I first looked at Google Analytics for web analysis a couple of years ago. At the time, it was quite a few steps behind some of the commercial packages (e.g., Omniture, web trends, etc.). I’ve spent the last couple of years working with several large ecommerce implementations that use Omniture. This week I started working with a new client that implemented (although doesn’t really use) Google Analytics. I am amazed at how far it has come. It is now very comparable to Omniture – and it is FREE! At this point, Omniture, Google Analytics and several other commercial products provide you with a tremendous amount of information about how your users interact with your site. If you don’t have a tool in place, I see no reason to pay for one of the commercial tools when you can use Google for free.

So, the key isn’t the tool you choose – it is how you use it. To really get the value out of these tools you have to dedicate resources to actually analyze the data. This takes it beyond looking at what your top pages are, what mix of browsers come to your site and what the average order size is – and digs deeper into identifying opportunities to optimize key portions of the site to get a tangible lift in sales. This includes analyzing key use cases on your site and identifying steps where users are abandoning (leaving your site or going to a different part of your site), analyzing the internal search terms and corresponding results to optimize the results and improving your merchandising through analysis of which products customers seem to naturally associate (cross sell opportunity) and identify under-performing products that are taking up valuable site real estate. Don’t think the only way to increase online sales is to add new features or pay for marketing – sometimes the best thing you can do is optimize what you already have to increase conversions for the users already on your site.

Getting Ready for SharePoint 2010

Monday, December 7th, 2009

Last month at the SharePoint conference in Las Vegas, Microsoft unveiled the feature set and hardware requirements for SharePoint 2010.  2010 requires 64 bit hardware and that might mean a significant re-platforming of your existing developer machines.  With MOSS 2007 developers were free to run a test environment on their 32 bit machines using Virtual PC.  Bamboo Solutions even came up with an innovative solution to run MOSS 2007 locally on Vista machines

MOSS on Vista

However, If you are a SharePoint developer and you currently have a 32 bit machine, there are some significant changes coming down the road.

First, move on to a 64 bit platform if you can.  Irrespective of whatever OS you run(Windows 7 , Vista or Windows Server 2008) moving to a 64 bit platform provides you the flexibility to run 64-bit 2010 Virtual machines natively using Hyper-V or VMWare Server or Virtual Box

If you are running Windows 7 and do not want to deal with VMs, there is an interesting option called “Boot from VHD” in Windows 7.  With this option,  you could boot directly into a Windows 7 or Windows Server 2008 test environment VHD and hence leverage all of your system resources within the VHD.  Here is a great post that talks about the steps to prepare a VHD and boot from it.

http://blogs.technet.com/aviraj/archive/2009/01/18/windows-7-boot-from-vhd-first-impression-part-2.aspx

If you are stuck with a 32 bit machine and you are not part of a hardware refresh cycle, you have one option.  If your machine has a Intel/AMD chipset that supports virtualization, make sure to update your BIOS by visiting the manufacturer’s website.  Once your BIOS is updated, you should see an option to turn on Virtualization within your BIOS setup.  After turning on virtualization within the BIOS, you can run your 2010 VMs.  Currently,  VMWare Server 2.0 and Sun’s VirtualBox support running 64 bit guests on 32 bit hosts.   The performance of these VMs on 32 bit hosts leave a lot to be desired and is definitely not recommended for hard core SharePoint development.  You will be better off developing off of a Hyper-V or VMware Server hosting your VMs remotely.

5 things that you think will work in MOSS 2007 but don’t

Monday, December 7th, 2009

When you work for some time with MOSS 2007, sometimes you might overlook some inconsistencies within the product.  Here is a quick list of quirks(now say that fast!) with MOSS 2007

  1. When you have a Gantt view of the Task List, Web part connections are unavailable.  Hence you cant filter a Gantt View using the Filter Web Parts
  2. DateTime columns cannot be used for Grouping in the Content Query Web Part out of the box
  3. You cannot use the PortalSiteMapProvider to retrieve Navigation items from another site collection
  4. If you have a Date Column in a List, it cannot be used as a Lookup Column on another List
  5. When you use the Content Migration APIs to transfer content from one farm to another, people fields do not migrate accurately

New Features in Visual Studio 2010 and .NET Framework 4

Monday, December 7th, 2009

As a developer working with Microsoft technologies, I use Visual Studio on a daily basis. Therefore, I’m really looking forward to the new version that is currently under development – Visual Studio 2010. It has a number of new and improved features, and will support the upcoming .NET Framework 4. In this post, I’m going to highlight the most significant new and improved features of Visual Studio 2010 IDE and .NET Framework 4. Please note that this information is based on the Beta 2 version of the product.

VS 2010 B2 Start Page

VS 2010 B2 Start Page

Enhanced User Experience

Overall, Microsoft has done a great job cleaning up and organizing the UI and making it easier to use.

  • Reduced complexity lets you focus on the task at hand
  • Better support for floating documents and windows
  • Multi-monitor support increases productivity
  • Customizable Start page (XAML)

Code Editor

New code editor is a great step forward from the usability aspect. It’s been rebuilt using Windows Presentation Foundation (WPF) technology, which enables code editor to present the information in a rich way that was not possible before.

  • Zooming lets you easily zoom in or out any text document or graph
  • Document Map Margin feature renders a graphical view of the source file
  • Inline Call Hierarchy feature displays code calls for an entity or method
  • Highlight References feature instantly highlights all references of a particular object
  • Quick Search feature delivers a word wheel based search
    • Integrated with Highlight References feature
    • Supports CamelHumps in code completion
  • TDD - consume first, declare second
  • Extensible, so possibilities are endless
  • Many Debugger improvements (WPF Visualizer, grouping/labeling of breakpoints, etc.)

Web Development

There are a lot of improvements in the Web Development experience.

  • Full ASP.NET MVC support
  • A high-performance and standards-compliant JavaScript IntelliSense engine
  • Native jQuery support and IntelliSense
  • HTML Snippets
  • One Click Deployment quickly publishes files and configuration settings from development machines to the final deployed site
  • Full support for Silverlight for rich Internet applications
  • ASP.NET 4
    • Static IDs for ASP.NET Controls
    • New Chart control
    • Web.config Transformations
    • Controls output clean markup by default (no need for CSS control adapters)
    • Many improvements to existing controls

SharePoint Development

If you have done any SharePoint development work in the past, your must know how time-consuming and cumbersome it can be. Visual Studio 2010 includes tools and wizards to greatly simplify and speed up SharePoint development. Of course, it will also include all tools needed for SharePoint 2010 development. I’m very excited about this and can’t wait to try these new tools.

  • Advance in usability and functionality
  • New project templates
    • Workflow, Content types, List Definitions, Site Definitions, Web Parts, Application pages, Master pages, Server controls, Modules, Fields
  • New visual designers
    • Web Parts, app pages, user controls, packages
  • Project wizards simplify solution development
  • Improved experience in the code -> debug -> deploy process
  • Create workflows at the site level and add association/initiation forms for either list or site workflows
  • Design BDC models that can pull data from MS SQL Server, Siebel and SAP
  • Import BDC models created in other tools, add custom code, or just package and deploy them to farms
  • VS extensibility API lets you create new or extend existing SharePoint project items, enhance deployment and retraction functionality, and extend the display and actions of SharePoint nodes in Server Explorer
  • Server Explorer can browse SharePoint Sites

Windows 7 Development

Windows 7 is quickly gaining traction and Visual Studio 2010 includes all the tools you need for developing desktop applications.

  • Added tools to assist developers in building new apps and making existing native apps take advantage of new Windows features
  • Full library and header support for Windows 7
  • Significant updates to MFC to support Windows 7 UI elements (ribbon, live icons, search access, multi-touch enabled interfaces)
  • Improvements to the WPF support and integrated data binding from the properties grid and data sources windows

Office Business Application Development

The new tools will simplify OBA development and support the upcoming Microsoft Office 2010 suite.

  • Build Office client apps that span multiple versions of Office and are delivered as a single deployment package
  • Graphically assemble the package, leverage ClickOnce, CD or Web installs to get the apps to the end users
  • Designer support for building flexible UI in either WPF or Fluent allows developers to customize the Office File Menu, Task Panes, Outlook Form Regions and the Fluent UI itself (i.e. ribbon view)
  • Improved data binding, integration of various Office data sources with LINQ, ability to data bind to the BDC
  • Apps can interoperate with many Office objects

Cloud Development

Cloud computing is gaining momentum and Windows Azure Tools for Visual Studio will let you start developing services and applications for Microsoft’s cloud platform.

  • C# and VB Project Templates for building Cloud Services
  • Tools to change the Service Role configuration
  • Integrated local development via Development Fabric and Development Storage services
  • Debugging Cloud Service Roles running in the Development Fabric
  • Building and packaging of Cloud Service Packages
  • Browsing to the Azure Services Developer Portal

Application Lifecycle Management (Visual Studio Team System 2010)

Everyone on the project team will benefit from these new features.

  • Architecture Explorer lets you discover existing code assets
  • Support for multiple diagram types, including use case, activity and sequence diagrams
  • Tools for better documentation of test scenarios and collection of test data
  • Test Impact View lets you run tests impacted by a code change
  • Enhanced version control includes gated check-in, branch visualization and build workflow

Parallel Programming, Simplified

  • Full IDE support for parallel programming
  • Native C++ libraries that use lambda functions and align well with STL
  • Parallel Extensions to the .NET Framework offer support for imperative data and task parallelism, declarative data parallelism, etc.
  • Resource management of the multicore hardware and task scheduling enabled by Concurrency Runtime
  • Parallel capable performance analyzer enables visual representation of concurrency issues
  • Parallel debugging windows and profiling views

Database Support

  • Work with IBM DB2 and Oracle databases in addition to Microsoft SQL Server databases
  • IBM and Quest Software committed to provide Database Schema Providers (DSPs), which will allow offline design, development, testing and change management

Visual Studio 2010 and .NET Framework 4 include a lot of exciting new features and improvements for project managers, architects, developers and testers. You can find more information about Visual Studio 2010 and download the latest version by visiting the Visual Studio website or Visual Studio Developer Center.