15
//// WHITE PAPER Putting together the right combination of mobile development tools is complex—even when you primarily use Microsoft’s product ecosystem. Here we explore the options and recommend technology stacks for common scenarios. Kevin Ford Mobile Development Practice Lead Russ Miller National Mobile Solution Architect April, 2017 NAVIGATING MICROSOFT’S MANY MOBILE PRODUCT OFFERINGS

WHITE PAPER - Magenic · 6 // WHITE PAPER ///// TACO (Tools for Apache Cordova) – Visual Studio Application development using HTML5, JavaScript and CSS to create hybrid applications

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

////

WHITE PAPER

Putting together the right combination of mobile development tools is complex—even when you primarily use Microsoft’s product ecosystem.

Here we explore the options and recommend technology stacks for common scenarios.

Kevin FordMobile Development Practice Lead

Russ MillerNational Mobile Solution Architect

April, 2017

NAVIGATING MICROSOFT’S MANY MOBILE PRODUCT OFFERINGS

NAVIGATING MICROSOFT’S MANY MOBILE PRODUCT OFFERINGS

1 // WHITE PAPER

/ / / / / /

Mobile application development today requires a complex mix of tightly integrated tools to build quality products at high velocity. Understanding which of the many products that are available to use on any given project is a difficult task, even when looking at a single provider like Microsoft. In fact, Microsoft’s mobile ecosystem has many competing products that make it challenging to put together a cohesive solution even while working solely within their product set. Back in the early days of smartphone mobile development, many enterprise shops suffered from a highly-fragmented development ecosystem. We had to cobble together partially integrated tools to cover all the major functional areas—particularly to support multi-platform development, where several categories of technologies had to be considered and many products did not work well together.

Today, the enterprise mobile development ecosystem continues to rapidly evolve from a collection of vendor tools that mostly work together to increasingly well-integrated product family offerings that span design to deployment. Many of these integrated product offerings are, however, proprietary or closed systems. With Microsoft’s move to a focus on cloud services, they have taken a leading role in creating a comprehensive suite of tools that can be used throughout the entire development process to create mobile solutions from end to end. To make their product mix even more compelling they have adopted a combination of open source frameworks and extensions of their tooling to integrate across the board with tooling and services from a variety of vendors. Many of these tools are delivered through Visual Studio and Azure. On the other hand, the wide breadth of tools available can make understanding all the options complex, particularly when new products are quickly being introduced and others retired.

Microsoft Offerings for Mobile

Just listing Microsoft’s mobile offerings is a complex task. As we write features are changing, new products created and others retired. In some areas, it is clear which Microsoft product or service to use while in others there are multiple products that serve the same or similar purposes. Like the mobile ecosystem itself, keeping up with the pace of change can be a time-consuming task!

The wide breadth of tools available can make understanding all the options complex, particularly when new products are quickly being introduced and others retired.

/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /

NAVIGATING MICROSOFT’S MANY MOBILE PRODUCT OFFERINGS

2 // WHITE PAPER

/ / / / / /

Here are the key product categories where we believe you need to focus on understanding what’s available in order to select products that best fit your scenario:

• Team and Task Management • Source Code Repository• Design Tools • Build Server• QA and UAT Application Deployment • Enterprise Deployment• Automated Mobile Testing • Application Development Technology• Backend API Technology • Server Storage Technologies• Data Analytics • Crash Reporting• Push Notifications • Identity Management• Sync Services

NAVIGATING MICROSOFT’S MANY MOBILE PRODUCT OFFERINGS

3 // WHITE PAPER

/ / / / / /

Team and Task ManagementThese products are used by project managers to track the status of a project and for members of the team to communicate.

Visual Studio Team Services – AzureContains comprehensive Agile support for story, task and work management. Supports burndown reporting and Kanban boards. A Visual Studio Team Services account can host multiple projects.

Source Code RepositoryThe source code repository is the primary location to keep the history of changes to the code base and to coordinate work between multiple developers.

Over the last several years one source code technology has risen to prominence: Git. All projects of any significance should use a source code repository.

Visual Studio Team Services – AzureVisual Studio Team Services is also Microsoft’s primary product for source control. There are two different styles of repositories that can be created: the proprietary Microsoft format and Git style repositories.

A Visual Team Services project can host multiple source code repositories. The changes to code in these repositories can be tied into stores and tasks in the project to provide traceability between code changes and the requirements that authorized them.

Design ToolsDesign tools allow members of the design team to design the user interface for an application, how the application flows through different user screens and gives business stakeholders a view of how the application will look and act before code is written.

