Chapter 5

Introducing Windows Azure and SharePoint 2013 Integration

WHAT’S IN THIS CHAPTER?

  • Learning about cloud computing solutions
  • Understanding the different approaches to buying and hosting SharePoint online
  • Discovering Azure integration options and the new Azure workflow

MOVING TO THE CLOUD

For the past 20 years, corporate IT departments have focused on developing redundant infrastructures and developing a critical line of business applications to meet strategic business objectives. Over this period in time, the price, availability, and interconnectedness of computing has changed dramatically. Computing devices have moved from the desks of the privileged to the pockets of the masses. The ubiquity of wireless connectivity and the advent of entire new computing paradigms such as the Internet and tablets have strained the traditional IT organization’s capability to flex and adapt. Two decades ago, business reports were delivered on paper. Ten years ago a line of business application could generate reports that worked on any machine with the correct OS and had the client application installed. Today, executives expect to operate their company from their iPhone and iPad. The days of Bring Your Own Device (BYOD) have definitely arrived.

On top of this increasing pace of technology change and the convergence of the consumer and corporate technology stacks, the world has suffered a tremendous financial setback. IT departments around the world and at every size organization are searching for ways to reduce or eliminate expenditures. This “doing more with less” mentality pushes IT managers and application developers to constantly look for cheaper ways to do things.

Outsourcing IT systems was identified as a formal business strategy in 1989, a revolutionary step taken first by Eastman Kodak but quickly adopted by dozens of major companies. Outsourcing is defined as the strategic use of outside resources to perform activities traditionally handled by internal staff and resources. With this definition, it is easy to see that companies have been doing this forever, whether in the form of leveraging contractors to smooth out the peaks and valleys of a variable workload or in the form of purchasing the services of another business such as a parts manufacturer supplying widgets to a consumer products manufacturer.

Outsourcing has primarily been adopted as a business strategy to secure some or all of the following benefits:

  • Reduce and control operating costs
  • Improve capabilities by focusing on core competencies and rely on world-class partners
  • Share risks and resources with partner organizations

Although outsourcing has historically connoted the reduction of operating costs through the elimination of head count, IT organizations have stretched that definition to include a number of IT-specific initiatives designed to gain all of the previously listed benefits. Data centers have long been moved outside of corporate office buildings to reduce risk and achieve economies of scale. The evolution of hosting began with the movement of servers to data centers. The introduction of virtualization and its capability to maximize computing efficiency ushered in an era of multitenancy, or sharing of physical computing resources. Spurred on by the plummeting cost of hardware and suites of powerful virtualization technologies, grid computing enabled allocated computing resources to flex up and down, meeting demand without squandering capacity. Large organizations such as Amazon.com, Salesforce.com, IBM, Google, and Microsoft built massive data centers that leverage this foundation of shared resources and economies of scale to introduce commercially available outsourced computing capabilities called cloud computing (so named because of the cloud-shaped symbol used to reflect complex computing infrastructures such as the Internet).

What Is the Cloud?

Cloud computing is essentially a new business model: IT as a service. Organizations facing pressured budgets are attempting to reduce on-premise investments while still having access to the capabilities. One of those mechanisms to achieve these goals is to leverage the power and promise of the wave of cloud computing vendors offering competitive IT outsourcing options. The siren song of cloud computing is indeed hard to resist. Much in the same way an organization can benefit from moving a server from physical to virtual, the organization saves money in operating costs, electricity, and potentially even head count by outsourcing elements of the IT infrastructure.

Cloud computing comes in a variety of flavors; the three most significant are infrastructure as a service (IaaS), platform as a service (PaaS), and software as a service (SaaS). Each offering consists of the cloud vendor offering to take more responsibility in exchange for a reduced amount of flexibility. Figure 5-1 details the major stack elements involved in each flavor of cloud computing.

Moving from an on-premise environment to an IaaS provider such as Amazon’s EC2 enables an organization to eliminate the need to have internal servers, storage components, and networking (refer to Figure 5-1). The full control of the virtualized IaaS environment remains in the hands of the customer, not the vendor. Although this level of flexibility may be exactly what is needed in some cases, it does come with an additional level of responsibility because the IaaS layer is currently programmatic. Consider the recent success story of Netflix weathering the Amazon.com cloud outage that brought down so many other online applications. To successfully remain online despite the outage, Netflix was required to write a large amount of networking code. Software applications built on top of IaaS layers often end up with a surprising amount of “infrastructure” code that contributes little-to-no business value.

Moving up a level from IaaS to a PaaS approach means that the customer accepts the cloud vendor’s control of the run time and the operating system upon which it runs. For example, with Microsoft’s Windows Azure platform, developers simply write functions that are delivered to the cloud. These developers are freed from worrying about the lower-level infrastructure code, and the customer organization doesn’t need to worry about O/S upgrades, and so on. In exchange for this level of optimization and focus, the customer must accept the platform vendor’s restrictions for development languages and capabilities. Should the customer organization want to make a strategic shift, such as one that takes them away from .Net to Java, the current cloud platform might possibly need to be abandoned and all logic reimplemented.

