Best Practices for Cloud Enabling Apps, Part One
If you’re an Independent Software Vendor [ISV] that currently offers Line Of Business [LOB] applications on-premise, you’re probably exploring ways of ‘cloud enabling’ your products. If not, you definitely should be!
Not least because:
- Your customers will be demanding anywhere access to your applications
- New entrant ‘born in the cloud’ competitors are disrupting your customer base
- Transitioning to a SaaS provider [with valuable recurring revenues] is far more profitable than maintaining a traditional software business
ASI Cloud works with ISV’s, helping them on a phased cloud enablement journey, taking established on premise applications and transitioning them into working, sustainable SaaS offerings, whilst maximising existing code investments. In this the 1st of a 3 part blog, we will reviewing the ‘Cloud Journey’ for ISVs and introducing best practices for taking advantage of the huge opportunities that the cloud offers to software developers. In this instalment, we will also look at some technological and business objectives for cloud enabling your applications, whist covering basics such as the architecture and the hosting environment.
Establishing your business and technical objectives
You know your niche marketplace better than anyone; so consider why you should cloud-enable your LOB apps and establish how you hope to benefit.
- Do you aim to reach a new audience or market or sell to larger (or smaller) organisations, or to cross vertical markets?
- Do you want to move into new territories, to re-align your sales channels or geographies?
- Are you reacting to competitive activity and new entrants or are you looking to lead and disrupt your marketplace?
It’s important to set clear objectives as this is not just a development project but a wholesale and cultural shift in how your business will function, transact, remunerate and budget. You will need to set out the ultimate outcome from a Commercial, Marketing and Technological standpoint – what will success look like for you? Then you’ll need to establish the roadmap toward this objective with the gateways on that journey. However, you will also need to clearly understand whether your sales, implementation/deployment as well as your support functions have the capability to make the transition, whilst understanding what your potential disrupters are.
The Cloud Journey
The ‘Journey to the Cloud’ is phased and it is likely that in a rudimentary fashion your single instance, ‘on premise’ application has already under gone some simple ‘Cloud Enablement’ by being hosted with local Hosting or Managed Service Provider and delivered through a virtual desktop, (Stage 1). However the drawbacks with this approach can often lead to confusion for end user customers with ‘multiple’ log-ons to multiple ‘desktops’ and a lack of true integration with ‘local’ business productivity applications. This approach doesn’t truly mobilise the application with an ‘App-like’ any device any time access experience, and can, in reality, be a more expensive approach for lower capability/functionality, when compared with true Cloud services. Often, the local managed service providers themselves have limited capabilities and accreditations, with hosting and cloud (ie. not core) business lines, with no discernible roadmaps and limited scalability.
The next step, (Stage 2) is to monetise your existing application in new and disruptive ways, that will help maximise the profitability from your current code investments and bring extra value to your customers. Your CSP should have the ability to use intelligence on how it is utilised to help you change your billing model. This ensures a continued but evolving income whilst you develop a roadmap to consider true multi-tenant hosting and Software as a Service delivery, (Stage3).
Apps and Mobile devices have been critical drivers in the ‘consumerisation of IT’; consumption of business information and insights is no longer restricted to the PC and your application will need to be available to users via ‘Smart Devices’ Tablets, smart-phones and other devices. ‘Mobile’ delivery of information & ‘App Development’ are therefore critical development points for your roadmap and CSP partners with deep relationships in the ALM and Development community, (Stage 4).
Your relationship with your CSP is a long term partnership, where success is mutual. As your business grows and expands in current or new markets, your Cloud Service partner should have the capability to not only scale with your business – to ‘Hyperscale’ levels where appropriate – but also support multiple geographies. In addition, they must have the ability to provide true ‘Hybrid’ Public/Private Cloud infrastructure and value added services.
In an ‘as a service’ configuration, the architecture for efficiently delivering your applications must be fully ready.
- Stateless Web Servers – Cloud-friendly applications require architectures of web servers that rely on a shared database for horizontal scale and provisioning for new machines.
- Extensible Data Model – For subscriber-specific customisations such as extending existing data objects, adding new ones, or applying unique validation logic, you should design the data repository to enable this.
- Multi-tenant Support – A key cloud principle is placing multiple customers, or tenants, on a single server or software instance. This helps you gain operational efficiencies by removing the need to maintain each customer environment separately.
- Configuration Flexibility – Some clients may want to purchase your applications as-is, with no requirements to make changes. Some customers may want the flexibility to extend the data model, change the appearance, configure business-specific workflows or apply security settings. You should think about designing your applications to support such user-driven customisation options.
- APIs – Offering APIs is essential for cloud-based applications; making them easier to integrate with or manage remotely. Good API design requires some work, but the benefits for the customers will be worth it.
- Security Architecture – Security is vital for applications that may be shared by many users. How you authenticate and authorise users, how you encrypt at-rest data, how you secure data in transit, providing audit trails should all be considered
- Integration with other Cloud Platforms – While not absolutely necessary for success, it can be powerful when cloud applications embrace others and your customers may benefit. Some CSPs manage eco-systems of resellers and ISVs that make complimentary applications and bundles available to IT buyers.
The Hosting Environment
Once you’ve created your cloud-friendly application architecture; you must then deploy it to maximise reliability and minimise support costs. Even well-architected applications will fail without the right hosting environment. You will need a mature Infrastructure as-a-Service (IaaS) provider with an environment that has strength in the following:
- Utilisation Billing – Pay-as-you-use billing is a primary attraction of SaaS. You must ensure that you can easily capture usage metrics to factor into monthly costs. ISVs may simply charge a flat fee per user, but your hosting provider should be able to provide a breakdown of all the costs associated with your application.
- Easy Horizontal/Vertical Scale – Increasing computing capabilities for a given application servers is often a good idea, but cloudification is associated with the easy horizontal scale. The platform your cloud application rests upon must be rapidly scalable on a self-service basis.
- Service Analytics – In a partnership ecosystem, when an issue presents itself, it is crucial to identify and fix that issue, irrespective of where it lay. So understanding whether it is in the IaaS provided by your service provider, the public Internet or in your own code is paramount. This not only ensures swift resolution and customer service excellence, but also prevents friction between the services teams within the host and the ISV. At the end of the day this is a mutually beneficial partnership with both parties providing value.
- Global Deployment Options – A major asset of cloud software is that it resides on the Internet and may be accessed by users anywhere. Your applications are used by global users and you should consider hosting providers that are able to provide global presence and support provisioning with redundancy to prevent loss of service.
- Single-click Provisioning – Cloud application architecture can be complex with multiple front end Web servers, distributed database systems, batch job processing servers and so on. Where possible, find an Infrastructure-as-a-Service (IaaS) provider that provides for “templating” an infrastructure stack and that supports single-click deployment options.
- Access to Web-based Installers – Rather than leveraging virtual machine snapshots and recycling them when you require more servers, consider building servers automatically when scaling. Using VM snapshots means patching and managing them so that they’re ready for use. Instead, if you have the applica¬tion source code (or Web installers for packaged software), there are a number of tools you can use to quickly and reliably build new servers.
- Active Monitoring – Supporting large numbers of customers on your application means you’ll need the capability to respond quickly to hardware or software issues that may arise. Your hosting platform provider should be monitoring the stability of servers diligently. The platform must be able to notify them of problems and perform prescribed remediation such as server reboots, taking failed servers offline or adding more servers and so on.
- Reliable Backup and Restore Options – Disasters happen, even an entire data centre can go down; you should make sure that your application data is readily and regularly persisted in a secondary data-centre location. DR planning is extremely serious; make sure your hosting partner provides a reliable capability.
In our next blog for ISVs on cloud enabling your applications, we’ll be looking at:
- Preparing for registration, management and billing
- Creating application templates