Blend – Stand AloneMicrosoft’s primary design tool is Blend. Blend allows the creation of low and high fidelity mockups for applications. There is the possibility of round-tripping the user interface with the development team for certain types of applications, like UWP apps.

Build ServerA build server automates what would otherwise be a manual task. Build servers are generally set up to perform three types of builds:

• Continuous Integration – Ensures that the software compiles and quality control tests (such as unit tests) pass

• Continuous Delivery – Compiles the software into a device-ready binary and places it in a channel for quality assurance and user acceptance testing

• Continuous Deployment – Compiles the software into a device-ready binary and places it in a production channel

NAVIGATING MICROSOFT’S MANY MOBILE PRODUCT OFFERINGS

4 // WHITE PAPER

/ / / / / /

Visual Studio Team Services – AzureVisual Studio Team Services allows highly customized build configuration with a wide variety of canned and third party build tasks available. Build servers are either hosted by Microsoft or you can use independent build agents for Mac and Windows. Third parties such as MacInCloud allow the renting of online build agents for VSTS. Build servers can be used with external agents to build applications in almost any technology.

Visual Studio Mobile Center – AzurePreview product that allows the basic building of Android and iOS applications using the following technologies:

• Objective-C and Swift (iOS)• Java (Android)• Xamarin (iOS and Android)• React Native (iOS and Android)

Mobile Center can build from repositories stored in GitHub, Bitbucket and Visual Studio Team Services. Currently there is a very limited capability to modify the build process.

QA and UAT Application DeploymentMobile applications need a way to be distributed to quality assurance and user acceptance testing teams. This is can be a difficult chore, particularly on iOS where the devices are generally locked to prevent side loading and manually managing different versions with associated release notes for a large team is challenging.

Products in this category allow the distribution of QA and UAT builds to defined teams, as well as management of the different build versions.

HockeyApp – Stand AloneAllows deployment of iOS, Android and UWP binaries to teams that you define. While HockeyApp could be used for production enterprise deployments, it isn’t designed for this scenario. Uploads of new versions of an application to HockeyApp can be done manually through the UI or scripted through the API.

Visual Studio Mobile Center – AzurePreview product that allows the basic deployment of applications built with Visual Studio Mobile Center. Currently the team management and deployment features are still rudimentary. Like HockeyApp, it could be used for production enterprise deployments, but neither product is designed for this scenario. Currently Microsoft advertises that Visual Studio Mobile Center is the “Next Generation” of HockeyApp.

NAVIGATING MICROSOFT’S MANY MOBILE PRODUCT OFFERINGS

5 // WHITE PAPER

/ / / / / /

Enterprise DeploymentEnterprise deployment products are also commonly known as private app stores or MAMs (Mobile Application Management). They allow an organization to deploy applications to internally supported devices without going through the approval processes of the public app stores. In addition, MAMs enable enterprises to maintain complete control over the application lifecycle.

InTune – Stand AloneMicrosoft product for MAM and MDM (Mobile Device Management). This tool works with Android, iOS and Windows applications and allows organizations to create their own private internal application stores.

Automated Mobile TestingAutomation of tests that can exercise the user interface on a wide variety of devices can be key to quick, quality release cycles. Most organizations don’t maintain a large enough stable of devices—particularly Android devices—to execute thorough testing. Cloud solutions can allow automated testing of an application version on thousands of different devices types.

Xamarin Test CloudXamarin Test Cloud has thousands of different devices available for running automated tests. These use automation test technologies such as Appium or Xamarin’s own proprietary test language.

Visual Studio Mobile CenterXamarin Test Cloud is being replaced by Visual Studio Mobile Center. It is a very similar technology infrastructure which also allows for the running of tests written in Xamarin UI, Appium, Calabash and Expresso technologies. The testing platform in Visual Studio Mobile Center will replace Xamarin Test Cloud in the near future.

Application Development TechnologyApplication Development Technology refers to the language and tooling around creating an application. Microsoft supports a wide range of technologies to allow the creation of mobile applications and each one has their own advantages and disadvantages.

Xamarin Platform and UWP – Visual StudioApplication development to create native binaries that are all written in C#, using Xamarin.iOS, Xamarin.Android and Xamarin for UWP. Xamarin Platform allows a fair amount of code sharing on the business logic, authorization logic and validation logic. However, the UI and calls into platform specific APIs must be written once per platform.

Xamarin.Forms – Visual StudioXamarin.Forms is a library that sits on top of the Xamarin Platform and allows creation of native binaries with cross platform UI and some API development. Using Xamarin.Forms will impose some user experience boundaries that must be understood and anticipated.

