Introducción
a la codificación y APIs
Esta información está tomada de: https://developer.cisco.com/learning/
Paso 1: La propuesta de valor:
¿Por qué los
ingenieros y técnicos deben aprender a codificar?
Aprender a codificar y trabajar con infraestructuras
programables requerirá una inversión de su tiempo. Usted comienza poco a
poco y ve rendimientos iniciales e incrementales en sus inversiones. Al
comenzar este viaje, tomemos un momento para comprender el valor de la
inversión que está haciendo.
El valor de usar APIs
Tienes una infraestructura llena de productos; diseñado
para ser usado por ti y tu como operador, estás acostumbrado a usar interfaces
de línea de comandos (CLI) y las interfaces web o GUI, para realizar las
configuraciones de los equipos. Lo que significa que cuando se necesita hacer
algo a través de estas interfaces, tu u otra persona tiene que hacer el
trabajo.
No tendrá que volver a pensar demasiado para recordar la
última vez que necesitó completar una tarea masiva en una
computadora. La tarea probablemente involucró mucho hacer clic, escribir,
copiar y pegar, u otras repeticiones para adormecer la mente.
Estas interfaces y el paradigma de hacer que los humanos
hagan el trabajo, tienen la culpa del trabajo general que a veces tenemos que
hacer para completar una tarea.
Las computadoras son excelentes para el trabajo a granel,
pero si desea que su computadora portátil hable con su infraestructura para que
le ayude, necesitará una interfaz
de máquina a máquina o API (Interfaz
de programación de aplicaciones); una interfaz diseñada para la
interacción informática.
Utilizamos estas API de máquina a máquina para realizar
solicitudes simples de nuestra infraestructura, que, en conjunto, nos permiten
completar tareas poderosas.
Usando APIs para hacer solicitudes simples como ...
- Obtener
el estado de la interfaz X
- Obtenga
el último cambio de tiempo para la interfaz X
- Interfaz de apagado X
- Configure
la descripción de la interfaz X en "Interfaz deshabilitada según la
política"
... le permite completar una tarea poderosa como:
"Desactivar todos los puertos que han estado
inactivos durante 30 días".
Claro, puedes hacer esto manualmente, pero ¿no sería
mejor codificar el proceso (escribirlo una vez) y luego dejar
que tu computadora ejecute esta tarea cada vez que lo necesites?
Las API modernas le facilitan la realización de
solicitudes de sus aplicaciones e infraestructura.
Si necesita alguna información, solicítela. ¿Quieres
algo hecho? Haga la solicitud. El uso de una API de máquina a máquina
significa que su solicitud se completará, se recuperarán sus datos o recibirá
una notificación de lo contrario, todo se realiza de una manera que le permite
automatizar la interacción.
De acuerdo, las API me facilitan las solicitudes de mi
infraestructura, pero ¿qué me facilita la codificación de mis procesos?
La propuesta de valor para la programabilidad.
La codificación es el proceso de escribir instrucciones,
en un lenguaje que una computadora puede entender, para completar una tarea
específica.
Q: ¿Qué tarea?
A: Tu tarea.
Por ejemplo, aquí hay un código de ejemplo que podría
completar la tarea "Deshabilitar todos los puertos que han estado
inactivos durante 30 días":
Es posible que no entiendas la sintaxis del idioma (aun
así, no te preocupes, te enseñaremos), pero esperamos que puedas ver el
sencillo proceso codificado que le pedimos a la computadora que siga:
- Para
cada switch en mi red ...
- Para
cada interfaz en el switch ...
- Si la
interfaz está inactiva y no ha cambiado de estado en más de treinta días,
entonces:
·
Apaga
la interfaz.
·
Actualizar la descripción de la interfaz.
Este es esencialmente el proceso por el que pasarías como
humano para completar la misma tarea. Al tomarse el tiempo para
codificarlo (escríbalo en un lenguaje interpretable por máquina), ahora puede
pedirle a la computadora que haga la tarea cada vez que la
necesite.
Usted, el ser humano, está
proporcionando la inteligencia: qué debe hacerse y cómo
debe hacerse, mientras deja que la computadora haga el trabajo aburrido y
repetitivo.
Eso suena genial, pero los lenguajes de programación no
son tan simples como lo que se muestra arriba.
Si bien el ejemplo de código anterior es un fragmento de
un script más grande y está llamando a otras funciones (como interface.last_change() y interface.shutdown()), la
implementación de las funciones de utilidad es sencilla y el código que se
muestra es un código de Python válido real
que completaría la tarea. La lógica central es así de simple.
Paso 2: ¿Qué cambió?
Las API y los lenguajes de programación no son nuevos,
entonces, ¿por qué el bombo reciente?
¡Han madurado!
Lenguajes de programación modernos y herramientas.
Los lenguajes de programación modernos como JavaScript,
Python, Go, Swift y otros son menos complicados y más flexibles que sus
predecesores. Antes tenías que escribir 10.000 líneas de código C ++ para
hacer algo útil, pero con estos idiomas modernos (y paquetes y bibliotecas
disponibles en sus comunidades de desarrolladores) puedes hacer cosas poderosas
en menos de 300 líneas de código. La cual es probablemente más corta, o a
la par, con la mayoría de las configuraciones de Cisco IOS con las que ha
trabajado.
Estos lenguajes, cuando se combinan con otras
herramientas de desarrollo modernas como:
- Repositorios git
- Sistemas de gestión de
paquetes
- Entornos virtuales
- Entornos
integrados de desarrollo (IDE)
Equiparlo con potentes herramientas de desarrollo que
le permiten automatizar sus tareas y procesos y comenzar a crear su propio
conjunto de herramientas y flujos de trabajo poderosos.
Si bien estas herramientas son excelentes y ahora están
aportando un gran valor a la disciplina de ingeniería de sistemas, también nos
estamos beneficiando de otra área de maduración de la industria de desarrollo
de software.
Comunidades online
En el pasado, cuando se proponía crear un script o
programa, a menudo tenía que comenzar "desde cero", trabajando con
bibliotecas estándar de bajo nivel incluidas con su lenguaje de programación y
el conjunto de herramientas de su elección. Esto creó una alta barrera de
entrada (y una repetición global masiva) ya que los desarrolladores de software
tuvieron que escribir los mismos módulos de "trabajo pesado" para
realizar tareas comunes. Tomemos, por ejemplo, hacer una solicitud web
HTTPS (tuvieron que escribir código para):
- Abra
una conexión TCP en el puerto 443
- Manejar
certificados de negociación e intercambio TLS.
- Validar los certificados
- Administrar
la conexión TCP (y cualquier agrupación de conexiones)
- Formato de solicitudes
HTTP
- Interpretar las
respuestas HTTP
Eso es mucho trabajo cuando todo lo que
el desarrollador quería hacer era obtener o enviar algunos datos hacia o desde
algún servidor remoto; es por esto que los ingenieros dejamos este trabajo
a los desarrolladores de software.
Ahora, gracias a la comunidad de código abierto, los
sitios de colaboración y el código social como GitHub y los
repositorios de paquetes públicos, las comunidades de desarrolladores en torno
a estos nuevos lenguajes de programación modernos están creando y compartiendo bibliotecas de software de código
abierto que ayudan a fomentar la reutilización y reducir el trabajo duplicado.
. Aprovechar estas bibliotecas creadas por la comunidad puede ahorrarle
enormes cantidades de tiempo y esfuerzo, y le permite concentrar su tiempo y
esfuerzo en lo que quiere que haga su código: agilizando su proceso.
Puede realizar una solicitud HTTPS, sin mucha inversión
personal, debido al trabajo realizado por estas comunidades en línea:
Lo que estás viendo aquí:
- Instalamos
una biblioteca comunitaria desde un repositorio de paquetes públicos.
pip install
requests
- Entramos
en una shell interactiva de Python.
Python
- Importamos
la biblioteca en nuestro código Python.
import requests
- Hicimos
una solicitud de HTTPS a https://api.github.com .
requests.get("https://api.github.com")
Que tuvo
éxito.
<Response
[200]>
Comenzando con la instalación del paquete de request en
nuestra máquina: en cuatro líneas mecanografiadas en un terminal, pudimos
descargar e instalar el paquete y usarlo para realizar una solicitud HTTPS (sin
tener que pensar en los pasos necesarios para realizar la solicitud HTTPS) .
Ahora que los lenguajes y las herramientas han
evolucionado para ser útiles para los ingenieros de infraestructura, veamos
cómo es más fácil trabajar con las API.
Madurez API
Se acabaron los días en los que un programador experto
trabajó con la API de un producto. Los estándares API anteriores,
como SOAP, demostraron que no son tan "simples" y
que los modelos API más fáciles de usar, como las API RESTful, han tomado
su lugar.
Ahora, gracias a las API
RESTful y los formatos de datos estandarizados como JSON (más adelante los trataremos más detalladamente),
puede realizar solicitudes de su infraestructura con la misma facilidad que
estos lenguajes de programación modernos proporcionan:
Nota:
Al ejecutar este código, verá que InsecureRequestWarning sucede cuando se realiza una
solicitud a una URL de HTTPS sin la verificación de certificado habilitada (no
se muestra por razones de brevedad).
Si eres nuevo en la codificación y Python, y es por eso
que estás aquí, esto puede parecer un poco intimidante; pero no se
preocupe, al final de esta pista comprenderá todo lo que está sucediendo aquí y
mucho más. Por ahora, basta con decir:
- En cuatro
sentencias (import requests través
de response = requests.get(...))
extrajimos los detalles de la interfaz de un router.
- En una
sentencia (interfaces = response.json()),
analizamos los datos en un formato que podemos usar.
- Entonces
podemos usar esos datos para hacer lo que necesitemos.
¡Fácil! Al aprender las habilidades
fundamentales que se enseñan en este módulo, estará en el buen camino para
utilizar estas poderosas herramientas para automatizar y crear sus propias
herramientas programables con sus propios procesos codificados.
Las API y los lenguajes de programación han evolucionado
y madurado hasta el punto de ser útiles y aplicables a los dominios de los
ingenieros de infraestructura.
El efecto neto es que puedes hacer cosas poderosas con
cantidades de código relativamente pequeñas; y al
hacerlo, puede automatizar las partes repetitivas y / o laboriosas de su
trabajo, liberándolo para concentrar su tiempo y esfuerzo en las tareas que
merecen su intelecto.
Paso 3: tu futuro puesto de trabajo
P: Si paso por este viaje, ¿tendré que convertirme en un desarrollador
de software?
R: No. Te convertirás en un ingeniero o técnico más capaz.
R: No. Te convertirás en un ingeniero o técnico más capaz.
A medida que los ingenieros comienzan a invertir en
aprender lenguajes de programación y cómo usar herramientas de desarrollo de
software, pueden tener un poco de crisis de identidad a medida que comienzan a
hacerse preguntas como:
- Soy un
ingeniero astuto, pero ¿por qué no puedo ejecutar mi código?
- ¿Son
estas las habilidades que los empleadores van a valorar?
- Me
gusta diseñar, configurar y operar redes, ¿estoy dejando eso atrás para
comenzar a escribir código?
- Esto
puede ser frustrante a veces; ¿No es por eso que cambio mi
especialidad universitaria de Ciencias de la Computación a Historia del
Arte?
- ¡¿¡Qué estoy haciendo!?!
No te preocupes, todos los que han comenzado este
viaje experimentan los mismos pensamientos y preguntas. Permítanme
proporcionar algunas garantías a estas preguntas e inquietudes:
- La
codificación puede ser nueva para usted, pero si usted es un profesional
que trabaja con infraestructuras de Cisco, ya es un recurso técnico
importante.
- La
última vez que comenzó a trabajar con una nueva pieza de tecnología
sofisticada, ¿funcionó a la perfección y sin esfuerzo la primera vez que
la tocó? Sí, esto va a llevar algo de tiempo de inversión también.
- Los
empleadores valoran la experiencia que aporta para poder diseñar,
implementar y operar infraestructuras y aplicaciones de TI. Aprender
a codificar, automatizar tareas rutinarias y crear interconexiones entre
sistemas de TI lo convertirá en un recurso aún más valioso.
- Toda
la tecnología puede, a veces, ser frustrante. A medida que su
competencia con esta nueva tecnología progrese, su frustración disminuirá
y su logro aumentará. Trabajar con API y Programabilidad
puede ser gratificante a medida que comienzas a crear cosas e innovar
procesos al combinar estas nuevas habilidades con tus capacidades técnicas
existentes.
Si te metes en esta tecnología y decides que te encanta y
quieres pasar más tiempo desarrollando aplicaciones más complejas y
participando en trabajos de desarrollo de software más tradicionales ... eso
depende de ti.
Para nuestros propósitos, como ingenieros de
infraestructura, deseamos desarrollar nuestras habilidades de codificación y
aprender a usar estas nuevas herramientas de desarrollo para convertirnos
en ingenieros más capaces. Al final de este viaje (¡cierto,
como siempre hay un fin para el aprendizaje!) Aun, seguiremos siendo
ingenieros que trabajan en las disciplinas en las que trabajamos, ahora más
nítidas y más capaces de desplegar y operar infraestructuras más grandes y más
complejas. Porque podemos usar la tecnología para trabajar con la tecnología.
Paso
4: ¿Por qué Python?
Podríamos haber elegido uno de varios lenguajes para esta
tarea, pero elegimos Python. Este es el por qué:
- Aplicabilidad
del dominio: para los ingenieros de redes e infraestructura de
TI, existe una comunidad en línea bien formada de ingenieros de
infraestructura que utilizan Python
para implementar y mantener los sistemas de TI. Esto significa
que puede aprovechar (y contribuir a) el trabajo realizado por esta
comunidad colectiva para ahorrar tiempo (y a otros) mientras todos nos
esforzamos por completar tareas comunes juntos.
Sí, hay ingenieros de infraestructura que usan otros lenguajes,
y esos lenguajes no son de ninguna manera inferiores a Python. Python
parece tener la comunidad más amplia (hasta la fecha) para nuestro dominio.
- Potencia
y flexibilidad: como ya se mencionó, Python es un lenguaje moderno
que introduce la codificación en el rango de nivel de esfuerzo de ser útil
para los ingenieros de infraestructura.
Python es
un lenguaje de "baterías
incluidas" con un ecosistema de desarrolladores rico y diverso. Esto
significa que le servirá bien a medida que progrese en su viaje.
Si su
trabajo lo lleva a necesitar: crear un servicio web de fondo, interactuar con
una base de datos, realizar un análisis de datos, trabajar con algoritmos de
aprendizaje automático o crear una herramienta de línea de comandos simple (o
potente), Python y su comunidad de desarrolladores tienen usted
cubierto No debería tener que "empezar de cero", y debería poder
realizar tareas poderosas con una inversión de esfuerzo razonable.
- Flexibilidad
de la plataforma: sus scripts de Python pueden ejecutarse: en una
computadora (Windows, macOS o Linux), en un servidor, en una máquina
virtual, en un contenedor, en la nube y en algunos dispositivos Cisco
IOS. Esto significa que puede usar Python para crear scripts que
pueden ejecutarse en una variedad de lugares para satisfacer las
necesidades de su caso de uso.
- Sesgos
de los autores: los autores de este módulo son
expertos de la industria que están del lado de Python. Tenemos etiquetas adhesivas en nuestras computadoras
portátiles, camisetas, perfiles sociales y conexiones emocionales con
nuestro código que nos hacen un poco parciales.
Si todavía estás con nosotros, ¡estás listo para comenzar
a aprender a codificar!