Index

A

acceptance testing, 22, 23

access tokens (OAuth 2.0), 181

accessibility as quality attribute, 32

accessing Pearson Test Prep software, 649650

accountability as quality attribute, 32

ACI tenant deployment with Terraform, 496501

ACID properties, 148

active recovery (hot standby), 4748

admin processes in 12-factor application design, 242

administrative requirements for software architecture, 13

agent-based configuration management, 450473

downloading and installing Puppet, 453458

extracting information via Puppet, 459463

NX-OS devices with Puppet, 465469

Puppet manifests, 469473

Puppet platform support matrix, 451

Python scripts with Puppet, 463465

agentless configuration management solutions, 450, 474501

ACI tenant deployment, 496501

configuring Ansible inventory, 481482

downloading and installing Ansible, 474481

installing Terraform, 494496

Jinja2 filtering, 487488

modifying device configurations, 488493

playbooks in Ansible, 483487

project-level inventory files in Ansible, 482483

Agile, 1820, 317318

Agile Manifesto, 1819

agrparse, 174

alpha testing, 22

Amazon Web Services (AWS)

ECS on Fargate, 227234

Jeff Bezos’s API mandate, 136138

Lambda, 234238

analyzability as quality attribute, 33

Ansible, 334

as agentless solution, 450, 474493

configuring inventory, 481482

downloading and installing, 474481

Jinja2 filtering, 487488

modifying device configurations, 488493

playbooks, 483487

project-level inventory files, 482483

comparison with Terraform, 518519

described, 512514

in evolution of application deployment, 221223

with NETCONF and RESTCONF, 382

API keys, 180

Apigee, 147

APIs (application programming interfaces)

AppDynamics, 639646

architectural styles

gRPC, 154155

OpenAPI/Swagger, 155156

purpose of, 146

REST vs. RPC, 152154

selecting, 147148

authentication, 337

authentication types, 139, 162, 179181

calling, 138144

components of, 132

formats, 134135

methods, 133134

objects, 134

definition of, 132

development

CLI wrapper code, 174177

client creation, 165173

design considerations, 177178

IMDb API example, 165173

methods for, 162

purpose of, 162

security, 162, 179181

tools for, 146147

types of APIs, 144145

headers, 139

HTTP requests, 149150

idempotency, 337

Intersight

authorization, 606611

documentation, 603605

enabling access, 601603

Jeff Bezos’s API mandate, 136138

lack of, 135

Meraki

authorization, 596600

documentation, 593594

enabling access, 592593

NETCONF APIs, 158159

operational overview, 335336

pagination, 337338

payload data formats, 338

JSON, 340341

XML, 338340

performance

caching, 163, 188

error handling/timeouts/rate limiting, 184188

pagination, 162

streaming vs. pagination, 181184

public/open, 140

RESTful APIs, 157158. See also RESTCONF

cache-control, 151152

constraints on, 157

documentation, 631635

enabling DNA center access, 630631

enabling Firepower access, 582583

enabling Webex access, 572573

Firepower documentation, 583585

Firepower use cases, 585592

HTTP status codes, 184

JSON, 150151

NETCONF APIs vs.159

operation types, 336

streaming APIs vs.181–184

uniform interfaces, 158

Webex documentation, 573575

Webex use cases, 575577

UCS Manager

documentation, 611617

enabling access, 611

web scraping as alternative, 135136

APM (application performance monitoring) applications, 77

AppDynamics, 77, 639646

application containers

implementation, 534

Cisco DNA Center for application hosting, 538547

Cisco IOx Local Manager for application hosting, 547552

CLI for application hosting, 553556

enabling application hosting framework, 536537

validating prerequisites, 534536

interaction with iPerf3, 556563

management best practices, 563565

platforms supporting, 533

use cases, 532

application deployment

CI/CD

components of, 198201

integration deployment, 207217

pipeline implementation, 201203

stages of, 203206

DevOps, responsibilities of, 194196

evolution of methods, 218238

automated configuration management, 220224

cloud services, 224238

sysadmins compiling from source code, 218220

SRE, 196198

DevOps vs.198

responsibilities of, 197198

12-factor application design, 238242

admin processes, 242

backing services, 240

build/release/run stages, 240

codebase, 239

concurrency, 241

configuration, 239

dependencies, 239

disposability, 241

logs, 242

parity, 241243

port binding, 241

processes, 240

application design

API design considerations, 177178

availability and resiliency in, 4453

deployment models, 5153

failure prevention, 50

fault detection, 4647

planning, 5051

recovery, 4750

requirements, 45

database selection in, 7983

data variety, 8283

data velocity, 82

data volume, 8182

types of databases, 8081

maintainability in, 5966

DIP (dependency inversion principle), 6566

ISP (interface segregation principle), 6465

LSP (Liskov’s substitution principle), 6364

modularity and, 59

OCP (open-closed principle), 6263

SOLID design, 6066

SRP (single responsibility principle), 61

modularity in, 3641

benefits of, 3637

best practices, 3740

definition of, 36

microservices and, 4041

for performance

caching, 7071

exponential backoff, 7273

latency, 6673

observability, 7379

parallel processing, 72

rate limiting, 7172

trade-offs in, 69

scalability in, 4144

horizontal, 4142

practical, 4344

vertical, 4243

security

CIA triad, 248249

IT secrets storage, 252254

OAuth 2.0, 266283

OWASP, 262266

PKI, 254262

privacy, 250252

top 10 risks, 249250

12-factor application design, 238242

admin processes, 242

backing services, 240

build/release/run stages, 240

codebase, 239

concurrency, 241

configuration, 239

dependencies, 239

disposability, 241

logs, 242

parity, 241243

port binding, 241

processes, 240

application hosting

with Cisco DNA Center, 538547

with Cisco IOx Local Manager, 547552

with CLI, 553556

enabling framework, 536537

application performance monitoring (APM) applications, 77

application programming interfaces. See APIs (application programming interfaces)

architectural decisions, 519520

architectural styles (APIs)

gRPC, 154155

OpenAPI/Swagger, 155156

purpose of, 146

REST vs. RPC, 152154

selecting, 147148

architecture. See software architecture

Atlantis, 207213

atomic configuration management, model-driven vs.351–354

atomic network management, controller-based vs.303–305

atomicity as ACID property, 148

