DevOps for Architects
This course teaches how to use DevOps for continuous integration and delivery of application development and maintenance. The information delivered enables key understanding in the configuration, automation, monitoring, measuring and governance required to build a stable, scalable, and reliable build and configuration management process. This course will be particularly useful for anyone looking to implement DevOps in their organization.
Topics include:
- Tools
- Build & release management
- Agile
- Cloud & Virtualization
- Automation & Scripting
- Configuration management
- Monitoring
- Measurement
- Version control
Upon completing this course, students will be able to:
- Confidently design a DevOps framework for their organization.
- Understand the various key components.
- Implement DevOps in their organization.
- Create automation through scripting
- Compare the different tools available for applicability to their environment
- Apply the knowledge to improve reliability of build & release processes
- Utilize the various tools covered in the course in the real world
AUDIENCE
This course is intended for: Architects and Development leads that need to design and implement DevOps in their organization.
PREREQUISITES
An understanding of the basic concepts in version control, release management, automation, governance, and infrastructure.
CHAPTER 1. THE DEVOPS ROADMAP
- Why DevOps?
- Wall of Confusion
- What is DevOps?
- History behind DevOps
- Early Adopters
- DevOps Background
- Cross Functional Teams
- Key Components of Successful DevOps Teams (A3 & C)
- DevOps-ification
- DevOps Vocabulary
- DevOps Goals
- Driving business outcomes with DevOps
- DevOps at the Core
- Alignment with the Business
- Collaborative Development
- Continuous Integration & Test Automation
- Continuous Delivery
- Comprehensive Application Monitoring
- Summary
CHAPTER 2. CONTINUOUS INTEGRATION & DELIVERY
- What Does Continuous Delivery Mean?
- You’re Doing CD if Your …
- What is Continuous Integration?
- Deployment Pipeline
- Project Methodologies
- Measuring Your Organizational Maturity
- Tool Selection
- Organization Structure
- Organizational Structure Leadership
- Organizational Structure Working
- Business Continuity
- Supportability & Sustainability
- Summary
CHAPTER 3. RELEASE MANAGEMENT
- What is Version Control?
- Why use Version Control
- Version Control Vocabulary
- Version Control Patterns
- Distributed vs. Centralized
- Source Code vs. Binary Repository
- Repository Management
- Release Complexity
- Release Maintenance
- Release Logging
- Branching & Tagging
- Branching Conventions
- Tagging Conventions
- Automatic Deployment with Git
- Utilizing Git Hooks
- Continuous Deployment and DVCS GitHub, Mercurial, CodePlex
- Centralized Version Control
- Managing Dependencies with Maven
- Summary
CHAPTER 4. CLOUD COMPUTING AND VIRTUALIZATION
- Cloud History
- Cloud on Wikipedia
- Cloud at a Glance
- Electrical Power Grid Service Analogy
- Capacity Planning Concepts and Challenges
- Coping with Computing Demand the Traditional Way
- The Origin of the Cloud Computing
- Grid Computing vs Cloud Computing
- What Drives Cloud Adoption?
- NIST Perspective
- Five Characteristics of the Cloud
- The Three Cloud Service Models (NIST)
- The Cloud Computing Spectrum: IaaS, PaaS and SaaS
- Cloud Service Model Implementations
- Four Cloud Deployment Models (NIST)
- NIST Cloud Definition Framework
- Virtualization
- Virtualization Qualities
- Cloud Infrastructure – Virtual Machines
- Bootable OS Image
- Block Storage for Instances
- Cloud Object Storage
- Microservices and the Cloud
- Cloud Risk Considerations
- Bootable OS Image
- DevOps Security Concerns
- Amazon WS Technical Lessons When Moving To the Cloud
- Architecting for HA in AWS (Same Data Center)
- Architecting for HA in AWS (Different AZs)
- Summary
CHAPTER 5. MONITORING
- What to Monitor
- How to Monitor
- Why to Monitor
- Types of Monitoring
- Monitoring Strategy
- Amazon Monitoring
- Google Cloud Monitoring
- Hybrid Cloud Monitoring
- Application Performance Monitoring (APM)
- APM Octal Process
- Monitoring Across the Stack
- Introduction to Nagios
- Nagios Features
- Who uses Nagios?
- Introduction to ELK
- Kibana Dashboard
- ELK Demo
- Log Shipping
- User Management
- Introduction to Dynatrace
- Who uses Dynatrace
- Summary
CHAPTER 6. MEASUREMENT
- What to measure?
- How to Measure?
- Why to Measure
- Choosing the Right Metrics
- What Are Your Key Performance Indicators?
- Actionable Insight
- Software Quality Measurements
- Top 5 Metrics
- Summary
CHAPTER 7. AUTOMATION SCRIPTING
- Why Automate?
- When to Automate?
- Goals for Scripting
- Error Handling
- Logging
- Automating Versioned Builds
- Automating Deployment
- Automating Continuous Integration Tests
- Automated Cleanup
- Introduction to Shell Scripts
- Basic Shell Script
- Return Status
- Introduction to Python
- Basic Python Script
- Python Comments
- Assignment Not Allowed in Expressions
- Variable Naming
- Block Scope
- Other features of Python
- Introduction to Ruby
- Executing a Ruby File
- Ruby Objects
- Creating a Hash
- Setting Value of a Key
- Getting Value of a Key(s)
- Conditionals and Flow
- Methods
- Classes
- Including External Ruby Files
- Introduction to Perl
- Perl and Programmers
- First Perl Script
- Summary
CHAPTER 8. SERVERS
- Introduction to Application Servers
- WebSphere
- J2EE Application Environments
- App Server Standards
- Administration Interfaces
- Java Virtual Machine
- Three tier architecture
- Tomcat
- Tomcat Architecture
- Active Tomcat Versions
- Tomcat Installation
- Tomcat Startup
- Tomcat Admin Console
- Tomcat Manual Startup on Linux
- Tomcat Manual Startup on Windows
- Tomcat Deployment
- Parallel Deployment
- Running Tomcat in Debug
- Web Servers
- UNIX Aliases
- History
- Tracing and Logging
- Servlet Containers
- Fixpack Automation
- Dependencies
- Clustering Considerations
- High Availability
- Summary
CHAPTER 9. AGILE
- History of Agile
- Sprint0
- Scrum Team
- Managing Sprints
- Maintaining the Backlog
- Working With Story Points
- Distributed Agile
- Kaizen
- Kanban
- Comparison of Scrum & Kanban
- Introduction to Jira
- Kanban board
- Control Chart
- Cumulative Flow Diagram
- Burndown Chart
- Introduction to Rally
- Summary
CHAPTER 10. BUILDING TOOLS
- Build Tool History
- Build Automation Processes
- Repeatability
- Notification
- Continuous Build
- Git post-receive Script
- Introduction to Ant
- Ant Anatomy
- Ant Installation
- Example Ant build.xml
- Running Ant
- Ant Dependency Management
- Introduction to MSBuild
- MSBuild Anatomy
- MSBuild Automation Process
- HelloWorld MSBuild XML
- Introduction to Maven
- Maven Build Cycle
- Maven Installation
- Maven Plugin Execution Framework
- Maven pom.xml Example
- Introduction to Gradle
- Why Gradle?
- Gradle plugins
- Ant Migration
- Maven migration
- Summary
CHAPTER 11. ERROR HANDLING
- Introduction to Error Handling
- Zen of Troubleshooting
- Troubleshooting Skill
- Success Pattern
- Self-healing
- Proactive vs. Reactive
- Issue Handling
- Notification
- Summary
CHAPTER 12. CONFIGURATION MANAGEMENT
- Why is configuration management key to DevOps success?
- What is Configuration Management
- Do we need Configuration Management?
- Terminology
- Automation tool comparison
- Introduction to Chef
- Deployment/License
- Who Uses Chef?
- Chef Architecture
- Chef Components
- Workstation
- Recipe
- Cookbook
- Ruby
- Knife
- Node
- Chef-client
- Chef Server
- Chef Analytics
- Chef Supermarket
- Introduction to Ansible
- Why use Ansible?
- Ansible playbooks
- YAML
- YAML list
- YAML dictionary
- Abbreviated YAML
- Simple Ansible
- More complex Ansible
- Simple Ansible YAML file
- Why use containers if you have a great CM tool?
- Containerization solutions
- Chef & Docker workflow
- Setting up the environment
- Deployment
- Cloud Integration
- Summary
CHAPTER 13. CONTINUOUS INTEGRATION TOOLS
- Challenges Solved by CI Tools
- CI Testing Tools
- Typical CI Setup
- Atomic Integration
- More on CI
- CI and Automated BD
- Ancillary CI Benefits
- CI Connectivity
- Introduction to Jenkins
- Jenkins Features
- Running Jenkins
- Jenkins options
- Introduction to Hudson
- Hudson Features
- Hudson pre-requisites
- Hudson environments
- Hudson Pattern
- One Hudson Workflow Variation
- Introduction to TeamCity
- Introduction to CruiseControl
- Comparison
- Summary
CHAPTER 14. CONTINUOUS CODE QUALITY
- Continuous Code Quality
- What is SonarQube
- SonarQube – Benefits
- SonarQube (Multilingual)
- Seven Axes of Quality
- Potential Bugs
- Tests
- Comments and Duplications
- Architecture and Design
- Complexity
- SonarQube Installation
- SonarQube Components
- Code Quality (LOC, Code Smells)
- Code Quality (Project Files)
- Code Quality (Code)
- Summary
CHAPTER 15. BEST PRACTICES
- Who are the folks using the various solutions
- DevOps Implementation Basics
- DevOps Implementation Checklist
- Lean Patterns
- Process Theory
- Tool Pattern
- Culture Alignment
- Culture Antipatterns
- Process Antipatterns
- Technology Antipatterns
- Tale of Two Audiences
- Best Practices
- Best Practices Continued
- Summary
LAB EXERCISES
Lab 1. Chef
Lab 2. Java, Jenkins, Maven, Tomcat, Perforce, and various SCM plugins for Jenkins
Lab 3. Docker
Lab 4. Version Control
Lab 5. Scripting 101 – Shell Scripting
Lab 6. Scripting 101 – Python
Lab 7. Apache, MySQL, and PHP
Lab 8. SonarQube
Lab 9. Nagios
Is there a discount available for current students?
UMBC students and alumni, as well as students who have previously taken a public training course with UMBC Training Centers are eligible for a 10% discount, capped at $250. Please provide a copy of your UMBC student ID or an unofficial transcript or the name of the UMBC Training Centers course you have completed. Online courses are excluded from this offer.
What is the cancellation and refund policy?
Student will receive a refund of paid registration fees only if UMBC Training Centers receives a notice of cancellation at least 10 business days prior to the class start date for classes or the exam date for exams.