├── .gitignore ├── Glossary ├── aws-resources.md └── images │ ├── alb-icon.svg │ ├── api-gateway-icon.svg │ ├── auto-scaling-icon.svg │ ├── cli-icon.svg │ ├── cloudfront-icon.svg │ ├── create_sg.png │ ├── direct-connect-icon.svg │ ├── dynamo-icon.svg │ ├── ec2-icon.svg │ ├── elb-icon.svg │ ├── igw-icon.svg │ ├── nacl-icon.svg │ ├── nat-icon.svg │ ├── nlb-icon.svg │ ├── route53-icon.svg │ ├── router-icon.svg │ ├── transit-gateway-icon.svg │ ├── vpc-icon.svg │ └── vpc-peering-icon.svg ├── README.md ├── part-1 ├── cloud-networking.pdf └── intro-key-concepts.md ├── part-2 ├── 2.1_setting_up_vpc_and_subnets.md ├── 2.2_setting_up_your_load_balancer.md ├── 2.3_deploying_webservers.md ├── 2.4_clean_up.md ├── 2022-images │ ├── 1-vpc-subnets.png │ ├── 2-route-tables.png │ ├── 3-elb-network-diagram.png │ ├── 3.2 │ │ ├── select-security-groups.png │ │ └── success.png │ ├── 3.3 │ │ ├── edit-network-settings-btn.png │ │ ├── elb-dns-name.png │ │ ├── load-balancer-instance-tab.png │ │ ├── select-private-servers.png │ │ └── select-public instance.png │ ├── 4-ping-webservers.png │ ├── attach-igw-vpc.png │ ├── attach-igw.png │ ├── create-key-pair.png │ ├── create-load-balancer.png │ ├── create-natgw.png │ ├── create-sg.png │ ├── create-subnet.png │ ├── create-vpc.png │ ├── edit-route-table-name.png │ ├── edit-subnet-assoc.png │ ├── iam-menu.png │ ├── iam-role-details-1.png │ ├── iam-role-details-2.png │ ├── iam-role-details-3.png │ ├── igw-detached.png │ ├── igw-details.png │ ├── igw-routes.png │ ├── jumpbox-running.png │ ├── natgw-public-details.png │ ├── natgw-routes.png │ ├── network-settings.png │ ├── public-route-table-add-route.png │ ├── region-select.png │ ├── route-table-details-public.png │ ├── route-table-internet-gateway.png │ ├── route-tables.png │ ├── select-elb-subnet.png │ ├── select-elb-vpc.png │ ├── select-ssm-iam-role.png │ ├── select-your-vpc.png │ ├── sg-details.png │ ├── sg-inbound-rules.png │ ├── start-session-jumpbox.png │ ├── vpc-details.png │ └── web-servers-running.png └── images │ ├── 1-region.png │ ├── 10-subnet-association.png │ ├── 11-associated-subnet.png │ ├── 12-change-sg.png │ ├── 13-select-sg.png │ ├── 2-create-vpc.png │ ├── 3-subnet-creation.png │ ├── 3.2.1-launch-instance.png │ ├── 3.2.10-select-subnet-private.png │ ├── 3.2.11-default-sg.png │ ├── 3.2.12-create-keypair.png │ ├── 3.2.13-create-role.png │ ├── 3.2.14-attach-permission.png │ ├── 3.2.15-review-role.png │ ├── 3.2.16-start-session.png │ ├── 3.2.2-select-ami.png │ ├── 3.2.3-select-insance-type.png │ ├── 3.2.4-select-vpc.png │ ├── 3.2.5-select-subnet.png │ ├── 3.2.6-select-iam.png │ ├── 3.2.7-create-sg.png │ ├── 3.2.8-launch.png │ ├── 3.2.9-without-keypair.png │ ├── 4-auto-assign-ip.png │ ├── 5-enable-auto-assign-ip.png │ ├── 6-igw-detached.png │ ├── 7-public-route-table.png │ ├── 8-2-route-tables.png │ ├── 9-public-route-to-internet.png │ ├── NAT.png │ ├── allocate_instances_elb.png │ ├── classic_lb.png │ ├── create_lb.png │ ├── create_natg.png │ ├── delete_VPC.png │ ├── deploy_webservers.png │ ├── edit_rules.png │ ├── elb_dns_name.png │ ├── elb_network_diagram.png │ ├── final_vpc_image.png │ ├── https_elb.png │ ├── lb_health_check.png │ ├── lb_public_subnet.png │ ├── lb_vpc.png │ ├── lb_warning.png │ ├── nat_gateway_done.png │ ├── ping_webservers.png │ ├── review_create_lb.png │ ├── route_tables_igw.png │ ├── services_elb.png │ ├── ssh_your_ip.png │ ├── subnet_eni.png │ ├── vpc_subnets.png │ ├── webserver_response.png │ └── webserver_sg.png └── whiteboarding-mini-session ├── images ├── block_letters.jpg ├── database.jpg ├── end_user.jpg ├── internet.jpg ├── lambda.jpg ├── secure_padlock.jpg ├── spacing_techstack.jpg └── tools.jpg └── whiteboarding_basics.md /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | *.DS_Store -------------------------------------------------------------------------------- /Glossary/aws-resources.md: -------------------------------------------------------------------------------- 1 | # AWS Resources Used in Cloud Networking 2 | 3 | Descriptions and Examples for the following AWS Resources: 4 | 5 | - Virtual Private Cloud (VPC) 6 | - CIDR Range 7 | - Subnets 8 | - Internet Gateway (IGW) 9 | - NAT Gateway 10 | - Direct Connect/VPN 11 | - VPC Peering 12 | - Route Table 13 | - Network Access Control List (NACL) 14 | 15 | 16 | 17 |
What is a VPC?

18 | 19 | ### VPC: 20 | ![VPC](images/vpc-icon.svg) 21 | - Virtual Private Cloud 22 | - Create a virtual networking environment 23 | - Isolated section of your AWS services - keeps your stuff contained 24 | 25 | It’s customisable: 26 | - Private and public access (depending on what you’re architecting) 27 | - IP ranges 28 | - Security controls - NACL 29 | - Connect to on premises infra via VPN/Direct connect - hybrid cloud 30 | - Route Table 31 | - Connect it to the internet or on premises infra 32 | - NAT gateway - bastion/jumpbox 33 | - VPC Peering (no transitive peering, you have to be explicit) 34 | 35 | Your VPC sits inside a Region. Subnets sit inside a VPC. 36 | 37 | NOTE: Your free AWS account comes with a default VPC and we’re going to create a custom VPC. 38 | 39 |

40 | 41 | 42 |
What is a CIDR Range?

