JOURNEY INTO CLOUD NATIVE AND KUBERNETES: Day One (1)

Owunwa Chiwuike
5 min readJun 25, 2022

WHAT IS CLOUD NATIVE?

Before I can start learning about cloud-native, I need to go back to the basics…

What is the cloud?

Cloud storage, iCloud, and google drive, are terminologies now used on a daily bases. In the past, for those of us aware of the 1990s, we stored our data be it pictures, videos, or documents on floppy disks and Burnable DVDs, but the information we used increased over time, and applications got more complex with more features are being rolled out every day.

Now floppy disks existed only as a symbol of storage, and nothing more. We needed efficient ways for data storage and recovery.

That was when servers came into existence, and the cloud followed suit. So what is the cloud?

The cloud is a collection of servers around the world, a virtual space used for storing and managing data, which can be accessed from anywhere in the world.

We use cloud services every day from our email service providers to our iCloud and Netflix and chill. Regardless of where we are in the globe, once we can connect to the internet, we would instantly have access to these services.

Speed, global accessibility, and unlimited storage capacity are some of the few improvements that came with cloud storage technology, which can completely phase out physical means of storage.

The cloud storage technology then ushered the need for cloud computing, a means to develop and deploy different cloud infrastructures from the SAAS (software as a service) to the IAAS (infrastructure as a service) which displayed the flexibility of the cloud, providing different services for users of different ranges. From the individual users to start-ups and major corporations.

What is cloud-native?

In the world of software development, cloud tech promises a form of agility that isn’t costly yet effective. The software development architecture used in the pre-cloud era is known as the monolithic architecture. Was characterized by bulky packages that had everything an application would need to operate from start to database and everything in between. This means that any changes or updates on the application required you to work on the whole complicated application package.

Which could make the whole application crash, and give birth to bulldozer memes we all read and love.

What then is cloud-native?

Cloud-native is an approach in software dev. that utilizes cloud computing, cloud infrastructure, and tools to build and deploy scalable applications in our modern dynamic environment. Cloud-native is not just about the improvements in technology, but the change in mindset and culture in how we develop software applications.

With cloud tech, micro-services became a major player in the software dev industry. Micro-services are containerized processes that communicate within a network to bring services to the end-users. The required metric for micro-services is the ability to be independently deployable and capable of being called across a router channel.

A lot of big words, I know. So imagine that the Micro-services are like the different people that work in your office, each of them is supposed to be able to stand independently, and yet be able to communicate and respond when needed. So that the office objective would be met, and the different customers would leave satisfied.

Therefore, the Micro-services are like freelance workers probably remote workers, and the software is the project or office.

Another major issue affecting the monolith architecture was the cost of purchasing and maintaining servers, necessary for the deployment of applications.

In the monolith architecture, the company had to purchase, set up and manage the servers in-house. This led to high upfront costs. Cloud tech on the other hand ushered in the Pay-As-You-Go service, which means you pay for each cloud infrastructure you use.

More control over the resources spent and less wastage or opportunity cost.

If then, Cloud Tech is the long-awaited messiah, why is the world not instantly shifting to Cloud infrastructure?

Well because there are a couple of issues still yet to be resolved.

One is security. 20% of the Data stored in the cloud is very sensitive information. Since the data stored in cloud tech is outsourced to a third party, the unease of sharing such sensitive data with parties outside the company is a major limitation, as one cannot control information once it goes out. Entities would rather go through the task of managing both the virtual and physical security, needed to keep their sensitive information safe.

Another major issue is communication. The agility presented by cloud tech, in the form of micro-services relies heavily on communication between these services across a network. In a small network between a couple** routers and APIs, it is a manageable affair. But when the more complex the application, the more complex the communication required, the more difficult things become. How does one service send and receive information, and how can it be developed to work efficiently? How can it be scaled out effectively without having to overhaul it in later stages?.

A third issue was Reliability. Even though cloud tech put substantial efforts in place to back up all the data it manages and it’s easier to recover, any downtime of any cloud service provider means, all those software and applications and services would be inaccessible. Thus it requires a lot of trust, to pour all that effort into the hands of someone else and hope it stays up.

Why should I care?

Cloud-native is a collection of tools that makes cloud development easier. From the containers, Dockers, and orchestrators, to monitoring and logging.

The term “Cloud Native” was created with speed, trust, and freedom in mind by utilizing loosely coupled systems. This allows one to update and affect individual components within that system without any downtime. Being able to break down and completely rebuild the whole system from config files and manifest shows a focus on speedy testing and automated deployment.

That means you can mess around with your system and configurations without having to shut down the system/program. And on the event you mess around too much and break the system, you can easily reconstruct or restore the system.

After some thought, I decided to focus on three major traits of Cloud-native to help visualize my journey:

  • communication
  • speed
  • agility

Therefore, to understand the above, it is necessary then as a beginner to build my basics in cloud computing, before proceeding to master cloud Native tools.

Basics like Linux VMs (virtual machines), load balancing and analysis, package installation, containerization, pods, Domain name system (DNS), Secure sockets layer (SSL), transmission control protocol (TCP), user data protocol (UDP), and finally a cloud service infrastructure like Amazon AWS or Microsoft Azure.

Finally, I would also be looking into popular tools like Docker for containment and Kubernetes for orchestration, using the corkscrew and car analogy.

I guess my work is cut out for me.

--

--

Owunwa Chiwuike

freelance Tech writer.... specialist in App development with 6 years experience in laravel and cloud app development.