NAVIGATING MICROSOFT’S MANY MOBILE PRODUCT OFFERINGS

6 // WHITE PAPER

/ / / / / /

TACO (Tools for Apache Cordova) – Visual StudioApplication development using HTML5, JavaScript and CSS to create hybrid applications for iOS, Android and UWP. Since there are no native UIs and the code is running in interpreted JavaScript, there can be significant user experience tradeoffs with this technology.

Windows Bridge for iOS – Visual StudioAllows applications written in Objective-C for iOS to be ported into Visual Studio and then used to create UWP applications. Many of the iOS APIs have been mimicked so they will work on the Windows platform. This technology does not allow applications to run on Android.

Backend API TechnologyMost apps require an API to be created on the backend for client apps to talk to. Microsoft Azure offers several PaaS (Platform as a Service) offerings. Many of these have similar and overlapping capabilities.

App Services – Mobile Apps – AzureA Mobile Backend as a Service (MBaaS) that allows the creation of REST APIs using C# and provides security/CORS (Cross-Origin Resource Sharing) with an easy way to tie into underlying Azure SQL Database tables. App Services replaces a previous Azure product called Azure Mobile Services.

App Services – Web Apps – AzurePrimarily designed to create websites but can also be used to create REST APIs with the same security/CORS capability as App Services – Mobile Apps. This product replaces Azure Web Sites.

App Services – API Apps – AzureDedicated service to create REST APIs using C# and, like App Services – Mobile Apps, it provides a security/CORS framework. This service is normally used if the only capability that is required is an API.

App Services – Logic Apps – AzureLike App Services – API Apps, this service serves a very particular purpose: to create server-side workflow that can be called from client applications.

API Management – AzureThe API Management services serves as a stable front end for other underlying APIs. Its purpose is to provide a stable and versioned API even when the shape of the underlying APIs changes.

NAVIGATING MICROSOFT’S MANY MOBILE PRODUCT OFFERINGS

7 // WHITE PAPER

/ / / / / /

Server Storage TechnologiesApplications normally need to store information that can be shared between the application running on different devices, or even between different applications. While Microsoft has many on premise products, for the purposes of this paper we will focus on their online PaaS offerings.

SQL Database – AzureSQL Database provides a single SQL Server style database for relational tabular data storage as a PaaS offering. This product supports most of the features of SQL Server while also allowing geographic replication and fail over in an easy-to-configure management screen.

DocumentDB – AzureDocumentDB is a NoSQL offering that is part of Azure that allows the unstructured storage and retrieval key document pairs.

Storage Tables and Blobs – AzureThis Azure product allows low-cost storage of information. For tables, it allows non-relational tabular storage of data, and with BLOBs it allows saving of large binary objects such as pictures that can be uploaded and queried later.

Visual Studio Mobile Center – Tables – AzureVisual Studio Mobile Center – Tables allows for the storage of tabular data, similar to Storage Tables that can be worked with using a REST API.

Data AnalyticsData analytics provides information on how your application is being used. Good analytics are the key to determining if your app is meeting business objectives or where the users are not using the app in the way that you supposed, prompting the need for change.

Visual Studio Mobile Center – AzureAPI for collecting data on how an application is being used. Currently has client libraries for native Android, iOS, Xamarin and ReactNative. Like the rest of Visual Studio Mobile Center, this feature is still in preview.

Event Hubs – AzureGeneral purpose high availability, high volume event collection service that can be used with mobile applications.

Crash ReportingCrash reporting collects and reports information about when your application may not be working as designed and what bugs may need to be fixed in future versions.

HockeyApp – Stand AloneHockeyApp has client SDKs for many different application development technologies including native and Xamarin to collect information when an application crashes.

NAVIGATING MICROSOFT’S MANY MOBILE PRODUCT OFFERINGS

8 // WHITE PAPER

/ / / / / /

Visual Studio Mobile Center – AzureA set of client libraries and server dashboard to collect information on application crashes with similar capabilities as HockeyApp. This product will replace the crash reporting in HockeyApp and Xamarin Application Insights sometime in the future.

Push NotificationsPush notifications allow a server side component to inform the application that is installed on individual devices when certain events happen. These events can be completely custom and can make something happen on the device, even if the app isn’t running.

App Services – Mobile Apps – AzureThe App Services – Mobile Apps MBaaS contains a push notification mechanism. This service works with most mobile application development technologies and uses Azure Notification Hubs under the covers.

Notification Hubs – AzureEngine that drives App Services – Mobiles Apps push notifications but can be used as an independent product.

Identity ManagementIdentity management solutions include ways for users to authenticate through your application.

