DevOps
Software Development Best Practices
- Code Readability (e.g., PEP 8 Style for python)
- Modular code / Object-oriented programming
- Documentation
- Code Redundancy / Refactoring
- Code Efficiency
- Unit Test
Software Development Lifecycle
- Wikipedia - Software development process
- A process of dividing software development work into smaller, parallel, or sequential steps
- Goal: improve design and produContainerization
- Sequential development
- Steps: Requirements analysis, Design, Implementation, Testing, Deployment, Maintenance
- Suited for: projects must meet strict regulations / requirements
CI/CD
- Red Hat - What is CI/CD?
- CI = Continuous integration
- The practice of merging all developers’ branches to a shared branch several times a day
- Motivation: solve the problem of having too many branches in development where branches may conflict with each other
- Approach: new code changes to an app are regularly built, tested, and merged to a shared repository
- CD = Continuous delivery / Continuous deployment
- The practice of ensuring that the software can be reliably released at any time and, following a pipeline through a “production-like environment”
- Goal: ensure that it takes minimal effort to deploy new code
- Approach: changes are automatically tested and uploaded to a repository, then be deployed to a live production environment by the operations team
- CD is an overloaded term
- Continuous delivery: softwares can be deployed, but are not deployed
- Continuous deployment: softwares are deployed
- Continuous deployment can be viewed as a more complete form of automation than continuous delivery
- CI/CD tools
- Jenkins
Image from redhat.com
Containerization
- AWS - What Is Containerization?
- A software deployment process that bundles an application’s code with all dependencies to run on any infrastructure
- Advantage
- Environment agnostic
- Scalable
- Fault tolerant
- Tools
- Docker
Orchestration
- Databricks - Orchestration
- Automated configuration, management, and coordination of computer systems, applications, and services
- Goal: streamline and optimize the execution of frequent, repeatable processess
- Orchestration tools
- Configuration automation / infrastructure as code: Ansible, Chef, Terraform
- Container runtimes: Docker
- Container orchestration: Kubernetes
Image from kubernetes.io