This is a talk focused on various antipatterns in learning the DevOps culture, not just across companies but focused groups building on good software design.
and Linux Fan Boy • You can follow me on twitter @TiemmaBakare • General Weird Guy with some humour • People call me Bakman, so there’s also that! @ T i e m m a B a k a r e 3
Do I Famz Being One? What is This Talk About? Operating Systems Command Lines Storage Networking Virtualisation & Containers Orchestration Architecture Design
named Patrick Debois became frustrated by the friction between developer and operations teams. As a developer and a member of the Agile community, Debois saw an opportunity to use Agile methodologies to manage infrastructure management process, much like developers manage development process. He initially described this concept as Agile Infrastructure but later coined the phrase DevOps, a portmanteau of development and operations. Source: https://www.oreilly.com/radar/theevolutionofdevops/
differs based on their branch. A DevOps engineer focused on Storage might not build CNI plugins for Kubernetes to use it but he knows how to get flash and server disks hooked onto a mainframe. It’s a diverse playing field with a lot of knobs and buttons.
something else” To famz being a DevOps engineer these days, anyone who knows CI / CD or plays around with Docker becomes a DevOps Engineer overnight. Few know how Linux work and can explain it’s process lifecycle, or how Containers work and why you need a VM to run it on any non-UNIX system.
something else” To become a DevOps engineer requires a lot of work! All this is not to scare you, but to make sure you understand the lifecycle process of becoming one. Now let’s get to the process of working towards becoming a proper DevOps engineer.
an operating system, irrespective of designation. This is because, every software you deploy can never always run on the same OS, knowing your way around the windows command interface is as crucial as writing bash scripts for Linux and OpenBSD.
have features others don’t. There’s HyperV from Windows 7 but no ever looks that up. These and more others are reasons to learn the CORE of operating systems and how they work.
you are meant to use the shell. Understand how to use command prompt, bash, powershell and know when a python script is what you need to accomplish the task.
you use in your office but an actual SSD. When I say block storage, I mean a hard drive and not bricklayer blocks. When I say cloud storage, I mean a remote disk running on a protocol like NFS or iSCSI, not the one above you. When I say object storage, I mean things like buckets, S3, GCS These and many others are the things a DevOps engineer should know.
to learning things like BGP, GRE, VPC, Subnetting, IPTables, Port forwarding, Firewalling, Packet filtering, SDNs and various other things in Networking. Experience here is crucial if you see yourself going further.
Ever heard of VMWare and Virtualbox, What about vCenter? Do you know about Hypervisors? You do know any resource can be virtualised? CPU, Disk, RAM, Networking etc. If you can use it on your computer, you can virtualise it on any server.
use things like service accounts, permissions and roles to do so by creating fake identities that can represent real people permissions. All of these and much more are how virtualisation works in the real sense of things.
heard of cgroups, what about syscalls? How do containers even work, know what the OCI does? Did you know you can run VMs in Containers?, check out Kata container This and a lot more is what you learn on the way to DevOps.
lot of questions: What does the software do? Do we need to use a certain software architecture? How much load would the application get once deployed? And much more....
which is responsible for checking a fixed list of notifications the user should get even under no internet access INTERNET PROBE NOTIFICATION SERVICE SERVER NOTIFICATION This aims to reduce the amount of code running on the device keeping only the bare minimal as more notifications increase runtime. DASHBOARD SERVER CONSUMER • Email • SMS (Twilio, SIM) • Firebase KAFKA CONTENT ON THE NEXT PAGE
push notification flags • Checks if the delay from the time a notification was first called has been exceeded - Ideally, two minutes to make sure it’s not a fluctuation triggering a notification • Also, makes sure the notification can again be reset after another set delay. This is an hour ideally and can be increased and decreased by us. • Email and Text messages details for the user are fetched from the DB for the server notifications and from the notifications.config file for the device side. - Reference(server): dbClient.py - Reference(device): notifications.config • Also, it diverts notifications message to sim text using the SIM 800 module in the case of no internet access. - Reference(device): SIM.py - Server side texts are handled by Twilio Logs for Notifications • The logs are text files used to hold info about the notifications called by a device. • There are currently 4 in use - Transition.log - Logs the current active source. - probeEnergy.log - This monitors the energy being drained from the inverter - activeNotifications.log - This is the log that holds the notifications that have been active - Op_window.log - For the operating window.
but it is the core that makes good software better. Knowing what to deploy and how to deploy it makes a DevOps engineer better as he can correctly outline what is needed to run with the most minimal resources applied.
two, three parts of your application, all in order 1. Presentation Layer (Frontend e.g Vue) 2. Application Layer (Backend e.g Django, Flask, NodeJS) 3. Data Layer (Database, Persistence e.g Redis, Mongo, SQL)
This is a form of software architecture where the backend and frontend are detached. Requests are made using one-way or streaming connections and several backend functionality can be emulated on the frontend by local caching and routing. Examples are front ends on (service workers, PWAs, web components) using backends on (websockets / http/2 / gRpc / APIs) etc
thing and does it very well. So that means we can have a single service that does one thing. We could have a service for authentication, emails, transactions and whatever we feel needs to be singled out. It’s most preferred due to the fact that services can be rolled back and forward easily without directly bringing down the others. It’s also a lot more complex to orchestrate and requires fine understanding of the entire product. Directly - In the sense that an error there might bring down that service but the others that don’t need it work fine
functions on a pub-sub way of receiving data. In this kind of system, we can have multiple people publishing data to a queue and many subscribers reading the same data at the same time. This allows for a many to many call to action kinda API request. We publish and subscribe by using topics or channels. Whatever you use to call them, it’s just a simple pipe. What ever you send to it can be read on the other side at about the instant it’s sent, similar to a water pipe.
skills is to practice and learn. Follow up content on things you see in places like roadmap.sh and various blogs like DZone, Martin Fowler etc. The only shortcut to being a DevOps engineer is PRACTICE