What is Cloud Computing?
In this post, we will be taking a look at the basics the Cloud Computing. We will be discussing Cloud Computing, the evolution from On-Premise data centres and the major advantages of Cloud. Requirements of a Modern Software
Software development has significantly evolved from what it used to be 10 or 15 years back. Advancements in technologies, increasing demand in digital transformation and fierce competition among various digital platforms had essentially changed the way we look at software applications. The perspective of both Business and Customers have changed when it comes to software
Gone are the days when IT would release a new version of the Software 2 or 3 times every year. With more and more companies adopting Agile Software Development Life Cycle methods like Scrum, Kanban, XP, etc. the lifecycle of releasing software has decreased significantly. There are IT companies which release a new version of the software every week or even night in some cases. New feature requests and bugs reported by customers need to be addressed in days and weeks and not months.
Your software needs to be available to your client all the time. Disruptions and downtimes in the software will lead to negative user experience and ultimately affects the trust and positive relationship that needs to be maintained with your customer. A good experience can only be provided when your customers can use the software at all times.
3. Elastic and Flexible
Your software needs to be scalable and should respond well to any sudden spike in traffic. Your software should also be able to scale as quickly as possible. There is no point in being able to scale when the spiked traffic has already normalized. Depending on the business model, a spike in traffic can be predictable or sudden in nature. In either case, your software should be able to gracefully handle the scenario.
4. Security and Privacy
Data security and customer privacy are of paramount importance in this century. If you want to build trust with your customer you need to be able to assure them that their information is secure, protected and won't be used for any malpractices. Ensure security practices are followed, look at OWASI top security loopholes and respect your customer right to information and privacy. Collect only information that you need from your customers and take proper consent before collecting any private information. Also allow your customers to have the option to opt-out from providing any information and delete existing information.
Your software needs to be maintainable at scale. Ensure that release cycles are small, invest in DevOps practices like Continuous Integration/Continuous Development and keep a lean team. Respond to business and customers as fast as possible.
Last but not the least ensure that whatever software you have built is solving a problem for your customers and adding value. Simply speaking unless you are adding value to your customers no one will use it.
The traditional model of hosting a Software
Traditionally companies have followed an on-premise model of software hosting. All software and applications were hosted in private machines owned by the company. These private servers could be in the same office building as that of the company or a remote data centre owned by the company. The responsibility for maintaining and servicing these servers would lie with the company. Often, a team dedicated IT staff would be hired by the company to look after these servers.
The advent of Cloud Computing
Cloud computing is a complete change in software deployment and hosting paradigm where instead of owning the backend servers, the responsibility is offloaded to a 3rd party vendor (often known as the Cloud Provider). Infrastructure and its maintenance is the responsibility of your Cloud Provider. On a demand basis, you get to lease these servers from your cloud vendor and host your applications in these servers. The cloud vendors maintain a pool of resources (physical infrastructure like servers, network switches, etc.). You get to pay and use these resources as per your demand. You pay for only what you use. One major point to note is the flexibility to adjust the number of resources you are using based on the demand. So when during high demand you can use more resources and then scale down your servers once the demand has settled. One obvious change in paradigm for on-premise computing is that you don’t get physical access to these servers, rather these servers are made available to you over the internet. Various cloud providers may have their way of making these resources available to you but most of the leading Cloud Providers expose APIs over the internet and also provide you with a management portal to manage your resources. There are several definitions of Cloud Computing, here are some of them which we think summarized cloud computing the best
On-demand computing resources delivered to you over the Internet
"Cloud Computing is an approach to computing that leverages the efficient pooling of an on-demand, self-managed, virtual infrastructure" - VMWare
Your company still owns the applications and the intellectual property rights of the code behind each application. You can be more focused on building your application and fulfilling your customer needs and less on the maintenance of the physical servers behind your applications.
Some of the most obvious benefits of using Cloud would be
Being able to scale under demand is one of the major reasons why companies are considering moving to the Cloud. Cloud gives you and your company a competitive edge when you will be able to automatically respond lightning fast to a sudden increase in traffic. Imagine you are building an E-Commerce digital platform where the traffic pattern is unpredictable. User demand can increase suddenly, like when a sale is going on or during festive seasons. Scaling applications in an on-premise setting can be difficult because the only way to horizontally scale would be to add more physical servers to your private data centres. The more physical infrastructure that you add will increase your liability and the scope of your maintenance. In a cloud computing model, you have the flexibility to add more infrastructure on a demand basis and then release those resources when the user demand has lessened.
Cloud computing models are metered, hence you only pay for the resources that you are using. When you are using less number of resources you will be billed less, and during heavy load when you need more resources you will be billed accordingly. In an on-premise setting, you will need to need to bear the cost for all the physical resources regardless of whether you are using them or not.
Improved domain focus and reduced maintenance
With the responsibility of maintaining the physical resources being offloaded to the 3rd party cloud vendors, you and your team can focus on what matters the most - your core business domain and customer requirements. You can focus completely on building applications and better experiences for your customers. You get to dazzle your customers without having to worry about any of the physical resource concerns like Availability, Connectively and Scalability. All physical maintenance activities like applying security patches, wiring issues, network connectivity, etc. are managed by your Cloud Provider
The major players in the Cloud have a global footprint. Simple speaking they have data centres built all over the world and have planet level scaling capabilities. If your business needs to expand globally then you would want to keep your Go-to-market time as less as possible. Setting up an IT infrastructure from scratch is one of the most time-consuming ventures. With cloud computing, you can expand your already build applications to the nearest data centres of your business within minutes.
Continuing business-critical applications under an adverse condition like natural disasters are one of the ultimate need for a modern application. Take the example of an emailing service like Outlook or Gmail. Even if a single data centre goes offline due to a sudden earthquake in that region, you as a customer won't tolerate any data loss or losing the ability to see your emails or sending. Cloud can help you in such a scenario be being able to replicate your data and servers in mirror regions. During disasters, the operation can shift to other unaffected regions with the least disruption to your customers.
Most cloud providers expose Cloud Resources via APIs over the internet. Generally, a management portal is also available. Hence, you can manage your cloud resources yourselves without the need of expensive IT staff.
Several companies are providing Cloud Computing, some of the leading players include
Amazon Web Services (AWS)
Google Cloud Platform (GCP)
In the next article, we will be looking at the various cloud computing models like IaaS, PaaS and SaaS.