DNN Platform (formerly known as “DotNetNuke”) is a leading Content Management System (CMS) for the .NET platform. To respond to market interest and demand, we began a process (in 2012) to extend our on-premise software to the cloud.
In this webinar Joe Brinkman of DNN takes you behind the scenes for a look at the related architecture design, planning and implementation. Joe provides insights on DNN’s cloud platform evaluation (ultimately choosing Windows Azure), along with design considerations on how to integrate DNN’s software in the cloud. He also covers Azure Worker Roles, geo-redundant storage, device pools and much more.
3. What is DNN?
Largest and Most
Vibrant Open Source
Project In .NET
7.0M+ Downloads
1.0M+ Registered Members
700K+ Installs
150K+ Unique Modules/Apps
Created Per Year
11. Project Goals
Support two
Environments
• Great Trial experience
• DNN as a Service
Key Benefits
• Simplify onboarding
process
• Address key pain points
• Integrated Solution
12. Different challenges calls for different
solutions
Trials Environment
Benefits
•
•
•
•
•
Instant on
High Density
Fixed Costs
Fully scalable
Multiple Products
13. Different challenges calls for different
solutions*
Production Environment
Benefits
•
•
•
•
Dedicated
Highly Available
Fully scalable
Cloud Aware
15. One System to Rule Them All
Billing
System
Company
Website
CRM
System
DNN
Cloud
Services
Marketing
Automation
System
Provisioning
System
Customer
Support
System
21. Device Pools to the Rescue
M
M
M
m
m
M=m
m
…
Product A
Product B
Product C
Product Z
22. Key Takeaways
Moving to the cloud is easy…
Leveraging the cloud is much harder
Focus on the Customer
The cloud can be complex, but the customer doesn’t
need to know that
23. “ When you first start off trying to
solve a problem, the first solutions
you come up with are very
complex, and most people stop
there. But if you keep going, and
live with the problem and peel
more layers of the onion off, you
can often times arrive at some very
elegant and simple solutions. ”
Steve Jobs
DNN is a Web CMS that is perfect for quickly building websites and web applications. With thousands of brand name customers like Bank of America, BP, Hilton, Samsung and Kaiser Permanente you know that DNN is flexible enough to handle your requirements.
The DNN Platform, combined with 1000s of available extensions, make it easy to build cutting edge websites and web applications.
Building a DNN site is actually pretty easy considering :it is server-side software and 15 years ago you’d need a team of engineers and a sizeable bank balance to build such a thing. The steps are relatively simple. DNN Software comes as a compressed folder full of scripts, files and programming bits and pieces.[CLICK] Download the software. [CLICK] Extract the files to your server. If this is a local installation then you will need to setup folder security. If this is not a local installation then you’ll need to arrange for someone to host your site. There are many great hosting options available.[CLICK] Once you’ve created the folder full of the software, then you need to create the IIS website and application pool to run the code, and make sure the permissions and bindings are correct. [CLICK] Then you create the SQL Server database (assuming you already have a SQL Server, of course) and set up the user and credentials for the database[CLICK] Now that you have a website and database, it’s time to run the installation wizard. This will step you through the process of actually populating the database with the tables and code, and unpacking the various parts of software within the DNN Codebase itself.[CLICK] When all of that is finished, you have a new DNN site which you can view in your browser.That is the DNN install process – like any software company, a lot of effort goes into making the installation process as painless as possible – yet problems still get caused by the number of variables in the equation.
In order to simplify the getting started experience, in 2006 we created a Demo environment so new users could checkout DNN before installing it locally. [CLICK] The DNN demo environment ran on our own servers and was able to handle 1000s of demos every month. This environment utilized the DNN multi-portal feature and provided users with a free 2 week demo.[CLICK] Of course, this environment had it’s share of challenges. Because it used a shared DNN instance each user was limited to just Admin functionality. They could not install custom skins or module or do anything else which required Super User privileges. DNN easily handles 100s of websites on a single install, but our demo environment was beginning to strain our ability to scale. With 1000s of demo websites being created every month we had numerous challenges with scaling which had to be close managed.
In 2011 it became apparent that we needed to prepare DNN to run in the cloud. We started to see more and more customers who were interested in running DNN in the Cloud.
As part of our effort to move DNN to the Cloud, we evaluated a number of cloud providers like Rackspace, Heroku, AppHarbor, Google AppEngine, Windows Azure, AWS and others. Some of the providers could be quickly eliminated because they did not support .Net, however we still looked at them to see what kind of features we might like in our ultimate winner.In 2011 we started working with a hosting provider that was moving into the cloud space. That effort ultimately didn’t work out, but it helped clarify what features were important for us as we moved forward.We finally chose to partner with Microsoft to deliver DNN using Windows Azure.In evaluating cloud providers, and in choosing Windows Azure we looked at a number of factors.ScalePerformancePriceVisionExecutionStrategic Alignment
Even as we were ramping up our cloud product, Microsoft was rapidly improving the Windows Azure platform. By the beginning of 2013, DNN users had 3 options for hosting DNN on Windows Azure:[Click] Windows Azure Websites provides a shared hosting option that in some respects makes it easier to get started with DNN. WAWs make it easy to scale your site up to multiple instances or to move to a dedicated VM. Of course, WAWs is a very constrained environment which doesn’t suit every customer.[CLICK] Cloud Services is a unique offering from Microsoft that allows you to focus on your application and not worry about the underlying infrastructure maintenance. The DNN Azure Accelerator helps take the pain out of installing DNN onto Cloud Services. While cloud services provides more control over the environment than WAWs it still has a number of limitations which may be too constraining for some uses.[CLICK] Virtual Machines provide complete control over the hosting environment. Hosting DNN in a VM is no different than hosting it on your local machine. Of course that means you are responsible for all the security settings and OS maintenance, but it provides you ultimate flexibility.
Lets look at what it is like to install DNN on WAWs. This environment provides the most streamlined hosting option for Windows Azure.The steps you need to take are:[CLICK] Create an Azure subscription. Many people might already have one, and it’s not that difficult to do[CLICK] Within Azure you can choose to create a new Website from the App Gallery – you just choose DNN as the site you want to create, and that kicks off the Windows Azure Websites process[CLICK] The website gets created for you automatically, and that also installs the application files into the location. [CLICK] As one of the steps of Gallery wizard, you will be given the option to create a Azure SQL Database to store the data for your new site. While this is mostly automated, you still need to pay attention. The credentials and connection information for the database will be needed later when you configure DNN.[CLICK] Once that is complete, you can start the DNN installation wizard which kicks off the DNN installer in the same way. Here is where you need the credentials collected from the prior step[CLICK] Finally you can view your completed site in the browser, and it’s all createdThis process actually works quite well and I have used it to create DNN sites. Once you’re at the end of the process, you’re free to start building your site as normal
As you can see from the steps involved to create a DNN site on WAWS, it is still not a completely straightforward process. Moving to the cloud is about more than just getting DNN to run on a Cloud Provider. It is about making DNN truly cloud aware.Our cloud project had a couple of key requirements - Provide a great trial experienceDNN as a ServiceWhen building out these two environments we looked to provide some key benefits to our customers.Simplify onboardingprocessAddress key pain pointsIntegrated Solution
Our trial environment uses the Windows Azure Pack running on Windows Azure VMs. [CLICK] Our trial environment makes it easy to quickly and easily launch new DNN trials of our Evoq products. The Windows Azure Pack is a high density hosting environment that allows us to host 1000s of trials using a fixed number of VMs. As our server load increases, we are able to easily add new VMs and have the system continue to scale seamlessly. Also, we built the system so that it is easy to add or remove products allowing us to deliver trials for our entire product line.
Paying customers have different server load and security requirements than customers who are just trying out the product. For these customers we provide a dedicated environment based on Cloud Services. This environment provides multiple web workers in a highly available web farm configuration that can be quickly scaled up to include additional worker roles as needed. Our production environment also includes many cloud specific features which leverage the broader capabilities of Windows Azure.
In order to manage everything, we built a single system running in the cloud. This system which we call DNN Cloud Services, handles coordination between all of our systems. A simple signup page on our website will result in interactions between 3 different backend systems even as the customers device is being provisioned on Windows Azure. If any errors occur in the process the system automatically logs it into our Customer Support System for follow up.
DNN Cloud services primarily communicates using Web API and Windows Azure Enterprise Service Bus. Once a request for a service is received it is placed in a message queue. Worker roles monitor the queues and process the requests as they arrive. Using this architecture the system is able to easily scale to very large workloads. If we find that requests are backing up in the queues we can spin up additional worker roles to help handle the extra load.
One of the primary services provided by DNN Cloud Services handles provisioning new DNN sites. This system is an abstraction over the steps needed to spin up a new DNN site using Windows Azure Pack, Cloud Services or Virtual Machines. Theoretically, we could write a provisioning provider to spin up a new website on any cloud service.
Each DNN website consists of 3 major components which much be provisioned on Windows Azure: compute, database and storage. Whenever a device is provisioned or deleted, we must make the appropriate calls to the underlying cloud APIs to handle provisioning or deleting the associated resources.
For Windows Azure, this means that every device will require us to make calls to the Management API, the Storage API and the SQL Azure API.
When we first launched DNN Cloud Services last year, we were provisioning trials using Windows Azure Cloud Services. It could take up to 30 minutes to provision a new customer request. We learned very quickly that customers today do not want to wait. We were only getting about 10% of customers who would actually trial the software after the provisioning was completed. We would send out a follow up email, but once they moved on, they almost never returned.We knew that it was critical to be able to make it so that customers could get a trial almost instantaneously. So we set out to solve this problem.
A common mechanism to solve resource allocation issues is to use “resource pools”. By pre-allocating resources, you can make most resource requests almost instantaneous. We built a system that allows us to allocate different size pools based on the type of product and even by specific product configurations. These pools will automatically try to ensure there is a backlog of devices to handle the anticipated load. Using minimum and maximum pool sizes we can ensure that the system is balancing the desire to keep delivery delays in check while also not keeping too many costly resources sitting idle.
In moving to the cloud we had a couple of key takeaways:It is easy to get DNN running in the cloud. It is much more difficult to make DNN truly leverage cloud services to solve problems which matter to our customers.At every step, we need to keep in mind the challenges that the customer is having and look at how we can use the cloud to solve those challenges. We don’t use the cloud because it is the current buzzword. We use the cloud because it solves a problem that customer care about.Even though leveraging the cloud can be very complex, the customer does not need to know about the complexity. We do everything we can to keep things simple for the customer.
When we were building Evoq in the Cloud, we had one key goal in mind. Deliver the simplest and most elegant solution possible. This quote from Steve Jobs summed up exactly what we were striving to achieve. Take a very complex problem and distill it down as much as possible – to strip away the needless configuration options, buttons, checkboxes, etc., and deliver a solution which gets to the heart of the problem.