Infrastructure, DevOps and SRE

6 minute read

Infrastructure is composed of both physical equipments, such as bare-metal servers, as well as virtual machines.

Concepts

Concepts References
DevOps
 
 
 
It is a mindset around combining Software Development with Infrastructure Operations in the constant search for improving delivery velocity by automating processes and empowering teams by giving them autonomy.
  • DORA’s research program (by Google) - DORA stands for DevOps Research and Assessment
  • DORA DevOps Quick Check (by Google)
  • Devops (by Google)
  • SRE
     
     
    Site Reliability Engineering
    According to Google “SRE is what you get when you treat operations as if it’s a software problem.”
  • What is Site Reliability Engineering (SRE)? (by Google)
  • Cloud Infrastructure

    Cloud Providers
    Amazon AWS
    Google Cloud (GCP)
    Microsoft Azure
    IBM Cloud
    Alibaba Cloud

    Containerization x Virtualization

    Following is a visual representation comparing these 2 different approaches: Containerization x Virtualization

    References
    Atlassian Containers vs. virtual machines - Learn the differences between containers and virtual machines (VMs), the popular providers for each, and how they can be used together
    IBM Containers vs. Virtual Machines (VMs): What’s the Difference? - Everything you need to know to understand the containers vs. VMs debate and why containers are growing in popularity.
    Microsoft Containers vs. virtual machines
    VMWare Why use containers vs. VMs?
    RedHat Containers vs VMs
    Container Runtimes Notes
    Docker Engine  
    Rkt (by RedHat) CoreOS that created rkt was bought by RedHat. At some point, the open source version of rkt was discontinued
    cri-o  
    LXC  

    Benefits of working with Docker

    • Easy to deploy
    • Easy to experiment by using recipes in Docker Hub
    • Low overhead (kernel is shared)
    • Portability
    • Scalable
    • Rollback painless
    • Versioning
    • Production environment equal to Development environment - No more excuse “works in my computer”

    Microservices x Monolith

    Microservices x Monolith

    Benefits of a Microservices Architecture over Monolith

    • Components with Single Responsibility
      • Decoupled applications allow teams to have more autonomy
      • Enable faster deployments because there is no need to retest the entire application, but only the component
    • Design for failure
      • If one microservice fails most of the other microservices will continue working normally impacting fewer people
      • Since it is a smaller component of the architecture is faster to rollback any deployment
      • In a Monolith most of the time you have only one instance, but on a microservices architecture you try to work with the minimum resources needed for the container and use more containers - this way when a container fails the traffic is redirected to another container
    • More Flexibility since it is possible to scale each microservice according to the demand of that specific microservice that normally is completely different from other microservices

    The main downside of microservices is that there is the need to invest more time in the architecture, on how the components are going to be decoupled. Managing many components in production was also a hard job, but since the creation of Container Orchestration (Kubernetes being the most famous), that problem went away.

    References
    Microservices vs. Monoliths: An Operational Comparison
    How to break a Monolith into Microservices
    Microservices vs. monolithic architecture (by Atlassian)

    Infrastructure Components

    Components References
    Database  
    API Gateway  
    Service Mesh  
    Reverse Proxy  
    Container Orchestration  
    CI/CD  
    Coordination  
    Queue Management (Producer/Consumer)  

    Infrastructure as Code

    Managing and provisioning computer infrastructures through coding, rather than physical hardware configuration or interactive configuration tools.

    Tools References
    Terraform
     
     
    Ansible
     
    Chef
    Puppet  
    AWS CloudFormation  

    CI/CD Pipeline

    soon
    writing as fast as I can
    Writing
    meanwhile subscribe to stay
    up-to-date.

    Monitoring and Observability

    soon
    writing as fast as I can
    Writing
    meanwhile subscribe to stay
    up-to-date.

    FinOps

    soon
    writing as fast as I can
    Writing
    meanwhile subscribe to stay
    up-to-date.

    References

    Terraform: Up & Running - by Yevgeniy Brikman
    Writing Infrastructure as Code
    Terraform in Action - by Scott Winkler

    Building Secure and Reliable Systems - by Heather Adkins
    Best Practices for Designing, Implementing, and Maintaining Systems
    Site Reliability Engineering - by Niall Murphy
    How Google Runs Production Systems
    The Site Reliability Workbook - by Betsy Beyer
    Practical Ways to Implement SRE
    Chaos Engineering - by Mikolaj Pawlikowski
    Site reliability through controlled disruption