authentication

for APIs, 139, 162, 179181, 337

RESTCONF and, 373

Webex API, 575577

authenticity as quality attribute, 32

authorization. See also OAuth 2.0

DNA Center, 637639

Intersight, 606611

Meraki, 596600

authorization code flow (OAuth 2.0), 276278

automated configuration management. See also SCM (software configuration management); streaming telemetry

agent-based solutions, 450473

downloading and installing Puppet, 453458

extracting information via Puppet, 459463

NX-OS devices with Puppet, 465469

Puppet manifests, 469473

Puppet platform support matrix, 451

Python scripts with Puppet, 463465

agentless solutions, 450, 474501

ACI tenant deployment, 496501

configuring Ansible inventory, 481482

downloading and installing Ansible, 474481

installing Terraform, 494496

Jinja2 filtering, 487488

modifying device configurations, 488493

playbooks in Ansible, 483487

project-level inventory files in Ansible, 482483

atomic vs. model-driven, 351354

in evolution of application deployment, 220224

imperative vs. declarative models, 448449

provisioning vs.449

automation

APIs

authentication, 337

idempotency, 337

JSON and, 340341

operational overview, 335336

pagination, 337338

payload data formats, 338

RESTful APIs, 336

XML and, 338340

CDTAO, 342343

challenges addressed by, 313329

accuracy of provisioning, 319323

diversity of equipment and functionality, 314316

proximity of management tools and support staff, 316

reducing operation expenses, 329

scalability in provisioning, 323328

speed of provisioning, 317318

in evolution of network management and software development, 67

in failure prevention, 50

IT service management and security, 343344

SDN, 329335

Cisco solutions for, 335

definition of, 329332

network controllers, 334

use cases, 332334

autoscaling in application design, 42

availability

in application design, 4453

deployment models, 5153

failure prevention, 50

fault detection, 4647

planning, 5051

recovery, 4750

requirements, 45

definition of, 249

as quality attribute, 30, 32

availability monitoring of application containers, 564

AWS (Amazon Web Services)

ECS on Fargate, 227234

Jeff Bezos’s API mandate, 136138

Lambda, 234238

B

backing services in 12-factor application design, 240

bandwidth, 66

basic authentication (APIs), 179

BCP (business continuity planning), 5051

bearer authentication (APIs), 180

best practices

for application container management, 563565

in modular design, 3740

beta testing, 22

Bezos, Jeff, API mandate, 136138

BGP-LS/FS (BGP Link-State/Flow Spec), 333

black-box design in modular design, 39

black-box testing, 23

blue-green deployment (CI/CD), 206

Branch and Pull Workflow (Git), 89103

branches

creating, 9394

pushing to origin repo, 97

current changes review, 94

pros and cons, 89

sample exercise, 90103

sample setup, 90

staged changes review, 94

branches (Git)

branch protection rules, 125126

branching strategies, 121123

definition of, 121

Git Flow, 123

GitHub Flow, 122123

GitLab Flow, 123

list of, 122

selecting, 122

creating, 9394, 111

pushing

to forked repo, 114

to origin repo, 97

browser security, 261262

bug fixes, cost of, 60

bugs, definition of, 46

build stage (CI/CD), 204

business continuity planning (BCP), 5051

business process management in evolution of network management and software development, 6

business requirements for software architecture, 12, 13

C

cache-control, 151152

caching

for API performance, 163, 188

for application performance, 7071

cadence-based telemetry. See MDT (model-driven telemetry)

calling APIs, 138144

canary deployment (CI/CD), 206

capacity as quality attribute, 31

CAs (certificate authorities)

hierarchical structure of, 257

purpose of, 254256

web application security, 257260

CD (continuous delivery), 200

CD (continuous deployment), 200201

CDNs (content delivery networks/content distribution networks), 188

CDTAO (cross-domain, technology-agnostic orchestration), 342343

certificate path validation (CPV), 260

certificates

format of, 256

revoking, 256257

Chef

as agent-based solution, 450451

described, 512

in evolution of application deployment, 221

choosing. See selecting

CI (continuous integration), 199200

CIA (confidentiality, integrity, availability) triad, 248249

CI/CD (continuous integration/continuous delivery (deployment)), 290

components of, 198201

integration deployment, 207217

to cloud-native applications, 213217

to infrastructure, 207213

pipeline implementation, 201203

stages of, 203206

build, 204

deploy, 205206

release/deliver, 205

test, 205

cisco_node_utils Ruby gem, installing, 465

ciscopuppet module, installing, 463

CITEIS (Cisco IT Elastic Infrastructure Services), 315

CLI (command-line interface)

accuracy of provisioning, 319323

on Ansible, 514

application hosting with, 553556

definition of, 174

IMDb API example, 174177

network provisioning, 291294

wrapper code for APIs, 174177

Click

command creation, 175

group creation, 175

help function, 176

importing, 175

purpose of, 174

client credential flow (OAuth 2.0), 271272

clients (APIs)

creating, 165173

definition of, 138

IMDb API example, 165173

close-session operation (NETCONF), 350

cloud availability deployment model, 52

cloud services in evolution of application deployment, 224238

containers on serverless clouds, 227234

managed Kubernetes, 224226

serverless functions, 234238

cloud-native applications, integration deployment to, 213217

clustering

in application design, 4142

for high availability, 5152

code adaptation, cost of, 60

code comments as documentation, 79

code refactoring, cost of, 60

code reviews, 2122

codebase

in 12-factor application design, 239

technical debt of, 520

coding standards for maintainability, 59

cohesion in modular design, 3738

cold standby (spare recovery), 49

command-line interface (CLI). See CLI (command-line interface)

commands (Click), creating, 175

common toolsets for maintainability, 59

compatibility as quality attribute, 31

compiling from source code, 218220

concurrency

in 12-factor application design, 241

definition of, 325327

confidentiality, definition of, 249

configuration

in 12-factor application design, 239

of Ansible inventory, 481482

of MDT

dial-in mode, 402406

dial-out mode, 398402

in IOS-XR, 397398

configuration management, automated. See also SCM (software configuration management); streaming telemetry

agent-based solutions, 450473

downloading and installing Puppet, 453458

extracting information via Puppet, 459463

NX-OS devices with Puppet, 465469

Puppet manifests, 469473

