VPC: Virtual Private Cloud, tu datacenter en la nube

Sin lugar a dudas éste es uno de los servicios más importantes de AWS, aunque hay otros también muy importantes, útiles e interesantes. VPC (Virtual Private Cloud) es un servicio que permite construir tu propio datacenter (centro de cómputos, nube privada virtual, etc) en cuestión de minutos, y prácticamente sin costo.

En esta entrada vamos a ver algunos de los conceptos más importantes y necesarios para construir nuestro propio VPC, voy a describir una de las muchisimas arquitecturas posibles que pueden construirse. Estos conceptos y arquitectura de ejemplo nos servirá para, en futuras entradas, ir desarrollando nuevos conceptos y utilizar otros servicios que nos permitirán construir más recursos que depslegaremos sobre esta infraestructura.

Nota: Esta entrada va a ser un poco largo, pero los conceptos son muy importantes para entender el funcionamiento de una VPC y como crear nuevos recuros en ella.

Según la definición de Amazon, VPC permite crear una infraestructura lógicamente aislada en la nube de AWS, lo cual quiere decir que nos permite proveer redes, subredes, tablas de ruteo, firewalls, y muchos otros recursos de red utilizando el direccionamiento IP que elijamos, de manera totalmente arbitraria, como si tuviesemos un datacenter para nosotros y sin que nadie nos moleste. ¡Fantástico!

Veamos otros dos conceptos que importan mucho a la hora de definir nuestra VPC, Regiones y AZ (Availability Zone). Amazon posee una infraestructura gigantes con presencia en todas partes del mundo. Cada una de éstas áreas geograficas donde AWS tiene presencia es una región, la cual contiene varios datacenters, separados por varios kilometros. Estos datacenters son Availability Zones (AZs). Nuevas regiones y AZs se agregan frecuentemente. La lista actualizada se encuentra aqui. Mientras escribo esto(Enero, 2019) hay 21 regiones y y 61 AZs con presencia en Canada, EEUU, Asia Pacific, China, Europa, America del Sur y otras cuatro regiones estan listadas como próximamente disponibles.

Cuando creamos la cuenta de AWS, ésta nos provee con una VPC, llamada Default VPC, que es bastante útil para cuando no tenemos grandes pretenciones, pero si nos queremos poner un poco más serios, deberíamos definir nuestra propia VPC. Si bien el SLA (Service License Agreement) que provee Amazon es muy bueno, ningún servicio es infalible y debemos tener un diseño a prueba de fallos, para lo cual Amazon recomienda desplegar los servicios en al menos dos AZs.

La felixibilidad que éste servicio nos provee para crear nuestra infraestructura es muy amplia y nos permite crear casi cualquier arquitectura que podamos necesitar. Para trabajar sobre algo más concreto, vamos a ver una, de las virtualmente infinitas posibilidades.

Arquitectura de la VPC

El diagrama muestra nuestra VPC, el rectángulo exterior anaranjado, las subredes, tablas de ruteo e internet gateway. Es importante notar que hay cuatro subredes, distribuidas en dos AZs. Como mencioné anteriormente, ni AWS es infalible y siempre es recomendable desplegar los servicios en multiples AZs.

La primer gran decisión al momento de crear la VPC es el esquema de direcciones IP que vamos a utilizar. Debemos tener en cuenta que las bloques de direcciones (CIDR blocks - Classless Inter-Domain Routing) no deben solaparse entre las distintas subredes, si queremos evitar futuros problemas. La herramienta cidr.xyz es muy buena para asignar los rangos de direcciones IP sin equivocarnos.

En cada AZ se muestran dos subredes, una pública y una privada. Las subredes públicas tiene como cometido tener todos aquellos recursos que van a ser accesibles desde Internet, mientras que las subredes privadas tienen aquellos recursos que no lo son. En AWS no hay diferencia entre éstas subredes, la diferencia la hacemos con las tablas de ruteo que creamos. Las subredes públicas tendrán una entrada en la tabla de ruteo para para permitir el acceso a Internet (desde y hacia) a través del Internet Gateway.

Veamos algunos de los recursos que estamos utilizando:

Internet Gateway: Es un componente redundante, escalable y altamente disponible que permite la comunicación entre instancias de la VPC e Internet. Y como casi todo en este mágico mundo de AWS, no impone restricciones de ancho de banda en el tráfico. Tiene dos propósitos principales, es destino en la tabla de ruteo de la VPC para el tráfico hacia internet y realiza NAT para aquellas instancias que tengan un IPv4 pública. Es decir, si tus instancias necesitan salida a internet, éste será el gateway que deben utilizar.

Network ACL (Access Control List): Una NACL es un nivel de seguridad opcional en la VPC que actual como un firewall controlando el tráfico que entra y sale de una subred. Es importante notar que es a nivel de subredes.

Security Group: Un security group actua como un firewall a nivel de instancias. Las instancias podrán tener asociados varios security groups para permitir la comunicación a través de los puertos necesarios.

Hasta aqui hemos visto varios conceptos y muy importantes. En futuras entradas vamos a ver como construir estos recursos utilizando Cloud Formation, una fantástica tecnología de AWS que nos permite desplegar un datacenter completo, con todos sus recursos en cuestion de minutos.