About this course
Course Overview
The Developing Applications Using Cisco Core Platforms and APIs (DEVCOR) course helps you prepare for the Cisco DevNet Professional certification and for professional-level network automation engineer roles. You will learn how to implement network applications using Cisco® platforms as a base, from initial software design to diverse system integration, as well as testing and deployment automation. The course gives you hands-on experience solving real world problems using Cisco Application Programming Interfaces (APIs) and modern development tools.
To fully benefit from this course, you should have three to five years of experience designing and implementing applications that are built on top of Cisco platforms.
Please note this course is a combination of Instructor-Led and Self-Paced Study - 5 days in the classroom and approx 3 days of self study. The self-study content will be provided as part of the digital courseware that you recieve at the beginning of the course and should be part of your preparation for the exam.
Target Audience
This course is designed for anyone who performs or seeks to perform a developer role and has one or more years of hands-on experience developing and maintaining applications that are built on top of Cisco platforms, as well as network engineers looking to expand their knowledge to include software and automation.
This course covers specialized material about designing, developing, and debugging applications using Cisco APIs and platforms, and managing and deploying applications on Cisco infrastructure.
Course Objectives
After completing this course you should be able to:
- Describe the architectural traits and patterns that improve application maintainability
- Describe the architectural traits and patterns that improve application serviceability
- Identify steps to design and build a ChatOps application
- Implement robust Representational State Transfer (REST) API integrations with network error handling, pagination, and error flow control
- Describe the necessary steps for securing user and system data in applications
- Describe the necessary steps for securing applications
- Identify common tasks in automated application release process
- Describe best practices for application deployment
- Describe methodologies for designing distributed systems
- Describe the concepts of infrastructure configuration management and device automation
- Utilize Yet Another Next Generation (YANG) data models to describe network configurations and telemetry
- Compare various relational and nonrelational database types and how to select the appropriate type based on requirements
Course Content
Designing for Maintainability (Self-study)
- Functional and Non-Functional Requirements
- Non-Functional Requirements and Application Quality
- Maintainability Through Design
- Maintainability Through Implementation
- Modularity in Application Design
- Dependency Injection
Designing for Serviceability (Self-study)
- Observability in Application Design
- Scalability in Application Design
- High Availability and Resiliency
- Latency and Rate Limiting
- Architectural Patterns
- Sequence Diagrams
Implementing ChatOps Application
- Introducing ChatOps
- ChatOps with Cisco Webex Teams
- API Sequence Diagramming
- ChatOps Application Design
- Managing SSIDs and Retrieving Location Data Using Cisco Meraki API
Describing Advanced REST API Integration
- Consuming Paginated REST API Endpoints
- REST API Network Error Strategies
- REST API Error Control Flow
- Optimizing API Usage
Securing Application Data (Self-study)
- Data Storage and Protecting Data Privacy
- Storing Application Secrets
- Public Key Infrastructure
- Configuring Public Key Certificates for Applications
- Applying End-to-End Encryption for APIs
Securing Web and Mobile Applications (Self-study)
- OWASP Top 10
- Injection Attacks and Data Validation
- Cross-Site Scripting and Request Forgery
- OAuth Authorization Framework
- OAuth 2.0 Three-Legged Authorization Flow
Automating Application-Release
- Release Packaging and Dependency Management
- Advanced Version Control with Git
- Branching Strategies
- Continuous Testing and Static Code Analysis in CI Pipeline
- Identifying CI/CD Pipeline Failures
Deploying Applications
- 12-Factor App Methodology
- Containerizing Applications Using Docker
- Kubernetes Introduction
- Integrating Applications into Exisiting CI/CD Environment
- Hosting Applications on Network Devices
Understanding Distributed Systems
- Distributed Application Concepts
- Custom Dashboard Example
- Event-Driven Architecture Concepts
- Microservice Architecture Concepts
- Effective Distributed Application Logging Strategies
- Using Distributed Logging to Diagnose Problems
- Application Monitoring with Cisco AppDynamics
- Limitations of Distributed Systems and CAP Theorem
- Overcoming Challenges in Distributed Systems
Orchestrating Network and Infrastructure
- Configuring Servers Using Cisco UCS APIs
- Infrastructure as Code with Terraform
- Differentiating Configuration Management Solutions
- Configuring Network Parameters Using Puppet
- Configuring Network Parameters Using Ansible
- Defining Network Automation Source of Truth
- Creating and Deleting Objects Using Firepower Threat Defense API
Modeling Data with YANG
- YANG Overview
- XPath Query Language
- YANG Language Syntax
- Data Model Modularity
- Network Configuration Using RESTCONF
- Model-Driven Telemetry
- Streaming Telemetry with gNMI
Using Relational and Non-Relational Databases (Self-study)
- Evaluating Database Types to Meet Application Needs
- Relational Database Concepts
- Key-Value Database Concepts
- Document-Based Database Concepts
- Graph-Based Database Concepts
- Columnar-Based Database Concepts
- Time-Series Database Concepts
Labs
- Construct Sequence Diagram
- Construct Web Sequence Diagram
- Use Cisco Webex Teams™ API to Enable ChatOps
- Integrate Cisco Meraki™ API to List Service Set Identifiers (SSIDs) and Retrieve Location Data
- Use Paginated REST API Endpoint
- Utilize REST API Error Control Flow Techniques
- Evaluate Application for Common Open Web Application Security Project (OWASP) Vulnerabilities
- Resolve Merge Conflicts with Git
- Diagnose Continuous Integration and Continuous Delivery (CI/CD) Pipeline Failures
- Containerize Application Using Docker
- Integrate Application into Existing CI/CD Environment
- Diagnose Problems Using Application Logs
- Configure Network Parameters Using Ansible and Puppet
- Synchronize Firepower Device Configuration
- Utilize RESTCONF for Network Configuration
- Query Relational Database
- Query Document Store
- Query Time Series Database
- Query Graph Database
Course Prerequisites
Attendees should meet the following prerequisites:
- Knowledge of program design and coding with focus on Python
- Familiarity with Ethernet, TCP/IP, and Internet-related networking
- Understand the utilization of APIs
- Understanding of software development and design methodologies
- Hands-on experience with a programming language (specifically Python)
- DEVASC - Developing Applications and Automating Workflows using Cisco Platforms
Test Certification
Recommended as preparation for the following exam:
- 350-901 - DEVCOR Exam
By passing this exam, you satisfy the core exam requirement toward Cisco Certified DevNet Professional, and you earn the Cisco Certified DevNet Specialist – Core certification
Follow on Courses
The following are recommended for further study:- DEVIOT - Developing Solutions using Cisco IoT and Edge Platforms
- C-DEVOPS - Implementing DevOps Solutions and Practices using Cisco Platforms
- ENAUI - Implementing Automation for Cisco Enterprise Solutions
- CLAUI - Implementing Automation for Cisco Collaboration Solutions
- DCAUI - Implementing Automation for Cisco Data Center Solutions
- SAUI - Implementing Automation for Cisco Security Solutions
- SPAUI - Implementing Automation for Cisco Service Provider Solutions
Further Information
Explore the DevNet Certification area for specific topics and labs related to this course and certification: https://developer.cisco.com/certification/