Great user experiences today and into the future are and will be embodied in mobile apps, responsive web applications, and interactions with the Internet of Things. The need for these great user experiences has already transformed the way consumer applications are designed, built, delivered, and maintained.
The same consumers are now demanding similar experiences from enterprise applications. New enterprise applications have to be what Forrester calls “Systems of Engagement,” where the focus is on elegantly adapting processes to people instead of focusing just on the processes themselves.
The initial tactics to enable this new wave of enterprise applications have been two-fold:
- Retrofit a 15+ year old web application architecture designed for large displays and a persistent network connection with CDNs, API shims, etc.
- Lines of business or business functions, the stakeholders that most urgently need the new applications, build their own applications without IT organizational approval – also known as “shadow IT.”
The first approach is a recipe for disaster for a variety of reasons:
- It results in non-agile development processes. Even simple API updates to backend software components require long lead times for justifications and have tight process controls.
- The application layer is tightly coupled to the data and presentation layers, requiring changes to the entire stack whenever a small part of the application is to be updated.
- It often uses older protocols such as SOAP or XML and does not afford easy, fluid integrations with modern external 3rd party services or business partners.
- While web applications were built to scale, the scaling requirements of the new applications are 5X to 10X greater. In addition, the viral nature of these applications demands very dynamic scaling that web infrastructure is poorly equipped to handle.
The shadow IT approach is rife with issues as well:
- It results in many different stacks for IT to support.
- It is incompatible with legacy applications and systems, which makes it hard to integrate data across the enterprise.
- Applications are developed rapidly but pose serious security, compliance, and governance risks.
- Applications make unpredictable demands on backend services leading to performance and availability issues for mission-critical services.
- Applications are developed in silos, leading to significant amounts of repetitive development for common functions like push notifications, authentication, and access to corporate data.
In short, the realities of web application architectures fall woefully short of meeting the new application requirements in 3 key areas: agility, flexibility, and scalability. The shadow IT applications fall short in even more areas: flexibility, security, compliance, governance, and availability – what is needed in a new, modern mobile application development platform.
Technical Requirements Drive the Need for a Mobile Development Platform
Before we explore the requirements of the technology stack required for successful application delivery, it’s important to identify key requirements for both the development process and the applications themselves.
In no particular order, they are:
- Provide a great user experience in the presence of “spotty” data connections and networks. In order to enable this, the application development platform must be able to assemble and deliver small amounts of content very quickly and provide caching services to address different performance dynamics of mobile services (milliseconds) vs. Web services (seconds).
- Dynamically and quickly scale to meet the elastic demand. It is not very cost-effective for the enterprise data center to be sized to meet the maximum demand, so cloud-based services are a must.
- Enable an extremely iterative development process. User experience drives success or failure with mobile apps, and successful client development cycles must be very agile. The mobile development platform needs to be aligned with this by providing the capability to rapidly compose and adjust services and their endpoints.
- Provide unified access to both internal and external services. Push notifications, SMS, access to location services, and determining and reacting to context drive the need for integrating with both internal and external services. A single consistent interface and protocol for both internal and external services makes the application developer’s job easier.
The typical web-based enterprise application platform consists of 3 tiers – web, application, and data/services. Replacing the tightly coupled application tier with aggregation and delivery tiers enables the separation of concerns and leads to a loosely coupled architecture. The new 4-tier application architecture is illustrated below (Source: Forrester report, Mobile Needs a Four-Tier Engagement Platform, Michael Facemire, Tech Schadler, John C. McCarthy, May 23, 2016). The ideal solution would deliver these tiers as a cloud-based mobile development platform to address automatic performance scaling and an agile development cycles.
The Forrester four-tier engagement platform makes delivery its own tier
Kinvey provides a mobile development platform that directly aligns with the Forrester 4-Tier Architecture and addresses all the requirements of the Client, Delivery, and Aggregation tiers.
Key requirements for a mobile development platform
This tier of the mobile development platform architecture needs to enable the client developer to focus on the user experience on the device at hand, without regard to how the mobile development platform backend services expose and deliver data. Specifically, this tier must:
- Enable an iterative process that rapidly fine-tunes the user experience with frequent intermediate releases of software. Enterprise backend services tend to evolve at a slower pace, requiring a decoupling of these two processes.
- Accommodate flexibility. Developers have preferred languages and development environments – an entire industry segment revolves around providing client development tools for different developer audiences. Native, cross-platform, and responsive web development environments are all available and in use.
- Deliver data and content in a manner that is easy to consume and integrate into the client development environment. This improves productivity and speed of client development.
The Kinvey service provides the client developer with an easy-to-use SDK. The SDK enables the client developer to focus on the user experience by supporting the widest variety of languages and development environments. The developer is not constrained to a single “studio” environment; native, cross-platform, and hybrid environments are all supported. Kinvey supports the following:
- Native iOS development using Objective-C and Swift with Xcode
- Native Android development with Java and Eclipse
- Support for cross-platform environments like Xamarin and Titanium
Kinvey provides common mobile development platform services used by application developers using protocols and data formats that are familiar to them. Enterprise authentication systems typically use LDAP, SAML, RADIUS, and other proprietary protocols. Kinvey provides a standard, secure, consistent, and, most importantly, familiar OAuth 2 interface for identity management. The client developer is isolated from the backend authentication service and its protocol.
Other common services like Push notifications, location services, and network state are provided in an easy-to-use, consistent manner.
Offline caching of data and content in the client app is enabled via the Kinvey SDK with just a few lines of code. The caching comprehends the network state of the device to intelligently sync data.
Network management is provided by the SDK so the developer does not need write code to handle common network functions.
Most importantly, the SDKs isolate the developer from changes to the platform. When Apple upgrades the iOS platform, the library is immediately upgraded and available for developers to use. The Kinvey service was built from the ground-up to serve the needs of the developer community. Over 85,000 developers use Kinvey, and more than 30,000 apps have been developed with Kinvey over the past 5 years.
Key requirements for a mobile development platform
Intelligence from the client layer will determine the content that is delivered by this tier of the mobile development platform. Content must be customizable based on context, location, and other device states. To ensure successful customization, this layer must:
- Ensure that this customization can be done quickly with low-code or no-code.
- Enable the caching of data and content so it can be delivered quickly.
- Adapt data to the device screen size, enabling the app to display data in an appropriate way to optimize the user experience.
- Collect and leverage analytics about user behavior to drive personalization of the user experience.
- Encapsulate data access and other mobile context features into development SDKs for both mobile and web development environments to deliver a consistent cross-platform user experience.
- Provide the maximum flexibility for client development. This means avoiding “lock-in” to a specific development environment or language, enabling client development to happen in any language and development environment. This in turn allows hiring managers to choose from a variety of different skill sets to quickly assemble development teams.
Custom endpoints are another powerful Kinvey feature that enables developers to easily connect to services or customize data from the Aggregation tier based on user context.
Kinvey provides easy-to-use user management features to manage users and authentication internally in Kinvey or to connect externally to enterprise authentication providers. In both cases, the user management features are delivered using a protocol and architecture that is very familiar to client-side application developers.
The Kinvey solution generates client SDKs that encapsulate data access APIs with mobile features like offline access. These client SDKs are available for every development environment: native iOS, Android, node.js, Xamarin, angular.js, Swift, PhoneGap, and more.
Key requirements for a mobile development platform
In order to develop rapidly, application developers require a consistent architecture and pattern to access data. Learning the nuances of different access protocols like SOAP, RPC, and CORBA, as well as data/service formats like WSDL, SQL, DCOM, COM, etc., causes inordinate delays in application development. As a result, this layer of the mobile development platform requires:
- Pre-built service integrations that provide consistent access to raw data APIs, as well as higher level business process APIs (e.g. invoice approvals and similar workflows), to abstract the application developer and enable rapid application development.
- A small set of consistent endpoints. Mobile applications compose data from multiple data sources. Rather than burden the application developer with a plethora of endpoints and security policies, the aggregation tier must federate these sources.
- Provide lightweight, asynchronous RESTful interfaces to deal with spotty, transient network connections with mobile devices. Most often the data returned by enterprise data services is optimized for web clients and browsers that have a persistent network connection.
- Provide consistent access to standard enterprise services for role-based access controls, analytics, and business intelligence. Access to these services enables the application to deliver the required user experience while maintaining security, compliance, and governance for IT.
Kinvey provides both Rapid no-code and Flex low-code integration services for data and identity integrations. These services provide the bridge between enterprise systems of record in the Services tier and the Delivery tier. The Rapid and Flex services enable protocol and data format translations to provide a RESTful interface using a JSON data format.
Kinvey provides reference Rapid and Flex data services as well as enabling developers to tap into the open source NPM ecosystem and run these services on our Flex Services Runtime.
Data integrations can be used stand alone or used in conjunction with Kinvey’s Business Logic scripts to provide the required federation of services.
Business Logic and the Custom Endpoints features of Kinvey are used to combine raw data APIs provided by the Rapid and Flex services to compose higher level business process APIs. This composition can be done easily using the Kinvey Console with low or zero code.
Key requirements for the enterprise
This tier is part of the existing enterprise application architecture stack. It exposes the enterprise systems of record and identity management and also includes 3rd party external services, including new messaging tools (e.g. Slack and HipChat) that are required for modern mobile application experiences.
Typically, the internal application stack will have an ESB (Enterprise System Bus) that enables communications between multiple services in a Service Oriented Architecture (SOA) or application middleware like Tibco or API management.
Enterprise services are usually exposed via a host of different protocols like SOAP, RPC, CORBA, DCOM, REST, etc. They also use varying data formats – XML, JSON, COM, and other proprietary data formats. Therefore, layers above will need to provide the necessary translation from these protocols and formats to ones that are easily consumable by the new generation of applications.
The services exposed by this tier are consumed by other legacy applications so it is critical to understand and deal with the performance impacts of the new applications. Reliability and availability of these services are very high (99.99 is typical). Any new consumers need to be mindful of their impact to these service levels.
The services tier serves a number of different consumers with varying needs and change is usually very slow.
Why Use a Mobile Development Platform for this Next Wave of Applications
There are several factors that are key to developing and delivering the next wave of applications that are digital and mobile-first:
- Embrace flexibility and agility with front-end development: Provide the flexibility for front-end developers to use the development environment of their choice.
- Focus on a rich app experience: many organizations think they can make their mobile experience just like their web app, they are wrong. That is the fast track to low app adoption.
- Preserve the reliability and robustness of existing backend services: by creating separate tiers of service to handle the unique requirements of this new generation of applications organizations can deliver high performing, modern user experiences.
- The pace of development with these backend tiers should align with the pace of front-end development. The Services tier should be abstracted and isolated from rapid front-end development and should be cached to provide mobile-friendly data delivery.
- Ensure security and compliance with backend services. By using a standardized platform that includes access control, encryption and analytics, enterprises can be comfortable they have end-to-end security and compliance needs built-in their app from day 1.
And as we’ve seen, shifting from the three-tier web architecture to a loosely coupled four-tier architecture can accomplish all of these things. Once you have a four-tier architecture in place, you are free to quickly build consumer-grade, secure, and performant B2B, B2E, and B2C enterprise app experiences.