Puppet platform support matrix, 451

Python scripts with Puppet, 463465

agentless solutions, 450, 474501

ACI tenant deployment, 496501

configuring Ansible inventory, 481482

downloading and installing Ansible, 474481

installing Terraform, 494496

Jinja2 filtering, 487488

modifying device configurations, 488493

playbooks in Ansible, 483487

project-level inventory files in Ansible, 482483

atomic vs. model-driven, 351354

in evolution of application deployment, 220224

imperative vs. declarative models, 448449

provisioning vs.449

CONNECT requests, 336

consistency as ACID property, 148

console, network provisioning from, 291294

constraints (limitations)

on RESTful APIs, 157

for software architecture, 10

containers. See also application containers

Docker, 530531

LXC (Linux Containers), 529530

on serverless clouds, 227234

content delivery networks/content distribution networks (CDNs), 188

content layer (NETCONF), 349

continuous delivery (CD), 200

continuous deployment (CD), 200201

continuous integration (CI), 199200

control plane, 303304

controller-based network management, atomic vs.303–305

cookie authentication (APIs), 180181

copy-config operation (NETCONF), 350

coupling

DIP (dependency inversion principle) and, 6566

in modular design, 3738

CPV (certificate path validation), 260

credentials. See IT secrets storage; OAuth 2.0; PKI (public key infrastructure)

cross-domain, technology-agnostic orchestration (CDTAO), 342343

cross-site scripting (XSS), 264266

culture in evolution of network management and software development, 8

cURL, RESTCONF GET operations with, 375377

current changes (Git), reviewing, 94, 112

customizing exam modes, 650651

D

data at rest, 251

data backup and replication for high availability, 51

data encoding

JSON, 340341

XML, 338340

data in motion, 250251

data in use, 251

data localization, definition of, 251

data plane, 303304

data privacy, definition of, 251

data sources (Terraform), 517

data sovereignty, definition of, 251

data states, 250251

data variety, 8283

data velocity, 82

data volume, 8182

databases

injection attacks, 263264

selecting in application design, 7983

data variety, 8283

data velocity, 82

data volume, 8182

types of databases, 8081

declarative configuration management models, 448449

DELETE requests, 133134, 336

delete-config operation (NETCONF), 350

deliver stage (CI/CD), 205

dependencies

in 12-factor application design, 239

in modular design, 38

dependency inversion principle (DIP), 6566

deploy stage (CI/CD), 205206

deployment models for high availability, 5153. See also application deployment

design. See application design

destination groups, creating, 398399

device code flow (OAuth 2.0), 281283

DevOps, 290

in evolution of network management and software development, 8

key practices in, 8

responsibilities of, 194196

vs. SRE, 198

dial-in mode (streaming telemetry), 392

configuring, 402406

definition of, 394

dial-out vs.395

dial-out mode (streaming telemetry), 392

configuring, 398402

definition of, 394

dial-in vs.395

digital certificates. See certificates

DIP (dependency inversion principle), 6566

disaster recovery, 47

disaster recovery planning (DRP), 5051

disk space usage, EDT vs. MDT, 440441

disposability in 12-factor application design, 241

distributed tracing, 77

DNA Center, 628639

API documentation, 631635

application hosting with, 538547

enabling access, 630631

purpose of, 628629

SDK authorization, 637639

SDK documentation, 635637

Docker

containers, 530531. See also application containers

installing, 414415

YANG Suite installation, 415423

documentation

for application performance, 7879

DNA Center APIs, 631635

DNA Center SDKs, 635637

Firepower, 583585

Intersight APIs, 603605

Intersight SDKs, 605

for maintainability, 59

Meraki APIs, 593594

Meraki SDKs, 594596

researching sensor paths, 407

UCS Manager APIs, 611617

UCS Manager PowerShell SDKs, 622628

UCS Manager Python SDKs, 617622

Webex, 573575

DOM-based XSS, 266

downloading

Ansible, 474481

Pearson Test Prep software, 649650

Puppet, 453458

YANG models, 369371

DRP (disaster recovery planning), 5051

durability as ACID property, 148

E

eager loading, 7071

ECS (Elastic Container Service), 227234

edge computing

application containers

Cisco DNA Center for application hosting, 538547

Cisco IOx Local Manager for application hosting, 547552

CLI for application hosting, 553556

enabling application hosting framework, 536537

implementation, 534

interaction with iPerf3, 556563

management best practices, 563565

platforms supporting, 533

use cases, 532

validating prerequisites, 534536

benefits of, 527

virtualization technologies, 527531

Docker containers, 530531

LXC (Linux Containers), 529530

Type-1 hypervisors, 528

Type-2 hypervisors, 528529

edit-config operation (NETCONF), 350

EDT (event-driven telemetry)

definition of, 390

MDT vs.434–441

EEM (Embedded Event Manager), 299300

Elastic Container Service (ECS), 227234

elasticity

in application deployment, 223

in application design, 43

EMSs (element management systems), 297299

enabling

access

DNA Center, 630631

Firepower, 582583

Intersight, 601603

Meraki, 592593

UCS Manager, 611

Webex, 572573

application hosting framework, 536537

gRPC, 402404

NETCONF

on IOS XE, 355356

on IOS XR, 356357

on NX-OS, 357358

encoding (streaming telemetry)

definition of, 395

types of, 395396

endpoints (APIs), definition of, 138

errors

APIs, 184188

definition of, 46

event streaming, definition of, 15

event-driven architecture, definition of, 15

event-driven telemetry (EDT)

definition of, 390

MDT vs.434–441

evolution

of application deployment methods, 218238

automated configuration management, 220224

cloud services, 224238

sysadmins compiling from source code, 218220

of network management and software development, 58

exam preparation, 648652

customizing exams, 650651

tips for, 648649

tools for, 649650

updating exams, 651

exponential backoff for application performance, 7273

extensibility in application design, 6263

Extensible Markup Language (XML), 338340, 349, 395

external APIs, 145

extracting model support

manually via NETCONF, 408410

with Python and NETCONF, 410413

Extreme Programming (XP), 19, 20

F

facter utility (Puppet), 459463

failures

availability and recovery, 4750

definition of, 46

prevention of, 50

Fargate, 227

fat interfaces, 64

fault detection, availability and, 4647

fault monitoring in application containers, 564