At the top of the cloud stack is the decision to fully outsource all components of an IT solution to a SaaS vendor. SaaS vendors offer an application or applications, typically web-based, which enables the customer organization access to functionality without concerns about stability, upgrades, or capacity. Users simply pay for their use. Consider Salesforce.com and its Chatter platform for enterprise social connectedness. Users of the application can chat, exchange files, and even extend the web application’s core capabilities with custom functionality when necessary. Of course, in the walled garden of a SaaS vendor, moving to a different vendor is often a complex and costly migration.

Why Companies Care

Given an understanding of basic cloud computing concepts, the question usually asked is given a set of specific target benefits of cloud computing, “When does it make sense for an organization to consider cloud computing alternatives to in-house IT services?” Is the organization seeking to manage expenses for hardware investments? Beyond the potential financial benefits of cloud computing, why should a company with in-house IT expertise care about cloud computing?

It is difficult to give a one size fits all answer to this question. Instead, consider the types of issues and scenarios facing the particular organization in question. Some organizations are so large and process-driven that interactions with the various teams inside of IT take large amounts of valuable time. Other organizations are worried about the capability to minimize expense while still being in position to handle large, infrequent spikes in demand as is frequently true of web and mobile application vendors. Still other organizations may look to bring exceptional capabilities into their organization, capabilities that would otherwise be prohibitively expensive to develop and maintain internal to the organization.

Integrating cloud technologies into the standard set of IT services is an undeniable wave of change sweeping through corporate IT. The question faced by many then becomes, “What are the specific benefits my IT organization seeks to secure with this new technology?” The answers to this question typically depend on who is asking and what the individual yardstick for success looks like.

A chief information office (CIO) or chief technology officer (CTO) is typically concerned with the cost and speed of delivery and whether or not their people are focused on the right things. A CIO looks at the cloud as an Innovation Enabler, a platform that helps companies focus on innovation because it eliminates the infrastructure of getting up and running. Not only is the cost of delivery through the cloud typically much lower, but also the cloud by its very nature enables significant agility. Agility in the cloud is defined by the capability to quickly add and remove capacity, capabilities, and even entirely new solution offerings.

A chief marketing officer (CMO) or chief financial officer (CFO) usually has different concerns. Candidly, a CMO or CFO is typically motivated by the historical relationship with the IT organization. The cloud offers an opportunity to side-step around IT to accomplish business goals with fewer obstacles. The cloud is a Business Enabler because it is a platform with little to no dependence on existing enterprise infrastructures, full flexibility of technology stacks, and no limitations on capacity. Cloud vendors of PaaS and IaaS can usually accommodate a multitude of technologies and programming languages. For example, the Force.com platform now supports Java, the Windows Azure platform now supports PHP, and Amazon.com offers both Windows and LAMP platforms as EC2 Reserved Instances.

It is impossible to read a business or technology magazine or website without seeing cloud computing advertisements. All of the large technology vendors have or are introducing their cloud services. Even Dilbert has devoted comic strips to cloud computing. Companies are actively investigating the technologies, seeking some way to turn the best-in-class capabilities of cloud vendors into competitive advantages. Consider Netflix, a DVD subscription service that transformed its business and an entire industry by building a movie streaming service on top of Amazon.com’s cloud services.

Why Developers Care

Given the ringing endorsement in the previous section for why a company should consider moving to one of the many cloud computing options available, it may seem redundant to say that developers should care about cloud computing. However, simply because management says to do something doesn’t convey the depth of power and flexibility a single developer or a team of developers can have by incorporating cloud computing into their software development process. The rest of this section discusses some of the legitimate reasons why individual developers should pay attention to cloud computing.

The first reason is that cloud computing is an undeniable emerging force in software development, a sea change on the same magnitude as the Internet was in the mid-1990s. Where the Internet required developers to learn new skills to take advantage of the new methods to reach users, cloud computing comes with a similar offer. In exchange for picking up cloud computing capabilities, developers can reach infinite numbers of users with new functionalities across an ever-widening set of access points. Mobile devices and smartphones regularly rely on cloud services. Corporate infrastructures are migrating into the cloud. One of the best ways to future-proof a career as a software developer for the next several years is to incorporate cloud computing technologies into your software development toolkit.

Software delivery becomes easier than ever before with the power of the cloud at your back. Not only is it remarkably easy to provision a development environment or a development/integration environment in the cloud in minutes compared to the time it may take for corporate IT to respond, the skill bar for software delivery is actually lower. Cloud companies offer services that a developer can simply hook into, replacing what may otherwise take tremendous amounts of effort. For example, Microsoft’s Azure service offers Media Services for streaming media from the web. Salesforce.com offers an API to its full suite of service objects so that the developer never again needs to create a “customer object” or worry about how to tie a customer to an order in the database. Cloud Foundry can help your applications reach web scale with MongoDB! Not only does the cloud offer new services that may otherwise require herculean efforts to build and deploy as an individual or small team, the immense power and elasticity of the cloud means that developers can write less code that is more efficient. For example, a constrained environment may lead a developer to conclude that vector graphics are more memory-efficient, but with the flexible power of the cloud, a developer can opt for the much easier to code bitmap graphic. Developers can focus on creating solutions rather than on performance tuning. Although cloud computing offerings do lower the skill bar, those technologists who are truly skilled are the ones excelling and setting trends in the industry.

