Cloud computing can be described as a set of resources, infrastructure and tools provided instantly, on demand, by a third party called a cloud provider. Some of the key features of this model of delivering computing resources include the simplicity, speed and low entry cost of setting up IT architectures, in stark contrast to the previous on-premises model. In the cloud model, it’s possible to increase or decrease computing resources to respond to load fluctuations in an elastic model, which is also supported by a pay-as-you-go model. Through this model, even a company with a modest IT team, can have access to world class architectures that address topics like
- high availability and high responsiveness
- flexible power
- simplified maintenance and operations
- high levels of security
- updates and business continuity support.
Cloud providers make huge investments in specialists and infrastructure to guarantee high service levels and system resilience, which would be prohibitive for most businesses, but which they can benefit from under this model. Apart from the typical service model, cloud computing can be available in three models:
- public clouds
- private clouds
- hybrid clouds
The last two to support some specific requirements of customers or industries.
With the availability of resources from the cloud and the increasing complexity of applications, a new model of software development has been defined, firstly to deal with complexity and secondly to take advantage of the structure and resources of cloud computing. This model is Cloud Native Computing and describes a new way of developing software and structuring the IT infrastructure of the enterprise. This new model describes a way of developing software that focuses on the cloud structure and resources and aims to address several issues and desires of IT as a contributor to business efficiency, growth and improving customer experience, including:
- business agility
- scale and flexibility
- cost improvement
- security concerns
- high availability
- resilience and business continuity
Cloud native computing uses several technologies and approaches, including virtualization, containers, microservices, APIs and DevOps. Containers are a key component of this approach and refer to pieces of code running in the cloud. Each piece running independently of the rest, exposing its functionality via APIs and being able to access others also via APIs. Containers are managed by a specific orchestrator (for example Kubernetes), this orchestrator can initiate a container, move it to another server, initiate more instances (replicates) of a container or even replace it if it is not responding. Once each container is independent of the others, they can be developed with different programming languages and frameworks and run on different operating systems and translated into a cloud-ready component, a specific piece of legacy software, enhanced to expose its functionality via APIs. So, in general, an application will be a composition of access to different containers that run independently and can have different speeds of development and publishing (going into production). The reference architecture for building applications in this way is called microservices and promotes software reuse, allowing each application to evolve and be updated at different speeds and by different teams.
Containers and microservices are infrastructural ingredients to promote
- development speed
- software reuse
- rapid integration with the best of bread and external solutions
- scalability and high availability, and
- reduce the time from development to production, supporting practices such as continuous development, continuous integration and DevOps (the latest as a team and practices to promote the rapid passage of code from stages between development and production).
Microservices is an evolution in the way we deal with the complexity of today’s applications, which need to run smoothly, in multichannel, evergreen mode to maximize customer experience and protect the future.
The benefits of Cloud Native Computing as a new way of architecting software applications can be more easily achieved with highly productive tools designed for this specific context, such as the new OutSystems Developer Cloud (ODC) platform. With ODC platform you can have the benefits of developing applications leveraging low-code technology that drive revenue, reduce costs and controls risk at a internet scale. ODC simplifies the complexity associated with containerized applications letting organizations take advantage of cloud native computing without sacrificing speed and agility. For these reasons we, which is our continue to bet on OutSystems for the future of lean IT, business success and agility.
To conclude, cloud computing has become the standard computing platform for most organizations. The next step in application evolution is the move to native cloud computing which requires a shift in application architecture. To help with this transition OutSystems’ new OutSystems Developer Cloud (ODC) platform provides an integrated suite of tools to simplify the development, integration, assembly and deployment of modern, cloud native applications.