Feedback Loop
● Breaking Silos
● Easier Collaboration
● Better Visibility
● More Engagement
● Shared Responsibility
● Shared Ownership
● Automation
DevOps Culture, Mindsets & Practices
Culture eats strategy at the breakfast.
(Peter Drucker)
What benefits we can get by using version control?
What should we keep in version control?
How version control can help in the feedback loop?
Version Control
Peer Reviews
Code review is systematic examination
(sometimes referred to as peer review) of
computer source code. It is intended to find
mistakes overlooked in software development,
improving the overall quality of software.
https://www.codeproject.com/Articles/1156196/Code-Review-Checklist
https://developer.atlassian.com/blog/2015/05/try-pair-programming/
Pair Programming
A technical practice in which two programmers
work together at one workstation (one screen,
keyboard, and mouse among the pair). One
person, the driver, writes code while the other
person, the observer or navigator, reviews each
line of code as it is typed in. The two
programmers switch roles frequently.
https://martinfowler.com/bliki/UnitTest.html
Unit Testing
A unit test is to test one unit of work.
Following are the characteristic of good unit
test,
● Isolated from the other code
● Isolated from the other unit tests
● Targeted
● Mock Dependencies
● Repeatable
3 Laws of TDD
You are not allowed to write any production code
unless it is to make a failing unit test pass.
You are not allowed to write any more of a unit test
than is sufficient to fail; and compilation failures are
failures.
You are not allowed to write any more production code
than is sufficient to pass the one failing unit test.
Test Driven Development
https://manojjaggavarapu.files.wordpress.com
Behavior Driven Development
Behavior-driven development (BDD) is a
software development methodology in which an
application is specified and designed by
describing how its behavior should appear to an
outside observer.
BDD encourages collaboration between
developers, QA and non-technical or business
participants in a software project.
The use of special software (separate from the
software being tested) to control the execution of
tests and the comparison of actual outcomes
with predicted outcomes.
Acceptance Test Automation
UI tests
Integration tests
Unit tests
Testing Pyramid
Continuous Integration
● All developers run private builds on their own workstations before
committing their code to the version control.
● repository to ensure that their changes don’t break the integration build.
● Developers commit their code to a version control repository at least once a
day.
● Integration builds occur several times a day on a separate build machine.
● 100% of tests must pass for every build.
CI Server and CI Practices
A CI server runs an integration build wherever a change is
committed to the version control repository. The CI servers will pull out latest
changes and run build scripts to produce new build/product.
CI Practices
● Commit code frequently
● Don’t Commit broken code
● Fix broken build asap
● Write automated tests
● All tests must pass
● Run private build
● Avoid getting broken
● Continuous delivery (CD) is a software engineering approach in which teams produce
software in short cycles, ensuring that the software can be reliably released at any
time.
● It aims at building, testing, and releasing software faster and more frequently.
● The approach helps reduce the cost, time, and risk of delivering changes by allowing
for more incremental updates to applications in production.
● A straightforward and repeatable deployment process is important for continuous
delivery.
Continuous Delivery
Visibility – All aspects of the delivery system
including building, deploying, testing, and
releasing are visible to every member of the team
to promote collaboration.
Feedback – Team members learn of problems as
soon as possible when they occur so that they are
able to fix them as quickly as possible.
Continually deploy – Through a fully automated
process, you can deploy and release any version
of the software to any environment.
Deployment Pipeline
https://en.wikipedia.org/wiki/Continuous_delivery
Feature Branching vs Feature Toggle
At first try to figure out which feature are most valuable
Try to resolve dependencies earlier
Get the business ready for upcoming feature
Avoid feature branches as much as possible
Use feature toggle instead of feature branching
Be Agile and reduce lead time and cycle time
● Hardware
● Software
● Servers
● Environment
● Code
● Data
● Databases
● Backups
● Repositories
● VM
● Cloud
● Containers
……… more
Infrastructure and Virtualization
Application Monitoring and Alerting
https://www.acronis.com/en-us/blog/posts/web-application-monitoring-basic-framework
Analytics, Log Management and
Reporting
http://www.onlinemediamasters.com/google-analytics-custom-dashboard-examples/
Application Performance
https://newrelic.com/application-monitoring
http://www.proxynetgroup.com/communications/services/network-security-and-disaster-recovery.php
Security and Disaster Prevention