The modern software environment is frequently a story of interconnected and integrated applications. In the cloud, the integration story is usually clear and easier to achieve than in a standalone environment. Cloud vendors have frequently created connections between major service offerings or have provided connections and APIs for connections as opposed to the tightly coupled code more frequently encountered inside of enterprises. In addition to API-based approaches to integrating services, cloud-based data integrations are an equally compelling story. Hadoop is an open-source distributed application designed to enable data operations such as search or format conversion across dissimilar unstructured data stores. Developers seeking to produce the best performance or analytical results for their application understand that more is better for available computing power.

Software developers ignore cloud computing at their peril. Regardless of the chosen platform, the environment is rapidly evolving, and being left behind is a real possibility. Even if the individual company a particular developer works for has no stated intention to move to cloud computing, the benefits for individual developers may still apply to internal applications or development processes. To an individual developer, the cloud means freedom! Freedom from IT administrator-induced delays, freedom to access some of the world’s most powerful applications, freedom from worrying about hardware or infrastructure architectures, and freedom to focus on finding solutions to business problems.

Cautions for Cloud Adopters

The previous two sections and every cloud vendor on the planet will have you believing that the cloud is the future and that to ignore it is to be left behind. Although there is certainly some truth to the overall direction, there will always be exceptions and exceptional circumstances that prove that not every cloud has a silver lining. Here are a few legitimate reasons to pause and consider fully before diving headlong into production cloud deployments. Specifically, the concerns discussed include:

  • Cost of development
  • Security and data ownership
  • Skill requirements
  • Learning curves

First and foremost among concerns when moving to cloud-based platforms is the paradigm shift that development and testing in the cloud is no longer free. Every time the developer presses F5 to test an application, a bandwidth fee and a computer processing fee may be charged. The costs of development may vary greatly between vendors based on published fee structures. A real-world example of the development costs is that it took a monthly $10 investment of cloud computing services to spin up two Amazon Micro instances, leveraging both the LAMP and Windows stacks to act as SVN, database, and web servers. The costs are not large, but as development teams scale up, so do the costs. It is an unfortunate reality today that there are not good cloud simulation environments that enable developers to work locally while building applications for the cloud. Software developers working in the cloud may need to develop habits that involve debugging by hitting F5 less frequently and potentially not having access to continuous integration build processes. Without leadership commitments to cloud-based development and acceptance of the associated costs, the quality of development may suffer.

Continuing the conversation about costs, a move from the traditional on-premise experience to a cloud approach entails an organizational shift from capital expenditures (CapEx) to operational expenditures (OpEx). Given these different types of budgets and their different impacts on cash flow, organizations that are used to amortizing large IT CapEx expenses away from the bottom line may be resistant to larger OpEx commitments. The cost model of the cloud is based on the pay-for-use model. This model is somewhat unpredictable, especially with new offerings or offerings that are new to a population segment. This uncertainty may make cost predictions unreliable and can further challenge the decision-making dynamic as companies begin to have a truer understanding of this cost model. For example, a large Salesforce.com SaaS deal was scuttled by a recognizable company’s CFO despite buy-in from the CIO and the CMO because the CFO was unwilling to commit to an annual $3 million operational expense. Part of the reason for the CFO’s decision was due to the financial consideration of OpEx versus CapEx. The other part of the CFO’s reasoning was that existing applications would need to be rewritten or heavily modified to work with the chosen cloud vendor, a hidden cost that the CFO was savvy enough to understand.

The security of the cloud and a lack of ownership of cloud data is a frequently discussed weakness of some cloud offerings. Although IaaS providers lay no claim to your proprietary application data, SaaS vendors store and manage the application data. Although some of the security concerns are legitimately misplaced, industries such as financial services and Big Pharma are skittish about who has access to their data and are unlikely to trust multitenant solutions from the cloud. For those organizations committed to cloud-based solutions but are nervous about security, a number of security vendors are happy to sell extra layers of security.