43 | 44 | ### CIDR: 45 | 46 | CIDR stand for Classless Inter-Domain Routing 47 | 48 | CIDR is a shorthand method for representing a range of IP addresses. 49 | 50 | Here are some examples of IP Addresses: 51 | 52 | - 192.168.0.4 53 | - 13.34.16.191 54 | 55 | Here are some examples of CIDR Numbers: 56 | 57 | - 127.0.0.0/24 means the same as 127.0.0/24 and means from to 127.0.0.0 to 127.0.0.255 58 | - 14.0.0.0/8 means the same as 14/8 and means from to 14.0.0.0 to 14.255.255.255 59 | 60 | CIDRs look very much like IP Addresses but they _are not the same thing_. 61 | 62 | #### How does 14/8 mean 14.0.0.0 to 14.255.255.255? 63 | 64 | An IP number is made up of 32 'bits' in binary. What 32/8 means is: 65 | 66 | - the first 8 bits are fixed (in this case, the _14_). 67 | - the remaining 24 bits (32 minus 8) will be variable (in this case the last three sets of numbers, which can all be 0,1,2,3,.... up to 255). 68 | 69 | #### How does 127.0.0.0/24 mean 127.0.0.0 to 127.0.0.255? 70 | 71 | Similar to the above: 72 | 73 | - the first 24 bits are fixed (in this case, the _127.0.0_). 74 | - the remaining 8 bits (32 minus 24) will be variable (in this case the last single set of numbers, which can 0,1,2,3,.... up to 255). 75 | 76 |

77 | 78 |
What are Subnets?

79 | 80 | Pending Input 81 | 82 |

83 | 84 |
What is an Internet Gateway?

85 | 86 | ![IGW](images/igw-icon.svg) 87 | 88 | 89 | Pending Input 90 | 91 |

92 | 93 |
What is a NAT Gateway?

94 | 95 | ![NAT](images/nat-icon.svg) 96 | 97 | Pending Input 98 | 99 |

100 | 101 |
What is a Direct Connect/VPN?

102 | 103 | ![DirectConnect](images/direct-connect-icon.svg) 104 | 105 | Pending Input 106 | 107 |

108 | 109 |
What is VPC Peering?

110 | 111 | ![Peering](images/vpc-peering-icon.svg) 112 | 113 | Pending Input 114 | 115 |

116 | 117 |
What is a Route Table?

118 | 119 | ![Router](images/router-icon.svg) 120 | 121 | Pending Input 122 | 123 |

124 | 125 |
What is a NACL?

126 | 127 | ![NACL](images/nacl-icon.svg) 128 | 129 | Pending Input 130 | 131 |

132 | 133 | 134 | 135 | 136 | -------------------------------------------------------------------------------- /Glossary/images/alb-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Glossary/images/api-gateway-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Glossary/images/auto-scaling-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Glossary/images/cli-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Glossary/images/cloudfront-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Glossary/images/create_sg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/Glossary/images/create_sg.png -------------------------------------------------------------------------------- /Glossary/images/direct-connect-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Glossary/images/dynamo-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Glossary/images/ec2-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Glossary/images/elb-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Glossary/images/igw-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Glossary/images/nacl-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Glossary/images/nat-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Glossary/images/nlb-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Glossary/images/route53-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Glossary/images/router-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Glossary/images/transit-gateway-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Glossary/images/vpc-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Glossary/images/vpc-peering-icon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # DevOps-Represent-Cloud-Networking 2 | 3 | DevOps Represent with the massive support from SEEK are hosting a day-long bootcamp to explore Cloud Networking in AWS! 4 | 5 |
Who would benefit from this bootcamp?

6 | 7 | - People in tech using AWS who want to understand more about how apps are architected at the network level 8 | - Anyone planning to sit an associate level AWS exam who'd like more understanding of VPCs, subnets, route tables etc 9 | - Aspiring cloud architects who are looking for a basic introduction 10 |

11 | 12 |
What will we be covering in 1 day?

13 | 14 | - High level introduction of cloud networking 15 | - Introduction to AWS resources such as VPCs, subnets, internet gateways, route tables etc 16 | - Creating/configuring AWS resources via the console for hosting a basic web app with a database 17 | - Introduction and practicing the art of whiteboarding cloud architecture 18 | - Wrap up/Rehash 19 |

20 | 21 |
What we won't be covering

22 | 23 | - This will not be covering AWS cloud 101 topics, see our previous bootcamp content for this 24 | - This will not be teaching you programming languages - code will be provided where needed 25 |

26 | 27 |
How will you be learning?

28 | 29 | The day will be a mix of theoretical, hands-on, collaboration, whiteboarding and solo work. 30 |

31 | 32 |
What will you need?

33 | 34 | 35 | - A laptop 36 | - Access to an AWS account with Admin Privileges (Required before the bootcamp, we will not be covering this, but we can help you via slack if you get stuck - Instructions on this HERE) 37 |