Agile A to Z Chapter 4 Feedback Loop Part 2 DevOps

  • 1.
  • 2.
    ● Breaking Silos ●Easier Collaboration ● Better Visibility ● More Engagement ● Shared Responsibility ● Shared Ownership ● Automation DevOps Culture, Mindsets & Practices Culture eats strategy at the breakfast. (Peter Drucker)
  • 3.
    What benefits wecan get by using version control? What should we keep in version control? How version control can help in the feedback loop? Version Control
  • 4.
    Peer Reviews Code reviewis systematic examination (sometimes referred to as peer review) of computer source code. It is intended to find mistakes overlooked in software development, improving the overall quality of software. https://www.codeproject.com/Articles/1156196/Code-Review-Checklist
  • 5.
    https://developer.atlassian.com/blog/2015/05/try-pair-programming/ Pair Programming A technicalpractice in which two programmers work together at one workstation (one screen, keyboard, and mouse among the pair). One person, the driver, writes code while the other person, the observer or navigator, reviews each line of code as it is typed in. The two programmers switch roles frequently.
  • 6.
    https://martinfowler.com/bliki/UnitTest.html Unit Testing A unittest is to test one unit of work. Following are the characteristic of good unit test, ● Isolated from the other code ● Isolated from the other unit tests ● Targeted ● Mock Dependencies ● Repeatable
  • 7.
    3 Laws ofTDD You are not allowed to write any production code unless it is to make a failing unit test pass. You are not allowed to write any more of a unit test than is sufficient to fail; and compilation failures are failures. You are not allowed to write any more production code than is sufficient to pass the one failing unit test. Test Driven Development https://manojjaggavarapu.files.wordpress.com
  • 8.
    Behavior Driven Development Behavior-drivendevelopment (BDD) is a software development methodology in which an application is specified and designed by describing how its behavior should appear to an outside observer. BDD encourages collaboration between developers, QA and non-technical or business participants in a software project.
  • 9.
    The use ofspecial software (separate from the software being tested) to control the execution of tests and the comparison of actual outcomes with predicted outcomes. Acceptance Test Automation UI tests Integration tests Unit tests Testing Pyramid
  • 10.
    Continuous Integration ● Alldevelopers run private builds on their own workstations before committing their code to the version control. ● repository to ensure that their changes don’t break the integration build. ● Developers commit their code to a version control repository at least once a day. ● Integration builds occur several times a day on a separate build machine. ● 100% of tests must pass for every build.
  • 11.
    CI Server andCI Practices A CI server runs an integration build wherever a change is committed to the version control repository. The CI servers will pull out latest changes and run build scripts to produce new build/product. CI Practices ● Commit code frequently ● Don’t Commit broken code ● Fix broken build asap ● Write automated tests ● All tests must pass ● Run private build ● Avoid getting broken
  • 12.
    ● Continuous delivery(CD) is a software engineering approach in which teams produce software in short cycles, ensuring that the software can be reliably released at any time. ● It aims at building, testing, and releasing software faster and more frequently. ● The approach helps reduce the cost, time, and risk of delivering changes by allowing for more incremental updates to applications in production. ● A straightforward and repeatable deployment process is important for continuous delivery. Continuous Delivery
  • 13.
    Visibility – Allaspects of the delivery system including building, deploying, testing, and releasing are visible to every member of the team to promote collaboration. Feedback – Team members learn of problems as soon as possible when they occur so that they are able to fix them as quickly as possible. Continually deploy – Through a fully automated process, you can deploy and release any version of the software to any environment. Deployment Pipeline https://en.wikipedia.org/wiki/Continuous_delivery
  • 14.
    Feature Branching vsFeature Toggle At first try to figure out which feature are most valuable Try to resolve dependencies earlier Get the business ready for upcoming feature Avoid feature branches as much as possible Use feature toggle instead of feature branching Be Agile and reduce lead time and cycle time
  • 15.
    ● Hardware ● Software ●Servers ● Environment ● Code ● Data ● Databases ● Backups ● Repositories ● VM ● Cloud ● Containers ……… more Infrastructure and Virtualization
  • 16.
    Application Monitoring andAlerting https://www.acronis.com/en-us/blog/posts/web-application-monitoring-basic-framework
  • 17.
    Analytics, Log Managementand Reporting http://www.onlinemediamasters.com/google-analytics-custom-dashboard-examples/
  • 18.
  • 19.