With PaaS and SaaS vendors, the OS and run time are abstracted away from the developer. This may be considered a freeing experience on the part of the architect and developer, or it may become an unbridgeable skills gap for software designers and developers. Turning to IaaS vendors brings back the ability to manage servers in a traditional sense but comes with a price. IaaS layers are currently programmatic, requiring significant amounts of code to manage network stuff. Consider the example of the 2012 Netflix outage due to weather causing an outage of Amazon.com. Although Amazon.com did its own analysis of the issue, Netflix documents on its tech blog stated that the reason for its extended three-hour downtime on June 29, 2012 relates to networking code failures in mid-tier load balancing causing unreachable network segments. Fascinating reading, but the referenced plumbing code is not related to the business objectives of Netflix other than “be a reliable platform.” This example demonstrates that the learning curve to get from zero to hero is still a steep curve, even though some of the areas of the platform’s stack may be abstracted away from the developer. In an on-premise deployment, developers with a traditional software engineering background typically understand how to handle load and contention given the expected load and target user population. The concern essentially boils down the question, “As things scale up, what are the new concerns I have to worry about?”

In addition to the learning curve related to large-scale deployments, the amorphous nature of cloud computing introduces a learning curve that may be uncomfortable for some individuals and organizations — questions such as whether or not the distinction between traditional infrastructure/application hosting and IaaS/SaaS is well understood. The evolution from hosting to IaaS/SaaS involves a move from individual instances to multi-occupancy and Multitenancy. Another question frequently asked is whether or not the particular cloud platform is mature enough to have stabilized in terms of its evolution of features, and whether or not the individual or organization can keep up with the pace of change. One of the learning curve complications for the cloud computing environment is the rapid change due to the consolidation of vendors through acquisition. Salesforce.com is particularly guilty of the vendor acquisitions, snapping up capabilities such as Rypple, Assistly (now Desk.com), Heroku, and Radian6.

Taken together, these listed risks indicate that IT departments are facing a steep learning curve. Not only are new capabilities available in the market that require investigation, but also those capabilities are elastic and change frequently. IT must grapple with the security implications that some cloud-based solutions mean that the company will no longer own its own data because it will live on a vendor’s servers, an especially troubling restriction for health care and financial services firms. IT must also understand that it may be limited to the types of or amounts of usage available on third-party cloud systems. For example, to prevent one organization from thrashing a multitenant system, limits on API calls may be enforced.

Managing the cloud can become a new point of concern and specialization inside of an organization. Tools have been created by a number of third-party vendors for every stack, but this extra layer of cloud management may eventually become regulated by corporate IT departments in such a way as to remove some of the flexibility of the cloud through otherwise onerous procedures.

Finally, although cloud computing solutions offer tremendously attractive benefits for access and reach, a number of restrictions in online environments do not exist in on-premise environments. Informatica is one such vendor, placing restrictions on its OnDemand cloud solution that do not exist in local installs. Similarly, Microsoft’s Office 365 SharePoint environment offers a reduced feature set when compared to on-premise installations.

Introducing and incorporating cloud computing is clearly not as effortless as the various vendors would have you believe. It behooves developers and technical business analysts to diligently gather high-level business requirements and work through them to find show-stoppers that preclude cloud-based solutions. The upside for IT departments is that the removal of typical infrastructure and platform requirements means that IT can focus more on how its business operates by learning more about its business data and business processes.

INTRODUCING WINDOWS AZURE

Microsoft offers IaaS and PaaS in its public cloud offering, Windows Azure, although the Microsoft Online suite of applications is considered to be a SaaS offering. Azure is effectively a specialized operating system that offers the following capabilities, as shown in Figure 5-2:

  • Websites — Create websites in PHP, .NET, and Node.js, or pick from a gallery of open source applications.
  • Virtual Machines — IaaS offering to create and host VMs running Windows Server 2008, 2012, or Linux.
  • Cloud Services — Containers of hosted applications such as supported languages include Python, Java, Node.js, and .NET.
  • Data Management — Offers SQL Database, tables, and BLOB storage.
  • Business Analytics — Offers SQL Reporting, the Data Marketplace, and Hadoop.
  • Identity — Offers Active Directory and Microsoft’s Access Control Service.
  • Messaging — Offers a service bus and queues for developers.
  • Media Services — Offers streaming media services.
  • Other infrastructural components including networking and caching.

