To gather insights for DZone's Cloud Research Guide, scheduled for release in April, 2016, we spoke to 28 executives, from 23 companies, who develop and deploy application in the cloud for their own company or for their clients.
Here's who we talked to:
Neeraj Gupta, S.V.P. Product & Engineering, Apcera | Jad Naous, Product Lead, AppDynamics | Ez Natarajan, V.P. Head Cloud Services Business Unit, Beyondsoft | Alon Girmonsky, CEO and Founder, BlazeMeter | Kunal Bharati, Cloud Architect and Nishant Patel, CTO, Built.io | Sacha Labourey, CEO, Cloudbees | Deirdre Mahon, CMO and Fraser McKay, V.P. of Products, Cloud Cruiser | Flint Brenton, CEO, CollabNet | Ali Din, Senior V.P. and CMO and Walid Elemary, V.P. Product Development, dinCloud | Mike Masterson, Director of Strategic Business Development, Dynatrace | Gabe Monroy, CTO and Jasen Hansen, Chief Architect, Engine Yard | Fred Simon, Co-Founder and Chief Architect, JFrog | Jim Frey, V.P. of Products and Ian Pye, Co-Founder and Principal Engineer, Kentik | Johan den Haan, CTO, Mendix | Mounil Patel, V.P. Strategic Field Engagement, Mimecast | Faisal Memon, Product Manager, NGINX | Arvind Mehrotra, President and Global Business Head – Infrastructure Management Services, NIIT Technologies | Jens Eckels, Director, PaaS Business Group, Oracle | Pat Harper, SVP Operations, PGi | Joan Wrabetz, CTO, Quali | Partha Seetala, CTO, Robin Systems | Nick Kephart, Senior Director Product Marketing, ThousandEyes | Kiran Bondalapati, CTO and Co-Founder, ZeroStack.
When we asked these executives "What do you see as the most important elements of cloud-based applications?" here's what they told us:
Cloud apps are there to scale. Infrastructure is provided as a service. This may include instances (servers), load balancers, virtual disk space, and involve infrastructure elements to scale, provide redundancy, availability, and performance. We give developers the opportunity to test all of these elements. There are two aspects. The first is debugging, finding problems and bottlenecks, testing on demand, creating a test as I think about the need for it in several variations to identify the root cause. The second is fully automating the testing process so testing is at the heart of everything from the time you commit your code, when building, when deploying. This is part of a continuous delivery process, knowing which test to run and executing the process in a fully-automated fashion.
Quick onboarding of the application with the ability to scale up or down based on needs and consumer demand.
12-factor application from the Heroku experience provides a series of best practices and benefits that scale. How to handle logging. Take any application with 12-factor principles and move between clusters. Test and stage to production – a CD/CI pipeline for automation. It's very easy to access specific elements of the platform for your needs.
Primarily use-case testing for developers, security, support, sales demos, diagnose and solve problems. We create a sandbox, that enables us to recreate a customer problem in the sandbox and solve it. It’s important to model the infrastructure so you can manipulate it to the exact configuration of the network. The model can be physical or virtual. It's a more sophisticated job to model virtual things. Virtual machines and devices that are connected must mimic what’s in production. No one has a 100% on-premise environment so you must model interfaces with Amazon, OpenStack and Docker. Assume it will be managed independent of the cloud management platform – must be able to manipulate the physical infrastructure. Cisco has three developer centers and AWS. Sandbox could run in Amazon or in the developer centers based on the bandwidth and where it needs to run.
1) Understand the business requirements, if you don’t you don’t know where you’re going you won't get there. 2) Define the objective in sync with the requirements. 3) Identify the goals that drive the objectives – the framework, the vision, and the talent that can execute on it. Support multiple tenancy which provides economies of scale. Architect for multiple customers with security and isolation for each customer instance. Ensure everyone’s data is protected in the cloud.
Micro services architecture provides smaller chunks that can scale. Part of the core platform brings code closer to the customer. Functional components flex as needed. Applications can scale up and down as needed. Efficiency with regards to services carrying a small server behind them. You are looking for the broadest but lightest set of services. My app needs these things and it scales as the app runs and slows down based on demand and customer needs.
Scalable, secure, easy to use, easy to deploy, easy to integrate with other apps deployed in the cloud. It depends on the use case – front end service catalog to control service delivery around the application. Two parties are involved - the end user and the operator.
Three things: 1) Data modeling – you need the right model in place for multi-tenant systems. 2) Services – how to publish, manage and integrate with other systems. Ability to monitor and manage. 3) Security and data management – local copy of the data. Avoid lock-in with cloud provider. Most important to the client is the UI/UX. Many changes to the UI/UX – 1) interaction with the system – automated response; 2) the core UX itself (color schema, age group); 3) form factor; 4) content delivered on edge, understand services, from which market they are coming and how to track them; 5) automated deployment of apps in the cloud.
Security, cost, scalability and the ability to release daily are reasons for people to consider a public cloud. It’s much easier to deploy SaaS. There are core conceptual advantages of the cloud – scale, security, support, and reduced cost of operation. We host our backend using Equinex, a well-established backend provider. We have an interconnectivity network across many internet connection points.
Security – cloud apps from creating to producing the software. How to ensure micro services. Questions to ask: What does the app consistent of – component libraries, can they be trusted? What kind of resources do you have? Is it multi-tenant? How much can you consume? What is the workload? Where can it run? How can it scale? In which countries can/will it run (EU requirements)? What is the cost? What is the network connected with? What is the security policy on the network? Who can talk to my app and who can my app talk to? Four considerations: 1) workload composition; 2) how much of the app is consumed by the workload; 3) where app can run – public and private clouds; and, 4) network connectivity. We provide a trusted cloud platform. The cloud is popular because of agility – up and running in minutes versus days or weeks.
Time to value/speed to market. An out of the box catalog of services to leverage.
Web apps are very different than the traditional model. It’s a more fluid pipeline with no specific role, continuously changing with those changes displayed to the customer.
The cloud enables instant availability of applications. It enables developers to get started quickly. Continuous delivery cycle ensures the environment is stable at all times and not introducing bugs into the system. It provides a complete shadow environment so developers can test everything at scale. This is not possible in a static IT environment.
Scalability. Anything we add to the cloud stack scales vertically and horizontally. We have high availability and are fault tolerant with MongoDB up all of the time. We need to manage the cost in the cloud by monitoring use and determining the need to scale up or down.
Performance and cost. People move to the cloud to save money without sacrificing security. Performance is the first factor. You have the ability to scale as needed while keeping costs under control. If architecture migration to the cloud is not well defined, it can actually cost more to have a cloud-hosted application.
Business value. The characteristics of an enterprise app: secure, resilient, scalable, performance, responsive. Look at cloud apps and how to build and deploy apps with layers of abstractions and automation. Bring further abstraction and automation when developing the app to increase the speed of innovation. The cloud is a means to an end – quicker and endless innovation for companies.
Reliability, security, speed. Being in the cloud enables apps to be built from scratch on a short time versus the on premise approach.
Ability to flex to meet the customers’ needs. Meet the business requirements with the features and functions of the application. Scale with the organization. Maintain security and compliance. Availability and performance. Connectivity – available 24/7. We’re 85% web and 15% mobile. Apps are up and running anywhere, anytime to meet consumer expectations.
1) True multi-tenant platform provides the benefit of distributing data over many hosts and scalability without overinvesting in hardware. It’s a cost effective solution. 2) Security and data integrity, control and access are in the hands of the customer. The platform protects customer data.
Expectations by customers, end users and businesses, that your applications will scale seamlessly. This requires a well-architected data structure – how information is stored, accessed and moved from one location to another. Detailed instrumentation for applications and elements. A solid process to sort through alerts and operational information, operational analytics, getting the right developer on the call and addressing the issue.
Are these consistent with what you see as the most important elements of cloud-based applications?