foundersandcoders / coursebook

The new coursebook
https://learn.foundersandcoders.com
Other
50 stars 23 forks source link

Introduce DevOps more formally #327

Open oliverjam opened 3 years ago

oliverjam commented 3 years ago

Deployment is currently covered in a pretty ad hoc fashion. I don't think we even have explicit resources on deploying Node apps to Heroku. We should probably have a devops workshop somewhere where we get people to set a server up with everything it needs (maybe based on the 12 Factor App methodology).

I've been considering writing up a "make your own Heroku" workshop that covers all the things Heroku magically does for you. So it would include:

  1. Setting up a bare metal Linux server (either on your own machine or Digital Ocean)
  2. Enabling a load balancer/reverse proxy like NGINX (with SSL)
  3. Syncing/releasing code via git
sofer commented 2 years ago

Also, it may be worth thinking about introducing AWS via the Cloud Development Kit.

sofer commented 2 years ago

Response from AWS about academic accounts that do not require a credit card:

We sure do have a new AWS Academy program where you may register your institution and create learner labs to invite students which would give them a sand-box environment with pre-loaded credits. To find more information and to apply to the program please refer the below given link: https://aws.amazon.com/training/awsacademy/

reubengt commented 2 years ago

I wonder if starting deployments from scratch/doing aws stuff is too early for node week? where would this fit in the curriculum

oliverjam commented 2 years ago

So I've been thinking about this topic a lot recently since Heroku is probably dying. If it does go away I'm not sure there's an equivalent drop-in replacement.

Broadly I see two possible directions to go with deployment, and they are incompatible.

  1. Focus on learning app development, don't spend time/energy worrying about operations. Ideally set something easy up once, auto-deploy every time you git push (e.g. Heroku).
  2. Understand operations properly, learn about DNS, IP addresses, load balancers, have to use an inconvenient manual deploy process (e.g. Digital Ocean).

Our learners have super limited time/attention/focus, so we need to prioritise what they should be struggling with. If the focus of the course is "learn how to build apps" then I don't think trying to learn how to be a SysAdmin on top is helpful.

There is an additional consideration: should the thing they deploy with during the course be something they can keep using for "real" projects after they graduate? In the old days this was important as FAC grads often went on to immediately do freelance projects/small startups where they were one of the only devs, so having familiarity with an entire stack was v helpful. Maybe nowadays grads are generally going into companies with established deployment targets and so we can have a less "professional" setup for ease/simplicity during the course?

sofer commented 1 year ago

Been thinking about this for a while and it came up again in employer Q&As this week.

Perhaps we could just get people familiar with AWS CDK and DynamoDB.

That's pretty much the cheapest and simplest way to get up and running on AWS. It's perfect for building a prototype. They can then take it from there.

That's it.

Albadylic commented 1 year ago

From an employer:

It would be nice to add some basic devops concepts to your curriculum, maybe just GitHub Actions?

sofer commented 1 year ago

FAC27 and I ran a Saturday unschool last week.

Quick summary: 9 FAC27ers turned up. We started off with no brief. Got together as a group with chatgpt. Nominated a facilitator and somebody to interact with gpt. Came up, after some to'ing and fro'ing and a bit of prompting from me, with a project (deploy a static site to aws using cdk, work out a deployment pipeline and serve via a personalised domain, if there's time), agreed a first step and split in into 3 groups of 3. Came together at regular intervals, made sure everyone was in the same place and got on with it. I set up an aws account and when they were ready added somebody from each to it, so they could deploy onto a single account. they made decent progress, but inevitably not as much as they wanted. There was loads of discussion in small groups, loads in the large group. They all had a great time. Main suggested improvements for next time: a clearer brief at the beginning (fair enough) and nominate somebody from each group to document their work.

ivan-unfolds commented 1 year ago

@sofer to do Saturday devops sessions during summer term. One of the main objectives of these sessions is to investigate the devops ecosystem so that we can add devops to the full-time curriculum.

ivan-unfolds commented 1 year ago

something useful for devops curriculum: #472

Albadylic commented 1 year ago

Someone mentioned this to me today:

https://aws.amazon.com/training/digital/aws-cloud-quest/

RPG on AWS

sofer commented 1 year ago

A case for making DevOps part of the foundation, but on the other hand, it works quite nicely as an open unschool Saturday session. So let's review at end of term.