|The Cloud Native Application Architecture Nanodegree - Foundations|
|Written by Nikos Vaggalis|
|Monday, 14 June 2021|
Page 2 of 2
If you have followed my previous write-up of Udacity courses, such as the three-part Insider's Guide to the Java Web Developer Nanodegree, you'll know that I am happy to share my experiences. Having attended all the lessons of the Foundation, this is my take on them:
Lesson 1: Welcome to Cloud Native Fundamentals provided a quick and high level overview of the course.The whole purpose of the Cloud Native scheme is for businesses to become more responsive to customer feedback and more flexible in adapting to new and emerging technologies.
Lesson 2: Architecture Consideration for Cloud Native Applications went through the differences between the two prevalent architectures of building applications for the Web,
Lesson 3:Container Orchestration with Kubernetes.
These resources are instantiated and explored through the kubernets cli,kubectl.
At the end of the lesson we forgo the manual kubectl command line processing and instead deploy the resources declaratively through the Kubernetes Manifests. Manifests in essence are yaml configuration files and can be considered analogous to the functionality of Docker compose vs docker cli.
Lesson 4:Open Source PaaS
Another case for adopting PaaS is that despite that Kubernetes have distinct advantages,managing them at scale is not easy especially when hosting region-specific clusters of multiple nodes.In this scenario it is more suitable to to delegate platform management to a PaaS.
The rest of the lesson revolved around the pros as well trade offs of hosting on-premises vs IaaS vs PaaS:
Put simply, if you want total control of your stack and of course have got the resources,then go with on-premise.When not needing to manage the Networking,Storage,Servers and Virtualization layers yourself you can relinquis more control to an IaaS solution, and when, on top of IaaS, you also want to outsource the Runtime and Middleware layers and just keep the Application development and Data layers to yourself, you should opt for PaaS.
However with PaaS you also get locked in to a vendor.To avoid that, the lesson introduces Cloud Foundry which is an open-source PaaS stand-alone software package that can be installed on any available infrastructure; private, public, or hybrid cloud.
Finally another option, that of Function as a Service is introduced, which alleviates the biggest problem that PaaS introduces; that an application is always online, up and running , consuming resources. If you are more cost savvy you can instead opt for FaaS which runs snippets of code only whenever there's demand.
Of course choosing between Kubernets,PaaS or FaaS depends on the given requirements.
Lesson 5: CI/CD with Cloud Native Tooling
Split into two logical sections, CI Continuous Integration and CD Continuous Deployment, first explores the collective of what Continuous Application Deployment is.
In the CI section we explore an example of utilizing GitHub 's actions to build, test, and package an application as a docker image.
Then in the Continuous Delivery section we learn that it is the process that takes place after CI and pushes the code to the end-users.However it is common practice to push the code through at least 3 environments: sandbox, staging, and then production/end-users.
To deploy our docker image to a Kubernetes cluster we use the ArgoCD tool and a complete ArgoCD walkthrough follows in deploying a Nginx application to a cluster.
While this was a simple deployment to the Sandbox environment by using manifests, when needing to push the image to Staging and Production which could have different configurations,the need for a configuration management system arises. As such,the rest of the lesson explores such a tool in Helm.
Finally the lesson completes with a comparison between Push and Pull based CI/CD models,which also signals the end of the Foundation course.
My impression after completing the course is purely positive. I've been introduced to cutting edge technology and architectures and through practical examples understood the Cloud Native stack and the reasons it constitutes the future of writing and deploying software applications.
I want to note too that Katie Gamanj, in charge of this first course, did a great job in calmly and clearly explaining the concepts in detail.
So is continuing on this learning path and signing up for the full Nanodegree worth it? I would say a resounding yes, based on my experience and the cutting edge topics that follow in the rest of the program:
My verdict is that Cloud Native Application Architecture is an excellent way to modernize skills in constructing edge applications with a view to looking for positions in datacenters or large innovative organizations which have deeply invested in such architectures - and of course, as part of any Nanodegree Udacity offers services to build a convincing resumee.
or email your comment to: firstname.lastname@example.org
|Last Updated ( Tuesday, 15 June 2021 )|