Costa Rica
Last updated: 2025-08-04
Provides the essential knowledge required to work effectively within Azure and embrace DevOps/Agile methodologies. Additionally, it offers insights into fundamental cloud concepts.
Table of Contents (Click to expand)
- Agile
- DevOps
- Network
- GitHub
- Cloud Principles
-
- Working with Users and Permissions
- System Service Management, Runlevels and Boot Targets
- Securely Accessing Your System
- Package Management and Troubleshooting
- File Management, Permissions and Backup
- Working with Text Files and Streams
- Linux Device Management
- The Linux Shell
- Networking
- Processes Management
-
- Installing Terraform and Working with Terraform Providers
- Using Terraform CLI Commands (workspace and state) to Manipulate a Terraform Deployment
- Building and Testing a Basic Terraform Module
- Exploring Terraform State Functionality
- Deploy an Azure Storage Account with Terraform
- Deploy an Azure File Share and Blob Storage with Terraform
- Deploy Azure VNETs and Subnets with Terraform
- Create Azure NSGs with Terraform
- Deploying an Azure VM with Terraform
- Deploy a Web Application with Terraform
- Deploy a MySQL Database with Terraform
- Migrating Terraform State to Terraform Cloud
- Using Terraform Provisioners to Set Up an Apache Web Server on AWS
- Make Changes to AWS Infrastructure Using Terraform
- Use Output Variables to Query Data in AWS Using Terraform
- Make Changes to Azure Infrastructure Using Terraform
- Use Output Variables to Query Data in Azure Using Terraform
- Use Terraform to Create a Kubernetes Deployment
- Manage Kubernetes Resources with Terraform
- Use Terraform to Create an EKS Deployment
- Troubleshooting a Terraform Deployment
-
The Software Development Life Cycle (SDLC) is a structured process used by software developers and project managers to design, develop, test, and deploy software systems.
- SDLC - What is and how it works
Below are four common SDLC methodologies, each with its own approach and advantages:
Waterfall
Waterfall is a linear and sequential approach where each phase must be completed before the next begins.
- Phases: Requirements → Design → Implementation → Testing → Deployment → Maintenance
- Best for: Projects with well-defined requirements and low risk of changes
- Pros: Simple to manage, clear milestones
- Cons: Inflexible to changes, late discovery of issues
Agile
Agile is an iterative and incremental approach that emphasizes flexibility, collaboration, and customer feedback.
- Phases: Repeated cycles of planning, development, testing, and review
- Best for: Projects requiring frequent updates and stakeholder involvement
- Pros: Adaptive to change, faster delivery, continuous improvement
- Cons: Requires close collaboration, less predictability
Iterative
Iterative development builds the system incrementally through repeated cycles (iterations), refining the product with each cycle.
- Phases: Initial planning → Iteration cycles (Design → Build → Test → Evaluate)
- Best for: Projects where requirements evolve over time
- Pros: Early delivery of partial systems, easier to manage risk
- Cons: Can be resource-intensive, potential for scope creep
DevOps
DevOps is a culture and set of practices that integrates software development (Dev) and IT operations (Ops) to shorten the development lifecycle.
- Focus: Automation, continuous integration/continuous delivery (CI/CD), and collaboration
- Best for: Projects needing rapid deployment and high reliability
- Pros: Faster releases, improved collaboration, better quality
- Cons: Requires cultural shift, complex tooling
Protocol Testing
Protocol Testing ensures that communication protocols are implemented correctly and securely.
- Purpose: Validate data exchange rules and detect vulnerabilities in protocol handling
- Tools: Wireshark, Postman, SoapUI
- Benefits: Prevents miscommunication and exploits in networked systems
Automated Testing
Automated Testing uses scripts and tools to run tests on code automatically.
- Purpose: Quickly detect regressions and security flaws
- Tools: Selenium, JUnit, TestNG
- Benefits: Increases test coverage and consistency
Functional Testing
Functional Testing verifies that software behaves according to requirements.
- Purpose: Ensure features work as intended, including security-related functions
- Tools: QTP, TestComplete, Ranorex
- Benefits: Confirms correct behavior under expected conditions
Penetration Testing (Pentests)
Penetration Testing simulates attacks to find exploitable vulnerabilities.
- Purpose: Identify real-world security weaknesses
- Tools: Metasploit, Burp Suite, Nessus
- Benefits: Helps prioritize and fix critical security issues
Dynamic Code Analysis
Dynamic Code Analysis evaluates code behavior during execution.
- Purpose: Detect runtime vulnerabilities like memory leaks or injection flaws
- Tools: Valgrind, Fortify, AppScan
- Benefits: Finds issues that static analysis might miss
Secure Programming Practices
Secure Programming Practices involve writing code with security in mind from the start.
- Purpose: Prevent vulnerabilities like buffer overflows, XSS, and SQL injection
- Examples: Input validation, least privilege, secure APIs
- Benefits: Reduces the number of bugs and security flaws
Monitoring and Incident Response
Monitoring and Incident Response involves tracking system activity and reacting to threats.
- Purpose: Detect and respond to breaches or anomalies in real time
- Tools: Splunk, ELK Stack, PagerDuty
- Benefits: Minimizes damage and recovery time after incidents
- SDLC - Methodologies
1. Planning Phase
Planning involves defining the scope, resources, timeline, and goals of the project.
- Purpose: Establish a roadmap and feasibility
- Key Activities: Budgeting, scheduling, risk assessment
- Outcome: Project plan and initial approval
2. Requirement Definition
Requirement Definition gathers and documents what the software must do.
- Purpose: Understand user needs and system expectations
- Key Activities: Stakeholder interviews, use cases, requirement specs
- Outcome: Software Requirements Specification (SRS)
3. Design and Prototyping
Design and Prototyping translates requirements into architecture and UI/UX models.
- Purpose: Create a blueprint for development
- Key Activities: Wireframes, data models, system architecture
- Outcome: Design documents and prototypes
4. Rapid Software Development
Rapid Software Development focuses on building the software quickly using iterative methods.
- Purpose: Deliver working software in short cycles
- Key Activities: Coding, version control, agile sprints
- Outcome: Functional software modules
5. Testing and Quality Assurance
Testing and QA ensures the software meets requirements and is free of defects.
- Purpose: Validate functionality, performance, and security
- Key Activities: Unit tests, integration tests, bug tracking
- Outcome: Verified and validated software
6. Deployment
Deployment involves releasing the software to users or production environments.
- Purpose: Make the software available for use
- Key Activities: Release planning, environment setup, rollout
- Outcome: Live software system
7. Operations and Maintenance
Operations and Maintenance includes monitoring, support, and updates post-deployment.
- Purpose: Ensure long-term stability and performance
- Key Activities: Bug fixes, updates, user support
- Outcome: Sustained software reliability and improvement