38 | -------------------------------------------------------------------------------- /part-1/cloud-networking.pdf: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:76d25b8c98894326816e98ab5e4dc3309317d0948bdd59de274a5cabdf07b5bf 3 | size 24321951 4 | -------------------------------------------------------------------------------- /part-1/intro-key-concepts.md: -------------------------------------------------------------------------------- 1 | # Intro and Key Concepts 2 | 3 | Together, lets go through our introduction slides! 4 | 5 | [Link to introduction slides](https://www.canva.com/design/DAFJXR6ioO0/2j49UbDuL62WfMPaTeStjg/view#1) 6 | 7 | Alternatively, you can open the [PDF Version](part-1/cloud-networking.pdf). -------------------------------------------------------------------------------- /part-2/2.1_setting_up_vpc_and_subnets.md: -------------------------------------------------------------------------------- 1 | 2 | # Session 1 - Basic VPC Set-Up 3 | 4 | By the end of this session you'll have: 5 | 1. Virtual Private Cloud (VPC) 6 | 2. Private Subnet 7 | 3. Public Subnet 8 | 4. NAT Gateway 9 | 5. Route Table 10 | 6. Internet Gateway (IGW) 11 | 7. Security Group 12 | 8. IAM Role for your SSM Agent 13 | 14 | ### Virtual Private Cloud (VPC) 15 | We're going to create a VPC for our webapp. 16 | 17 | Remember to check your Region, we're going to be choosing Sydney (ap-southeast-2) 18 | 19 | ![Sydney Region](2022-images/region-select.png) 20 | 21 | 22 | 1. From the console go to Services > Networking and Content Delivery > VPC (or just search 'VPC' from Services) 23 | 2. From the left, go to Your VPC's > Create VPC 24 | 25 | ![create VPC](2022-images/create-vpc.png) 26 | 27 | 3. Fill in the fields > Create: 28 | - Name tag: __cloud-networking-bootcamp__ 29 | - IPv4 CIDR block: __10.0.0.0/16__ 30 | 31 | ![VPC details](2022-images/vpc-details.png) 32 | 33 | *(The rest are kept as-is)* 34 | 35 | 🌈 woo-hoo! You have created your VPC 🌈 36 | 37 | When you create a VPC, it also creates the following, which we will need to configure: 38 | - Route Table 39 | - Network ACL 40 | - Security Group 41 | 42 | ### Private and Public Subnets 43 | Now that you have your VPC, let's create public (accessible by the internet) and private (for private data) subnets. It's always 1 subnet for 1 AZ in a VPC. 44 | 45 | 1. From the console go to Services > Networking and Content Delivery > VPC > Subnets (or from the left, go to Subnets) > Create Subnet 46 | 47 | ![create subnet](2022-images/create-subnet.png) 48 | 49 | 2. Choose your VPC from the drop down: 50 | 51 | ![choose your VPC](2022-images/select-your-vpc.png) 52 | 53 | 3. Fill in the fields > Create: 54 | - Name tag: __cloud-networking-bootcamp-private__ 55 | - IPv4 CIDR block: __10.0.1.0/24__ 56 | - Availability Zone: __No preference__ 57 | *(To stop one availability zone being overloaded, a, b and c AZ's are different for different accounts - otherwise most things would be deployed into AZ-a)* 58 | 59 | 🔁 Repeat these steps, changing the fields to __cloud-networking-bootcamp-public__ and IPv4 to __10.0.2.0/24__ 60 | 61 | 🌈 woo-hoo! You have created your Public and Private Subnets 🌈 62 | 63 | ![VPC Subnets](2022-images/1-vpc-subnets.png) 64 | 65 | 66 | 67 | ### Internet Gateway (IGW) 68 | Let there be internet! Without an internet gateway, the cool stuff you create isn't accessible from the internet. 69 | 70 | 1. From the console go to Services > Networking and Content Delivery > VPC > Internet Gateways (or from the left, go to Internet Gateways) > Create Internet Gateway 71 | 2. Name tag: __cloud-networking-bootcamp-igw__ 72 | 3. Create 73 | 74 | ![IGW detached](2022-images/igw-details.png) 75 | 76 | 🌈 woo-hoo! You have created your IGW 🌈 77 | 78 | ...but wait, __detached__ ? 79 | 80 | ![IGW detached](2022-images/igw-detached.png) 81 | 82 | To attach our IGW to our VPC: 83 | 1. Select our IGW > Actions > Attach to VPC 84 | 2. Choose our cloud-networking-bootcamp VPC 85 | 3. Attach 86 | 87 | ![IGW detached](2022-images/attach-igw.png) 88 | 89 | ![IGW attach](2022-images/attach-igw-vpc.png) 90 | 91 | NOTE: Only 1 IGW per VPC - so if you're having issues, make sure your VPC isn't already associated with another IWG 92 | 93 | 🌈 woo-hoo! You have attached your IGW to your VPC 🌈 94 | 95 | ### NAT Gateway 96 | 97 | Remember, a Public NAT Gateways gives your private subnet access to the internet (egress). This is a one-way street though, it won't give public access to your private subnet - 🔒 this keeps your private subnet secure. 98 | 99 | __💵 NAT Gateways Cost Money 💵 So, make sure you delete this resource once done! Cost details: https://aws.amazon.com/vpc/pricing/__ 100 | 101 | 102 | 1. From the console go to Services > VPC > NAT Gateways > Create NAT Gateway 103 | 104 | ![Create NGW](2022-images/create-natgw.png) 105 | 106 | 2. Choose your __public__ subnet from the list and Create and ENI 107 | 108 | ![Create NATGW Public Subnet](2022-images/natgw-public-details.png) 109 | 110 | 🌈 woo-hoo! You have created your NAT Gateway 🌈 111 | 112 | ### Route Tables 113 | Time to configure your route table! 114 | 115 | Here's the routes we need to make sure we configure: 116 | - Your Public Subnet routes internet traffic via your Internet Gateway *(Public Route Table)* 117 | - Your Private Subnet routes internet traffic via your NAT Gateway (which then forwards traffic out the Internet Gateway) *(Main or Default Route Table)* 118 | 119 | Configuring your route tables 120 | 1. From the console go to Services > Networking and Content Delivery > VPC > Route Tables (or from the left, go to Route Tables) > Create Route Table 121 | 2. Name tag: __cloud-networking-bootcamp-public__ and select our VPC from the dropdown > Create 122 | ![Create Public RT](2022-images/route-table-details-public.png) 123 | 124 | 125 | Now your should have 2 route tables that look like this... 126 | 127 | ![2 Route Tables](2022-images/route-tables.png) 128 | 129 | 👉🏽 At this point, you can re-name your Main route table to __private route table__ 130 | 131 | ![Edit RT name](2022-images/edit-route-table-name.png) 132 | 133 | 134 | NOTE: Where *Main* is __Yes__ means it is the "main route table", which means anything new defaults to this route table. This means anything to be publicly routeable needs to be explicitly configured this way - this is good! 135 | 136 | 3. Select your __public route table__ > Edit routes > Add route 137 | ![Add Route](2022-images/public-route-table-add-route.png) 138 | 139 | 4. Fill in the fields: 140 | - Destination: 0.0.0.0/0 141 | - Target: Internet Gateway > cloud-networking-bootcamp-igw 142 | 143 | ![Edit RT IGW](2022-images/igw-routes.png) 144 | 145 | 5. Select your __private route table__ > Edit routes > Add route 146 | 6. Fill in the fields: 147 | - Destination: 0.0.0.0/0 148 | - Target: NAT Gateway > __Your NAT Gateway ID__ 149 | 150 | ![Edit RT IGW](2022-images/natgw-routes.png) 151 | 152 | 153 | Now let's associate our __Public Subnet__ with our __Public Route Table__ 154 | 155 | 7. Select your public route table > Subnet Associations tab > Edit subnet associations 156 | 157 | ![Subnet Association](2022-images/edit-subnet-assoc.png) 158 | 159 | 8. Choose your public subnet > Save 160 | 161 | ![Subnet Association](images/11-associated-subnet.png) 162 | 163 | 🔁 Repeat these steps, but it will be your __Private Subnet__ associated with your __Private Route Table__ 164 | 165 | 166 | 🌈 woo-hoo! You have configured your route tables! 🌈 167 | 168 | 169 | ![Phew it's coming together!](2022-images/2-route-tables.png) 170 | 171 | 172 | ### Security Group for your Private Web Server 173 | Now that we have our public and private zones of our VPC set up, we need to look at how we pass information securely between. For example, the load balances will require access to your web servers in the private subnet, but we don't want these web servers directly accessible from the Internet. 174 | 175 | Security Group for a __Private__ web server 176 | 1. From the console go to Services > Networking and Content Delivery > VPC > Security Groups (or from the left, go to Security Groups) > Create Create Security Group 177 | 178 | ![Create SG](2022-images/create-sg.png) 179 | 180 | 181 | 2. Fill in the fields > Create: 182 | 183 | - Security group name: __http_securitygroup__ 184 | - Description: __Allows my ELB to talk to my web server__ 185 | - VPC: __cloud-networking-bootcamp__ 186 | 187 | ![Create SG](2022-images/sg-details.png) 188 | 189 | 190 | 3. Create some rules for your new sg for *Inbound*: 191 | - Protcol: ICMP (allows you to ping a resource) __AND__ HTTP 192 | - Custom: *Your public subnet CIDR range* __10.0.2.0/24__ 193 | __Anything that is associated with this security group can recieve HTTP and ICMP traffic from your public subnet - this is greate for your private webservers that are not directly connected to the internet__ 194 | 195 | ![Create SG](2022-images/sg-inbound-rules.png) 196 | 197 | 198 | ### IAM Role for your SSM Agent 199 | 200 | We're going to create an IAM role to give us SSM access to your EC2 instance. SSM will allow us to remotely access your instance. 201 | __NOTE: we'll be using this role when we launch our EC2 instances in the next part__ 202 | 203 | 1. From the Console, go to Services > Security, Identity, & Compliance > IAM 204 | 205 | ![review role](2022-images/iam-menu.png) 206 | 207 | 2. On the left hand side, Click on Roles > Create role 208 | 3. Select AWS service, then EC2 as the service that will use this role 209 | ![create role](2022-images/iam-role-details-1.png) 210 | 4. Filter the policies by searching for SSM. Select the policy named *AmazonSSMManagedInstanceCore*, then click Next until you reach the review page 211 | ![select ssm policy](2022-images/iam-role-details-2.png) 212 | 5. Name the role *cloud-networking-bootcamp-ssm* and check the correct policy was added, then click *Create role* 213 | ![review role](2022-images/iam-role-details-3.png) 214 | 215 | 🌈 woo-hoo! You have created a IAM role which allows you use SSM to manage your EC2 instances 🌈 216 | 217 | 218 | 219 | ### So what have we created? 220 | By now you'll have: 221 | 1. Virtual Private Cloud (VPC) ✅ 222 | 2. Private Subnet ✅ 223 | 3. Public Subnet ✅ 224 | 4. Route Tables ✅ 225 | 5. Internet Gateway (IGW) ✅ 226 | 6. Security Group ✅ 227 | 7. IAM Role for your SSM Agent ✅ 228 | 229 | Let's revise what we have created using a network diagram! 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | -------------------------------------------------------------------------------- /part-2/2.2_setting_up_your_load_balancer.md: -------------------------------------------------------------------------------- 1 | # Load Balancer 2 | A managed AWS service that distributes traffic to targets you specify 3 | 4 | There are 4 types: 5 | - ALB - HTTP/S (layer 7) 6 | - NLB - TCP, UDP (layer 4) 7 | - GLB - To manage a fleet of third-party virtual appliances that support GENEVE 8 | - ELB -(TCP, SSL/TLS, HTTP, HTTPS (Layer 4 and 7) Basic load balancing for EC2 👈🏿 This is what we're going to work with! 9 | 10 | [Here's the Docs on their differences in more detail](https://aws.amazon.com/elasticloadbalancing/features/#Product_comparisons) 11 | 12 | ![LB Diagram](2022-images/3-elb-network-diagram.png) 13 | 14 | ### Security Group for Load Balancer 15 | The load balancer will need to accept incoming HTTP traffic so that it can forward requests onto your private web servers. 16 | 17 | Security Group for a __Public__ load balancer 18 | 1. From the console go to Services > Networking and Content Delivery > VPC > Security Groups (or from the left, go to Security Groups) > Create Create Security Group 19 | 2. Fill in the fields > Create: 20 | 21 | - Security group name: __http_elb_securitygroup__ 22 | - Description: __Allows my incoming HTTP requests from the internet__ 23 | - VPC: __cloud-networking-bootcamp__ 24 | 25 | 3. Create some rules for your new sg for *Inbound*: 26 | - Protcol: HTTP 27 | - Custom: 0.0.0.0/0 (traffic from anywhere) 28 | 29 | 30 | ### Creating an ELB 31 | 32 | 1. Services > Compute > EC2 > Load Balancers 33 | 34 | ![LB Console](images/services_elb.png) 35 | 36 | 2. Create Load Balancers 37 | 38 | ![LB create](images/create_lb.png) 39 | 40 | 3. Classic Load Balancer > Create 41 | 42 | ![ELB](2022-images/create-load-balancer.png) 43 | 44 | 3.1 Load Balancer Name: __cloud-networking-bootcamp-ELB__ 45 | 3.2 Create LB Inside: __[your VPC you’ve created]__ 46 | 47 | ![LB VPC](2022-images/select-elb-vpc.png) 48 | 49 | 4. Listener Configuration 50 | 51 | Usually, we'd want to use HTTPS to ensure that our traffic is secure. We're not doing this today as we don't have a domain. For any public traffic over the internet, you will want to use HTTPS. 52 | 53 | 4.1 Select Subnets 54 | 55 | Available Subnets > + [your public subnet] 56 | 57 | ![LB Public Subnet](2022-images/select-elb-subnet.png) 58 | 59 | __NOTE: Notice what the console suggests that you have at least 2 instances in 2 AZ’s? We’re going to create these and your load balancer will go between these 2.__ 60 | 61 | 1. Click ‘Next: Assign Security Groups’ 62 | 63 | 2. Choose your __http_elb_securitygroup__ security group 64 | 65 | 3. Click ‘Next: Configure Health Check’ 66 | 67 | Leave the defaults as is! 68 | 69 | __This is the fault tolerance of your load balancer and EC2. If your EC2 is not available to serve traffic within these thresholds, then it would be considered ‘unhealthy’. You can use this threshold for scaling events.__ 70 | 71 | ![LB Public Subnet](images/lb_health_check.png) 72 | 73 | 74 | 9. Click ‘Next: Add EC2 Instances’ 75 | 76 | Don't add anything to this yet 77 | 78 | 10. Click 'Next: Add Tags' > nothing to do here > Click 'Review and Create' 79 | 80 | ![LB Review Create](images/review_create_lb.png) 81 | 82 | 11. Create 83 | 84 | 🌈 Woo hoo! You have created your ELB! 🌈 85 | 86 | -------------------------------------------------------------------------------- /part-2/2.3_deploying_webservers.md: -------------------------------------------------------------------------------- 1 | # Deploying Simple Webservers 2 | 3 | By the end of this session you'll have: 4 | 1. 2 EC2's in your __private__ subnet 5 | 2. 1 EC2 in your __public__ subnet 6 | 3. The ability to ping your private EC2's using a jumpbox 7 | 4. The ability to test your ELB using Webserver A and B 8 | 9 | 10 | We're going to deploy 2 webservers, webserver A and webserver B. The intent is that we will be able to hit a public end point and see the load being balanced between the webservers. 11 | 12 | ![LB Diagram](2022-images/3-elb-network-diagram.png) 13 | 14 | 15 | ### 🚀 Launch two EC2 instances into your private subnet 16 | These two instances will be our two web servers 17 | 18 | 1. Services > Compute > EC2 > Launch Instance 19 | 2. Choose *Amazon Linux 2 AMI* > t2.micro 20 | 3. Click *Next: Configure Instance Details* 21 | 4. Select the cloud-networking-bootcamp VPC and the associated __private__ subnet 22 | 5. Assign the IAM role created earlier with SSM permissions 23 | ![select iam](2022-images/select-ssm-iam-role.png) 24 | 6. Next until you get to *Configure Security Group* > Select an existing security group 25 | 7. Security Group name: __http_securitygroup__ (this is the security group you created in 3.1 when setting up your VPC) 26 | 8. Review and Launch > Launch 27 | 9. Proceed without key pair > Launch 28 | 29 | ![no key pair](2022-images/create-key-pair.png) 30 | 31 | 🔁 Repeat these steps! 32 | 33 | 🌈 Woo hoo! You have created 2 EC2 Instances! 🌈 34 | 35 | Tip: give each of these instances a name in the EC2 console to make them easier to identify later. You can call them `webserver-A` and `webserver-B` to keep things simple 36 | 37 | ![webserver a and b](2022-images/web-servers-running.png) 38 | 39 | ### 🚀 Launch 1 EC2 instance into your public subnet 40 | This instance will serve as a jumpbox so that we can test connectivity from our public to our private subnet and confirm that our web servers are set up correctly. 41 | 42 | 1. Services > Compute > EC2 > Launch Instance 43 | 2. Choose *Amazon Linux 2 AMI* > t2.micro 44 | 3. Click *Next: Configure Instance Details* 45 | 4. Select the cloud-networking-bootcamp VPC and the associated __public__ subnet 46 | 5. Ensure that "Auto-assign Public IP" is set to "Enable" 47 | 6. Assign the IAM role created earlier with SSM permissions 48 | 49 | ![jumpbox settings](2022-images/network-settings.png) 50 | 51 | 52 | 1. Next until you get to *Configure Security Group* > Create new Security Group 53 | 2. Security Group name: __public-sg__ 54 | 3. __No Rules needed for the Security Group, we're going to use SSM to connect__ 55 | 4. Review and Launch > Launch 56 | 5. Proceed without key pair > Launch 57 | 58 | ![no key pair](2022-images/create-key-pair.png) 59 | 60 | Tip: give this instance a name in the EC2 console to make them easier to identify later. You can call this one `jumpbox`. 61 | 62 | ![jumpbox](2022-images/jumpbox-running.png) 63 | 64 | ### Let's test the connectivity of our EC2 Instances 65 | 66 | ![Ping Webservers](2022-images/4-ping-webservers.png) 67 | 68 | We're going to use SSM to ping our EC2's. SSM is an agent that allows us to to connect to our EC2s using the Session Manager in the AWS Console. 69 | Why ping? This will let us know if the correct route tables have been set up to access resources in our private subnet. 70 | 71 | 1. Services > Management & Governance > Systems Manager 72 | 2. Select __Session Manager__ on the left hand side 73 | 3. Select __Start Session__ 74 | 4. Select your __public EC2__ instance from the list of instances 75 | 76 | ![jumpbox](2022-images/start-session-jumpbox.png) 77 | 78 | 5. A new tab should open with a terminal on your NAT instance! 79 | 6. type `ping 10.0.1.x` You should see some responses come back from the web server (this should be the IP address of one of your web servers launched above. You can find the IP address of your web server instances in the EC2 under `Private IPs`. As we'll be using these addresses again later, it might be a good idea to note them down to avoid switching back and forth between tabs). 80 | 7. Press `ctrl+c` to stop pinging the server 81 | 8. try pinging your other web server to ensure that's also set up correctly 82 | 83 | 🌈 Woo hoo! You have tested your connection to your EC2 instances via your public subnet! 🌈 84 | 85 | 86 | ### Setting up your EC2 Instance as a Web Server 87 | Using SSM you ssh into your `webserver-A` and `webserver-B` EC2 instances, you're going to set them up as basic Apache web servers. 88 | 89 | SSM into either `webserver-A` or `webserver-B`, but note which one you're setting up first (you're going to repeat these steps for both). Once you have the terminal open: 90 | 91 | 92 | 1. Make sure you have the right privileges: 93 | 94 | `sudo su` 95 | 96 | 2. Update your OS 97 | 98 | `yum update -y` 99 | 100 | 3. Install an Apache server 101 | 102 | `yum install httpd -y` 103 | 104 | 4. This command just makes sure your web server restarts if it stops 105 | 106 | `systemctl enable httpd` 107 | 108 | 5. Start your web server 109 | 110 | `systemctl start httpd` 111 | 112 | 6. Let's edit our web server! 113 | 114 | `cd /var/www/html` 115 | 116 | 7. Let's create a file to edit `touch index.html` 117 | 118 | You can open `index.html` in nano: 119 | 120 | `nano index.html` 121 | 122 | 8. This is the code we want in that file: 123 | 124 | `Hello from Web Server A!` 125 | 126 | 9. Save and Exit nano (ctrl+x, then y) 127 | 128 | 10. Test your webserver is running: 129 | 130 | `curl localhost` 👉🏽 Response: `Hello from Web Server A!` 131 | 132 | OR 133 | 134 | `systemctl status httpd` 👉🏽 Response: `Active: active (running) ` 135 | 136 | 11. 🔁 Repeat these steps for your 2nd EC2 instance (Web Server B), but change your index.html file to be `Hello from Web Server B!` 137 | 138 | 139 | 140 | 🌈 Woo hoo! You have made your EC2 Webservers! 🌈 141 | 142 | ### Let's now test our web servers 143 | 1. Follow the instructions above to get a terminal on our public EC2 instance 144 | 2. Type `curl -v 10.0.1.x` where the IP is that of your first web server (you can find the IP address of your web server instances in the EC2 under `Private IPs`) 145 | 3. Inspect the text returned, it should say `Hello from Web Server A!` 146 | 4. Now try the same, but change the IP address to your second server 147 | 5. You should see in the response `Hello from Web Server B!` this time 148 | 149 | 🌈 Woo hoo! You have now confirmed that your two web servers have been correctly set up! 🌈 150 | 151 | 152 | 153 | ### Let's now assign our instances to our load balancer! 154 | 155 | 1. Services > EC2 > Load Balancers > Select your load balancer 156 | 2. Go to the 'Instances' Tab 157 | 3. Edit Instances 158 | 159 | ![Allocate Instances ELB](images/allocate_instances_elb.png) 160 | 161 | 4. Choose the two __Private Web Servers__ from this list 162 | 5. Try out the ELB's endpoint via the 'Description' Tab 163 | 6. Copy and Paste your ELB's DNS name into a Web Browser 164 | 165 | ![DNS ELB](images/elb_dns_name.png) 166 | 167 | 7. It should look something like this: 168 | 169 | ![Webserver Response](images/webserver_response.png) 170 | 171 | 172 | Now that you have a public endpoint to your load balancer and 2 web servers, we should be able to see the load balancer in action. 173 | Expected behaviour is that as you refresh your end point, you will see a round-robin behaviour between webserver A and B. 174 | 175 | 🌈 Woo hoo! You have 2 web servers, connected to a load balancer and it works! 🌈 176 | 177 | 178 | You should now have: 179 | - ✅ 2 EC2's in your __private__ subnet 180 | - ✅ 1 EC2 in your __public__ subnet 181 | - ✅ The ability to ping your private EC2's using a jumpbox 182 | - ✅ The ability to test your ELB using Webserver A and B 183 | 184 | -------------------------------------------------------------------------------- /part-2/2.4_clean_up.md: -------------------------------------------------------------------------------- 1 | # Clean Up! 2 | 3 | ### 🚨 __If you don't switch things off, your AWS account will incur a cost__ 🚨 4 | 5 | ### 👉🏽 'Terminate' your 3 EC2 instances (2 private, 1 public) 6 | Services > EC2 > Instances > Select an EC2 instance > Actions > Instance Status > Terminate 7 | 8 | ### 👉🏽 Delete your ELB 9 | Services > EC2 > Load Balancers > Select your ELB > Actions > Delete 10 | 11 | ### 👉🏽 Delete your NAT Gateway 12 | Services > VPC > NAT Gateways > Select your NATGW > Actions > Delete NAT Gateway 13 | 14 | ### 👉🏽 'Release' your EIPs 15 | Services > VPC > Elastic IPs > Select the EIP > Actions > Release Addresses > When prompted, choose release. 16 | 17 | ### 👉🏽 Delete your VPC 18 | Services > VPC > Your VPCs > Select your VPC > Actions > Delete VPC (again Delete VPC) 19 | 20 | __NOTE: If your EC2 Instances or NATGW haven't fully deleted yet, it will give you an error__ 21 | 22 | Here's a summary of what deleting your VPC does: 23 | 24 | ![Delete VPC](images/delete_VPC.png) 25 | 26 | ### 👉🏽 Delete IAM Role 27 | Services > IAM > Select the IAM role you created > Delete Role 28 | 29 | # Awesome work! 🌈 30 | 31 | -------------------------------------------------------------------------------- /part-2/2022-images/1-vpc-subnets.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/2022-images/1-vpc-subnets.png -------------------------------------------------------------------------------- /part-2/2022-images/2-route-tables.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/2022-images/2-route-tables.png -------------------------------------------------------------------------------- /part-2/2022-images/3-elb-network-diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/2022-images/3-elb-network-diagram.png -------------------------------------------------------------------------------- /part-2/2022-images/3.2/select-security-groups.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/2022-images/3.2/select-security-groups.png -------------------------------------------------------------------------------- /part-2/2022-images/3.2/success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/2022-images/3.2/success.png -------------------------------------------------------------------------------- /part-2/2022-images/3.3/edit-network-settings-btn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/2022-images/3.3/edit-network-settings-btn.png -------------------------------------------------------------------------------- /part-2/2022-images/3.3/elb-dns-name.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/2022-images/3.3/elb-dns-name.png -------------------------------------------------------------------------------- /part-2/2022-images/3.3/load-balancer-instance-tab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/2022-images/3.3/load-balancer-instance-tab.png -------------------------------------------------------------------------------- /part-2/2022-images/3.3/select-private-servers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/2022-images/3.3/select-private-servers.png -------------------------------------------------------------------------------- /part-2/2022-images/3.3/select-public instance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/2022-images/3.3/select-public instance.png -------------------------------------------------------------------------------- /part-2/2022-images/4-ping-webservers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/2022-images/4-ping-webservers.png -------------------------------------------------------------------------------- /part-2/2022-images/attach-igw-vpc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/2022-images/attach-igw-vpc.png -------------------------------------------------------------------------------- /part-2/2022-images/attach-igw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/2022-images/attach-igw.png -------------------------------------------------------------------------------- /part-2/2022-images/create-key-pair.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/2022-images/create-key-pair.png -------------------------------------------------------------------------------- /part-2/2022-images/create-load-balancer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/2022-images/create-load-balancer.png -------------------------------------------------------------------------------- /part-2/2022-images/create-natgw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/2022-images/create-natgw.png -------------------------------------------------------------------------------- /part-2/2022-images/create-sg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/2022-images/create-sg.png -------------------------------------------------------------------------------- /part-2/2022-images/create-subnet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/2022-images/create-subnet.png -------------------------------------------------------------------------------- /part-2/2022-images/create-vpc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/2022-images/create-vpc.png -------------------------------------------------------------------------------- /part-2/2022-images/edit-route-table-name.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/2022-images/edit-route-table-name.png -------------------------------------------------------------------------------- /part-2/2022-images/edit-subnet-assoc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/2022-images/edit-subnet-assoc.png -------------------------------------------------------------------------------- /part-2/2022-images/iam-menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/2022-images/iam-menu.png -------------------------------------------------------------------------------- /part-2/2022-images/iam-role-details-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/2022-images/iam-role-details-1.png -------------------------------------------------------------------------------- /part-2/2022-images/iam-role-details-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/2022-images/iam-role-details-2.png -------------------------------------------------------------------------------- /part-2/2022-images/iam-role-details-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/2022-images/iam-role-details-3.png -------------------------------------------------------------------------------- /part-2/2022-images/igw-detached.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/2022-images/igw-detached.png -------------------------------------------------------------------------------- /part-2/2022-images/igw-details.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/2022-images/igw-details.png -------------------------------------------------------------------------------- /part-2/2022-images/igw-routes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/2022-images/igw-routes.png -------------------------------------------------------------------------------- /part-2/2022-images/jumpbox-running.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/2022-images/jumpbox-running.png -------------------------------------------------------------------------------- /part-2/2022-images/natgw-public-details.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/2022-images/natgw-public-details.png -------------------------------------------------------------------------------- /part-2/2022-images/natgw-routes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/2022-images/natgw-routes.png -------------------------------------------------------------------------------- /part-2/2022-images/network-settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/2022-images/network-settings.png -------------------------------------------------------------------------------- /part-2/2022-images/public-route-table-add-route.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/2022-images/public-route-table-add-route.png -------------------------------------------------------------------------------- /part-2/2022-images/region-select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/2022-images/region-select.png -------------------------------------------------------------------------------- /part-2/2022-images/route-table-details-public.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/2022-images/route-table-details-public.png -------------------------------------------------------------------------------- /part-2/2022-images/route-table-internet-gateway.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/2022-images/route-table-internet-gateway.png -------------------------------------------------------------------------------- /part-2/2022-images/route-tables.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/2022-images/route-tables.png -------------------------------------------------------------------------------- /part-2/2022-images/select-elb-subnet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/2022-images/select-elb-subnet.png -------------------------------------------------------------------------------- /part-2/2022-images/select-elb-vpc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/2022-images/select-elb-vpc.png -------------------------------------------------------------------------------- /part-2/2022-images/select-ssm-iam-role.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/2022-images/select-ssm-iam-role.png -------------------------------------------------------------------------------- /part-2/2022-images/select-your-vpc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/2022-images/select-your-vpc.png -------------------------------------------------------------------------------- /part-2/2022-images/sg-details.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/2022-images/sg-details.png -------------------------------------------------------------------------------- /part-2/2022-images/sg-inbound-rules.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/2022-images/sg-inbound-rules.png -------------------------------------------------------------------------------- /part-2/2022-images/start-session-jumpbox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/2022-images/start-session-jumpbox.png -------------------------------------------------------------------------------- /part-2/2022-images/vpc-details.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/2022-images/vpc-details.png -------------------------------------------------------------------------------- /part-2/2022-images/web-servers-running.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/2022-images/web-servers-running.png -------------------------------------------------------------------------------- /part-2/images/1-region.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/1-region.png -------------------------------------------------------------------------------- /part-2/images/10-subnet-association.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/10-subnet-association.png -------------------------------------------------------------------------------- /part-2/images/11-associated-subnet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/11-associated-subnet.png -------------------------------------------------------------------------------- /part-2/images/12-change-sg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/12-change-sg.png -------------------------------------------------------------------------------- /part-2/images/13-select-sg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/13-select-sg.png -------------------------------------------------------------------------------- /part-2/images/2-create-vpc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/2-create-vpc.png -------------------------------------------------------------------------------- /part-2/images/3-subnet-creation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/3-subnet-creation.png -------------------------------------------------------------------------------- /part-2/images/3.2.1-launch-instance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/3.2.1-launch-instance.png -------------------------------------------------------------------------------- /part-2/images/3.2.10-select-subnet-private.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/3.2.10-select-subnet-private.png -------------------------------------------------------------------------------- /part-2/images/3.2.11-default-sg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/3.2.11-default-sg.png -------------------------------------------------------------------------------- /part-2/images/3.2.12-create-keypair.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/3.2.12-create-keypair.png -------------------------------------------------------------------------------- /part-2/images/3.2.13-create-role.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/3.2.13-create-role.png -------------------------------------------------------------------------------- /part-2/images/3.2.14-attach-permission.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/3.2.14-attach-permission.png -------------------------------------------------------------------------------- /part-2/images/3.2.15-review-role.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/3.2.15-review-role.png -------------------------------------------------------------------------------- /part-2/images/3.2.16-start-session.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/3.2.16-start-session.png -------------------------------------------------------------------------------- /part-2/images/3.2.2-select-ami.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/3.2.2-select-ami.png -------------------------------------------------------------------------------- /part-2/images/3.2.3-select-insance-type.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/3.2.3-select-insance-type.png -------------------------------------------------------------------------------- /part-2/images/3.2.4-select-vpc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/3.2.4-select-vpc.png -------------------------------------------------------------------------------- /part-2/images/3.2.5-select-subnet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/3.2.5-select-subnet.png -------------------------------------------------------------------------------- /part-2/images/3.2.6-select-iam.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/3.2.6-select-iam.png -------------------------------------------------------------------------------- /part-2/images/3.2.7-create-sg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/3.2.7-create-sg.png -------------------------------------------------------------------------------- /part-2/images/3.2.8-launch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/3.2.8-launch.png -------------------------------------------------------------------------------- /part-2/images/3.2.9-without-keypair.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/3.2.9-without-keypair.png -------------------------------------------------------------------------------- /part-2/images/4-auto-assign-ip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/4-auto-assign-ip.png -------------------------------------------------------------------------------- /part-2/images/5-enable-auto-assign-ip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/5-enable-auto-assign-ip.png -------------------------------------------------------------------------------- /part-2/images/6-igw-detached.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/6-igw-detached.png -------------------------------------------------------------------------------- /part-2/images/7-public-route-table.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/7-public-route-table.png -------------------------------------------------------------------------------- /part-2/images/8-2-route-tables.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/8-2-route-tables.png -------------------------------------------------------------------------------- /part-2/images/9-public-route-to-internet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/9-public-route-to-internet.png -------------------------------------------------------------------------------- /part-2/images/NAT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/NAT.png -------------------------------------------------------------------------------- /part-2/images/allocate_instances_elb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/allocate_instances_elb.png -------------------------------------------------------------------------------- /part-2/images/classic_lb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/classic_lb.png -------------------------------------------------------------------------------- /part-2/images/create_lb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/create_lb.png -------------------------------------------------------------------------------- /part-2/images/create_natg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/create_natg.png -------------------------------------------------------------------------------- /part-2/images/delete_VPC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/delete_VPC.png -------------------------------------------------------------------------------- /part-2/images/deploy_webservers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/deploy_webservers.png -------------------------------------------------------------------------------- /part-2/images/edit_rules.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/edit_rules.png -------------------------------------------------------------------------------- /part-2/images/elb_dns_name.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/elb_dns_name.png -------------------------------------------------------------------------------- /part-2/images/elb_network_diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/elb_network_diagram.png -------------------------------------------------------------------------------- /part-2/images/final_vpc_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/final_vpc_image.png -------------------------------------------------------------------------------- /part-2/images/https_elb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/https_elb.png -------------------------------------------------------------------------------- /part-2/images/lb_health_check.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/lb_health_check.png -------------------------------------------------------------------------------- /part-2/images/lb_public_subnet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/lb_public_subnet.png -------------------------------------------------------------------------------- /part-2/images/lb_vpc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/lb_vpc.png -------------------------------------------------------------------------------- /part-2/images/lb_warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/lb_warning.png -------------------------------------------------------------------------------- /part-2/images/nat_gateway_done.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/nat_gateway_done.png -------------------------------------------------------------------------------- /part-2/images/ping_webservers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/ping_webservers.png -------------------------------------------------------------------------------- /part-2/images/review_create_lb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/review_create_lb.png -------------------------------------------------------------------------------- /part-2/images/route_tables_igw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/route_tables_igw.png -------------------------------------------------------------------------------- /part-2/images/services_elb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/services_elb.png -------------------------------------------------------------------------------- /part-2/images/ssh_your_ip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/ssh_your_ip.png -------------------------------------------------------------------------------- /part-2/images/subnet_eni.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/subnet_eni.png -------------------------------------------------------------------------------- /part-2/images/vpc_subnets.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/vpc_subnets.png -------------------------------------------------------------------------------- /part-2/images/webserver_response.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/webserver_response.png -------------------------------------------------------------------------------- /part-2/images/webserver_sg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/part-2/images/webserver_sg.png -------------------------------------------------------------------------------- /whiteboarding-mini-session/images/block_letters.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/whiteboarding-mini-session/images/block_letters.jpg -------------------------------------------------------------------------------- /whiteboarding-mini-session/images/database.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/whiteboarding-mini-session/images/database.jpg -------------------------------------------------------------------------------- /whiteboarding-mini-session/images/end_user.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/whiteboarding-mini-session/images/end_user.jpg -------------------------------------------------------------------------------- /whiteboarding-mini-session/images/internet.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/whiteboarding-mini-session/images/internet.jpg -------------------------------------------------------------------------------- /whiteboarding-mini-session/images/lambda.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/whiteboarding-mini-session/images/lambda.jpg -------------------------------------------------------------------------------- /whiteboarding-mini-session/images/secure_padlock.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/whiteboarding-mini-session/images/secure_padlock.jpg -------------------------------------------------------------------------------- /whiteboarding-mini-session/images/spacing_techstack.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/whiteboarding-mini-session/images/spacing_techstack.jpg -------------------------------------------------------------------------------- /whiteboarding-mini-session/images/tools.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DevOps-Represent/DevOps-Represent-Cloud-Networking/a7ce6dea705e5fa721165ee85f5e1c89c5662e35/whiteboarding-mini-session/images/tools.jpg -------------------------------------------------------------------------------- /whiteboarding-mini-session/whiteboarding_basics.md: -------------------------------------------------------------------------------- 1 | # Technical Whiteboarding Basics 2 | 3 | To draw out a tech stack or articulating a technical problem using a whiteboard is a skill many experienced people take for granted. The aim of this session is to provide a starting point for developing your technical whiteboarding skills. For people who already have this in their toolkit, this session will hopefully encourage you to improve your existing skills. 4 | 5 |
What are the benefits of technical whiteboarding?

