Always choose simple code than complex
Any Code follows TDD (Test Driven Design)
Modularity is always preffered
Any repository should have a test directory for unit testing code.
Compiled
Transormed
Unit Tests
Scan the code for problems
Report Problems
Eliminstate Defects
Frequently merging the code changes
CI Tools: ✔ Github Action, Jenkins, Gitlab CI , Circle CI
Source Code with Git
Github
👷 Build
❓QA
⚠⚠⚠ Report Problems
🚧 Eliminstate Defects
Code
Build
Tests (QA, Stage) : Now need a business decision to push code in production 👇
Release : The result of all what is behind is called a package 📦 That is ready to be deploy 👇
Deploy
Operate
We use github workflows
Any code repository should contain a .github directory with all the workflows needed to test all the repo
Push to major branch like DEV and Main should be made every FRIDAY 4PM
Managing and provisionning infrastructure using Code
Use Code to deploy infrastructure of any size
Provision new ressources / modify existing ressource - using Code
Deployment consistense (ensure every config is deploy the same way)
Sef Documenting (see how differents version where deployed to identified what change)
Replicate environments to Test, QA and Prod
Doing the changes in a maintanable way
Minimizing the configuration drift
Controlling the configuration/deployment
Configuration management keep all servers at consistent state
Identify the state of infrastructure
Replicate environments to Test, QA and Prod
Tools:
- ✔ Ansible
-
Feature: This branch is for implementing features and it can contains sub-features directories
Development: This branch is for a set of features already validated, and should be tagged with different version
Main: This branch contains exactly the same code with the one production and is protected nobody should push there
HotFix: This branch contains only hot changement , when something is in production and we did an error, we should then merge the correction of HotFix in DEV branch and in Main Branch
-
Pull Request
All ToDo should be github issues
Any good code upgrade that can be done and that is not done yet shoul be pull request
What ca be advantages :
- Quickly respond to problems
- Collect System Metrics
Virtualization and Containerization
- Docker
What can be advantages :
- Quickly respond to problems
- Collect System Metrics
- Represent data in a presentable manner
- Real time monitoring and notifications
- Assist in troubleshooting
Infrastructure Monitoring Tools
- Sensu
- Nagios
- New Relic
- ✔ Elastic Stack (ELK)
Application Performance Monitoring Tools
- APPDYNAMICS
- New Relic
- ✔ Elastic Stack (ELK)
What can be advantages :
- AutoScale Applications based on usage
- Create self healing systems
Tools
- Docker swarm
- ✔ Kubernetes
- ZooKeeper
- Terraform
A sprint last one Week
A Detailed Planning is available on the planning.excel file, and it contains exactly for each week what the print ToDo