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
git add .
git commit -m "Setup CI/CD pipeline"
git push origin main
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.
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.
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:
2. Build the Ceph Storage Cluster:
3. Expand to Microservices Deployment:
4. Develop the Network Testing Lab:
5. Engage with Open-Source Communities:
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.