Upgrade to Pro — share decks privately, control downloads, hide ads and more …

From Frontend Engineering to Cloud Native: Lessons Learned from a Beginner

From Frontend Engineering to Cloud Native: Lessons Learned from a Beginner

Embarking on the journey to Cloud Native can be a daunting task for beginners, with a myriad of technologies, best practices, and challenges to navigate. In this session, I will share my first-hand experience, successes, lessons learned and pitfalls encountered transitioning to Cloud Native from a Frontend engineer's perspective. I will also discuss the fundamental concepts of Cloud Native architecture and explore the core technologies that underpin this ecosystem, such as containers, microservices, and Kubernetes. Through real-world examples and practical insights, I will highlight the key challenges faced by newcomers and the strategies employed to overcome them. Additionally, I'll provide valuable tips and best practices to accelerate your journey and help you avoid common pitfalls.

shedrack akintayo

October 18, 2023
Tweet

More Decks by shedrack akintayo

Other Decks in Programming

Transcript

  1. VMs ~whoami Community Manager for eBPF and Cilium at Isovalent

    @coder_blvck linkedin.com/in/shedrackakintayo
  2. Embarking on a Cloud Native Journey • Transitioning from Frontend

    to Cloud Native • Understanding Cloud Native • Technologies Powering Cloud Native • Valuable Insights From My Journey • Conclusion/Resources
  3. Transitioning from Frontend to Cloud Native • Used to work

    as a Frontend Engineer for startups • Worked in the ecommerce industry, health tech and SaaS industry • Disliked CSS btw! 🤣 • Used Javascript and Typescript mostly • Decided to Transition to Cloud Native because in every Job i’ve been at, one role was always important - Cloud and DevOps engineering My Story • APIs • Javascript ◦ I could write some services with Typescript and Node • That’s about it 😉 Transferable Skills to Cloud Native
  4. Understanding Cloud Native? Cloud Native is an approach to building

    and running scalable applications to fully leverage cloud-based services and delivery models. It adapts to the numerous possibilities and architectural constraints offered by the cloud compared to traditional on-premises infrastructure Benefits - Increased efficiency - Automate everything - Cost reduction - Zero USD spent on managing on-prem servers - Reliability - Resilient and Highly available applications
  5. Cloud vs Cloud Native - Cloud =! Cloud Native -

    Cloud usually refer to cloud computing. involves on-demand availability of computing resources as services over the internet. - TLDR: you don’t need on-prem resources - Cloud Native refers to a method/approach through which applications are built and delivered rather than resources they use or where they are deployed or hosted.
  6. Principles of Cloud Native - Microservices - Composability - breaking

    down an application into smaller services - lightweight - Connectivity via APIs - Containers & Orchestration - Containers help package your application code and it’s dependencies into an image that can then be run on any machine - Orchestration involves help manage containers so they can run smoothly as an application e.g Kubernetes - Service Mesh - a software layer in the cloud infrastructure that manages the communication between multiple microservices. - Immutable infrastructure - When hosting cloud-native applications, servers should remain unchanged after deployment
  7. Containers: The Building Blocks of Cloud Native Containers are lightweight,

    standalone, executable packages that include everything needed to run a piece of software, including the code, runtime, system tools, libraries, and settings. Benefits - Isolation: Containers isolate software from its environment to ensure that it works uniformly despite differences, such as between development and staging. - Microservices: Facilitate the microservices architecture by allowing each service to be packaged into individual containers. - Portability: Ensure software runs consistently across various computing environments.
  8. Container Runtimes A container runtime is the software that executes

    containers. They are one of the fundamental components of any cloud native environment that includes containers. Some examples include: - Docker Engine - A platform and tool for building, distributing, and running Docker containers. - Containerd - An industry-standard core container runtime. It is available as a daemon for Linux and Windows, which can manage the complete container lifecycle of its host system: - Linux Containers (LXC)- is an open source container platform that provides a set of tools, templates, libraries, and language bindings
  9. Container Runtimes (contd.) - RunC - A CLI tool for

    spawning and running containers on Linux according to the OCI specification - It is managed by the Open Container Initiative - CRI-O - is an implementation of the Kubernetes CRI (Container Runtime Interface) to enable using OCI (Open Container Initiative) compatible runtimes.
  10. Kubernetes (k8s) Kubernetes is a prominent container orchestration platform -

    it manages where containers run within a cluster of servers. - move containers between servers to keep loads balanced. - Four ways of using Kubernetes - Vanilla Kubernetes - Managed Kubernetes - GKE, AKS, EKS - Kubernetes distros - Rancher, Open Shift - Lightweight distros - minikube, kind
  11. Basic Components of Kubernetes Pods: The smallest deployable units in

    Kubernetes that can hold a single container or multiple small, tightly-coupled containers. Nodes: Worker machines that run containers. Control Plane: Coordinates all activities in your cluster, such as scheduling applications, maintaining applications' desired state, scaling applications, and rolling out new updates.
  12. Benefits of Kubernetes to Cloud Native - Scaling: Manages the

    scaling of applications as per the demand. - Load Balancing: Distributes network or application traffic across many servers. - Healing: Replaces and reschedules containers when they fail. - Rollouts/Rollbacks: Manages the updating of applications without downtime and rolls back to previous versions if issues arise.
  13. Serverless - like the name implies: “server” “less” - Technically,

    there’s no need for you to worry about managing a server - It lets you execute applications on demand, without having to install them on a server. - Only pay for what you use basically - can be setup as managed in a public cloud(AWS lambda), on-prem or self-managed(OpenWhisk or OpenFaaS)
  14. Load Balancers Because most cloud native environments include multiple servers

    with various workloads Load balancers help distribute traffic or requests across a cluster of servers ensuring availability and reliability Some examples include: - NGINX Cilium Layer 4 XDP load balancers - Full IPv4/v6 dual-stack support that can be deployed and programmed independently of Kubernetes
  15. Container Network Interface (CNI) It is an initiative of the

    Cloud Native Computing Foundation (CNCF), which specifies the configuration of Linux container network interfaces. - Kubernetes has it’s in-built CNI called the Kubernetes CNI - You can also bring your own CNI plugin to Kubernetes e.g Cilium, Calico, Flannel Cilium is an open source, cloud native solution for providing, securing, and observing network connectivity between workloads, fueled by the revolutionary Kernel technology eBPF.
  16. eBPF is a technology used to safely and efficiently extend

    the capabilities of the kernel without requiring to change kernel source code or load kernel modules. eBPF enables the development of powerful new tools for the Cloud Native ecosystem that offer enhanced observability, efficient networking and improved performance management, revolutionizing the way cloud-native applications are built, run and operated. Examples of eBPF based cloud native tools: - Parca - Continuous Profiling - Pixie - Observability - Cilium - Networking - Tetragon - Security
  17. Insights from my Cloud Native Journey - Kubernetes is hard!

    - It’s okay if you don’t get it immediately - Don’t rush your learning - Understand the basics - Create a Study Plan - Check out 90 Days of DevOps - Check out the Cloud Native Glossary - Find what type of learning works best for you - is it via video content? - is it via written content? - The Cloud Native world is ever changing, cultivate the habit of reading content from platforms like - The New Stack - Cloud Native Now - DevOps.com - Hackernoon
  18. Insights from my Cloud Native Journey - Find a Cloud

    Native Community - KCD UK - Cloud Native community groups - Practice!, Practice!, Practice! - Take some certification exams to showcase your skills - Kubernetes and Cloud-Native Associate (KCNA) - Certified Kubernetes Application Developer (CKAD) - Certified Kubernetes Administrator (CKA)
  19. CNCF is a Linux Foundation project founded in 2015 to

    help advance container technology and align the tech industry around its evolution. A sub-organization of the Linux Foundation, it consists of a collection of open-source projects supported by ongoing contributions courtesy of a vast, vibrant community of programmers. Why should you care? - They help drive adoption of the Cloud Native principles/model by fostering and sustaining an ecosystem of open source - They help make sure there are vendor-neutral projects What is the CNCF?