Introduction
You may have come across DNN in the past,
or even recently. First released in 2002 as an open source project called
“DotNetNuke,” we quickly expanded to become the largest open-source project in
the Microsoft ecosystem. DNN Corp was formed along the way and continues to act
as the steward for the open source codebase. We also offer commercial solutions
built on top of it.
In this post, I’m going to share with you
some lessons learned along the way of taking the DNN Platform from an on-premise
application to a turnkey, cloud-based solution. This case study will be
particularly helpful for anyone undertaking a ‘brown field’ application
migration to cloud services, with particular attention to leveraging the
benefits of the cloud over just putting a site on Infrastructure as a Service
(IaaS).
Early
Efforts with Cloud
With the announcement of Windows Azure in 2008 and the launch of
the platform in 2010, many in the DNN community became interested in this
promising new way of delivering sites. The early work included making the
entire DNN Platform compatible with SQL Azure from DNN 6 onward, positioning it
so that anyone could install the application on Windows Azure without having to
modify the core code. A full solution was developed by David Rodriguez as a
community contribution called the DNN Azure Accelerator
(related: a Code
Project interview with David Rodriguez).
This open-source solution provided the
answer to the tricky problem of how to deliver a dynamic, extensible
application like DNN into Azure Cloud Services, which works from pre-defined
packages. The Azure Accelerator forms the foundation of how DNN sites are
delivered on Azure to this day.
In 2012, DNN
Corp announced an alliance agreement with Microsoft to deliver Content Management
Solutions in Azure. This partnership between DNN and Microsoft recently delivered
the resulting product : Evoq in the Cloud. Evoq in the Cloud
delivers Evoq Content, our industry leading CMS solution, and Evoq Social, our turn-key community solution, as seamless, managed services.
5 Lessons Learned while building Evoq in the Cloud
Lesson 1 : SaaS or PaaS - Choose the
strategy up-front and carefully
One of the first questions to address when
offering an application in the cloud is whether it will be a managed solution
or just providing infrastructure and product.
The essential resources in making this
decision are both current and prospective customers. We have an active
ecosystem of Hosting partners to consider. Our customers have a demanding list
of requirements: they want an on-demand, fast, flexible, affordable, extensible
and simple service. Thankfully, all the pieces of Windows Azure make it
possible to satisfy these requirements.
We chose a mid-path between SaaS and PaaS: the
software is delivered as a service, but gives administrators the ability to
interact and extend the platform. We believe this simplicity, with power,
ease-of-use and extensibility, is the right choice.
The key to this decision was the desire to provide
a fully integrated solution, which included both the software and the delivery.
An integrated solution prevents the customer from having to use an ad-hoc
collection of tools to manage their site. The customer is in control of tasks
which once might have required an experienced Admin to perform. There is one
user experience, one supplier and no buck-passing between platform provider and
software vendor. It is all built and tested to work together by a single team,
who understands the solution from end-to-end. This is all possible by delivering
an integrated service and customers tell us they love it.
Takeaway: Carefully consider whether
you want to deliver a true SaaS solution, or an infrastructure-focussed PaaS
solution. This will drive many decisions further into the project.
Lesson 2: Leverage Existing or Build New
Product?
An early option tabled was to build a
stripped-down, simplified product that was a cloud-only option. This has merit
for addressing a new audience, but has drawbacks in ignoring your existing
audience. With an installed base of 750,000+ websites worldwide – any of which
might be a candidate for moving to the cloud product – it made much more sense
to use Azure as a delivery channel – hence Evoq in the Cloud.
Having the exact same product distributed
to all customers streamlines support and development and prevents customers
from feeling locked-in. It also allows anyone from our large install base to
migrate to the cloud product.
Once this decision was made – the product
would be exactly the same, and the cloud would be a delivery channel – this
informed the rest of the decisions around system architecture. Any
cloud-specific enhancements would then be developed using one of the strengths
of DNN – the extensibility, which allows the product to be customised without
changing any core code.
Takeaway: When deciding on a new
product or adaption of your existing product, consider the market context you
are in and whether the costs of a new codebase are offset by the benefits.
Lesson 3: Devise new features by
leveraging cloud capabilities
Windows Azure provides a large variety of
features to leverage in applications. Instead of looking at the tools to try
and dream up ways of using them, it’s better to dream up features that would
delight the customer and find ways that Windows Azure tools can help build it.
By evaluating feedback from our customer
base, it was easy for us to imagine a service where the customers wouldn’t have
to install anything. By having an Azure Worker Role automatically run the
install process, we took a manual process and had it automated.
It was easy to design a backup and restore
service that combined the database, application files and customer-specific
content files into a single compressed backup file. We could then create a
software update service that combined backups and upgrades (which are similar
to installs) and even automatically detect when an upgrade failed. When an
upgrade fails, we automatically return the site to a working version.
Takeaway: Invent new features around
customer requirements rather than toolsets
Lesson 4: Leveraging Cloud Capabilities for Flexibility,
Performance and Reliability
Adding extra features to the product is one
aspect of leveraging cloud features. When customers think cloud, they think
flexibility, performance and reliability. Using the Cloud
Services (PaaS) platform in Azure brings benefits in terms of scalability,
access to worker roles, lower maintenance and high isolation.
This required inventing some new techniques,
such as how to keep persistent application data on a web role that can be
created or destroyed as needs require. With new techniques like this, the
payoff is tremendous: a truly scalable application. We also leveraged Azure’s
geo-redundant storage within the application, which gives a much higher
level of redundancy than a primary storage location. These features create true
points of differentiation that are not easy to replicate with hosting
solutions.
Takeaway: When moving to the cloud,
take the extra effort to leverage the inherent advantages of the platform
you’re using.
Lesson 5: Customers love trials. Give them fully-featured
trials.
The expectation of prospective customers is
that they can see, experience and interact with a product before taking it any
further.
The DNN Cloud team addressed this problem
by providing cloud-based trials. But customers wanted more. They wanted instant
gratification, instead of waiting 15 or 20 minutes for a trial.
In response to this customer need, we
implemented “device pools,” which are sets of pre-configured, pre-installed
cloud sites ready for customer use. These pools are continuously allocated to
match trial customer demand. Delivering a cloud trial is extremely fast and
takes around 30 seconds from start to finish. You can try it out yourself: get
an Evoq Content in the cloud trial here.
The results are in: customers love our
cloud trials. And while they sign up at prodigious rates, the cloud is there to
adequately support the demand.
Takeaway: Work out how you can
leverage cloud resources to provide customers trials of your product.
Conclusion
Taking an on-premise application and
adapting it to cloud delivery is not always an easy task. The work done by the
DNN Cloud Team was guided by the desire to provide a new delivery channel for
an existing product that allowed existing customers a smooth transition to the
cloud.
The product had to be simple and flexible
to attract new customers. By leveraging Windows Azure and working with
Microsoft, we’ve been able to navigate these challenges. The end result is a
product that retains all of its original strengths, while adding significant
new strengths as well.
Take the DNN Cloud Trials Challenge and
create a new Cloud-delivered
Evoq Content trial in 30 seconds. Or, if you are building a new online
community, why not try out a Cloud-delivered
Evoq Social trial?