It's usually not enough time for improving comfort of code writing and product monitoring. But this is an important thing for making software products with high quality. IT society even made awesome tools for making our life easier and culture of software engineering continue growing.
3. ”
That complex whole which includes
knowledge, belief, art, morals, law, custom
and any other capabilities and habits
acquired by man as a member of society.
3
Edward Burnett Tylor
8. CODE CONVENTIONS
A set of guidelines for a specific programming
language that recommend programming style,
practices and methods for each aspect of a piece
program written in this language.
8
Spaghetti code is a bad practice.
9. AUTOMATED TESTING
- Unit testing;
- Integrating testing;
- System testing;
- Performance testing;
- Other testing...
9
10. VERSION CONTROL
10
Problems we need to solve:
➔ retain few latest versions of our
product;
➔ retain history of changes;
➔ possibility to work in parallel;
➔ possibility to rollback some changes;
12. VERSION CONTROL - Our Solution
Use BitBucket as git server.
Implement each feature in separated branch.
Merge through pull request.
Make tag for each version.
12
13. CODE REVIEW
13
Problems we need to solve:
➔ minimize human mistakes;
➔ catch problematic code on early
stage;
➔ exchange experience between
teammates;
15. CODE REVIEW - Our Solution
Pull request for every merge in master.
Each repository have primary reviewers.
Everyone can review and decline any pull request.
Group decision about merge.
15
16. CODE ANALYSIS
16
Problems we need to solve:
➔ keep code clean;
➔ argumentative measures of our code;
➔ fast and automated code analysis;
➔ track history of our code measures.
18. CODE ANALYSIS - Our Solution
Use SonarQube for Continuous Inspection.
Run code analysis during night builds.
Make KPI for code improvements monthly (metrics
and value that we need to improve during the
month).
18
19. CODE INSPECTION - SonarQube
SonarQube - code quality management pluggable platform.
Support of several languages.
Duplications & Complexity.
Code coverage.
Detection violations (Checkstyle, PMD, FindBugs).
Quality profiles and gates.
19
23. CONTINUOUS INTEGRATION
23
Problems we need to solve:
➔ integrate changes of teammates
frequently;
➔ check each integration;
➔ painless releases;
➔ painless deployments.
25. CONTINUOUS INTEGRATION - Our Solution
Use Jenkins for running jobs.
Check every pull request.
Check every integration into master branch.
Prepare release by one button click or by schedule.
Deploy each release into artifacts storage.
25
26. Problems we need to solve:
➔ monitor health of our application on
different layers and aspects;
➔ collect information about specific
nuances about our functionality;
➔ analyze collected information in
comfortable way.
MONITORING
26
28. MONITORING - Our Solution
Use Zabbix for black box monitoring: hardware.
Use Grafana and Kibana for white box monitoring.
Monitor layers:
Hardware;
Operation System;
Docker & VM;
Application.
28
29. MONITORING - Zabbix
Zabbix is the ultimate enterprise-level software designed for
real-time monitoring of millions of metrics collected from tens
of thousands of servers, virtual machines and network
devices.
29
31. MONITORING - Grafana, Kibana
Grafana - graph and dashboard builder for visualizing time
series metrics.
Kibana - data visualization platform that allows you to interact
with your data through stunning, powerful graphics.
31