Generally, Microsoft supports social logins, AzureAD or other custom solutions. Identity management is an important part of any application with user-specific or secure data.

AzureAD – AzureUser management that can be tied into a variety of Azure services. Users can be managed completely in AzureAD or synced with existing on-premise Active Directory installations. Generally, the mobile applications do not call into AzureAD directly, but through something like App Services – Mobile Apps.

App Services – Mobile Apps – AzureThe identity management built into App Services makes it very easy to authenticate through AzureAD and social logins like Microsoft Live accounts, Facebook, Twitter and Google. APIs can also be locked down within the service depending on if there is an authenticated user.

Visual Studio Mobile Center – AzureLike App Services – Mobile Apps the identity management can tie to AzureAD and social logins for Microsoft Live accounts, Facebook, Twitter and Google. The primary use for authentication through Visual Studio Mobile Center is to require authentication and authorization to Visual Studio Mobile Center tables.

NAVIGATING MICROSOFT’S MANY MOBILE PRODUCT OFFERINGS

9 // WHITE PAPER

/ / / / / /

Sync ServicesSync Services synchronize data storage from the client side of the app and the server. It is usually used in situations where an application needs to work offline but still share data with other devices when online.

App Services – Mobile Apps – AzureApp Services – Mobile Apps libraries contain functionality out of the box for synchronization of tables on an Android, iOS or UWP app and an Azure SQL Database instance. The library requires little or no customization if the entire table is synchronized and there is no chance of data collision with other users.

Stack Options

The variety of different services for mobile that are provided by Microsoft can be hard to navigate. For example, App Services – Mobile Apps and the new Visual Studio Mobile Center both contain very similar solutions for identity management; which should you use? Likewise, there are multiple versions of App Services. Which is the best for your application?

Luckily there are a few default configurations that you can use for many of your projects. Generally, we break the technology stack down into two areas:

• Project Infrastructure Tooling Stack – Provides the project management and infrastructure for a project

• Development Infrastructure Stack – Refers to the technologies that are used in the application itself

Project Infrastructure Tooling StackThe project infrastructure tooling stack is the tooling used to manage stories, tasks, source code, DevOps, provide builds to QA and UAT, automated testing and design tools. You can typically use the same project infrastructure tooling stack from project to project.

Current StructureThe current structure you can use for mobile projects using a Microsoft stack allows for a wide flexibility in management of the project and ability to push builds to QA / UAT environments and push production builds either to an enterprise app store or the public app stores.

This particular structure will work with just about any mobile development technology. The Git style repositories are flexible enough to be used with different mobile development technologies and the integration with the tasks, bugs and stories provide a high level of tractability between changes to the code base and the requirements that caused them.

The builds are highly configurable through build tasks. The build agents that work with Visual Studio Team Services work on both Windows and OSX machines.

There are a few default configurations that you can use for many of your projects.

/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /

NAVIGATING MICROSOFT’S MANY MOBILE PRODUCT OFFERINGS

10 // WHITE PAPER

/ / / / / /

One third party product that can be used with this is a MacInCloud VSTS agent. MacInCloud currently runs $29/month and offers a low-cost build agent that can create Android and iOS apps for native, Xamarin and Cordova. A separate Windows agent would have to be used for a UWP application.

HockeyApp and InTune can be used for QA and enterprise deployments but could likely be replaced with most third-party alternatives without upsetting the other components.

Future StructureMicrosoft has introduced Visual Studio Mobile Center which could replace many of the components that make up the current Microsoft-centric project infrastructure tooling setup. Most notably build, QA/UAT Deployment and Mobile Automated Tests can be found in this one product which is currently in a pre-release state.

Visual Studio Mobile Center significantly reduces the number of products in the project infrastructure tooling stack. It is currently in preview mode and many of the features are still unfinished. Some significant issues with the preview product include:

• Can only build native iOS/Android, Xamarin and ReactNative projects; support for UWP and Cordova is planned

• The build process cannot be highly customized; nor can it automatically push builds and tests into the included version of Test Cloud as part of the build process

• The QA/UAT deployment mechanism is still very rudimentary and doesn’t include things like changing bundle ids during the builds, manage version numbers or allow easy viewing and installation of prior versions of the application (notifications are done via emails with links to the new version)

NAVIGATING MICROSOFT’S MANY MOBILE PRODUCT OFFERINGS

11 // WHITE PAPER

/ / / / / /

We expect when the product is complete the project infrastructure tooling stack may be modified to match the diagram below. The ability for it to be used on projects with complex build needs will depend on if they allow customizations to the build process like is allowed in VSTS. If not, some of the components such as crash reporting could still be used on a one-off basis while still using the current VSTS build servers and setup.