fault tolerance as quality attribute, 32

faults, definition of, 46

FCAPS (Fault, Configuration, Accounting, Performance, and Security) model in evolution of network management and software development, 5

FDM (Firepower Device Management), 582

Fiddler, 147

file transfer methods, 297

File Transfer Protocol (FTP), 297

Firepower, 582592

documentation, 583585

enabling access, 582583

purpose of, 582

use cases, 585592

Firepower Device Management (FDM), 582

Firepower Management Center (FMC), 582

firewalls. See Firepower

five nines (availability), 45

fixed window (rate limiting), 187

Flash Card Mode (exam preparation), 650

flow control. See performance

Flux, 213217

FMC (Firepower Management Center), 582

forced loading, 7071

Fork and Pull Workflow (Git), 104120

branches

creating, 111

pushing to forked repo, 114

current changes review, 112

pros and cons, 105

sample exercise, 106120

sample setup, 105

staged changes review, 112113

formats (APIs), 134135

four nines (availability), 45

FTD (Firepower Threat Defense). See Firepower

FTP (File Transfer Protocol), 297

functional appropriateness as quality attribute, 31

functional correctness as quality attribute, 31

functional requirements for software architecture, 1011, 1213

comparison with nonfunctional, 12

relationship with nonfunctional, 29

functional stability as quality attribute, 31

functional testing, 23

future-proofing, cost of, 60

G

GDPR (General Data Protection Regulation), 251252

get operation (NETCONF), 350

GET operation (RESTCONF)

with cURL, 375377

with Postman, 377382

GET requests, 133, 149, 336

get-config operation (NETCONF), 350

Git

branching strategies, 121123

definition of, 121

Git Flow, 123

GitHub Flow, 122123

GitLab Flow, 123

list of, 122

selecting, 122

features of, 88

recommended settings, 125126

workflows, 8889

Branch and Pull Workflow, 89103

Fork and Pull Workflow, 104120

Git Flow, 122, 123

GitHub Flow, 122123, 125126

GitLab Flow, 122, 123

GKE (Google Kubernetes Engine), 224226

gNMI (gRPC Network Management Interface), 390, 392

GPB (Google Protocol Buffer), 396

Grafana

installing, 430434

purpose of, 426

GraphQL, 147

gRPC (Google Remote Procedure Call)

as architectural style, 154155

definition of, 390

enabling, 402404

in MDT, 397

H

HCL (HashiCorp Configuration Language), 494, 518

HEAD requests, 336

headers (APIs), 139, 149150

Health Insurance Portability and Accountability Act (HIPAA), 252

heartbeats for fault detection, 46

hello packets for fault detection, 46

help function (Click), 176

high availability. See availability

HIPAA (Health Insurance Portability and Accountability Act), 252

horizontal scaling in application design, 4142

hot standby (active recovery), 4748

HTTP requests, 149150

HTTP status codes, 184

hybrid availability deployment model, 53

hybrid scaling in application design, 42

hypervisors

definition of, 527528

Type-1, 528

Type-2, 528529

I

I2RS (Interface to Routing System), 333

IaC (Infrastructure as Code), 447448

agent-based solutions, 450473

agentless solutions, 474501

Cisco solutions for, 501502

IBN (intent-based networking), 305306

ICMP echo/echo-reply for fault detection, 4647

idempotency of APIs, 337

IETF RFC 5424 (Syslog), logging with, 75

IMDb API

calling, 140144

CLI wrapper code, 174177

client creation, 165173

imperative configuration management models, 448449

implicit flow (OAuth 2.0), 275276

importing Click, 175

INET data types, 366

InfluxDB

installing, 426427

purpose of, 426

information security. See security

infrastructure. See also IaC (Infrastructure as Code)

integration deployment to, 207213

network management, 288290

atomic vs. controller-based networking, 303305

intent-based networking, 305306

network provisioning, 290291

from CLI/console, 291294

EEM, 299300

element management systems, 297299

file transfer methods, 297

SNMP, 294297

ZTP, 300303

technical debt of, 520

Infrastructure as Code (IaC), 447448

agent-based solutions, 450473

agentless solutions, 474501

Cisco solutions for, 501502

injection attacks, 263264

inside-out design (APIs), 178

installability as quality attribute, 33

installing

Ansible, 474481

cisco_node_utils Ruby gem, 465

ciscopuppet module, 463

Docker, 414415

Grafana, 430434

InfluxDB, 426427

jq utility, 460

Puppet, 453458

pyang tool, 368369

Telegraf, 428

Terraform, 494496

YANG Suite, 415423

integration deployment (CI/CD), 207217

to cloud-native applications, 213217

to infrastructure, 207213

integration testing, 22

integrity

definition of, 249

as quality attribute, 32

intent-based networking (IBN), 305306

interface segregation principle (ISP), 6465

Interface to Routing System (I2RS), 333

interfaces in modular design, 3940

internal APIs, 144145

interoperability as quality attribute, 30, 31

interpolation (Terraform), 517518

Intersight, 601611

API documentation, 603605

authorization, 606611

enabling access, 601603

purpose of, 601

SDK documentation, 605

inventory (Ansible)

configuring, 481482

project-level files, 482483

inventory management for application containers, 563564, 565

IOS XE, enabling NETCONF on, 355356

IOS XR

configuring MDT in, 397398

enabling NETCONF on, 356357

IOx

described, 534

enabling, 536537

IOx Local Manager, application hosting with, 547552

iPerf3, interaction with, 556563

isolation

as ACID property, 148

in failure prevention, 50

ISP (interface segregation principle), 6465

IT secrets storage, 252254

IT service management, automation and, 343344

J

JDBC (Java Database Connectivity), 335

Jinja2 filtering, 487488

jq utility, installing, 460

JSON (JavaScript Object Notation)

as data encoding method, 396

data encoding with, 340341

REST and, 150151

RPC and, 152154

K

Kanban, 19, 318

keys. See IT secrets storage; OAuth 2.0; PKI (public key infrastructure)

kill-session operation (NETCONF), 350

KIND (Kubernetes in Docker), 214215

Kubernetes

integration deployment in, 213217

managed Kubernetes, 224226

L

Lambda, 234238

latency, 6673

definition of, 67

factors affecting, 6768

high performance design, 6973

side effects of, 69

