Coaching | SCTP in SE | Module 4 | DevOps Week 1

Coverage:

1. DevOps is first a mindset, then toolchain

The Problem of Dev and Ops being separate team

  • Dev and Ops are two separate disciplines
  • Development Team (Dev) is responsible for producing feature / bug fix
  • Ops Team is responsible for releasing tested code into production

Ponder: After features are developed, Dev hands over to Ops for deployment and continuous monitoring in production. What could go wrong?

Ponder: What do you think are the challenges in merging two disciplines into one?

Principles of DevOps

  • Maintain version control on all production artifacts
  • Implement CI/CD
  • Automate acceptance testing of specifications of the system
  • Enforce peer review processes
  • Create a culture of high trust
  • Instate proactive monitoring practices
  • Foster win-win relationships across the organization

Benefits of DevOps

  • Speed
  • Rapid Delivery
  • Reliability
  • Scale
  • Improved Collaboration
  • Security

When Dev and Ops comes together...

In the beginning, DevOps engineers are transitted from either Development of Operational background. Hence, a DevOps engineer would either lean more towards development or operations.

Ponder: What knowledge and skillsets do you think are essential to make a great DevOps Engineer?

2. DevOps Enable The Shift-left Initiatives
  • DevOps enables test automation
  • Test automation enables fast feedback loop should there be failure
  • This means Business Analyst / Product Owner is able to define test cases before development (commonly BDD)
  • Developers is able to adopt the red, green, refactor approach to develop user stories
3. Branching Strategies

Popular Branching Strategies:

  1. Git Flow Link
  2. GitHub Flow Link
  3. GitLab Flow Link
  4. Trunk Based Development Link

Ponder: How does branching strategies affect how you configure CICD?

4. GIT Command Challenge

Use Case

You are part of a development team that uses GitHub Flow. Your tech lead has assigned you a feature and has created a branch for you feature/feat-111-login-with-google-sso and you have successfully cloned this branch into your local machine using the following command:

git clone https://github.com/your_organization/my_project
cd my_project
git checkout feature/feat-111-login-with-google-sso
code . # you started a visual code to work on the feature

Now, you have completed the feature and is ready to commit your changes and push it back to the same branch remotely. What should your GIT commands be?

# Your input
5. Install Docker

Docker

Commands to test:

where docker # windows
which docker # mac or linux