Visual Studio Mobile Center shows great promise, particularly for simpler products and many basic application needs where there needs to just be basic build and QA distribution capabilities.

Development Infrastructure StackThe Development Infrastructure Stack includes the client side development languages as well as server side backend technologies. There are several possible ways these can be put together as Azure has a complex web of services, many of them that do the same or similar things.

Generally, when putting together the best mix of services for a project there are two different ways to think about it, the Mobile Backend as a Service (MBaaS) approach and the ad-hoc approach. All of the approaches mentioned here will work with most frontend mobile development technologies.

Current MBaaS ApproachThe current MBaaS approach uses Azure App Services – Mobile Apps as a central component of the stack. It is used when the app primarily has a mobile-only frontend and needs to use a wide variety of mobile centric services in a pretty standard way.

Generally, when putting together the best mix of services for a project there are two different ways to think about it, the Mobile Backend as a Service (MBaaS) approach and the ad-hoc approach.

/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /

NAVIGATING MICROSOFT’S MANY MOBILE PRODUCT OFFERINGS

12 // WHITE PAPER

/ / / / / /

This approach is good when you need push notifications, authentication with Azure AD or social networks, custom REST APIs or off line/online data sync. The REST API can be written using C# and online/offline data sync from an Azure SQL Database to local SQLite tables can usually be done with little effort. It is possible with some custom work to support encrypted offline tables in SQLite as well.

This approach becomes less attractive when you need more customization around the stack or the application has other frontend technologies, such as websites. For example, if you need to use an external push notification provider, then perhaps an Ad-Hoc Approach starts looking better.

The diagram below shows what a MBaaS structure may look like:

It is important to note in this diagram storage services appear to be accessed through the Azure App Services. This is not necessarily required; storage services can be accessed directly by the mobile client application. It is also possible to directly access storage accounts securely through the account they logged into using Azure App Services with some customization.

Potential Future MBaaS ApproachWhen we use Visual Studio Mobile Services it slightly changes the apparent look of this stack. In particular, Visual Studio Mobile Services includes analytics services that could be used to replace the use of Application Insights. In all other ways, the future MBaaS from Microsoft will be similar to the current model.

NAVIGATING MICROSOFT’S MANY MOBILE PRODUCT OFFERINGS

13 // WHITE PAPER

/ / / / / /

At the present time, it may be best to avoid the Visual Studio Mobile Center tables and identity management. While they may work for very basic needs, App Services – Mobile offers more features and more flexibility for most scenarios.

The Ad-Hoc ApproachThe Ad-Hoc approach involves taking individual Microsoft technologies and piecing them together. This approach is most relevant when:

• Some components will be swapped out for non-Microsoft variants• Not all services will be needed • Your solution needs other UI delivery channels like websites where perhaps an MBaaS

like Azure App Services may not be an ideal solution

One thing to notice is that Microsoft’s data syncing solution between the mobile client and server data is tied to Azure App Services for Mobile. If you don’t use that solution but need sync capabilities, you will be looking at a roll-your-own approach or using a third-party product.

The primary advantage of the Ad-Hoc approach is that because individual components are being used for different features, it is easy to trade them out from components from other vendors. The primary disadvantage is that the components will need to be pieced together and will likely require extra effort.

14 // WHITE PAPER

This white paper is for informational purposes only. Magenic Technologies, Inc., makes no warranties, express or implied, in this summary. Other product and company names mentioned herein might be the trademarks of their respective owners. © 2017 Magenic Technologies Inc. All rights reserved.

NAVIGATING MICROSOFT’S MANY MOBILE PRODUCT OFFERINGS/ / / / / /

Azure App Services - Mobile could still be used in part in the Ad-Hoc approach. For example, it could be used as an API to the database and have sync services work with it.

Conclusion

While the ecosystem of Microsoft technologies used to create mobile applications is complex, there are a few standard product combinations that can be used for most applications.

It is important to understand that the Microsoft ecosystem is still evolving and will change over time as Microsoft changes its focus and refines product offerings. The pace of change isn’t a Microsoft-centric problem, but an industry-wide challenge; consequently, product changes in these technologies will require constant re-evaluation of the optimal combination for your needs.

There is some light at the end of the tunnel however, as the technologies for mobile development are maturing. And with a more mature ecosystem the pace of change is likely to start decelerating.

About MagenicMagenic is a leader in business technology consulting. We understand the barriers to innovation companies are facing and apply the right technology to transform their business.

Visit us at magenic.com or call us at 877.277.1044 to learn more or to engage Magenic today.

/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /