diff --git a/docs/appendices/directives/.pages b/docs/appendices/directives/.pages index c8c5468..4fdf6ad 100644 --- a/docs/appendices/directives/.pages +++ b/docs/appendices/directives/.pages @@ -5,3 +5,5 @@ nav: - Dissertation: project_dissertation.md - Skill framework: rncp_framework.md - Title validation: rncp_validation.md + - RNCP project context: rncp_project_context.md + - RNCP project perimeter: rncp_project_perimeter.md diff --git a/docs/appendices/directives/index.md b/docs/appendices/directives/index.md index 976d88c..cf5cea4 100644 --- a/docs/appendices/directives/index.md +++ b/docs/appendices/directives/index.md @@ -4,16 +4,20 @@ Support documents provided for project inception and planning: * [**DevOps Project**](devops_project.md) - Proposed project sheet and details of the stages. + Proposed project sheet and details of the stages. * [**Project dissertation**](project_dissertation.md) - Support document for the redaction of the project dissertation. + Support document for the redaction of the project dissertation. * [**Activities and skills framework**](rncp_framework.md) - List and description of the activities and competencies defined as reference for the RNCP36061 professional title. + List and description of the activities and competencies defined as reference for the RNCP36061 professional title. * [**Professional title validation**](rncp_validation.md) - Document presenting the validation conditions of the RNCP certification. + Document presenting the validation conditions of the RNCP certification. + +* [**RNCP project context**](rncp_project_context.md) + +* [**RNCP project perimeter**](rncp_project_perimeter.md) diff --git a/docs/appendices/directives/rncp_project_context.md b/docs/appendices/directives/rncp_project_context.md new file mode 100644 index 0000000..a9e8f04 --- /dev/null +++ b/docs/appendices/directives/rncp_project_context.md @@ -0,0 +1,98 @@ +# RNCP project context + + +The DevOps system administrator automates the deployment of infrastructures on a private, public or hybrid cloud. + +Business types: + +* a digital services company +* a specialized digital services company that offers cloud hosting services (Cloud Provider) +* a software publisher +* the IT department of a company that has a service dedicated to IT developments + +Type of jobs available: + +* DevOps engineer +* SysOps DevOps +* DevOps System Engineer +* Cloud engineer +* Cloud Developer + + +## Professional Designation Review Background (NCPR) + +Enterprise infrastructure is increasingly being deployed in the cloud. + +32% of companies in 2018 compared to 97% in 2021 deployed part of their infrastructure in public cloud. +According to Flexera’s annual study «state of the cloud report» in 2021, 80% of companies manage their hybrid cloud infrastructure, integrating public and private cloud. + +This evolution requires systems teams, who must automate deployment tasks, to acquire new skills. +At the same time, the developer teams have implemented the Agile method, which allows them to regularly produce new versions of their applications. + +The implementation of applications previously required a long procedure followed by the systems teams, called Ops (as operations in English). + +It was necessary that the production time be shortened as was that of the +development of new versions. + +The DevOps approach that aims to facilitate collaboration between «Dev» (developers) and «Ops» pursues this objective. +80% of companies adopted the DevOps approach in 2021, compared to 41% in 2017. +(source: IDC EMEA Cloud and infrastructures Services statistics, February 2021) + +DevOps system administrators are involved in the deployment of cloud infrastructures and the production of applications and they are highly sought after in the job market. + +This job requires a good knowledge of operating systems, virtualization and development of automation scripts as well as mastery of many specific tools. + +This job requires a good knowledge of operating systems, virtualization and development of automation scripts as well as mastery of many specific tools. + +The job calls for a particular set of skills and knowledge that fall under the development of scripts, the use of different platforms, system administration, testing methodology and collaboration with other teams of technicians. +The DevOps System Administrator professional designation (level 6) provides the skills required for the job. + +It is structured into three skill blocks: + +* Automate the deployment of an infrastructure in the cloud +* Deploy an application continuously +* Oversee deployed services + +It meets the needs of companies and promotes the professional development of system administrators in position wishing to develop new skills. + + +## Definition of standard employment and conditions of practice (RNCP) + +The DevOps system administrator automates the deployment of infrastructures on a private, public or hybrid cloud. +When working at a software publisher or in an IT department in conjunction with the developer teams, the DevOps system administrator continuously deploys applications. + +It supervises the services deployed and processes the alerts sent. + +In order to automate the deployment of infrastructures on the cloud, the DevOps system administrator automates the creation of servers using scripts, configures them and connects them, then it uses an Ansible platform to configure the deployment and control it. + +When responsible for rolling out an application on an ongoing basis, in conjunction with developer teams, it prepares test and pre-production environments. + +It prepares the various data servers and the associated storage, as well as the containers intended to receive the application. + +Then it migrates the data and deploys the application in the pre-production environment. + +He constantly exchanges with the team of developers to correct malfunctions +discovered during the different test phases. + +Using a Kubernetes-like platform, he deploys the application and its successive updates to the production environment. + +The DevOps System Administrator oversees the infrastructure and applications it has deployed, defines the metrics to monitor, and installs and configures a monitoring solution. + +When he finds an anomaly or an alert is raised, he corrects or has the problem corrected. + +In order to solve a configuration problem, understand the cause of a malfunction or install a new tool, he exchanges on the forums of professional communities, possibly in English. + +Most technical documents are written in English, the DevOps system administrator must be able to read them to find the information he is looking for and correctly interpret the advice given. This corresponds to level B2 of the European framework for reading comprehension. + +He will sometimes have to ask questions or provide an answer on user forums in English, the B1 level of the European framework for written expression is sufficient. + +He uses a logical approach to diagnose the cause of a malfunction and remedy it, he performs an active watch to maintain his skills. + +This job requires the mastery of many tools and languages as well as the understanding of abstract concepts. +The DevOps system administrator is in contact with the developer teams, its technical manager, the network and security teams, the hosting solution providers, the professional communities of the tools it uses. + +DevOps system administrator works in a servic company + +He works as a team under the responsibility of the technical manager or the director of information systems of his company. + +In some cases, this activity is carried out entirely remotely diff --git a/docs/appendices/directives/rncp_project_perimeter.md b/docs/appendices/directives/rncp_project_perimeter.md new file mode 100644 index 0000000..406405f --- /dev/null +++ b/docs/appendices/directives/rncp_project_perimeter.md @@ -0,0 +1,37 @@ +# RNCP Project perimeter + +Target Activities: + +When working at a software publisher or in an IT department in conjunction with the developer teams, the DevOps system administrator continuously deploys applications. + +It supervises the services deployed and processes the alerts sent. In order to automate the deployment of infrastructures on the cloud, the DevOps system administrator automates the creation of servers using scripts, configures them and connects them, then it uses an Ansible platform to configure the deployment and control it. + +When responsible for rolling out an application on an ongoing basis, in conjunction with developer teams, it prepares test and pre-production environments. + +It prepares the various data servers and the associated storage, as well as the containers intended to receive the application. Then it migrates the data and deploys the application in the pre-production environment. + +He constantly exchanges with the team of developers to correct the malfunctions discovered during the different phases of testing. + +Using a Kubernetes-like platform, he deploys the application and its successive updates to the production environment. + +The DevOps System Administrator oversees the infrastructure and applications it has deployed, defines the metrics to monitor, and installs and configures a monitoring solution. + +When he finds an anomaly or an alert is raised, he corrects or has the problem corrected. + +In order to solve a configuration problem, understand the cause of a malfunction or install a new tool, he exchanges on the forums of professional communities, possibly in English. + +Most technical documents are written in English, the DevOps system administrator must be able to read them to find the information he is looking for and correctly interpret the advice given. This corresponds to level B2 of the European framework for reading comprehension. + +He will sometimes have to ask questions or provide an answer on user forums in English, the B1 level of the European framework for written expression is sufficient. + +He uses a logical approach to diagnose the cause of a malfunction and remedy it, he performs an active watch to maintain his skills. + +This job requires the mastery of many tools and languages as well as the understanding of abstract concepts. + +The DevOps system administrator is in contact with the developer teams, its technical manager, the network and security teams, the hosting solution providers, the professional communities of the tools it uses. + +The DevOps System Administrator works in a Digital Services Company (ESN), Cloud Operator, Software Publisher or CIO of a large enterprise. + +He works as a team under the responsibility of the technical manager or the director of information systems of his company. + +In some cases, this activity is carried out entirely remotely. diff --git a/docs/includes/extra.yaml b/docs/includes/extra.yaml index 38e3608..428d7ec 100644 --- a/docs/includes/extra.yaml +++ b/docs/includes/extra.yaml @@ -3,3 +3,10 @@ # array in mkdocs.yml extra: test_global_var: "Test global variable value" + DevU: "[DevUniversity](https://www.devuniversity.com/)" + DevOps_Cert: "['DevOps Engineer' training and certification](https://www.devuniversity.com/formation-devops)" + RNCP36061: "[RNCP36061 'DevOps System Administrator' professional title](https://www.francecompetences.fr/recherche/rncp/36061/)" + DevOps: "[DevOps](https://en.wikipedia.org/wiki/DevOps)" + Traefik: "[Traefik](https://traefik.io)" + Kubernetes: "[Kubernetes](https://kubernetes.io)" + K8s: "[K8s](https://kubernetes.io)" diff --git a/docs/project/.meta.yml b/docs/project/.meta.yml new file mode 100644 index 0000000..6952edd --- /dev/null +++ b/docs/project/.meta.yml @@ -0,0 +1,2 @@ +tags: + - project \ No newline at end of file diff --git a/docs/project/.pages b/docs/project/.pages index fb9c32d..991c7ae 100644 --- a/docs/project/.pages +++ b/docs/project/.pages @@ -2,8 +2,8 @@ title: Project nav: - index.md - introduction.md - - competencies.md + - overview - requirements - - planning.md + - skills.md - situations - conclusion.md diff --git a/docs/project/competencies.md b/docs/project/competencies.md deleted file mode 100644 index b8d6343..0000000 --- a/docs/project/competencies.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -tags: - - skills - - competencies ---- - -# Implemented skills and competencies - -List of competencies of the diploma framework implemented in the project - -See the professional title [framework](../appendices/directives/rncp_framework.md) diff --git a/docs/project/index.md b/docs/project/index.md index 1bd319d..5353728 100644 --- a/docs/project/index.md +++ b/docs/project/index.md @@ -2,11 +2,11 @@ ## DevOps System Administrator -### French State Professional Certificate [RNCP36061](https://www.francecompetences.fr/recherche/rncp/36061/) +#### French State Professional Certificate [RNCP36061](https://www.francecompetences.fr/recherche/rncp/36061/) ## [DevOps Engineer Certificate](https://www.devuniversity.com/formation-devops) -### [DevUniversity](https://www.devuniversity.com/), Sept. 2023 Bootcamp +#### [DevUniversity](https://www.devuniversity.com/), Sept. 2023 Bootcamp ## Diploma Project @@ -14,11 +14,11 @@ [Introduction](introduction.md) -[Implemented skills and competencies](competencies.md) +[Project overview](overview/index.md) [Requirements and specifications](requirements/index.md) -[Project planning](planning.md) +[Implemented skills and competencies](skills.md) [Work situations](situations/index.md) diff --git a/docs/project/introduction.md b/docs/project/introduction.md index 93a76b0..f3d3744 100644 --- a/docs/project/introduction.md +++ b/docs/project/introduction.md @@ -1,3 +1,8 @@ +--- +tags: + - project +--- + # Introduction diff --git a/docs/project/overview/.meta.yml b/docs/project/overview/.meta.yml new file mode 100644 index 0000000..73fd6eb --- /dev/null +++ b/docs/project/overview/.meta.yml @@ -0,0 +1,2 @@ +tags: + - overview diff --git a/docs/project/overview/.pages b/docs/project/overview/.pages new file mode 100644 index 0000000..93d8d10 --- /dev/null +++ b/docs/project/overview/.pages @@ -0,0 +1,8 @@ +title: Project overview +nav: + - index.md + - brief.md + - context.md + - objectives.md + - scope.md + - planning.md diff --git a/docs/project/overview/brief.md b/docs/project/overview/brief.md new file mode 100644 index 0000000..b42677d --- /dev/null +++ b/docs/project/overview/brief.md @@ -0,0 +1,32 @@ +--- +tags: + - project +--- + +# Project brief + +An example of a generic Python RESTful API application is proposed by DataScientest in a GitHub [repository](https://github.com/DataScientest/fastapi-docker-traefik). +The project may also be suitable for those who want to create an application or modify it. + +The candidate is asked to automatically deploy the application as a microservices architecture, on a completely new environment, in a secure way, and with API endpoinys proxied through {{Traekfik}}. + +The infrastructure should be containerized and orchestrated by {{Kubernetes}}, deployed in the Cloud on Amazon EKS, or on a local environment. + +Project realization should demonstrate: + +* most of the technical elements learned during the DevOps curriculum; +* understanding of project objectives, business needs, and application functional requirements; +* design and creation of an orchestrated containerized microservices architecture; +* data management capabilities by defining and implement pertinent data and backup requirements; +* continuous integration and deployment pipelines building skills; +* aptitude to define relevant metrics and setup efficient monitoring system +* infrastructure provisioning and application deployment automation using Infrastructure as Code. + +Project deliverables include: + +* A git repository containing functional code and accurate documentation for the whole system provisioning and deployment. +* A project dissertation +* A presentation slide desk for the project defense +* A professional portfolio demonstrating DevOps related experiences + +The full [DevOps project directives](../../appendices/directives/devops_project.md) is available in the appendices of the documentation. diff --git a/docs/project/overview/context.md b/docs/project/overview/context.md new file mode 100644 index 0000000..439c203 --- /dev/null +++ b/docs/project/overview/context.md @@ -0,0 +1,38 @@ +--- +tags: + - project +--- + +# Project Context + + +## Background Information + +This project is an integral part of the assessment for the {{DevU}} {{DevOps_Cert}}, and the {{RNCP36061}}. + +It serves as a comprehensive demonstration of the candidate's expertise and proficiency in key areas of {{DevOps}} practices. + +The project aims to showcase a holistic approach to software development, deployment, and operations, emphasizing modern methodologies and tools like Agile Software Development Life Cycle, Continuous Integration and Continuous Deployment, Observability, and Infrastructure as Code. + + +## Purpose of the Project + +The primary purpose of this project is to evaluate the candidate's ability to architect, build, deploy, and monitor a microservices-based application in a cloud environment, specifically within a Kubernetes cluster. + +It aims to assess the candidate's skill set in applying DevOps principles and practices to real-world scenarios, highlighting the importance of automation, continuous integration and deployment, and monitoring in the software development lifecycle and IT operations. + +The project is designed to showcase a wide range of skills and knowledge essential for a DevOps engineer. +This includes, but is not limited to: + +- Architecting a scalable and resilient microservices application. +- Building the application with a focus on automation and best practices in software development. +- Deploying the application to a container cluster, demonstrating skills in orchestration. +- Implementing CI/CD tools and processes to enable automated testing and deployment pipelines. +- Monitoring and logging the infrastructure and the application to ensure performance and reliability. + + +## Technical Environment + +The project revolves around a microservices architecture application, utilizing a combination of Traefik, FastAPI, and PostgreSQL. This setup is given as an example of a realistic and commonly used stack in modern cloud-native applications. + +The deployment target is a Kubernetes cluster, which is the de facto standard for orchestrating containerized applications. This choice reflects the current industry trend towards Kubernetes and its ecosystem for managing complex applications. diff --git a/docs/project/overview/index.md b/docs/project/overview/index.md new file mode 100644 index 0000000..764f45b --- /dev/null +++ b/docs/project/overview/index.md @@ -0,0 +1,17 @@ +--- +tags: + - project +--- + +# Project Overview + + +[Project brief](brief.md) + +[Project context](context.md) + +[Project objectives](objectives.md) + +[Project scope and perimeter](scope.md) + +[Project planning](planning.md) diff --git a/docs/project/overview/objectives.md b/docs/project/overview/objectives.md new file mode 100644 index 0000000..0eb58bb --- /dev/null +++ b/docs/project/overview/objectives.md @@ -0,0 +1,76 @@ +--- +tags: + - project + - objectives +--- + +# Project objectives + + +## Define application requirements and specification + +- Analyze business needs to discover and gather the application's functional and non-functional requirements. + +- Elicit and prioritize requirements to build a project plan for the application. + +- Define project specification, select solution components, and design implementation architecture. + +- Define methods, tools, and policies for the documentation of project requirements and specifications, as well as their update procedure. + + +## Setup source code and project management + +- Create and configure a central code repository to allow collaborative development + + +- Import application into source code management system and define common practices for developers + +- Define Agile project management methods and practices to ensure transparency and efficiency of communication and collaboration for the project + + +- Setup project management support tool to help plan, track, and update milestones, interations, and tasks. + + +## Automate cloud infrastructure provisioning + +- Develop and execute scripts for automating server creation, ensuring that server provisioning aligns with the project's architecture requirements. + +- Implement an automated infrastructure deployment process using configuration management tools like Ansible or Terraform, targeting a cloud environment (private, public, or hybrid). + +- Integrate robust security measures at every stage of infrastructure deployment to safeguard against vulnerabilities. + +- Establish a test and pre-production environment for validating updates and configurations before they are deployed to production. + +- Configure backup and Disaster recovery + +- Implement security best practices throughout + + +## Continuously integrate, deliver, and deploy an application + +- Prepare and manage a test environment for deploying the application, ensuring a reliable testing ground for development iterations. + +- Efficiently manage data storage and database configurations, focusing on scalability and performance. + +- Create and manage containers for the application, leveraging tools like Docker and orchestrators like Kubernetes for deployment. + +- Execute continuous deployment of the application on a chosen platform, ensuring seamless integration and minimal downtime during updates. + + +## Monitor deployed infrastructure and services + +- Define key performance indicators for the services and set up monitoring tools to track these metrics, enabling proactive management of the infrastructure and application. + +- Operate a comprehensive monitoring and observability solution to identify and address anomalies, ensuring high availability and reliability of services. + + +## Demonstrate transversal skills in action + +- Implement a problem-solving approach to tackle challenges encountered during the project, demonstrating analytical and critical thinking. + +- Demonstrate continuous learning by adapting to new tools and technologies, engaging with professional communities, and staying updated with the latest DevOps trends and practices. + + +## Professional communication and teamwork + +- Engage with professional communities, possibly in English, to share insights, seek advice, and contribute to collective knowledge. diff --git a/docs/project/planning.md b/docs/project/overview/planning.md similarity index 100% rename from docs/project/planning.md rename to docs/project/overview/planning.md diff --git a/docs/project/overview/scope.md b/docs/project/overview/scope.md new file mode 100644 index 0000000..ec82bf6 --- /dev/null +++ b/docs/project/overview/scope.md @@ -0,0 +1,70 @@ +--- +tags: + - project + - scope +--- + +# Project scope and perimeter + + +## In-Scope + + +### Infrastructure Automation and Deployment + +- Automating the creation and configuration of virtual servers. +- Utilizing tools like Ansible and Terraform for infrastructure deployment in a cloud environment (private, public, or hybrid). +- Implementing security measures at each stage of infrastructure development and deployment. + + +### Continuous Application Deployment + +- Preparing and managing a test environment for the application. +- Managing data storage and database configurations. +- Containerization of the application, using Docker and orchestrating with Kubernetes. +- Deploying and updating the application continuously on a cloud platform. + + +### Monitoring and Maintenance + +- Setting up and operating monitoring tools for the infrastructure and application. +- Defining and tracking service performance indicators. +- Identifying and resolving any anomalies or issues in the deployed services. + + +### Professional Skills and Team Collaboration + +- Demonstrating problem-solving capabilities and continuous learning throughout the project. +- Effective communication with team members, technical managers, and external parties like hosting providers. +- Participation and contribution to professional communities related to DevOps. + + +## Out-of-Scope + +- **Non-Cloud Deployments**: deployment on physical servers or non-cloud environments is not covered. + +- **Advanced Machine Learning or AI Integration**: the project will not delve into complex machine learning or AI-driven functionalities. + +- **Legacy System Integration**: integration with outdated or legacy systems is not part of this project. + +- **Comprehensive User Interface Development**: while basic UI elements might be developed for application interaction, creating an advanced or comprehensive user interface is not included. + +- **Non-Functional Requirements Beyond Scope**: aspects such as internationalization, extensive accessibility features, and legacy data migration are not included. + + +## Boundaries and Limitations + +- **Resource Limitations**: the project is bound by predefined resource allocations in terms of cloud infrastructure and budgetary constraints. + +- **Time Constraints**: the project has a fixed timeline aligned with the diploma program schedule. + +- **Technical Boundaries**: the scope is limited to the tools and technologies specified (e.g., Ansible, Terraform, Kubernetes, FastAPI, PostgreSQL). + + +### Assumptions and Dependencies + +- **Cloud Provider Accessibility**: the project assumes availability and access to the chosen cloud provider's services and resources. + +- **Tool Availability**: it is assumed that all necessary tools and platforms (like Kubernetes, Ansible, Terraform) are accessible and usable within the project's framework. + +- **Stakeholder Support**: continued support and collaboration from team members, technical managers, and other stakeholders are assumed throughout the project's duration. diff --git a/docs/project/skills.md b/docs/project/skills.md new file mode 100644 index 0000000..e4bf785 --- /dev/null +++ b/docs/project/skills.md @@ -0,0 +1,72 @@ +--- +tags: + - project + - skills + - competencies +--- + +# Implemented skills and competencies + +List of competencies of the diploma framework implemented in the project + +See the professional title [framework](../appendices/directives/rncp_framework.md) + +List of standard activities and professional skills (RNCP): + + +## Automate Cloud Infrastructure Deployment + +* Automate server creation using scripts +* Automate infrastructure deployment +* Secure infrastructure +* Put infrastructure into production in the cloud + +DevOps system administrator automates infrastructure deployment on a private, public cloud or hybrid. +It automates the creation and configuration of virtual servers using scripts and then using configuration management tools such as Ansible or Terraform, it automates the deployment of the infrastructure. +At each stage of his work, he puts in place all the security measures. +Depending on the infrastructure to be deployed, it prepares a test and pre-production environment to test updates before they go into production. +It configures the cloud offering on which it will deploy the infrastructure. +Using an Ansible configuration management tool, it deploys the infrastructure on a private cloud, public or hybrid and then checks that all services are accessible by end users. +The DevOps system administrator is in contact with its technical manager, network teams and security, hosting solution providers, professional communities of the tools it uses. +The DevOps system administrator works in a digital services company (ESN), at a cloud operator, at a software publisher or in the IT department of a large company. +Works as a team under the responsibility of the Technical or Systems Manager company information. +In some cases, this activity is carried out entirely remotely. + + +## Continuously deploy an application + +* Prepare a test environment +* Manage data storage +* Manage containers +* Deploy an application on a platform + +When working at a software publisher or in an IT department in connection with the developers, the DevOps system administrator continuously deploys applications. +It retrieves the codes of the application to deploy, then prepares a test environment and deploys it the application before it goes into production. +It performs the first tests and reports malfunctions to developers. +In each of the test, pre-production and production environments, it prepares the different data servers and associated storage, then it creates and manages the containers intended to receive the application. +It migrates the data and deploys the application in the pre-production environment. +He constantly exchanges with the team of developers to correct malfunctions discovered during the different test phases. +Using a Kubernetes-like platform, it deploys the application and its successive updates on the production environment. +The DevOps system administrator is in contact with the developer teams, its manager technical, hosting solution providers, professional tool communities that he uses. +The DevOps system administrator works in a digital services company (ESN), at a software publisher or in the IT department of a large company. +Works as a team under the responsibility of the Technical or Systems Manager company information. + + +## Monitor deployed services + +* Define and implement service statistics +* Operate a monitoring solution +* Exchange on professional networks possibly in English + +The DevOps System Administrator oversees the infrastructure and applications it has deployed. +It defines the indicators to monitor and sets up the tools to do so, then installs and configures a monitoring and observability solution. +When he finds an anomaly, he corrects or has the problem corrected. +In order to solve a configuration problem, understand the cause of a malfunction or install a new tool, it exchanges on professional community forums. +The DevOps system administrator is in contact with the developer teams, its technical manager, network and security teams, hosting solution providers, communities of yhe professional tools he uses. +The DevOps system administrator works in a digital services company (ESN), at a cloud operator, at a software publisher or in the IT department of a large company. + + +## Transversal skills in employment: + +* Implement a problem solving approach +* Continuous learning