laws governing privacy protection, 251252

lazy loading, 7071

leaky bucket (rate limiting), 187

Lean, 19, 20, 318

learnability as quality attribute, 32

limitations (constraints)

on RESTful APIs, 157

for software architecture, 10

Linux Containers (LXC), 529530

Linux VM

Docker installation, 414415

YANG Suite installation, 415423

Liskov’s substitution principle (LSP), 6364

load balancing in application design, 4142

lock operation (NETCONF), 350

logging. See also monitoring

for application performance, 7476

definition of, 73

Python levels of, 75

with Syslog (IETF RFC 5424), 75

logs in 12-factor application design, 242

loose coupling. See coupling

low-level documentation, 79

LSP (Liskov’s substitution principle), 6364

LXC (Linux Containers), 529530

M

maintainability

in application design, 5966

DIP (dependency inversion principle), 6566

ISP (interface segregation principle), 6465

LSP (Liskov’s substitution principle), 6364

modularity and, 59

OCP (open-closed principle), 6263

SOLID design, 6066

SRP (single responsibility principle), 61

as quality attribute, 33

managed Kubernetes, 224226

management plane, 303304

manifests (Puppet), 469473

manual usage of NETCONF, 358364

MDT (model-driven telemetry)

configuring

dial-in mode, 402406

dial-out mode, 398402

in IOS-XR, 397398

definition of, 390

dial-in/dial-out comparison, 395

EDT vs.434–441

encodings in, 395396

implementation, 393395

protocols in, 396397

sensor path selection, 407413

extracting NETCONF capabilities with Python, 410413

manually extracting NETCONF capabilities, 408410

public documentation for, 407

terminology, 394395

use cases, 423425

YANG model investigation via YANG Suite, 414423

mean time between failures (MTBF), 45

mean time to repair (MTTR), 45, 47

measurability of nonfunctional requirements, 29, 3536

Meraki, 592600

API documentation, 593594

authorization, 596600

enabling access, 592593

purpose of, 592

SDK documentation, 594596

merge button settings (Git), 125

messages layer (NETCONF), 350351

methods (APIs), 133134

metrics

for application performance, 7677

definition of, 73

microservices

definition of, 14

modular design and, 4041

mobile application security, 262266

model-driven configuraiton management, atomic vs.351–354

model-driven telemetry (MDT). See MDT (model-driven telemetry)

model-view-controller (MVC), definition of, 15

modifiability as quality attribute, 30, 33

modularity in application design, 3641

benefits of, 3637

best practices, 3740

definition of, 36

maintainability and, 59

microservices and, 4041

scalability and, 4344

monitoring. See also logging; streaming telemetry

application containers, 564

for application performance, 7379

documentation, 7879

logging, 7476

metrics, 7677

tracing, 7778

with Embedded Event Manager, 299300

evolution from SNMP to streaming telemetry, 386391

for fault detection, 46

MTBF (mean time between failures), 45

MTTR (mean time to repair), 45, 47

multiprocessing, 72

multithreading, 72

MVC (model-view-controller), definition of, 15

N

naming conventions for maintainability, 59

native models, 366

NETCONF, 334. See also RESTCONF

APIs, 158159

definition of, 322

implementation, 354364

on IOS XE, 355356

on IOS XR, 356357

manual usage, 358364

on NX-OS, 357358

layers in, 349351

content, 349

messages, 350351

operations, 350

transport, 351

management solutions with, 382383

mapping to RESTCONF operations, 372373

in MDT, 396

extracting capabilities with Python, 410413

manually extracting capabilities, 408410

origin of, 348349

YANG models and, 365371

network APIs. See APIs (application programming interfaces)

network controllers, 334

network management

atomic vs. controller-based networking, 303305

evolution of, 58

improvements in, 288290

intent-based networking, 305306

network management systems (NMS)

in evolution of network management and software development, 5

with NETCONF and RESTCONF, 382383

proximity of tools and support staff, 316

SNMP, 294297

network operations center (NOC) in evolution of network management and software development, 6

network programmability, definition of, 329332

network provisioning, 290291

accuracy of, 319323

from CLI/console, 291294

configuration management vs.449

EEM, 299300

element management systems, 297299

file transfer methods, 297

scalability in, 323328

SNMP, 294297

speed of, 317318

ZTP, 300303

Network Services Orchestrator (NSO), 382

new features and upgrades, cost of, 60

Nginx, 186

NMS (network management systems)

in evolution of network management and software development, 5

with NETCONF and RESTCONF, 382383

proximity of tools and support staff, 316

SNMP, 294297

NOC (network operations center) in evolution of network management and software development, 6

nonfunctional requirements for software architecture, 1112, 1314, 2936

architectural decisions, 519520

comparison with functional, 12

ISO/IEC 25010 standard, 3133

measurability of, 29, 3536

most common, 2930, 519

stages of, 35

technical debt, 520521

nonrepudiation as quality attribute, 32

northbound APIs, 135

NoSQL (nonrelational) databases, 80

NSO (Network Services Orchestrator), 382

NX-OS devices

enabling NETCONF on, 357358

with Puppet, 465469

O

OAS (OpenAPI Specification), 155156, 165

OAuth 2.0, 181, 266283

authorization code flow, 276278

client credential flow, 271272

device code flow, 281283

implicit flow, 275276

operational overview, 266268

PKCE flow, 278280

refresh token flow, 280281

resource owner password credential flow, 272274

three-legged authorization, 269270

two-legged authorization, 268269

object-oriented design (OOD)

for maintainability, 59

SOLID design, 6066

objects (APIs), 134

observability for application performance, 7379

documentation, 7879

logging, 7476

metrics, 7677

tracing, 7778

OCP (open-closed principle), 6263

ODBC (Open Database Connectivity), 335

OMI (Open Management Infrastructure), 334

on-premises availability deployment model, 52

OOD (object-oriented design)

for maintainability, 59

SOLID design, 6066

open APIs, definition of, 140

Open Web Application Security Project (OWASP), 249, 262266

open YANG models, 366

OpenAPI Specification (OAS), 155156, 165

open-closed principle (OCP), 6263

OpenFlow, 333

open-source solutions, purpose of, 444

OpenStack, 334

operability as quality attribute, 32

operation expenses, reducing, 329

operational lifecycle of devices, 315

