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

ci-cd

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

kubernete

Image from kubernetes.io