Microsoft provides an excellent in-depth introduction to each of the components on its Intro to Windows Azure page (https://www.windowsazure.com/en-us/develop/net/fundamentals/intro-to-windows-azure). A brief overview of each component is presented next.

Execution Models

Virtual Machines, Web Sites, and Cloud Services are each distinct approaches a developer or service consumer can take to execute applications. The Virtual Machines capability abstracts a server-based infrastructure and enables users to create VMs ondemand based on a library of standard images or custom user-provided images. The VMs operate in the cloud as they would in an on-premise VM server, persisting changes and supporting the capability for the entire image to be moved to different (locally downloaded) servers.

Web Sites remove the requirement that customers administer the VM(s) but enable hosting of web applications on familiar IIS environments. Azure Web Sites environments are so similar to on-premise web server environments that the Azure service supports existing IIS websites being copied to the cloud with no change, including support for open source web applications such as WordPress, Joomla, and Drupal. Load balancing Web Sites is done dynamically by simply adding or removing instances.

Cloud Services is the original Azure AppFabric concept — a scalable, reliable, and low-admin environment for application development. Cloud Services applications are built by compositing virtual machine roles (instances) such as web and worker roles. These stateless roles are entirely managed by Azure for lower administrative responsibilities but offer added levels of flexibility over Web Sites. Cloud Services instances can independently be scaled up or down to manage reach and cost.

Mobile Services

Windows Azure Mobile Services are an encapsulation of several other Azure capabilities discussed later to enable app developers to quickly spin up a mobile app back end. Azure Mobile Services includes a user management capability based on Azure Active Directory, which streamlines away the need for an app developer to manage authentication. Push notifications are also included because of Windows Azure server-side scripting and integrated push support. Data from mobile apps is stored in the cloud because of the Azure data management capabilities described next.

High-Performance Computing

The power and promise of the cloud is that many computers can work together to solve problems faster. To truly enable multiple computers to work together to solve a problem, the application must support parallel programming so that more than one computer can execute the same code. Microsoft’s High Performance Computing is just such a parallel programming environment. The Azure HPC Scheduler enables HPC applications to work on complex problems such as medical research or the rendering logic required to animate the next Pixar blockbuster.

Marketplace

The Azure Marketplace is a place to buy and sell SaaS applications and datasets. This marketplace currently supports applications from vendors including Microsoft, AppDynamics, Cad Cam Systems, and more. Datasets are available for inclusion in applications, including such diverse options as demographics data, currency exchange data, air traffic data, and more.

Data Management

Given the Virtual Machine execution model previously described, a customer of Windows Azure can install any database technology on a VM, including open source or NoSQL databases such as MySql and MongoDB, respectively. For those not looking to administer their own cloud-based data center, Windows Azure offers cloud-based applications’ three different methods to store and retrieve data.

Formerly known as SQL Azure, SQL Database is a relational database PaaS service. SQL Database supports ANSI SQL, T-SQL, transactions, and concurrent data access via Entity Framework, ADO.Net, JDBC, and other access technologies. Windows Azure SQL Database can even be accessed by SQL Server Management Studio.

Windows Azure Tables step down the capabilities of SQL Database by focusing on fast access to typed data such as a key/value store. Windows Azure Tables don’t support complex operations such as joins and SQL queries, but they are cheap and scale to support a terabyte of data in a single table!

The third data storage and management option is Windows Azure Blobs. BLOB storage is ideal for longer-term file storage such as video or document files.

Business Analytics

Given the diverse and infinitely scalable nature of Windows Azure applications, traditional analytics offerings may have challenges integrating cloud-based data. To assist with business analysis of cloud-hosted data, Windows Azure offers two analytics options.

SQL Reporting works against SQL Database data in much the same way SQL Server Reporting Services works against SQL Server data. SQL Reporting is a traditional approach to data reporting that supports output formats including HTML, XML, PDF, and Excel, and can be built with traditional on-premise SQL Server Reporting Services tools such as the Report Builder and Visual Studio-based Business Intelligence Development Studio (BIDS) and SQL Server Data Tools (SSDT).

Announced in October 2011, Microsoft introduced the Apache open source, big data analytics capabilities of Hadoop to Windows Azure. Hadoop offers users the ability to analyze large quantities of unstructured, nonrelational data. Hadoop technologies on Azure support distributed MapReduce jobs and Hadoop-based technologies such as Hive and Pig.

Media

Media, specifically audio and video, are a tremendously important part of the rich Internet experience and are ever more frequently targets of corporate application development. Building on Microsoft’s Media Platform for streaming audio and video, Azure Media Services makes cloud-based capabilities such as encoding, format conversion, content protection and more available to developers. With this service offering, developers can integrate media operations to workflows and Azure’s extensive content distribution networks (CDN) for flawless worldwide delivery.

Networking

When building an application designed to reach a geographically distributed audience, it is frequently advantageous to build components in data centers near to the consumers to reduce network lag time. Microsoft supports this geo-distributed architecture by hosting customer applications in Windows Azure data centers located in the United States, Europe, and Asia. Application developers can take advantage of this geographic distribution yet build interconnected apps by leveraging the Windows Azure networking services.

Windows Azure Virtual Network combines a VPN gateway to connect Azure virtual machines to an organization’s data center. This enables VM-based applications such as SharePoint and Active Directory to scale up and down as needed yet work with internal IP addresses to simplify access and management.

A step down from a full Windows Azure Virtual Network configuration, Windows Azure Connect is an on-premise installation that enables a local machine to communicate with cloud-based machines and applications through a secure, configuration-free connection. Connect is aimed at individual development teams that need to connect Azure applications to local databases without going to IT’s network administration team.

In a global scenario, users of Azure applications can leverage the load-balancing capabilities of the Windows Azure Traffic Manager to ensure that they always access an application instance loaded in a geographically nearby data center. This load balancing helps to ensure that users experience the minimum amount of lag in application response time.

Caching

Caching is a common application performance improvement technique, where frequently accessed content is stored in memory rather than a slower read-access medium such as spinning disk storage. Windows Azure-based applications can take advantage of Windows Azure Caching if the data is persisted to any of the Azure Data Management components previously described. A CDN or content delivery network is a specially designed geographically distributed cache that enables frequently accessed BLOB data to be readily available worldwide. Some of the most frequently delivered BLOB files include the jQuery JavaScript libraries leveraged by millions of websites.

Messaging

Windows Azure messaging services are designed to support code interacting with code. Specifically, Windows Azure supports simple message queuing and complex service bus interactions.

Windows Azure Queues enable the pooling of messages by a receiver without requiring that the processing engine code immediately accept the message. This message queuing activity is frequently seen when large numbers of endpoints, such as sensors or distributed mobile applications, deliver details to the central server. The queue builds up as the central processing engine moves queued data through a logic engine into the appropriate long-term storage. This type of asynchronous application is especially common in web and worker role applications.

More complex than the simple queuing mechanism previously described, the Windows Azure Service Bus operates as a central messaging hub that any application can subscribe to. Messages are published onto the service bus, and all subscribed applications may receive the communicated message. The goal of any service bus is to enable loosely coupled application designs, and as such a service bus is extremely useful when interconnecting applications from different organizations.

Identity

Identity Lifecycle Management and Single Sign On are significant concerns for enterprises of all sizes. Knowing a user’s identity is important to both authentication and authorization. In the cloud, Microsoft’s identity and access control components are offered by Windows Azure Active Directory. Windows Azure Active Directory supports federation of identity information from on-premise Active Directory environments and Open-ID providers such as Facebook, Google, and Windows Live.

Although Windows Azure Active Directory supports federation with local AD environments, the user object is not the same as the local user and is a poor choice for applications leveraging Connect or Azure VPN to extend enterprise data centers. In this instance, should scaling Active Directory be necessary, the solution should leverage an Azure Virtual Machine running an installed and managed instance of Windows Active Directory.

SHAREPOINT AND MICROSOFT’S CLOUD OFFERINGS

SharePoint 2010 offered a number of integration points where Windows Azure could be plugged in by enterprising developers to customize and extend the platform’s capabilities. Where SharePoint 2010 could be extended to the cloud, SharePoint 2013 was designed specifically with cloud computing and Windows Azure in mind. The remainder of this chapter explores those integration points, extension options, and more.

Before diving into the specific integration profiles between SharePoint 2013 and Windows Azure, it is worth reiterating the basic organizational and application benefits that can be attained as a result of integrating SharePoint and the cloud. The basic combination of broadening reach, reduced storage costs, and access to reusable application components can be composited together with a SharePoint 2013 installation to change and improve an organization’s capability to meet customer and user needs.

SaaS Licensing for SharePoint

Microsoft has a number of service tiers and price points inside of its Office 365 SaaS offering. Each of the various service tiers effectively constitutes a license to use Office 365, with each tier stacking additional workloads onto the license. At its most basic and cheapest, the Office 365 Email plan is a $4 monthly cost per user plan that offers each user a 25 GB e-mail mailbox. Moving up to the Small Business P1 plan at $8 per user up to 50 users, organizations have access to the 25 GB mailbox, Microsoft Lync for IM and chat, Office Web Apps, and an online SharePoint collaboration environment with a single subsite. Near the top of the line, the E3 service plan costs $20 per user per month and offers unlimited e-mail storage for Lync, SharePoint with 300 subsites, Office Web Apps, and downloadable Office clients for installation on up to five workstations per user.

The following list contains a few of the SharePoint Online improvements now available in SharePoint 2013:

  • Because of default external sharing, site owners can easily share sites and content with external users without requiring internal Active Directory accounts. For more on managing external users, check Microsoft’s guidance article at http://office.microsoft.com/en-us/office365-sharepoint-online-enterprise-help/manage-external-sharing-for-your-sharepoint-online-environment-HA102849864.aspx.
  • SharePoint Online’s social features have been spread throughout the product, including activity tracking via the personal Newsfeed, file sharing through SharePoint’s SkyDrive Pro, and a centralized favorite Sites page.
  • Optional integration of Exchange Online enables SharePoint Online to centralize task assignments across sites and even Outlook tasks that would otherwise never hit SharePoint.
  • As with on-premise installations, SharePoint Online 2013 offers new site templates, including the Community Site and Project Site designed to speed collaboration.
  • Subscribers of E3 and E4 plans or SharePoint Online for Enterprise have access to premium capabilities such as the Discovery Center site template designed to deal with legal matters and content retention.
  • SharePoint Online for Enterprise also supports Excel services-based business intelligence, a new workflow engine based on Windows Workflow Foundation 4 that supports loops and a number of new actions in SharePoint Designer 2013, and enhanced video management capabilities complete with search integrations.

The following list contains a few of the capabilities from SharePoint Online 2010 that have been discontinued:

  • Several site templates including the meeting and document workspace templates, the group work site template, and personalization site template have been discontinued as the capabilities are now in other 2013 site templates.
  • Several information management policies have been discontinued for lack of adoption or failure to meet expectations.
  • Web Analytics has been discontinued in favor of a new analytics service that leverages the Search system.
  • The SharePoint Chart Web Part, Status List, and Status Indicators have been deprecated in favor of Excel Services 2013.
  • Search results no longer support RSS feeds; instead users should turn to Search alerts for an improved experience.

PaaS Licensing for SharePoint

If SharePoint 2013 is to be installed on Windows Azure Virtual Machines or is to be integrated with other Azure-based services such as Media Services or the Windows Azure SQL Database, pricing is the standard Windows Azure pricing. SharePoint 2013 is licensed by instance, much the same way that other Microsoft products are licensed. Thus, if a development team wants to leverage a pair of Windows Azure Virtual Machines to stand up a SharePoint 2013 development environment, the licensing must include

  • Two instances of the Windows Server 2012 operating system.
  • One instance of SQL Server 2012.
  • Two instances of SharePoint 2013.
    • Two servers are required for SharePoint 2013 because Windows Azure Workflow cannot be installed on a domain controller, and the Office Web Apps cannot be installed on a domain controller OR a SharePoint server.
  • One instance of Visual Studio.
  • One instance of local Office client applications.
  • Windows Azure services priced according to the Windows Azure pricing calculator (https://www.windowsazure.com/en-us/pricing/calculator/). There are no specific price breaks for SharePoint implementations, including SharePoint Online implementations.
    • Windows Azure offers a free trial that can help developers get acclimated to the new app and workflow models at no additional cost.

Integration Models

Stepping away from the SaaS offering, SharePoint 2013 (both SharePoint online and on-premise) offers a number of opportunities to leverage or integrate to components of the Windows Azure platform for enhanced reach and access. Beyond the normal application development scenarios that offer an opportunity to build on top of cloud platforms, SharePoint 2013 offers a pair of tremendous new development models that natively integrate with Windows Azure. The first and perhaps most significant of these new development paradigms is the cloud app model. The second is the new workflow infrastructure that leverages the Azure workflow manager.

Apps for SharePoint

Apps for SharePoint are the new mechanism for delivering functionality to SharePoint and a major new development target. Apps are distinct from Solutions for SharePoint in a number of ways, including the approach to acquiring, deploying, managing, and removing custom functionality. Apps are completely stand-alone applications that can be hosted in SharePoint or hosted externally in Windows Azure or other systems such as an on-premise web server. Deployment of app packages involves registering an app package with an app store. SharePoint 2013 offers a pair of app store options: the Internal App Catalog that is a private organization’s apps or the public SharePoint Store. Apps in the public SharePoint store are available for any organization to purchase and are supported by the vendor organization. Apps in the Internal App Catalog are supported by the organization’s IT department.

Contrast the new model with the SharePoint 2010 development option: solution packages. A solution package is a package that is either a full trust solution that is deployed directly to a SharePoint farm and requires an administrator to install, manage, and remove, or the alternative to full trust solutions is partial trust solutions that must be installed to a sandbox inside of the SharePoint environment. The solution package enables a developer to create a number of functional components, including web parts, custom controls, pages, event handlers, and back-end timer jobs. The solutions available in 2010 through the solution package delivery mechanism offer a tremendous amount of flexibility but do require a significant amount of knowledge about the SharePoint run time and development methodologies. Limitations of the run time prevented access to a number of modern web development technologies such as ASP.NET MVC or Test Driven Development.

One important distinction between the two models is the location of executing code: outside of SharePoint for apps, inside of the SharePoint run-time for solutions. This isolation is done to improve the stability of the core SharePoint environment. Another major distinction is the development approach. Because apps run outside of SharePoint, they can be built with any technology capable of invoking web service calls, including .NET, PHP, Ruby, Java, and JavaScript. Although the new app model is compelling on the face of its many benefits discussed here and in Chapter 6, “Getting Started with Developing Apps in SharePoint 2013,” all SharePoint 2010 development techniques and approaches have been carried forward into SharePoint 2013. For all existing customization investments, no change is required to continue to take advantage of that investment.

Apps for SharePoint can be built with the Napa Office 365 development tool that builds code-free applications in the browser. Napa apps can be imported into Visual Studio 2012 if more powerful functionality becomes necessary. Of course, Visual Studio 2012 is the core development tool for SharePoint apps.

The new app experience offers three different app hosting options for developers, as shown in Figure 5-3.

  • Apps for SharePoint can be hosted by Windows Azure as part of the cloud-hosted model for SharePoint apps. Azure-hosted apps take advantage of the Windows Azure Web Sites component to host web applications that leverage any ASP.NET technology (ASP.NET Web Form, ASP.NET MVC, and ASP.NET Web Pages). Apps designed for Office 365 authenticate with Windows Azure Active Directory and OAuth 2.
  • Apps can be hosted by a developer’s own server infrastructure, whether that infrastructure is an on-premise infrastructure or a cloud-based infrastructure.
  • The final option is to deploy the app directly into SharePoint for internal hosting.

Chapter 6 is dedicated to diving deeper into apps from a development perspective.

Azure Workflows

In addition to a new development model for SharePoint app functionality, SharePoint 2013 introduces a new model for developing workflows. SharePoint 2013 offers the .NET 4.5 Windows Workflow Foundation as a new approach to enacting custom logic inside of a SharePoint site. The .NET 4.5 Workflows are hosted outside of SharePoint on Windows Azure Workflow service. Office 365 uses this new Azure service automatically, not requiring developers to acquire a Windows Azure account. The integrations in Office 365 are provided automatically.

The benefits of including .NET 4.5 Workflows include a number of new workflow capabilities such as stages and loops, the ability to invoke web services, and, of course, the scalability and performance benefits to run on the Azure platform. Table 5-1, re-created from an MSDN article, describes the new workflow activities available in SharePoint 2013. Notice that the final five activities deal with Microsoft Project. New in SharePoint 2013 is integration with Project 2013, complete with Project-based workflows.

TABLE 5-1: SharePoint 2013 Workflow Activities

Table source: http://msdn.microsoft.com/en-us/library/jj163177(v=office.15.

ACTION DESCRIPTION
Assign a Task Assigns a single workflow task to a user or group
Start a Task Process Initiates execution of a task process
Go to This Stage Specifies the next stage in a workflow to which flow control should be handed
Call HTTP Web Service Functions as a method call to a Representational State Transfer (REST) endpoint
Start a List Workflow Starts a list-scoped workflow
Start a Site Workflow Starts a site-scoped workflow
Build DynamicValue Creates a new variable of type DynamicValue
Get Property from DynamicValue Retrieves a property value from a specified variable of type DynamicValue
Count Items in DynamicValue Returns the number of rows in a variable of type DynamicValue
Trim String Removes all leading and trailing white-space characters from the current string
Find Substring in String Returns 1-based index of the first occurrence of one or more characters, or the first occurrence of a string, within a string
Replace Substring in String Returns a new string in which all occurrences of a specified character or string are replaced with another specified character or string
Translate Document Functions as a wrapper around the HTTP activity that calls the synchronous translation API. You must configure a Machine Translation Service Application for the SharePoint site on which you run the workflow
Set Workflow Status Updates workflow status as specified in message string
Create a Project from Current Item [Microsoft Project] Creates a Project Server project based on the current item
Set the current project stage status to this value [Microsoft Project] Sets the two status fields within the current stage of the project
Set the status field in the idea list item to this value [Microsoft Project] Updates the status field of the original SharePoint list item
Wait for Project Event [Microsoft Project] Pauses the current instance of the workflow to await a specified Project event: Project checked in, Project committed, Project submitted
Set this field in the project to this value [Microsoft Project] Sets the value for the enterprise custom field for a specified project

As developers and site owners approach creating workflows for SharePoint 2013, they have two choices of platforms: the new platform leveraging Windows Azure Workflow Services and .NET 4.5 or the old SharePoint 2010 platform. As with other SharePoint 2010 customizations, the entire 2010 workflow platform was brought forward into SharePoint 2013 so that no existing investments need change.

Workflows can be built with the Office SharePoint Designer or with Visual Studio 2012. In either case, workflows are declarative-only constructs that rely on XAML files to define and frame the execution of the logic. The implication of this change is that workflows are no longer compiled but are instead interpreted. This interpretive approach is what enables workflows to be executed outside of the SharePoint run time and offers opportunities for numerous visualization and editor tools.

Chapter 15, “SharePoint 2013 Workflow Development,” dives deeper into workflow development and how workflows can be used to extend SharePoint 2013.

SUMMARY

This chapter introduced you to core cloud concepts and benefits. Cloud offerings such as IaaS, PaaS, and SaaS bring fantastic levels of flexibility and capability to organizations, usually at compelling pricing options. However, everything is not always rosy in cloud-land. Pay attention to legitimate company constraints that may preclude production cloud-based deployments such as regulatory restrictions. Following the introduction to cloud computing, the chapter delved into Microsoft’s Windows Azure platform and its integration points with SharePoint 2013, introducing you to key concepts, components, and usage patterns. Given the extremely easy access to unlimited scalability and the ability to host SharePoint functionality in Azure for new customizations, it is not unreasonable to expect that organizations worldwide that leverage SharePoint will be leveraging Windows Azure. As will be discussed in Chapter 6, auto-hosting code in Azure is the default development experience! As a developer, this represents a huge opportunity for future skills growth and continued relevance in a competitive jobs marketplace.

Of course, it bears repeating that SharePoint 2010 methods for development, including full trust solution packages, continue to be valid options for SharePoint developers. All existing code-based customizations should continue to work in SharePoint 2013, but all new development exercises should look seriously at the new app model approach.

The next chapter expands on this chapter’s introduction to Azure with a look at developing apps for SharePoint 2013. In the next chapter you learn how to develop for SharePoint’s new app model, including how Azure service components may be incorporated.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset