My time in the Cloud


I was first introduced to Cloud Computing during second year of my four year Bsc. Computer Science course in UCCThis was during a module entitled “Introduction to Cloud Computing” where we explored various cloud services such as Software as a service (SaaS), Infrastructure as a Service (IaaS) along with fundamental cloud concepts including horizontal and vertical scaling. While I found much of these concepts interesting, the true power and scale of the cloud had not yet dawned on me.

Throughout my time in college, all of our projects were developed in a local environment and then deployed to on-premises servers located within the college. As such, we were always enforced with strict constraints on resource usage such as storage or RAM consumption. While this led to good programming techniques for efficient memory and CPU usage, I always felt that certain types of applications could really benefit from enhanced computing capacity.


During my time in Final year, I chose to do my Final Year Project on the topic of AI-powered recommender systems. This involved the end-to-end development of a Movie Recommender system which analysed user preferences and predicted movie recommendations for the end user based on their choices in movies. One of the big struggles here was making an optimised application; the underlying prediction process involved the cross-analysis of thousands of user-preference profiles. This lead to very long prediction times due to resource constraints on CPU and RAM. While I did manage to cut down the overall prediction time, I always knew there had to be a way to cater for such compute loads. This lead me to exploring Cloud Computing further.


What followed was a whole world of knowledge that I dove straight into. I learned how the cloud can scale to accommodate for unpredictable workloads. How you can have your application online in the cloud alongside going global all within minutes. You can also choose exactly the type of environment you want to cater for you workload. From tiny virtual machines to massive compute clusters spanning multiple regions, there really is an abundance of compute environments to suit every kind of Application. From my exploration of the Cloud, I knew I wanted to pursue a career in this area. As such, I applied and successfully got a job with AWS as a Cloud Engineer.


I have now been working with AWS for almost one year and what a journey it has been. Each day I continue to learn and be astonished by the true power of cloud computing. Through working with some of the many customers of AWS, I have learned how Cloud Computing has empowered them to grow their businesses and reach more customers than ever before. I have also learned of the financial benefits of cloud computing and how it can really empower small companies or businesses with its very low startup costs. From my time working in AWS so far, The following have been the main areas which I feel are the most powerful aspects of Cloud computing:


Scalability and Availability 


Take for example Netflix, they use Content Delivery Networks and have cloud based servers located around the world. When you watch a movie, the requested content is obtained from the nearest Content Delivery Network to you. This means that the load time of your movie is significantly reduced along with any buffering that may follow. I’m sure you can remember a time where loading a movie was a very tedious process regardless of how fast your internet was. Sometimes, It seemed that only small portions of the movie would load before the infamous loading wheel would appear on your screen. Thanks to cloud computing however, Netflix and many other streaming sites have been able to benefit from the scale of cloud computing and thus provide seamless video playback wherever you may be watching from. 


The second benefit of having your application spread across multiple regions globally is the benefit of making it highly available. This means that if one particular server goes down, there are several others that can step in and take its load. This concept is known as high availability and is crucial in keeping high revenue applications online. Even if an entire region is affected, take for example a natural disaster, with cloud computing you can redirect traffic to a backup region and keep your application operational.



Financial benefits 


I have already mentioned the scale of Cloud Computing above but I feel it ties in well with the financial aspect. Imagine you are Netflix and Cloud Service Providers such as AWS don’t exist. In order for you to achieve low latency playback globally, you would have to physically build server racks in hundreds of locations around the globe. You can just imagine how expensive this would be, not just from a startup cost perspective but also for continued maintenance and cooling.


For smaller companies that want to take their business online, the concept of buying or building a server to host their website or applications on is just not feasible. The startup costs required are beyond reason  along with the continued cooling and maintenance costs. Also if you decide to build your own server, the hardware which you use may not be a viable solution in years to come meaning you would have to rebuild everything. When you deploy in the cloud however, none of these factors come in to account; startup fees are considerably lower (in some cases there are none at all) and you don’t have to worry about maintaining or upgrading the underlying hardware.



Comments

Popular posts from this blog

Foody finds in Dublin (Part I)

Top sea swims in Dublin