operations layer (NETCONF), 350

optimization, cost of, 60

OPTIONS requests, 336

orchestration

CDTAO, 342343

in evolution of network management and software development, 67

output values (Terraform), 517

outside-in/user interface design (APIs), 178

OWASP (Open Web Application Security Project), 249, 262266

ownership in evolution of network management and software development, 6

P

pagination, 70, 162, 181184, 337338

parallel processing

for application performance, 72

definition of, 327328

parity in 12-factor application design, 241243

partner APIs, 145

passive recovery (warm standby), 48

PATCH requests, 133, 336

patterns (software architecture), 1415

PCEP (Path Computation Element Protocol), 333

PCI DSS (Payment Card Industry Data Security Standard), 252

PDIOO (planning , design, implementation, operation, and optimization) model, 288289

Pearson Cert Practice Test Engine, 649

Pearson Test Prep software

accessing, 649650

customizing, 650651

Premium Edition, 651

updating, 651

performance

of APIs

caching, 163, 188

error handling/timeouts/rate limiting, 184188

pagination, 162

streaming vs. pagination, 181184

in application design

caching, 7071

exponential backoff, 7273

latency, 6673

observability, 7379

parallel processing, 72

rate limiting, 7172

trade-offs in, 69

as quality attribute, 30

performance efficiency as quality attribute, 31

performance monitoring of application containers, 564

performance optimization, cost of, 60

performance testing, 23

picking. See selecting

PII (personally identifiable information), 250

ping for fault detection, 4647

pip, installing Ansible via, 476481

PKCE flow (OAuth 2.0), 278280

PKI (public key infrastructure), 254262

browser security, 261262

certificate revocation, 256257

hierarchical structure of, 257

purpose of CAs, 254256

web application security with TLS, 257260

planning for high availability, 5051

playbooks (Ansible), 483487, 488493

port binding in 12-factor application design, 241

portability as quality attribute, 33

POST requests, 133, 336

Postman, 146

DNA Center documentation, 633635

Firepower documentation, 584585

Intersight documentation, 603605

Meraki authorization, 596600

Meraki documentation, 593594

RESTCONF GET operations with, 377382

PowerShell, UCS Manager documentation, 622628

practical applications. See use cases

practical scaling in application design, 4344

Practice Exam Mode (exam preparation), 650

predictive analytics in failure prevention, 50

Premium Edition of Pearson Test Prep software, 651

preparation for exam, 648652

customizing exams, 650651

tips for, 648649

tools for, 649650

updating exams, 651

prerequisites, validating, 534536

prevention

cost of, 60

of failures, 50

privacy protection, 250252

problem prevention, cost of, 60

processes in 12-factor application design, 240

programmability, definition of, 329332

project-level inventory files in Ansible, 482483

protecting privacy, 250252

protobufs, 396

Protocol Buffer (Protobuf) IDL (Interface Definition Language), 154155

protocols in MDT, 396397

providers (Terraform), 517

provisioning networks, 290291

accuracy of, 319323

from CLI/console, 291294

configuration management vs.449

EEM, 299300

element management systems, 297299

file transfer methods, 297

scalability in, 323328

SNMP, 294297

speed of, 317318

ZTP, 300303

public APIs, 140, 335

public documentation. See documentation

public key infrastructure (PKI). See PKI (public key infrastructure)

publisher/subscriber (pub/sub) model, definition of, 15

Puppet, 334

as agent-based solution, 450473

downloading and installing, 453458

extracting information, 459463

manifests, 469473

NX-OS devices with, 465469

Puppet platform support matrix, 451

Python scripts with, 463465

described, 512

in evolution of application deployment, 221

with NETCONF and RESTCONF, 383

push model in streaming telemetry, 391392

pushing branches (Git)

to forked repo, 114

to origin repo, 97

PUT requests, 133, 336

pyang tool, 368369, 382

Python

AppDynamics APIs, 642646

DNA Center authorization, 637639

DNA Center documentation, 635637

extracting model support with, 410413

installing Ansible via pip, 476481

Intersight authorization, 606611

Intersight documentation, 605

logging levels, 75

Meraki authorization, 596600

Meraki documentation, 594596

scripts with Puppet, 463465

UCS Manager documentation, 617622

Q

quality attributes. See nonfunctional requirements for software architecture

R

rate limiting

APIs, 184188

for application performance, 7172

recoverability as quality attribute, 32

recovery, availability and, 4750

reducing operation expenses, 329

redundancy, recovery and, 4750

reflected XSS, 265

refresh tokens (OAuth 2.0), 181, 280281

regulations governing privacy protection, 251252

relational databases, 80

release stage (CI/CD), 205

reliability as quality attribute, 30, 32

remote-procedure call (RPC)

definition of, 147

gRPC, 390

REST vs.152–154

replaceability as quality attribute, 33

representational state transfer. See REST (representational state transfer)

requirements

for database selection

data variety, 8283

data velocity, 82

data volume, 8182

types of databases, 8081

for software architecture, 1014

architectural decisions, 519520

availability, 45

business, 12

comparison of functional and nonfunctional, 12

constraints (limitations), 10

functional, 1011, 1213, 29

nonfunctional, 1112, 1314, 2936, 519

technical debt, 520521

resiliency

in application design, 4453

availability requirements, 45

deployment models, 5153

failure prevention, 50

fault detection, 4647

planning, 5051

recovery, 4750

as quality attribute, 30

resource owner password credential flow (OAuth 2.0), 272274

resource utilitization as quality attribute, 31

resources (Terraform), 517

response time (RT). See latency

respositories (Git). See Git

REST (representational state transfer). See also RESTCONF; RESTful APIs

definition of, 147

RPC vs.152–154

RESTCONF

authentication, 373

definition of, 371

GET operations

with cURL, 375377

with Postman, 377382

management solutions with, 382383

in MDT, 396

operations, 372373

protocol stack, 372

URIs, 373374

RESTful APIs, 157158

cache-control, 151152

constraints on, 157

DNA Center

documentation, 631635

enabling access, 630631

Firepower

documentation, 583585

enabling access, 582583

use cases, 585592

HTTP status codes, 184

JSON, 150151

NETCONF APIs vs.159

operation types, 336

streaming APIs vs.181–184

uniform interfaces, 158

Webex

documentation, 573575

enabling access, 572573

