Designing and building a cloud-first application architecture for private or public clouds requires approaches, skills and best practices that are different from those used in traditional application development.
Here are 5 best practices we follow at CloudNow to ensure that we deliver applications that perform beyond client expectations on the cloud.
1. Building cloud applications as a collection of services
Traditional application developers have a tendency to create tightly-coupled applications that focus on the user interface rather than on the underlying functions or services that can be leveraged independently.
It is important to separate the application services physically, execute them on proper machine instances, assign service/API managers and use governance technology to provide service directories and track the many services that make up your application. Through this approach, it is possible to build up a service, with data as the foundation and then combine the services into composite services or complete composite applications.
We know from experience that cloud applications work best when deployed in this manner – as a collection of cloud services or APIs with a service-oriented architecture (SOA) at its core. Moreover, this approach allows for the reuse of services from other applications or more coarse-grained services. When applications can be split into hundreds of underlying services that have value when used by other applications there is no need to reinvent the wheel each time a new application is required.
2. Systemizing security within the application
Application security should never be an afterthought – it is critical that all cloud-based applications should make security systemic to the application. Security should be designed and built into the application architecture itself.
Even before building the application, it is important to pick an effective security approach and technology based on the type of application, and also to ensure that the security solution we have chosen addresses compliances or eliminates data-level security issues that may be faced in the future.
An identity and access management (IAM) solution, when integrated with such cloud-based applications, can not only facilitate the agile configuration of security measures, it can also reduce security costs. Akku, CloudNow’s very own comprehensive IAM solution, seamlessly integrates with all cloud or on-premise environments. A cloud-delivered IAM like Akku also enables centralized identity management of all users.
3. Decoupling the application from the data
Decoupling data is done for the same reason that applications are built using a set of services – once decoupled, it is possible to store and process the data on any public or private cloud instance. Processing and data, if broken down into separate components, enable the most efficient functioning of cloud environments (both public and private).
With many enterprises insisting that their data remain on local, on-premise servers while wanting to leverage the commodity virtual machine instances within a public cloud, it may lead to latency.
The solution is typically to use caching systems to enhance the additional database performance by locally storing commonly accessed data, thereby reducing the number of database read requests directed back to the physical database. These caching systems are best built into the application, so they can be well tested with the application data to determine their efficiency.
4. Placing performance & scalability front and center
It is important to foresee how the different components of the application will communicate with each other, because this will impact overall performance. Calculating the scalability of the application under an increasing load is also fundamental to the engineering process.
What will happen if a very large number of users log in to the application at the same time? It will increase the load on the network, the load on the database, and the load on the application servers. This could saturate the application server, and one may need to provision more application server instances. Or the network capacity might remain the same, but the number of database instances may have to be increased in order to handle additional loads effectively.
Automatic spinning up of resource instances can help to an extent, in identifying the application’s auto-scaling capabilities. However, it is by understanding the workload profile of the application, defining the path to scaling the application, and putting effective mechanisms in place that one can truly assure its scalability.
To keep an eye on overall application performance, application-aware performance monitoring tools may be used, or interfaces within the application can be created.
5. Enabling effective communication between application components
While the first and third best practices above laid emphasis on decoupling of applications in terms of its service components and data respectively, it is important to remember that the communication between these components is key to the application’s performance.
Applications must be designed keeping in mind the effective communication between their different components. For example, communications could be combined into a single stream of data or a group of messages, rather than in individual threads.
Application development and deployment for the cloud is a challenging task, and constant learning is a part of the process. At CloudNow, with our years of experience and learning, we have identified these best practices, and follow them now as part of the process while building cloud-first applications.