You can propose a cloud project by opening a ticket ๐๏ธ
You need to use our Project Template and submit it as a pull request.
Please do your best to tag your commits
When you open a ticket it will have a Github Issue ID eg. 23
You should reference this number both in your branch name and your PR's commit message.
Including this number will keep track of your commits in the project idea's Github Issue.
eg. Branch Name
git checkout -b 23-COM01-AWS100
eg. Commit Message
#23 โ Launching an EC2 instance
We may edit your project submissions in your Pull Requests
When you submit a Pull Request (PR) we may edit the following without notice:
Typos
Markdown formatting
Difficulty Level
We do this to expedite the review process so your project is quickly
accepted into the Ideas repository.
Which Cloud Service Providers?
Projects covered could be for:
Microsoft Azure
Amazon Web Services
Google Cloud Platform
We aren't limited to the big three, but thats where you'll see the most examples since IaaS have the most cloud offerings.
We may be weary of third-party cloud services since the goal of these projects is to learn a concept first and a product last.
What is the difficulty and time commitment for these projects?
Projects are labeled based these four levels:
Level 100 (Introductory)
Level 200 (Intermediate)
Level 300 (Advanced)
Level 400 (Expert)
The goal is to provide micro-projects that can be completed in minutes to hours and worst case a day.
The difficulty generally indicates greater time commitment.
For more difficult projects more instruction can be provided to reduce the time commitment.
Projects may suggest the time it takes to complete the project
Application Integration are cloud services that are used to help other services or apps talk to each other.
Messaging Systems are commonly used for Application Integration.
For project submission, we can reduce the time in review and burden to users if we correct:
Typos
Markdown formatting
Difficulty Level
I don't think users will mind if we are upfront that we may make these changes on their behalf.
I am going to look for someone in the repo to place this information
As shown on Twitter before, I think an Alexa skill would be a cool little quirk for the 100DaysOfCloud movement. I don't think it needs to have that much functionality and it's suprisingly easy to develop. I have created a simple back-and-forth conversation that tells a "project of the day" in a couple hours (with no experience). The backend is simply a Lambda function written in Python or NodeJS.
๐ฐ Alexa Skills are free to host - as far as I can tell - up to 1 million requests/month (which will not be exceeded) and 400,000 GB/s. It is done through the developer console but can be deployed with a custom solution on AWS as well.
Functionality ideas
Today's project - every day Alexa would have a different project to do with a short explanation.
More info about 100DaysOfCloud - Some basic information on what the movement is and where to get more information.
Currently the response is hardcoded but could be scraped from this repo as well automatically.
I can definitely take on the creation of the skill alone if needed, however I'd love some feedback on what it should be like and what functionality it should have.
There have been many projects added to this list, which is great. We are doing our best to explain and guide participants as smoothly as possible but it is difficult to see how a project will be percieved when it's actually being worked with. What I mean is that the only way to find the holes and missing pieces of a project idea is through actually doing it.
The idea
I think there should be a way for somebody who completed (or worked on) a project to give feedback on the quality of it. For example:
Was it too difficult or easy for its level?
Were there enough resources listed to get started?
Was it difficult to understand the objectives and questions?
Was the proposed time to complete out of proportion?
Were there any gotchas that you found but were not mentioned?
What would you change, add or remove from the project idea?
Proposed solution
I think creating an issue template "[Participant] Project feedback" with the above mentioned questions would be a great way for participants to voice their opinion on where a project can or should be improved. The key is to encourage this kind of feedback and make it as effortless as possible. This would allow the project creator to see the missing pieces and be able to improve on them for future participants.
As mentioned in the channel, we have to update the template to add two headings:
Estimated Time
Can be a rough estimate of the time spent on the mini-project from an appropriately skilled user
Free Tier Eligible
Needs to be ascertained at the project submission. If cost is known (domain registration, SSM Advanced Parameter, etc...) it can be added.
There have been PRs that had issues in them caught after the merge. The speed of adding new projects is important, but not at the cost of project idea quality. Realistically the chances of these issues getting fixed after merging are low, and it will go further down as the amount of projects increases.
Solution
I propose to set the minimum required reviewers to three. This would eliminate most of the overlooked issues while also maintaining speed. This means that any three collaborators have to approve before a merge is allowed. Most of us are active every day.
So the user has to launch an EC2 instance
Wait a while creating for some NetworkIn
Create an Alarm and set the period as 1min and set some threshold stuff
Choose the Cloud Service Provider (Please only choose one, unless its multi-cloud, delete the remaining)
Amazon Web Services
Choose the level of difficulty (Please only choose one, delete the remaining)
Level 200 (Intermediate)
Choose the category (Please only choose one, delete the remaining)
DevOps (OPS)
Calculate the estimated time required to complete this project (Rather go with more if unsure)
As part of AWSโs Free Usage Tier, new AWS customers will receive free 15 GB of data transfer out each month aggregated across all AWS services for one year.
[This must be the name of the issue, omit this section!]
โ๏ธ [Title must be in the form of: CATEGORY01-PROVIDER100 - TITLE]
CATEGORY is BIL, SEC, GOV, etc.
01 is the subcategory seen in the main README
PROVIDER is AWS, AZ, GCP, OTH(other, please use an abbreviation)
100 is both the level of difficulty as well as a unique ID of the project. (100,101,102 - see already existing projects)
TITLE is the title of the project. Be brief but informative.
Please make sure that the TITLE is in imperative present tense, eg. "Use RDS...", "Set up Azure Functions...", "Launch a webserver...", "Create a K8s cluster...".
Choose the Cloud Service Provider (Please only choose one, unless its multi-cloud, delete the remaining)
Google Cloud
Choose the level of difficulty (Please only choose one, delete the remaining)
Level 100 (Introductory)
Choose the category (Please only choose one, delete the remaining)
Cloud Security (SEC)
Calculate the estimated time required to complete this project (Rather go with more if unsure)
I think it would be a great idea to have multiple "mini-project a day" challenges that would take about an hour to finish. This would offer both somewhat guided learning opportunities for participants, as well as something to learn about each day. The difficulty of the challenges should vary so that people on multiple levels of skillsets can benefit.
Examples of this:
Create a new EC2 instance and SSH into it. [10-30min]
Create a new VPC and a private subnet. Spin up an EC2 instance in the private subnet, create an internet gateway, a NAT gateway, add routing tables and execute a command from inside the instance with Systems Manager (or equivalent for other platforms). [30-60min]
Create a Serverless CRUD application with an API Gateway, Lambda and DynamoDB (or equivalent for other platforms). [45-90min]
Create an Organization & a sub-account and set up cross-account IAM access [30-60min]
Questions:
How to keep the mini-projects inside the free tier (on all platforms)?
If not kept inside the free tier, how much costs can a project accumulate approx? Costs should be kept as low as possible, including "cleanup" guidance so that people don't end up with unnecessary charges.
Where can be a central place for the list of mini-projects? I think a designated page on the website would be great.
What level of detail or guidance should be provided with each project? Just the requirements like The Cloud Resume Challenge or a [partially] complete how-to?
How and where to contribute with mini-project ideas? How could an "idea vetting system" look like and who could overlook it? How would the project list be updated on the website that doesn't involve manual updating?
Ideas: (braindump)
Each mini-project could have its own "ID" so that other people can reference and complete them as well. For example somebody tweets "I just finished 100DaysOfCloud_Challenge_04" and write a small post or Tweet about it.
Each project could have a "What have you learned" or "Where did you face difficulties?" type of questions associated with it. It could even go into more detail such as "How did you create ResourceX?"
The ideas could be contributed in the website's repo directly (or forked) with pull requests.
Currently there is no well-known place where participants can ask questions from the #100DaysOfCloud community. I think designating a seperate #questions channel on Discord would be a great idea for example. People with a small following on twitter do not have much access to direct help other than "3rd party" channels.
Is Discord a good fit for this? Are there any drawbacks to using that platform?
How would the Discord group be "promoted"? Invitation placed on the 100DaysOfCloud website for example?
If not Discord, are there any easily accessible platforms that work well for this use-case?
Is your feature request related to a problem? Please describe.
The Issue template has a widely differing format and sections compared to the project idea (PR) template.
Describe the solution you'd like
Update issue template to reflect the project idea template as close as possible. Not every section is needed.
Thoughts:
Change order of sections to reflect project template
Common names for the Cloud Service Provider section (AWS -> Amazon Web Services)
Omit cost and external resources sections in issue template - only important in the PR
What is the table used for on the top of the issue template?
Add "estimated time to complete" section to issue template to faster optimize that part