2. • following the best practices (SOLID, DRY, etc.)
• converting to a unified code style (PSR, etc.)
• reducing algorithmic complexity (KISS, etc.)
The main target of refactoring is increase code quality by
3. • resistance to modifications
• improving maintainability
• internal satisfaction of a team
The main benefits of increasing code quality are
5. • reduction of errors and misprints due to a
built-in code analyzer and autocompletion
• increase in productivity through powerful
features for refactoring
Solved problems by using IDE
6. • PhpStorm for PHP projects
• WebStorm for front-end and Node.js projects
• PyCharm for DevOps tools (SaltStack, Fabric)
• IntelliJ IDEA for our ESB (based on ServiceMix)
Products that we are using
9. • knowledge transfer about the task
• the division of responsibility
• quality control of coding
• sharing of experience
Solved problems through code review
10. • GitHub, our choice (+ Gogs as failover mirror)
• Bitbucket
• GitLab
• Upsource
Services that I have tried
13. • exclusion parser errors of interpreted
languages through static code analysis
• prevent regression of functionality by applying
unit and integration tests
• collection of codebase quality metrics
Solved problems by using CI
14. • works on Jenkins
• all configurations (for PHP and Node.js
projects) in one repository
• a role in refactoring is static analysis and
collection of code quality metrics
What is CI in Enter?
15. a typical Ant configuration
What it includes for a PHP project?
24. Solutions that I have tried
• RSYSLOG, our choice (+ Fabric with Python
scripts as a tool for analysis)
• ELK stack
Solved problems through logs aggregation
• understanding of what is happening in a
runtime on a large VPS cluster
25. Simple script on the basis of decision
1. get the base name of fpm log
files: ls pool-*.log 2>/dev/null
| cat
2. get errors for each of them:
cat %s* | grep -Eo "PHP.*[0-9]"
| sort | uniq -c
3. send email to the team
40. Thank you for your attention!
Have questions?
Kamil Samigullin
a some developer
kamil@samigullin.info
@ikamilsk
github.com/kamilsk
linkedin.com/in/kamilsk