use cases, 575577

retries, recovery and, 49

reusability as quality attribute, 33

reviewing

current changes (Git), 94, 112

staged changes (Git), 94, 112113

reviews, 2122

revoking certificates, 256257

rollbacks, recovery and, 50

rolling deployment (CI/CD), 206

RPC (remote-procedure call)

definition of, 147

gRPC, 390

REST vs.152–154

RT (response time). See latency

RTT (round-trip time), 6667

S

SaltStack in evolution of application deployment, 221

sanity checks for fault detection, 47

Sarbanes-Oxley Act of 2002 (SOX), 252

scalability

in application design, 4144

horizontal, 4142

practical, 4344

vertical, 4243

in network provisioning, 323328

of streaming telemetry, 391392

SCM (software configuration management). See also automated configuration management

Ansible

comparison with Terraform, 518519

described, 512514

definitions and standards, 510511

in evolution of application deployment, 220224

list of systems, 512

for maintainability, 59

purpose of, 511512

Terraform

comparison with Ansible, 518519

described, 515518

scope in modular design, 38

Scrum, 19, 20, 318

SDKs (software development kits). See also clients (APIs)

DNA Center

authorization, 637639

documentation, 635637

enabling access, 630631

Firepower, enabling access, 582583

Intersight

authorization, 606611

documentation, 605

Meraki

authorization, 596600

documentation, 594596

enabling access, 592593

UCS Manager

additional resources, 628

PowerShell documentation, 622628

Python documentation, 617622

Webex

documentation, 573575

enabling access, 572573

use cases, 577582

SDLC (software development lifecycle)

phases of, 1517

software architecture in, 510

SDN (software-defined networking), 290, 329335

atomic networking vs.303–305

Cisco solutions for, 335

contributing protocols and solutions, 333334

definition of, 329332

error reduction in, 68

in evolution of network management and software development, 7

network controllers, 334

northbound/southbound APIs, 135

use cases, 332334

secrets. See IT secrets storage

Secure Copy Protocol, 297

Secure File Transfer Protocol (SFTP), 297

security

in API development, 162, 179181

of application containers, 564

automation and, 343344

CIA triad, 248249

in evolution of network management and software development, 5

IT secrets storage, 252254

for network provisioning, 293294

OAuth 2.0, 266283

authorization code flow, 276278

client credential flow, 271272

device code flow, 281283

implicit flow, 275276

operational overview, 266268

PKCE flow, 278280

refresh token flow, 280281

resource owner password credential flow, 272274

three-legged authorization, 269270

two-legged authorization, 268269

OWASP, 262266

PKI, 254262

browser security, 261262

certificate revocation, 256257

hierarchical structure of, 257

purpose of CAs, 254256

web application security with TLS, 257260

privacy, 250252

as quality attribute, 30, 32

top 10 risks, 249250

selecting

API architectural styles, 147148

databases in application design, 7983

data variety, 8283

data velocity, 82

data volume, 8182

types of databases, 8081

Git branching strategies, 122

sensor paths, 407413

extracting NETCONF capabilities with Python, 410413

manually extracting NETCONF capabilities, 408410

public documentation for, 407

self-testing for fault detection, 46

sensor groups, creating, 400, 404405

sensor paths

definition of, 390, 394

selecting, 407413

extracting NETCONF capabilities with Python, 410413

manually extracting NETCONF capabilities, 408410

public documentation for, 407

server load balancing in application design, 4142

serverless clouds, containers on, 227234

serverless functions, 234238

servers (APIs), definition of, 138

serviceability as quality attribute, 30

service-level agreement (SLA), 45

service-oriented architecture (SOA), definition of, 1415

sessions (streaming telemetry), definition of, 394

SFTP (Secure File Transfer Protocol), 297

Simple Network Management Protocol (SNMP)

in evolution of network management and software development, 5

network provisioning, 294297

Simple Object Access Protocol (SOAP), definition of, 148, 335336

simple ping for fault detection, 4647

single responsibility principle (SRP), 61

site reliability engineering (SRE), 196198, 290

DevOps vs.198

responsibilities of, 197198

six nines (availability), 45

SLA (service-level agreement), 45

sliding window (rate limiting), 188

SMIv2 data types, 365366

SNMP (Simple Network Management Protocol)

in evolution of network management and software development, 5

network provisioning, 294297

transition to streaming telemetry, 386391

SOA (service-oriented architecture), definition of, 1415

SOAP (Simple Object Access Protocol), definition of, 148, 335336

software architecture

application design

availability and resiliency in, 4453

database selection in, 7983

maintainability in, 5966

modularity in, 3641

scalability in, 4144

application performance

caching, 7071

exponential backoff, 7273

latency, 6673

observability, 7379

parallel processing, 72

rate limiting, 7172

trade-offs in, 69

definition of, 9

patterns, 1415

requirements, 1014

architectural decisions, 519520

business, 12

comparison of functional and nonfunctional, 12

constraints (limitations), 10

functional, 1011, 1213, 29

nonfunctional, 1112, 1314, 2936, 519

technical debt, 520521

reviews, 2122

in software development cycle, 510

software configuration management (SCM). See also automated configuration management

Ansible

comparison with Terraform, 518519

described, 512514

definitions and standards, 510511

in evolution of application deployment, 220224

list of systems, 512

for maintainability, 59

purpose of, 511512

Terraform

comparison with Ansible, 518519

described, 515518

software developers, definition of, 5

software development

costs associated with, 60

evolution of, 58

methodologies and frameworks, 318

reviews, 2122

testing, 2223

software development kits (SDKs). See SDKs (software development kits)

software development lifecycle (SDLC)

phases of, 1517

software architecture in, 510

software development models, 1721

Agile, 1820

comparison of, 2021

Extreme Programming, 19

Kanban, 19

Lean, 19

Scrum, 19

waterfall, 1718

software engineers, definition of, 5

software quality. See nonfunctional requirements for software architecture

software-defined networking (SDN). See SDN (software-defined networking)

SOLID design, 6066

DIP (dependency inversion principle), 6566

ISP (interface segregation principle), 6465

LSP (Liskov’s substitution principle), 6364

OCP (open-closed principle), 6263

SRP (single responsibility principle), 61

source code, compiling from, 218220

southbound APIs, 135

