Although many clouds initially focused on Infrastructure as a Service (IaaS), enterprise organizations often have applications listed as their top business priority. The reality is that a private or public cloud requires a base infrastructure of server, storage, and networking to begin hosting anything including an IaaS, Platform as a Service (PaaS), or Software as a Service (SaaS). The largest task in the journey from enterprise IT to the cloud is in application transformation.
IaaS virtual machine services are now considered the very minimum capability for a public or enterprise private cloud. Application transformation is the longer-term goal and will take the most amount of time.
Application transformation is a fancy term for assessing the current applications and then planning and conducting migrations. When planning for your cloud transition or deployment, assessing your existing applications will lead you to decisions on what to migrate to the cloud, what apps to redesign, which to maintain in the existing enterprise, and the priorities for an eventual transition to the cloud. Before planning any application transition, it is essential to understand the basic characteristics and features of traditional and cloud-native applications.
Cloud computing is not really a new style of IT delivery, though it does demand a more professional approach to application architecture, development, and delivery. This is mostly due to the pace of change and compressed, iterative development cycles – for some firms, not all. Keep in mind that about 70% of firms who use DevOps claim that it has not meaningfully helped or improved development. In fact ‘Dev Ops’ is sometimes a euphemism for building code fast, with no documentation and poorly. As with any ‘model’, the process has to be adapted to the situation and skills at hand and used properly.
There are of course some very important software architecture concepts of Cloud based applications, namely:
Cloud-enabled applications, also referred to as cloud-native applications, are designed to take advantage of a cloud infrastructure and all of its capabilities. Cloud-native is really where application development is headed and it can be summarized as follows: composable (component-based), service-oriented, discrete functionality, open APIs, SOA based and built around Web Services.
As the ‘cloud’ continues to be designed and improved, new terms are added. Composable is one such term. Essentially, a composable service or application is one that is not hardcoded. Instead, it is flexible and adaptable, and can sense and detect its surroundings and nearby applications and services so that it could function in any cloud or environment in which it’s functioning. Cloud Native Characteristics can be found here.