Table of Contents
Given your background, combining the responsibilities and skills from both job descriptions to create comprehensive projects in your homelab would be an excellent approach. This will allow you to build on your existing projects while aligning them closely with the expectations for both Site Reliability Engineer (SRE) and Network Reliability Engineer (NRE) roles. Here are some project ideas that integrate the key aspects of both roles, along with expansions on your existing projects documented in your personal wiki:
Enhanced CI/CD Pipeline with Network Reliability
Project: Comprehensive CI/CD Pipeline with Integrated Network Monitoring and Automation
Existing Projects to Expand: Your current CI/CD pipeline setup and any network monitoring projects.
Goals:
- Develop a robust CI/CD pipeline using Jenkins or GitHub Actions.
- Integrate network monitoring tools like Prometheus, Grafana, and Loki.
- Automate network configuration and management using Ansible or SaltStack.
- Define SLOs (Service Level Objectives) for network and application performance.
- Implement network observability to monitor latency, packet loss, and throughput.
Learning Outcomes: Gain experience in CI/CD tools, network monitoring, automation, and defining performance metrics.
Step-by-Step Implementation
Step 1: Configuración Inicial
- Configura tu entorno local:
- Asegúrate de tener `git` y `composer` instalados en tu máquina.
- Clona el repositorio forkeado de PicoCMS:
git clone https://github.com/<YOUR_USERNAME>/<YOUR_REPOSITORY> pico
cd pico
- Instala las dependencias:
curl -sSL https://getcomposer.org/installer | php
php composer.phar install
- Configura tu servidor web:
- Accede a tu servidor web y navega al directorio de instalación:
cd /var/www/html
- Clona tu repositorio en el servidor:
git clone https://github.com/<YOUR_USERNAME>/<YOUR_REPOSITORY> pico
cd pico
php composer.phar install
Step 2: Configuración de GitHub Actions para CI/CD
- Crea un archivo de workflow en GitHub Actions:
- En tu repositorio de GitHub, crea el directorio `.github/workflows` si no existe.
- Dentro de este directorio, crea un archivo `ci-cd.yml` (o como prefieras llamarlo).
- Define el workflow de GitHub Actions:
- Abre el archivo `ci-cd.yml` y define tu workflow. Aquí tienes un ejemplo básico:
name: CI/CD Pipeline
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Set up PHP
uses: shivammathur/setup-php@v2
with:
php-version: '7.4' # Cambia a la versión de PHP que uses
- name: Install Composer dependencies
run: composer install
- name: Deploy to server
env:
DEPLOY_KEY: ${{ secrets.DEPLOY_KEY }}
run: |
ssh -o StrictHostKeyChecking=no -i $DEPLOY_KEY user@your_server "cd /var/www/html/pico && git pull && php composer.phar update"
Step 3: Configuración de Deploy Key
- Genera una llave SSH para despliegue:
- En tu máquina local, genera una nueva llave SSH sin passphrase:
ssh-keygen -t rsa -b 4096 -C "deploy-key" -f deploy_key
- Copia la llave pública al servidor:
ssh-copy-id -i deploy_key.pub user@your_server
- Configura la llave privada como secreto en GitHub:
- Ve a la configuración de tu repositorio en GitHub.
- Navega a “Secrets” y añade un nuevo secreto llamado `DEPLOY_KEY`, pegando el contenido de `deploy_key` (la llave privada).
Step 4: Pruebas y Ajustes
- Realiza un commit y push para probar el workflow:
- Haz cambios en tu repositorio local y sube los cambios:
git add . git commit -m "Setup CI/CD pipeline" git push origin main
- Monitorea la ejecución en GitHub Actions:
- Ve a la pestaña “Actions” en tu repositorio de GitHub y revisa el progreso del workflow.
- Asegúrate de que el pipeline se ejecute correctamente y despliegue los cambios al servidor.
Step 5: Integración de Herramientas de Monitoreo y Automatización
- Configura Prometheus y Grafana:
- Instala y configura Prometheus y Grafana en tu servidor para monitorizar métricas.
- Añade los exportadores necesarios para monitorizar tu aplicación web y red.
- Automatiza configuraciones de red con Ansible:
- Crea playbooks de Ansible para automatizar tareas de configuración y despliegue de la red.
- Integra estos playbooks en tu pipeline de GitHub Actions.
Step 6: Definición de SLOs
- Define SLOs para tu aplicación:
- Establece objetivos de nivel de servicio para la latencia, pérdida de paquetes y throughput.
- Configura alertas en Prometheus y Grafana basadas en estos SLOs.
Distributed Ceph Storage Cluster with High Availability and Performance Tuning
Project: Highly Available Ceph Storage Cluster with Performance Monitoring
Existing Projects to Expand: Your Ceph storage setup.
Goals:
- Build a small-scale, highly available Ceph cluster.
- Use tools like FIO to benchmark storage performance and tune Ceph, the Linux kernel, and server hardware.
- Automate the deployment and scaling of the Ceph cluster with Ansible or Terraform.
- Monitor and visualize storage performance metrics using Prometheus and Grafana.
- Collaborate with the open-source community by contributing to Ceph documentation or codebase.
Learning Outcomes: Develop skills in distributed storage, performance tuning, automation, and open-source collaboration.
Automated Microservices Deployment with Advanced Networking
Project: Deploy and Manage Microservices with Advanced Networking Capabilities
Existing Projects to Expand: Your container orchestration and microservices deployment setups.
Goals:
- Deploy a microservices-based application using Docker and Kubernetes.
- Implement advanced networking configurations such as network policies, ACLs, and routing protocols.
- Automate deployment and management processes using Jenkins, Ansible, and Terraform.
- Integrate observability tools like Prometheus, Grafana, and ELK for comprehensive monitoring.
- Develop scripts and tools using Python, Bash, or Go to enhance deployment workflows and network reliability.
Learning Outcomes: Deepen your understanding of microservices, advanced networking, CI/CD, and observability.
Network Performance and Reliability Testing Lab
Project: Build a Network Performance and Reliability Testing Environment
Existing Projects to Expand: Any network troubleshooting or monitoring projects.
Goals:
- Create a simulated environment for testing network performance and reliability.
- Use tools like tcpdump, iostat, strace, iftop, netstat, and iotop to troubleshoot and resolve network issues.
- Define and measure key performance indicators (KPIs) such as latency, jitter, packet loss, and throughput.
- Automate testing scenarios and result collection with Python or Bash scripts.
- Document and analyze test results to identify and address bottlenecks.
Learning Outcomes: Enhance your skills in network troubleshooting, performance testing, and automation.
Contribute to Open-Source Networking Projects
Project: Engage with Open-Source Networking Software and Communities
Existing Projects to Expand: Any contributions you’ve made to open-source projects.
Goals:
- Identify and contribute to an open-source networking project (e.g., Open vSwitch, FRRouting).
- Develop features or fix bugs in the codebase, collaborating with the community.
- Write and improve documentation for the project.
- Share your experiences and contributions through blog posts or presentations.
Learning Outcomes: Experience with open-source software development, community engagement, and collaborative coding.
Combining Projects into a Comprehensive Learning Path
1. Start with the CI/CD Pipeline Project:
- Set up the basic pipeline and integrate network monitoring tools.
2. Build the Ceph Storage Cluster:
- Focus on automation and performance tuning.
3. Expand to Microservices Deployment:
- Incorporate advanced networking and observability tools.
4. Develop the Network Testing Lab:
- Simulate and troubleshoot network performance issues.
5. Engage with Open-Source Communities:
- Contribute to networking projects and share your findings.
Each of these projects builds on the previous one, creating a comprehensive and interconnected learning experience. This approach will help you develop a broad and deep skill set relevant to both SRE and NRE roles at a company like Akamai.