SOX (Sarbanes-Oxley Act of 2002), 252

spare recovery (cold standby), 49

SQL (Structured Query Language) databases, 80

SRE (site reliability engineering), 196198, 290

DevOps vs.198

responsibilities of, 197198

SRP (single responsibility principle), 61

staged changes (Git), reviewing, 94, 112113

standards of privacy protection, 251252

stored XSS, 264

storing IT secrets, 252254

streaming, 181184

streaming telemetry

Grafana, installing, 430434

InfluxDB, installing, 426427

MDT

dial-in mode configuration, 402406

dial-in/dial-out comparison, 395

dial-out mode configuration, 398402

EDT vs.434–441

encodings in, 395396

implementation, 393395

IOS-XR configuration, 397398

protocols in, 396397

sensor path selection, 407413

terminology, 394395

use cases, 423425

YANG model investigation via YANG Suite, 414423

push model, 391392

Telegraf, installing, 428

transition from SNMP, 386391

stress testing, 23

Structured Query Language (SQL) databases, 80

Study Mode (exam preparation), 650

subscriptions

creating, 400401, 405

definition of, 395

substitutability in application design, 6364

Swagger, 147, 155156

SwaggerHub, 165166

sysadmins in evolution of application deployment, 218220

Syslog, logging with, 75

Syslog-NG utility, running in application container, 559563

system requirements for software architecture, 13

system testing, 23

system upgrades, recovery and, 4950

T

Tail-f Systems, 382

technical debt, 520521

technical requirements for software architecture, 1314

Telegraf

installing, 428

purpose of, 426

telemetry. See streaming telemetry

Terraform

as agentless solution, 450, 493501

ACI tenant deployment, 496501

installing, 494496

comparison with Ansible, 518519

described, 493494, 515518

in evolution of application deployment, 221

integration deployment to infrastructure, 207213

test preparation, 648652

customizing exams, 650651

tips for, 648649

tools for, 649650

updating exams, 651

test stage (CI/CD), 205

testability as quality attribute, 30, 33

testing, 2223

TFTP (Trivial File Transfer Protocol), 297

three nines (availability), 45

three-legged authorization (OAuth 2.0), 269270

throughput, 6667

TIG stack. See Grafana; InfluxDB; Telegraf

time series databases (TSDB), 8081

time-based telemetry. See MDT (model-driven telemetry)

timeouts

APIs, 184188

recovery and, 49

time-series metrics. See metrics

TLS (Transport Layer Security), 162, 251, 257260

token authentication (APIs), 180

token bucket (rate limiting), 187

tracing

for application performance, 7778

definition of, 74

transport (streaming telemetry)

definition of, 395

protocols in, 396397

transport layer (NETCONF), 351

Transport Layer Security (TLS), 162, 251, 257260

Trivial File Transfer Protocol (TFTP), 297

TSDB (time series databases), 8081

12-factor application design, 238242

admin processes, 242

backing services, 240

build/release/run stages, 240

codebase, 239

concurrency, 241

configuration, 239

dependencies, 239

disposability, 241

logs, 242

parity, 241243

port binding, 241

processes, 240

two nines (availability), 45

two-legged authorization (OAuth 2.0), 268269

Type-1 hypervisors, 528

Type-2 hypervisors, 528529

U

UCS Manager, 611628

additional resources, 628

API documentation, 611617

enabling access, 611

PowerShell SDK documentation, 622628

purpose of, 611

Python SDK documentation, 617622

Unified Computing System Manager. See UCS Manager

uniform interfaces in RESTful APIs, 158

unit testing, 22

unlock operation (NETCONF), 350

updating Pearson Test Prep software, 651

URIs (Uniform Resource Identifiers), 134, 150, 373374

URLs (Uniform Resource Locators), 150

usability as quality attribute, 30, 32

usability testing, 23

use cases

for application containers, 532

definition of, 13

Firepower API, 585592

for MDT, 423425

for SDN, 332334

Webex API, 575577

Webex SDK, 577582

user error protection as quality attribute, 32

user interface aesthetics as quality attribute, 32

user requirements for software architecture, 13

user stories, definition of, 13

users (APIs), definition of, 138

V

validating

gRPC dial-in configuration, 405406

prerequisites, 534536

variables (Terraform), 517

variety of data, 8283

Vault (Ansible), 481482

VCS (version control system). See version control

velocity of data, 82

verifying dial-out configuration, 401402

version control

CI/CD and, 198199

Git

Branch and Pull Workflow, 89103

branching strategies, 121123

features of, 88

Fork and Pull Workflow, 104120

recommended settings, 125126

workflows, 8889

for maintainability, 59

vertical scaling in application design, 4243

virtualization

in edge computing, 527531

Docker containers, 530531

LXC (Linux Containers), 529530

Type-1 hypervisors, 528

Type-2 hypervisors, 528529

in evolution of network management and software development, 6

visibility in 12-factor application design, 242

volume of data, 8182

W

warm standby (passive recovery), 48

waterfall model, 1718, 20, 318

web application security

OWASP, 262266

TLS and, 257260

web scraping, 135136

Webex, 571582

API examples, 575577

documentation, 573575

enabling REST API/SDK access, 572573

purpose of, 571572

SDK examples, 577582

white-box testing, 23

workflows (Git), 8889

Branch and Pull Workflow, 89103

branch creation, 9394

current changes review, 94

pros and cons, 89

pushing branches to origin repo, 97

sample exercise, 90103

sample setup, 90

staged changes review, 94

Fork and Pull Workflow, 104120

branch creation, 111

current changes review, 112

pros and cons, 105

pushing branches to forked repo, 114

sample exercise, 106120

sample setup, 105

staged changes review, 112113

X

XML (Extensible Markup Language), 338340, 349, 395

XP (Extreme Programming), 19, 20

XSS (cross-site scripting), 264266

Y

YANG models, 334

data types in, 365366

downloading, 369371

EDT vs.434–441

extracting support for

manually via NETCONF, 408410

with Python and NETCONF, 410413

investigation via YANG Suite, 414423

list of, 412413

management solutions for, 382

in MDT and EDT, 390

NETCONF and, 365371

public documentation for, 407

YANG Suite, 382, 415423

Z

ZTD (zero-touch deployment), 449

ZTP (zero-touch provisioning), 300303

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.216.34.146