rofrano / devops-workshop-2020 Goto Github PK
View Code? Open in Web Editor NEWDevOps Workshop for Software Engineers 2020
License: Apache License 2.0
DevOps Workshop for Software Engineers 2020
License: Apache License 2.0
Overview of how the workshop will be run. Get Vagrant and VirtualBox installed and setup and building during the DevOps Overview section if you haven't done that before the workshop.
As a: Service Provider
I need: the ability to deploy my service on Kubernetes
So that: I can easily scale it out horizontally as needed
Assumptions:
Tasks:
deployment.yaml
file for serviceservice.yaml
file for the serviceredis.yaml
file to deploy Redis as a StatefulService
Acceptance Criteria:
Given I have my service in Kubernetes
When I ask Kubernetes to scale to 5 instance
Then I should have 5 instances of my service running
As a: Service Provider
I need: the ability to deploy my service using Docker
So that: I can move with speed and agility
Assumptions:
Dockerfle
for the serviceAcceptance Criteria:
Given I have my service in a Docker image
When I user docker run
Then I should have my service running in a contatiner
Brief Overview of DevOps with an emphasis on the Software Developer perspective. Attendees will be introduced to the practices that are covered in this workshop and also learn why culture is the most critical aspect of DevOps to get right.
As a: User
I need: the hit counter to persist the last known count
So that: I don't loose track of the count after the service is restarted
Assumptions:
Tasks:
Vagrantfile
with Redis Docker imageAcceptance Criteria:
Given I have a persistent counter
When I advance the hit counter to 2
And I restart the hit counter service
And I call the hit /counter URL
Then I should see 3 returned from the service
As a: Developer
I need: the ability to continuously test my code
So that: I can know if a Pull Request has broken the build
Assumptions:
Acceptance Criteria:
Given I have set up GitHub Actions
When I make a Pull Request
Then my automated tests should run automatically
And if they fail the build will be stopped
As a: User
I need: a way to register a hit on the counter
So that: it increments with every access
Assumptions:
GET /counter
URl will increment the counterAcceptance Criteria:
Given I have a counter
When I call the /counter URL
Then I should see the counter increment
Overview of Kubernetes. Attendees will deploy the Docker version of their microservice in a Kubernetes cluster. They will implement Story #7 and will also have to deploy a Redis service in Kubernetes for their microservice.
As a: Service Provider
I need: a minimal Flask service
So that: my developers have a starting point to add code
Assumptions:
/
URl needs to be definedapp.py
for nowAcceptance Criteria:
Given I have a skeleton Flask app
When I call the / URL
Then I should see "Hello from Flask" returned
Overview of Docker containers. Attendees will create a Dockerfile for their microservices and run it in a Docker container. They will implement Story #6 and update Travis CI to run tests for the Dockerized version.
Introduction to Agile Planning concepts. Create an agile plan for the remainder of the workshop. Attendees will create Stories that they will execute during workshop. They will also use a Burndown chart to track their progress.
Stories include:
Introduction to Microservice Architecture and REST APIs. Attendees will begin to code their first REST API for the hit counter application starting with test cases that follow good RESTful coding standards. Stories include Story #3 and Story #4 adding persistence to the counter in the form of a Redis database.
As a: User
I need: the ability to create multiple RESTful counters
So that: I can keep track of multiple hit targets
Assumptions:
Tasks:
/
URL to return json
message/counter
to /counters
GET
to only return the counterPOST
to create new countersPUT
to update multiple countersDELETE
to delete multiple countersAcceptance Criteria:
Given I have a multi-counter ability
When I create a counter named foo
And I update the counter named foo to 1
And I call the hit /counters/foo URL
Then I should see 1 returned from the service
As a: User
I need: the ability to delete a counter
So that: I can remove unwanted counters
Assumptions:
204_NO_CONTENT
will be returnedAcceptance Criteria:
Given I have counter named foo
When I delete the counter named foo
Then I should receive a 204_NO_CONTENT
And I retrieve the counter named foo
Then I should receive 404_NOT_FOUND
And I delete the counter named foo again
Then I should receive a 204_NO_CONTENT
Introduction to the Git Feature Branch Workflow. Attendees will assign the first Story #1 from their Sprint Backlog to themselves, create a feature branch to work on the story, and issue a pull request to merge their code back into master.
Introduction to Test Driven Development. Attendees will write the test cases for the code they wish they had, and then implement that code following Agile Planning and Feature Branch Workflow. They will implement Story #2 to add a non-persistent counter where each GET increments the counter.
Attendees will be introduced to the concepts of CI/CD and in particular Travis CI. They will connect their git repo to Travis CI so that their test cases run with every Pull Request. Stories include added Redis to their Travis CI in Story #5 and implementing the remainder of the REST interface in Story #6.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.