6 | 7 | ### Here's a short list of areas in your career where good whiteboarding skills are really helpful: 8 | 9 | - A whiteboard can be a really useful tool to communicate ideas and problem solving 10 | - It's common for an interviewer to ask an interviewee to whiteboard out a problem/tech stack/coding solution 11 | - Incorporating a whiteboard into presentations/meetings can help keep things engaging and interactive 12 | - Drawing things out on a whiteboard introduces a visual aspect to your conversations, making them multi-modal 13 | 14 |

15 | 16 |
Some basics to be aware of

17 | 18 | #### Tools 19 | What are the tools for whiteboarding? Whiteboard and markers. For your whiteboarding session to be effective, do a quick check to ensure the board is clear (might need a more extensive clean) and your markers are working. Take the time to have the right tools, otherwise everything becomes a lot harder and you revert to just talking through things. 20 | 21 | To make things more interactive, you can always incorporate sticky notes. The use of both whiteboard and sticky notes can be quite effective! 22 | 23 | ![Tools](images/tools.jpg) 24 | 25 | 26 | #### Plan 27 | Planning what you're going to put on the whiteboard can be really useful for yourself and the audience. For example, you're about to draw a cloud network diagram for a web app that has a database, maybe you want to write a list of the components of your network. You can even use this as a checklist to make sure everything is present and accounted for. Talking out your plan can also act as a guage of whether you're on the right track (good for interviews) and sets expectations (good for meetings). 28 | 29 | 30 | #### Handwriting 31 | Work out what style of hand writing works best for you. Whiteboards don't act the same as a pen and paper. Writing in block letters is clearer than cursive. Remember that sometimes we take pictures of whiteboard discussions to reference later - so they need to be legible. 32 | 33 | ![Block letters](images/block_letters.jpg) 34 | 35 | Handwriting is terrible? Use more images to demonstrate what you're trying to get across eg. instead of writing 'database', maybe draw the symbol for a data base (see below) 36 | 37 | #### Spacing 38 | Be aware of the space you have to work with. If you're drawing a tech stack, do you have enough space to draw out each component vertically ↕️ ? Could you try horizontial ↔️ ? You might need to have a rough idea of how many layers/components you're planning to draw. 39 | Have you left some space for some surprises to be added (external dependencies outside the stack)? 40 | 41 | ![Spacing](images/spacing_techstack.jpg) 42 | 43 | 44 | #### Use of Words vs Symbols 45 | Do you find yourself writing a lot of words? Could some of this be substituted for symbols or acroynms? Any commonly used acroynms and their meaning can be documented in the corner for people to reference. This is about knowing your audience. 46 | 47 | Try and keep your symbols simple and consistent. This means you can draw them quickly and the same symbol should be used for correlating components. 48 | 49 | Here are some helpful symbols that you can use in a tech stack or cloud network diagram, some are specific to AWS. 50 | 51 | ![lambda](images/lambda.jpg) 52 | 53 | ![End User](images/end_user.jpg) 54 | 55 | ![DB](images/database.jpg) 56 | 57 | ![Internet](images/internet.jpg) 58 | 59 | 60 | #### Talk it through 61 | Remember to talk through your thoughts as you are drawing. This can be hard to master, but here's some things to consider: 62 | - It's harder to hear you when you're talking while facing the whiteboard 63 | - Have you started talking about something that you haven't drawn yet? Is there enough context? 64 | - If you're having to explain your symbols/words more often than not, you may need to revisit your choice of symbols/words 65 | - Can people see what you have drawn while you're talking? Position yourself so people can see the whiteboard 👀 66 | 67 | #### Make it Interactive 68 | A great way to keep people engaged and to also help you when you're stuck is to ask questions. 69 | 70 | Not sure what the symbol for a lambda function is? You can ask, "does anyone know the best symbol for a lambda function?". This is also a good way to all agree on a symbol that may not have been obvious if you came up with one by yourself. 71 | 72 |

73 | 74 |
Let's try an exercise!

75 | 76 | ### In a small group, we're going to whiteboard some of the concepts we have learnt today! 👩🏾‍🏫 77 | 78 | *TASK: As a group, you will be whiteboarding the cloud network we created in AWS including all of the components. Multiple people can be drawing, but always as a coordinated effort, talking through your thoughts and asking each other questions. The key is that you are all engaged and standing by the whiteboard.* 79 | 80 | ### Things to consider: 81 | - If you need 5 minutes to read over things and discuss, do this before starting 82 | - Help each other out if you feel like someone's stuck 83 | - Make space for each other and don't take over 84 | - Communication is key 85 | - It's ok if you don't know something, you can indicate uncertainty in your whiteboard drawing 86 | 87 | 88 |

89 | 90 | 91 | Resources: 92 | 93 | https://medium.com/graphicfacilitation/two-simple-techniques-to-dramatically-improve-your-whiteboard-skills-a391534a8140 94 | https://medium.com/@perrysetgo/death-of-a-whiteboard-how-to-crush-any-technical-interview-2e83a8b2149 --------------------------------------------------------------------------------