Go to Course: https://www.coursera.org/learn/devops-capstone-project
### Course Review: DevOps Capstone Project on Coursera In today's fast-paced tech landscape, the demand for skilled DevOps professionals is higher than ever. The "DevOps Capstone Project" on Coursera offers an incredible opportunity for learners to solidify their knowledge and skills in DevOps and software engineering via a comprehensive, hands-on project. #### Course Overview The "DevOps Capstone Project" serves as the capstone course within the Professional Certificate of DevOps on Coursera. Spanning various sprints, this project challenges learners to develop, test, deploy, monitor, and enhance a secure microservices-based application in the cloud. The focus is primarily on applying practical skills acquired from previous courses, making it an excellent platform to showcase what you have learned. #### Syllabus Breakdown 1. **Create and Execute Sprint Plans** - Before diving in, learners are expected to have a foundational understanding of Agile methodologies and a GitHub and ZenHub account. - In this module, you'll develop an Agile plan by creating user stories and setting up a Kanban board. It introduces you to the practices of creating a RESTful microservice while managing your tasks effectively. 2. **Develop a RESTful Service Using Test Driven Development (TDD)** - Gear up for Sprint 1 where you will establish the environment and create a Customer Account microservice. - The emphasis on TDD ensures that you write tests before code, reinforcing the best practices in coding. Achieving at least 95% test coverage is not just a goal but a requirement here. 3. **Add Continuous Integration (CI) and Security to a Repository** - In Sprint 2, you will introduce CI to your project using GitHub Actions, automating the build and test processes with every push or pull request. - Security is another focus; you will implement secure coding practices by integrating tools like Flask-Talisman and Flask-Cors, ensuring your application is fortified against vulnerabilities. 4. **Deploy Your Application to Kubernetes** - Sprint 3 takes your skills into the realm of cloud deployment. You'll create a Docker image for your microservice and manually deploy it to a Kubernetes/OpenShift cluster. - Mastering containerization is crucial, and this module prepares you for real-world scenarios where Kubernetes is essential. 5. **Build an Automated CD DevOps Pipeline** - The focus here is on creating a Continuous Delivery (CD) pipeline using Tekton. This means automating the deployment process so that your application can go live seamlessly with minimal manual intervention. 6. **Final Submission and Peer Review** - The course concludes with submitting your work, including screenshots of your labs and your project’s endpoints. Engaging in peer reviews not only fosters community learning but also allows you to critique and learn from others in the course. #### Pros of the Course - **Hands-On Experience**: The applied nature of the project design ensures that you not only learn theory but also gain practical experience that is invaluable in the job market. - **In-Depth Coverage**: Topics such as Agile, TDD, CI/CD, security best practices, and cloud deployment are all covered, giving you well-rounded knowledge and skills. - **Collaboration and Feedback**: Peer reviews help you gain insights from fellow learners, enhancing the learning experience and encouraging collaborative development. #### Recommendations This course comes highly recommended for anyone looking to make a mark in the DevOps field. It is structured not only to enhance your technical skills but also to provide insights into working in an Agile environment, which is critical for success in contemporary software development. However, potential learners should consider having a basic understanding of programming, GitHub, CI/CD practices, and Docker before enrolling. While the course is aimed at those with some prior knowledge of software engineering, the structure and support provided should facilitate anyone with a dedication to self-improvement in learning swiftly. Whether you are an aspiring DevOps engineer or a software engineer looking to transition into this domain, the "DevOps Capstone Project" on Coursera is a significant stepping stone in achieving your career goals. Embrace the hands-on opportunity to exhibit your skills and push the boundaries of what you can achieve in DevOps!
Create and Execute Sprint Plans
Before starting this module, ensure that you have a basic understanding of Agile planning and Scrum, a GitHub account, and a Zenhub account. This module focuses on developing an Agile plan to create a RESTful microservice. You will complete this project throughout several sprints using a variety of Agile, cloud-native, and CI/CD tools and technologies. You will begin by creating a GitHub repository for the project and adding this repository to a Zenhub kanban board. Next, you will build a user story template in GitHub that you will later use to write well-structured user stories. Then you will build your product backlog in Zenhub. After finishing your product backlog, you will build your sprint plan.
Develop a RESTful Service Using Test Driven Development (TDD)In this module, you will complete Sprint 1 by configuring the capstone project environment and developing the Customer Account microservice using test driven development (TDD). Start development of the microservice on a new branch on your GitHub repo. You will create tests for the RESTful Flask service and write test cases for the read, update, delete, and list functions. to pass these tests. As you develop, you will run nosetests to ensure at least 95% coverage. As your work progresses, you will move the user stories through your kanban board.
Add Continuous Integration (CI) and Security to a RepositoryBefore starting this module, ensure that you have completed all the steps described in the Hands-on Lab: Develop Your RESTful Service Using Test Driven Development. In addition, you should have a GitHub account and a GitHub repository, a basic understanding of YAML, familiarity with the syntax for GitHub Actions, and a basic knowledge of Python, Pip, and nosetests. In Lesson 1, you will add a continuous integration workflow using GitHub Actions, which will help you automate the building and testing of your code. You will start by building a plan for Sprint 2 in the guided instructional lab, Sprint 2 Planning. Next, in the Add Continuous Integration hands-on lab, you will configure a GitHub Actions workflow that will be triggered when an event occurs in your repository. As part of Sprint 2, you will create a workflow that will build and test every push or pull request to your repository. You will be moving the corresponding user stories through your kanban board as your work progresses. Before starting Lesson 2, ensure that you have completed all the steps described in the Hands-on Lab: Add Continuous Integration. In addition, you should have a basic understanding of security headers, cross-origin resource sharing (CORS) policies, Flask-Talisman, and Flask-Cors. You should also have a good understanding of test driven development (TDD) techniques, GitHub Actions, and GitHub operations (branching, merging, committing code, pushing code updates, and creating pull requests). In Lesson 2, you will add secure code practices for the microservice you built by adding Flask-Talisman for security headers and Flask-Cors to establish CORS policies. To begin, you will assign the relevant story created for this task to yourself and start working on a new branch created for this specific task. To align with TDD practices, you will first write the test case for the security feature you are trying to implement. Once you have added Flask-Talisman for security headers and Flask-Cors to establish CORS policies, commit and push your changes to the repository and make a pull request that will kick off the GitHub Action. You will move the corresponding user stories through your kanban board as your work progresses.
Deploy Your Application to KubernetesBefore starting this module, ensure that you have completed all the steps described in the Hands-on Lab: Add Security to Your RESTful Service. In addition, you should have a basic understanding of Docker and containerization, Docker commands, Kubernetes and OpenShift, YAML, kubectl, and oc commands. You should have a GitHub account and a GitHub repository, and you should be familiar with the syntax for GitHub Actions. As part of Sprint 3, you will create a Docker image of your microservice and deploy the same to Kubernetes/OpenShift cluster manually. You will first find the “Containerize your microservice using Docker” story in the kanban board, move it to "In Progress," and assign it to yourself. Next, you will create the Docker file and then use it to build a Docker image called accounts. You will deploy this image to Kubernetes/OpenShift as part of the next user story, “Deploy your Docker image to Kubernetes.” You will create new branches for both stories and begin working on them. Once the tasks are completed, you will commit and push your changes from your local environment to your GitHub repository. Finally, you will create pull requests and merge your code to the main or master branch. You will move the corresponding user stories through your kanban board as your work progresses. When you complete a story, you will move it to "Done" and from there to "Closed."
Build an Automated CD DevOps PipelineBefore starting this module, ensure that you have completed all the steps described in the Hands-on Lab: Deploy Your Application to Kubernetes. In addition, you should have a basic understanding of Kubernetes and continuous delivery, Tekton pipeline, YAML, kubectl, and oc commands. You should have a GitHub account and a GitHub repository, and you should be familiar with the syntax for GitHub Actions. For the lab in this module, you will automate the deployment to Kubernetes using the Tekton pipeline so that when the pipeline is triggered, the accounts service will be deployed to Kubernetes without requiring any manual intervention. To start, you will find the user story "Create a CD pipeline to automate deployment to Kubernetes" in the kanban board, move it from the "Sprint Backlog" to "In Progress," and assign it to yourself. Next, you will create the CD pipeline, involving tasks for cloning, linting, unit testing, building, and deploying the service to an OpenShift/Kubernetes cluster. You will also create a Tekton trigger using the Tekton Catalog, such as a commit to your GitHub repository, which will initiate the pipeline run. You will create a new branch for this story and start working on it. Once the task is completed, you will commit and push your changes from your local environment to your GitHub repository. Finally, you will create pull requests and merge your code to the main or master branch. You will move the corresponding user stories through your kanban board as your work progresses. When you complete a story, you will move it to "Done" and from there to "Closed."
Final Submission and Peer ReviewIn this final module, you will complete your submission of screenshots from the hands-on labs for your peers to review and provide URLs for your REST endpoints and GitHub repo links so your peers can review your code. Once you have completed your submission, you will review and grade one of your peers' submissions.
Showcase your DevOps and Software Engineering skills with this hands-on Capstone project! In this course you will apply the skills and techniques you have learned as part of the previous courses in the Professional Certificate. During the project you will develop, test, deploy, monitor, and enhance a secure microservices-based application on Cloud, over the course of several sprints. You’ll develop an Agile plan by developing user stories and a Kanban board using ZenHub and GitHub. This plan w
A great structured way to learn agile project management and complete end-to-end project development using DevOps technologies and methodologies.
A great project to see the previous course material all coordinated and in action. It is current, and I see the relevancy of it (from the job descriptions I see on LinkedIn, Indeed, etc..). Thank you