SlideShare uma empresa Scribd logo
1 de 77
Baixar para ler offline
MODERN WEB APPLICATIONS 
! 
INFRASTRUCTURE 
PRACTICES, FLOWS AND TOOLS $CUGFQP
! 
! 
IGOR ALPERT 
# IGOR_ALPERT@EPAM.COM 
 
HTTP://UA.LINKEDIN.COM/IN/IALPERT 
EPAM 2
Application ! 
! 
GXGNQRGT 
EPAM 3
Application 
CSS 
JS 
HTML 
! 
! 
+%CP(62 
EPAM 4
5 
Application 
EPAM 
$ 
Feature 
#1 
Feature 
#2 
Bug 
fixing 
! 
6JG[CEVCUCVGCO
Logs 
6 
Application 
EPAM 
$ % 
! 
5QWTEGEQFG 
)KICD[VGUQHFGDWI
7 
Application 
EPAM 
Logs 
Doc 
! 
$ % 
%QOOGPVU 
CPFGZCORNGU
8 
Application 
$ 
Logs 
Docs 
Config 
! 
% 
KHHDGVYGGPFGXCPFRTQFWEVKQP 
EPAM
Packages 
9 
Application 
$ 
Config 
! 
% 
L3WGT[CPFHTKGPFU 
EPAM 
Logs 
Docs
10 
Application 
$ 
Logs 
Docs 
Config 
Tests 
! 
% 
Packages 
*CRR[RCVJ 
EPAM
11 
Application 
$  
! 
% 
/CIKEDWKNFU[UVGO 
EPAM
12 
Application 
0.5 
$ 0.8 
1.0 
! 
%  
#NRJC$GVC4% 
EPAM
13 
Application 
0.5 
$ 0.8 
1.0 
! 
Dev 
Test 
Prod 
%  
GXU3#5WRRQTV%NKGPV 
EPAM
14 
Application 
0.5 
$ 0.8 
1.0 
! 
Dev 
Test 
Prod 
APP 
DB 
SV 
%  ' 
#RR5GTXGT 
EPAM
' ' 
' ' 
DB 
DB 
DB 
DB 
15 
Application 
$ 
! 
%   
6QPUQHUGTXGTU 
CPFCVC$CUGU 
EPAM 
.QCFDCNCPEGT
16 
Application 
$ 
! 
%   7 
Errors 
Metrics 
Logs 
7UGHWNKPHQTOCVKQPNKXGUJGTG 
EPAM
17 
Agenda ! 
$ 
DEVELOPMENT 
WORKFLOW 
% 
SOURCE 
MANAGEMENT 
 
BUILD 
PIPELINE 
 
DEPLOY 
PLATFORMS 
7 
MONITORING 
METRICS 
# 
CONTINUOUS 
INTEGRATION 
EPAM
$ 
DEVELOPMENT 
WORKFLOW
DEVELOPMENT WORKFLOW $ 
#TEJKVGEV6GEJ.GCFGXGNQRGTU 
DEV ( $ 
Managers 
5WRRQTVGX1RU2TQDNGOOCPCIGOGPV 
) 
QA 
% 
Support 
3#.GCF/CPWCN#WVQOCVKQP 
#EEQWPV/CPCIGT#PCN[VKE 
EPAM 19
DEVELOPMENT WORKFLOW $ 
6JG[YCPVVQEQFG 
0GYHGCVWTGU6JG[YCPVVQIQNFGPRNCVGVJGKTEQFG 
6JG[YCPVVQTGFWEGVGEJPKECNFGRV 
( $ 
DEV 
#NYC[UJCXGUQOGňVKP[ʼnEJCPIG 
Managers 
) 
QA 
% 
Support 
6JG[YCPVUKORNKEKV[ 
0QOQTGUWFFGPRNCVHQTO 
EJCPIGU 
6JG[YCPVUVCDKNKV[ 
VQTGSWKTGOGPVUCPFUVQTKGU 
#UC7UGT+YCPVŎ 
-PQYPDWIU6QQOWEJVKOGVQFQHWNNTGITGUUKQP 
DGVVGTVQWUGRTGXKQWUňUVCDNGʼnXGTUKQP 
EPAM 20
DEVELOPMENT WORKFLOW $ 
$ 
DEV QA 
( 
Managers 
) 
% 
Support 
#EVYKVJ+PVGITKV[UJCTGFIQCNU 
EPAM 21
DEVELOPMENT WORKFLOW $ 
( 
DESIGN 
) 
TESTING 
 
$ 
DEVELOP BUILD, DEPLOY 
LAUNCH 
a 
BUG FIX 
' 
2-4 WEEKS ITERATION 
EPAM 22
DEVELOPMENT WORKFLOW 
#WVQOCVGFVGUVU 
%QNNCDQTCVKXGFGXGNQROGPV 
%QFGHGCVWTGUYKVJVGUVKPOKPF 
#WVQOCVGFDWKNF 
9TKVGCUOWEJHCKNKPIVGUVUCURQUUKDNGVQ 
EQXGTTGSWKTGOGPVU 
2NCPCPFGUKIP 
$ 
'CEJUQWTEGEJCPIGVTKIIGTUYJQNG 
DWKNFRKRGNKPGVQTWP 
6JKPMJQY[QWTHGCVWTGYKNNDG 
KORNGOGPVGFCPFKPVGITCVGFYKVJ 
QVJGTHGCVWTGU 
 
( 
* 
% 
$ 
+PVGITCVKQP 
4GCNVKOGOQPKVQTKPICPFHGGFDCEM 
UP TO 1 DAY ITERATION 
EPAM 23
24 
DEVELOPMENT WORKFLOW 
SERVERS 
1. NGINX 
2. APACHE HTTPd 
3. TOMCAT 
4. IIS 
5. NODEJS 
6. EXPRESS 
7. … 
EPAM 
STYLES 
1. TWITTER BOOTSTRAP 
2. ZURB FOUNDATION 
3. COMPASS 
4. SASS 
5. LESS 
6. STYLUS 
7. CUSTOM SOLUTION 
FRAMEWORKS 
1. ANGULARJS 
2. BACKBONE 
3. EXTJS 
4. SENCHA TOUCH 
5. EMBERJS 
6. METEOR 
7. DERBY 
8. CUSTOM SOLUTION 
TESTING 
1. JASMINE 
2. MOCHA 
3. BUSTER 
4. QUNIT 
5. KARMA 
6. PROTRACTOR 
7. NIGHTWATCH 
8. INTERN 
9. WEBDRIVER.IO 
10.CUSTOM SOLUTION 
OS 
1. WINDOWS 
2. OSX 
3. UBUNTU 
4. CENTOS 
5. FREEBSD 
6. COREOS 
TOOLS 
1. GRUNT 
2. GULP 
3. NPM 
4. BOWER 
5. YEOMAN 
6. CUSTOM SOLUTION 
DATABASES 
1. MONGODB 
2. COUCHDB 
3. RIAK 
4. REDIS 
5. CASSANDRA 
SERVICES 
1. AMAZON 
2. NODEJITSU 
3. HEROKU 
4. MONGOLAB 
5. FIREBASE 
6. JOYENT 
7. PUSHER 
8. DOCKER 
$ 
6QPUQHTGCF[VQWUG 
1RVKQPUHQT[QWT 
RTQLGEV 
SERVER SIDE 
1. PHP 
2. RUBY 
3. PYTHON 
4. … 
!
DEVELOPMENT WORKFLOW $ 
Ability to compile native modules — easier to “make from source” then in 
Windows 
;QWTHTKGPFU 
VIRTUAL MACHINE 
NODEJS, RUBY, PYTHON 
Your toolset will ask for them as a dependency 
Works better and faster on Unix based systems 
WINDOWS 
Building a Module in Windows 
node-gyp, Python, shell, VS, … 
55*0Q)7+ 
%JGH2WRRGV8 
EPAM 25
DEPENDENCY MANAGEMENT $ 
Homebrew 
Packager for OSX, uses formulas to install 
software 
Mac OSX 
brew install [package] 
Advanced Packaging Tool 
Package manager for Debian GNU/Linux 
distribution and its variants 
Ubuntu 
apt-get install [package] 
Yum 
The Yellowdog Updater, Modified (yum) is an 
open-source command-line package 
management utility for Linux operating 
CentOS 
yum install [package] 
Chocolatey 
Chocolatey NuGet is a Machine Package 
Manager, somewhat like apt-get, but built with 
Windows in mind 
42/ 
Windows 
choco install [package] 
'$ 
EPAM 26
DEPENDENCY MANAGEMENT $ 
OPENSSL 
PRCE 
NGINX 
PKG-CONFIG 
MAKEDEPEND 
GIT 
GIT-FLOW 
brew install git-flow brew install nginx 
EPAM 27
DEPENDENCY MANAGEMENT $ 
NVM 
APP1 
Node 0.11x 
NVM 
APP2 
Node 0.10.31 
5VKNNVJGUCOGRTQLGEV 
EPAM 28
DEPENDENCY MANAGEMENT $ 
NodeJS 
Node Version Manager - Simple bash script 
to manage multiple active node.js versions 
NVM 
https://github.com/creationix/nvm 
Ruby 
RVM is the Ruby enVironment Manager. It 
manages Ruby application environments and 
enables switching between them 
RVM 
https://github.com/wayneeseguin/rvm 
Python 
It creates an environment that has its own 
installation directories, that doesn’t share 
libraries with other virtualenv environments 
virtualenv 
https://github.com/pypa/virtualenv 
NodeJS 
A Node version manager for the windows folks 
out there. Inspired by n and nodenv 
Nodist 
https://github.com/marcelklehr/nodist 
9KPFQYU 
EPAM 29
DEPENDENCY MANAGEMENT $ 
+PVGTHCEGKUVJGUCOG 
NPM BOWER 
manager install 
dependencies: { 
name: version, 
name: folder, 
name: package 
}, 
devDependencies: { 
test-framework-name: version 
} 
dependencies: { 
name: version, 
name: folder, 
name: package 
}, 
devDependencies: { 
test-framework-name: version 
} 
manager install 
manager install 
EPAM 30
DEPENDENCY MANAGEMENT $ 
NPM 
LODASH 
GRUNT 
PACKAGE.JSON 
ASYNC 
DEV-DEPS 
KARMA 
Packages: 
Downloads: 
Corporate mirrors 
npm init 
npm install 
npm install —save 
QPņVHQTIGVVQ 
WRFCVG[QWTRCEMCIGU 
EPAM 31
DEPENDENCY MANAGEMENT $ 
BOWER 
BACKBONE 
LODASH 
BOWER 
JQUERY 
UNDERSCORE 
BOOTSTRAP 
Packages: 
npm install -g 
bower init 
bower install 
http://bower.io/ 
(QTHTQPVGPF 
EPAM 32
BUILD 
PIPELINE
BUILD PIPELINE  
Source 
Concatenate 
Uglify 
SourceMaps 
Test 
Karma 
Protractor 
Mocha 
Coverage 
Preprocess 
LESS 
SASS 
Compass 
Watch 
LiveReload 
Rebuild 
Serve 
Assets 
Templates 
CSS 
HTML processing 
Images optimization 
Custom 
ChangeLog 
Notifications 
console.debug 
6CUMUVQCWVQOCVG 
KP[QWTDWKNFRKRGNKPG 
EPAM 34
BUILD PIPELINE ! 
GRUNT 
Packages: 
grunt 
grunt coffee:app 
FILE BASED 
Good for file operations like copy/move/save. Configuration over 
code. Better for small projects with small amount of files. 
TONS OF PLUGINS 
Most popular JS task runner. Almost any possible task is available 
as plugin. You can perform build-in or custom operations. Sync/ 
Async 
1 
2 
Gruntfile.js 
Gruntfile.coffee 
jshint: { 
// define the files to lint 
files: ['gruntfile.js', 'src/**/*.js', 'test/**/*.js'], 
// configure JSHint 
options: { 
// more options here 
globals: { 
jQuery: true, 
console: true, 
module: true 
} 
} 
} 
http://gruntjs.com/ 
http://gruntjs.com/plugins 
ITWPVEQPVTKDLUJKPV 
EPAM 35
BUILD PIPELINE ! 
GULP 
1 
2 
gulpfile.js 
EASY API 
Only 4 API methods: task, watch, src, dest. Easy to write complex 
flows. 
STREAM BASED 
No temporary files. Code over Configuration. Much more faster 
then Grunt for file-content processing operations. 
ZHCUVGT 
var gulp = require('gulp'); 
! 
gulp.task('default', function() { 
// place code for your default task here 
}); 
Packages: 
npm install --save-dev gulp 
gulp 
grunt coffee 
http://gulpjs.com 
http://gulpjs.com/plugins/ 
EPAM 36
BUILD PIPELINE ! 
YEOMAN 
KARMA TESTS 
Pre-packed with test suites 
SCAFFOLDING 
Easy scaffolding system to generate 
application components 
SERVER 
Comes with build-in live-reload 
and grunt task 
1 
2 
3 
$ yo angular:controller myController 
$ yo angular:directive myDirective 
$ yo angular:filter myFilter 
$ yo angular:service myService 
http://gulpjs.com 
http://gulpjs.com/plugins/ 
Generators: ~1100 
npm install -g yo 
npm install -g generator-angular 
yo angular 
ITWPVUGTXG 
EPAM 37
BUILD PIPELINE 
SLUSH 
https://www.npmjs.org/package/slush 
BROCCOLI 
https://www.npmjs.org/package/broccoli 
JAM AUTOMATION 
https://github.com/caolan/jam 
http://indigounited.com/automaton/ 
BRUNCH 
ANGUS 
http://brunch.io/ https://github.com/nickjanssen/angus 
! 
EPAM 38
! 
SOURCE 
MANAGEMENT
SOURCE  
GIT 
EASY BRANCHING AND MERGING 
Cheap branching — just a reference to commit. Lots of possible 
merging strategies and conflict resolving. History rewrite 
DISTRIBUTED 
You can work alone or with a team. You can work with or without 
central server. Even without network connection. 
FAST 
You can clone whole repo/branch or just a few commits. 
All meta-data is stored in one place ~/.git 
1 
2 
3 
 
git init 
! 
git add 
git commit 
! 
git push —force 
! 
git rebase -i 
git merge 
! 
git tag -a 
%QPHNKEVTGUQNXGF 
EPAM 40
SOURCE  
GITLAB 
PRIVATELY HOSTED 
You can integrate it with your own infrastructure, users base, private 
services etc 
TRUSTED BY ENTERPRISE 
Fully manageable and configurable 
Same capabilities — collaboration, forking, wiki and JIRA 
OPEN-SOURCE 
Hosted on GitHub. 
You can contribute and write your own features 
1 
2 
3 
-
 
*CRR[%NKGPVU 
EPAM 41
SOURCE  
GITHUB 
WEB INTERFACE 
You are able to create branches, tags, pull-requests, edit and commit 
files directly from browser 
CODE REVIEW AND COLLABORATION 
Do code-review with your team, leave comments, track issues and 
maintain WIKI pages 
FORK, PULL REQUEST 
You can fork and contribute to any public repository. 
Home for open-source projects 
1 
2 
3 
Mirror mirror on the wall, 
who forks best of them all? 
EPAM 42
SOURCE  
BITBUCKET 
FREE PRIVATE REPOS 
Unlike GitHub this service will allow you to create 
*unlimited* amount of private repositories. 
ENTERPRISE ORIENTED 
Natively integrates with Atlasssian software stack. 
Trusted by Enterprise. 
SPOONING vs. FORKING 
Spooning - with Bitbucket is a pair programming process as an 
opposite to forking 
1 
2 
3 
ň$KVDWEMGVURQQPKPI 
ŃLWUV)QQINGKV 
EPAM 43
SOURCE  
BRANCHING 
MODELS 
Centralized 
Gitflow 
Github 
Feature branch 
FEATURE BRANCH 
Commit 
Commit 
Commit 
Commit 
REBASE 
SQUASH 
… 
REBASE 
UPSTREAM BRANCH 
FEATURE 
FEATURE 
FEATURE 
FEATURE 
EPAM 44
SOURCE  
HOOKS 
Use Cases 
SPELLING ERRORS 
ENFORCE RULES 
EMAIL / SMS NOTIFICATIONS 
DEPLOY TRIGGER 
http://githooks.com/ 
9GDJQQMUVQQ 
All Git hooks are ordinary scripts that Git executes when certain 
events occur in the repository. This makes them very easy to 
install and configure 
Client Server 
PRE-COMMIT 
PREPARE-COMMIT-MSG 
COMMIT-MSG 
POST-COMMIT 
POST-CHECKOUT 
PRE-REBASE 
PRE-RECEIVE 
UPDATE 
POST-RECEIVE 
EPAM 45
SOURCE  
COMMIT 
MESSAGES 
[FIX] Closes: #1234 
[BREAKING] Interface of method has been changed… 
[COMPLETE] Feature (F16:Raptor) is ready for integration 
[ENV] Some minor refactoring 
MAKE YOUR CONVENTION 
ISSUE MANAGEMENT 
1 
2 
3 RELEASE NOTES AND CHANGE LOGS 
4 ANNOTATIONS: squash! fixup! 
ň+ņXGHKZGFVJCVʼn 
EPAM 46
# 
CONTINUOUS 
INTEGRATION
CONTINUOUS INTEGRATION # 
TECHNICAL 
DEPT 
TESTS WILL BE IN THE NEXT 
RELEASE 
$WITKXGPGXGNQROGPV 
CODE ENTROPY: “IF I TOUCH THAT 
CODE EVERYTHING WILL BREAK” 
TODO/FIXME STATEMENTS 
DOCS? MY CODE IS STATE OF ART 
LET’S JUST COPY/PASTE FOR NOW 
1 
2 
3 
4 
Fix this code, the only one who can. 
Is in another company already. 
http://en.wikipedia.org/wiki/Technical_debt 
5 
EPAM 48
CONTINUOUS INTEGRATION # 
CODE 
QUALITY 
TECH BACKLOG 
CODE-STYLE: 
TABS/SPACES, INDENTATION 
.KUVQHVCUMU
RTKQTKV[ 
STATIC ANALYZE AND COMPLEXITY: 
BUGS, DUPLICATION, STANDARDS 
1 
2 
3 
4 UNIT-TESTS AND COVERAGE 
DOCS AND COMMENTS 
AUTOMATE 
5 
EPAM 49
CONTINUOUS INTEGRATION # 
CODE 
STYLE 
Other validations JSCS Presets 
- COFFEELINT 
- CSS 
- HTML 
Tools 
- JSHINT + STYLISH 
- PLATO 
- CODE PAINTER 
- EDITORCONFIG 
- JSCS 
- ESLINT 
- AIRBNB 
- CROCKFORD 
- GOOGLE 
- JQUERY 
- MDCS (THREE.JS) 
- WIKIMEDIA 
- YANDEX 
1 
2 
3 
4 
5 
READABILITY 
GOOD NAMES 
CLEAR LOGIC 
POTENTIAL ISSUES 
GUIDELINES 

 
EPAM 50
CONTINUOUS INTEGRATION 
TESTS 
# 
4GF)TGGP4GHCEVQT 
LONG (hours) 
FEEDBACK TIME 
MEDIUM (minutes) 
FAST (seconds) 
SMOKE TESTS 
UNIT-TESTS 
UI 
API 
TDD (BDD) 
BETTER 
CODE UNDERSTANDING 
1 
2 
3 
MOTIVATION 
4 RELEASE FASTER 
RELIABILITY 
5 
FILE SYSTEM 
DATABASE 
HEADLESS 
END-TO-END 
SERVICES 
5VWDU/QEMU 
.QECNQPN[ 
%CPDGTGOQVG 
5CHGTTGHCEVQTKPI 
(KTUVHCKNGF 

2GTHQTOCPEGOGVTKEU 
EPAM 51
CONTINUOUS INTEGRATION 
FIXTURES 
# 
Permission.coffee Role.coffee 
module.exports.Permission = 
login: 
name: 'login' 
title: 'Login Page' 
! 
home: 
name: 'home' 
title: 'Home Page' 
! 
student: 
name: 'student' 
title: 'Student Section' 
! 
moderator: 
name: 'moderator' 
title: 'Admin Section' 
module.exports.Role = 
guest: 
name: 'Guest' 
permissions: [ 
Permissions.login 
Permissions.home 
] 
! 
user: 
name: 'User' 
permissions: [ 
Permissions.home 
Permissions.student 
] 
! 
admin: 
name: 'Admin' 
permissions: [ 
Permissions.home 
Permissions.student 
Permissions.moderator 
] 
db.Role 
Clean 
Role.coffee 
6GUVKPI$TGNCVGFNQIKE 
EPAM 52
CONTINUOUS INTEGRATION 
CODE 
COVERAGE 
# 
COVERALS.IO 
CODECLIMATE 
97% 
NOT TESTED AREA OF APP 
DEAD CODE DETECTION 
1 
2 
3 TESTING QUALITY 
4 ACCEPTANCE THRESHOLD 
70-90% 
5 REPORTS 
Istanbul 
JSCoverage 
Blanket 
*KUVQT[CPFUVCVUUGTXKEG 
 #9'51/' 
EPAM 53
CONTINUOUS INTEGRATION 
DOCUMENTATION 
GENERATION 
# 
KEEP THEM UP-TO-DATE 
METHODS AND CLASSES 
1 
2 
3 PUBLIC API 
4 USAGE EXAMPLES 
5 (RE) USE YOUR TESTS 
@example 
@depricated 
@package 
@private 
@api 
Output 
HTML 
MARKDOWN 
JSDoc 
@param 
@name 
@class 
@method 
@option 
Tools 
JSDOC* 
CROJSDOC 
APIDOCJS 
DOX 
MOX 
DOCCO 
CODO 
;17$7+.6+6 
;17470+6Ŏ *WOCPTGCFCDNGCPF 
)KV*WDHTKGPFN[ 
EPAM 54
CONTINUOUS INTEGRATION 
.dot files 
# 
Project System 
.gitignore 
.gitattributes 
.jshintrc 
.jshintignore 
.editorconfig 
.jscs.json 
.travis.yml 
ESSENTIAL PART OF YOUR ENVIRONMENT 
SHAREABLE CONFIGURATION 
EASY TO MANAGE 
1 
2 
3 
4 IDE INTEGRATION 
5 NOT A TRASH 
.bashrc 
.zshrc 
.gitconfig 
.aliases 
.functions 
.osx 
http://dotfiles.github.io/ 
Invest time learning to configure your machine 
and automate processes 
1P7PKZCNKMGU[UVGOU 
EPAM 55
CONTINUOUS INTEGRATION 
IDE 
# 
Code Completion and Inspection 
Refactoring, Metrics 
1 
2 
3 Test framework integration 
4 Debugger, Frameworks support 
5 Source Version control 
Issue trackers integration 
Online IDE 
CODIO 
CLOUD9 
CODEBOX 
CODENVY 
9GD5VQTO 
EPAM 56
CONTINUOUS INTEGRATION # 
CI 
SERVERS 
BUILDS HISTORY AND VISIBILITY 
LAST GREEN/RED STATUS 
1 
2 
3 PARALLEL BUILDS 
4 MULTIPLE ENVIRONMENTS 
5 ROLLBACK 
TOOLS 
JENKINS 
TEAMCITY 
GRUNT 
CONCRETE 
STRIDER CI 
1+6;1745'.( 
And badges: http://shields.io/ 
EPAM 57
CONTINUOUS INTEGRATION # 
HOSTED 
SERVICES 
CI AS A SERVICE 
INTEGRATED WITH GITHUB AND 
BITBUCKET 
1 
2 
3 BUILD ON SCHEDULE 
4 DEPLOY GREEN 
5 REPORTS AND STATUS DASHBOARD 
Options 
circle.yml 
.travis.yml 
Services 
TRAVIS CI 
CODESHIP 
CIRCLE CI 
BAMBOO 
MAGNUM CI 
SEMAPHORE 
GONDOR 
RULTOR
[ON 
EPAM 58
DEPLOY 
PLATFORMS
DEPLOY PLATFORMS 
SERVER 
# 
CUSTOMIZABLE STACK 
AND ENVIRONMENT 
DATA: COMPANY POLICY 
OWN SERVICES TO USE 
NEED FOR (DEV) OPS 
g / NGINX APACHE TOMCAT 
d e 
f g 
ÑSSH BASH 7SYSLOG 
# FILES TMP CACHE 
$SQL NOSQL KEY:VAL 
(SERVICES DAEMONS CRON 
mSENDMAIL W IPTABLES 
w 
.QQMUIQQF 
CHVGTC[GCTQTVYQ 
1 
2 
3 
4 
5 INFRASTRUCTURE 
K 
+CC5#/#10+)+6#.1%'#0 
QT4#%-52#%' 
EPAM 60
EPAM 
% 
61 
DEPLOY PLATFORMS 
PaaS 
# 
CLI DEPLOYS 
CONFIGURATION DASHBOARD 
1 
2 
3 BUILDING BLOCKS 
(DISK SPACE, DB, MONITORING, ADDONS) 
4 MONITORING 
5 SLA AND NODES MANAGEMENT 
Services 
NODEJITSU 
HEROKU 
CLOUD FOUNDRY 
JOYENT 
ENGINE YARD 

 
#NN[QWPGGFVQTWP[QWTCRR 

7RFCVGU5GEWTKV[Ŏ
DEPLOY PLATFORMS 
Docker 
# 
YOUR OWN PAAS 
OPEN SOURCE 
1 
2 
3 EASY SCALE 
4 MANY READY TO USE STACKS 
5 EASY TO MIGRATE 
TOOLS 
DEIS 
FLYNN 
TSURU 
OCTOHOST 
! 
1RGP5QWTEG2CC5 
YKVJ$NCEMLCEM 
#RRNKECVKQP
2NCVHQTO%QPVCKPGT 
EPAM 62
7 
MONITORING EVENTS 
METRICS
MONITORING EVENTS 
Logs 
management 
# 
FORMAT IS IMPORTANT 
AGGREGATION AND ROTATION 
1 
2 
3 SEARCH 
4 ALERTS AND NOTIFICATIONS 
5 WATCHERS 
ITGRCEMUQTVQTŎ 
ŎWUGNQIUVCUJ 
EPAM 64
MONITORING EVENTS 
Example 
# 
2014/10/02 13:58:32 [error] 925#0: *14 connect() failed (111: Connection refused) while… 
CVG 
.GXGN 
'XGPV 
SIZE 
DATE 
LOGS 
10Mb 
Sept 
10Mb 
Oct 
07 
EPAM 65
MONITORING EVENTS 
Logging 
services 
# 
Services 
PAPERTAIL 
LOGENTRIES 
SUMOLOGIC 
BOUNDARY 
SENTRY 
GRAYLOG2 
QKV[QWTUGNH 
APP 
%ELASTIC SEARCH 
DB SRV 
SYS 
n 
8 
! 
5QNWVKQPU 
CVCUQWTEGU 
EPAM 66
MONITORING 
Errors 
# 
CONTEXT IS IMPORTANT 
GROUPING 
REPRODUCE 
FAIL GRACEFULLY 
HISTORY 
Services 
… 
RAYGUN 
TRACKJS 
AIRBRAKE 
QBAKA 
MUSCULA 
JSERRLOG 
TRACEKIT 
1 
2 
3 
4 
5 
5VCEMVTCEGQT)6(1 
GHGEVKPRTQFWEVKQP! 
9QTMUQPO[OCEJKPG 
QKV[QWTUGNH 
EPAM 67
MONITORING METRICS 
Health 
Page 
# 
SERVICE #1 (UP) Ã 
SERVICE #1 (10k ops / s) Ã 
SERVICE #3 (10k users / s) Ã 
FREE SPACE (~2Gb) Â 
;QWDGVVGTFQUQOGVJKPIYKVJKV 
HARDWARE 
SERVICES AND API 
1 
2 
3 TRANSPORTS 
4 PERFORMANCE 
5 UPTIME 
EPAM 68
SUMMARY
70 
SUMMARY 
EPAM 
 
DEVELOPMENT 
WORKFLOW 
SOURCE 
MANAGEMENT 
DEPLOY 
PLATFORMS 
MONITORING 
METRICS 
Automate 
Tests 
Small features 
BUILD 
PIPELINE 
CONTINUOUS 
INTEGRATION 
'  ! #  7 
+VņUGCU[KV
71 
SUMMARY 
EPAM 
 
DEVELOPMENT 
WORKFLOW 
SOURCE 
MANAGEMENT 
DEPLOY 
PLATFORMS 
MONITORING 
METRICS 
Automate 
Tests 
Small features 
Code style 
Commits convention 
12 factor app 
BUILD 
PIPELINE 
CONTINUOUS 
INTEGRATION 
'  ! #  7 
+VņU
72 
SUMMARY 
EPAM 
 
DEVELOPMENT 
WORKFLOW 
SOURCE 
MANAGEMENT 
DEPLOY 
PLATFORMS 
MONITORING 
METRICS 
Automate 
Tests 
Small features 
Code style 
Commits convention 
12 factor app 
BUILD 
PIPELINE 
Build Blocks 
Keep it fast 
Run cycles 
CONTINUOUS 
INTEGRATION 
'  ! #  7 
QYPNQCF
73 
SUMMARY 
EPAM 
 
DEVELOPMENT 
WORKFLOW 
SOURCE 
MANAGEMENT 
DEPLOY 
PLATFORMS 
MONITORING 
METRICS 
Automate 
Tests 
Small features 
Code style 
Commits convention 
12 factor app 
Build Blocks 
Keep it fast 
Run cycles 
Fail early 
Fast feedback 
Step by Step 
BUILD 
PIPELINE 
CONTINUOUS 
INTEGRATION 
'  ! #  7 
1PGUOCNNUVGRHQT[QW 
IKCPVNGCRHQT[QWT
74 
SUMMARY 
'  ! #  7 
EPAM 
 
DEVELOPMENT 
WORKFLOW 
SOURCE 
MANAGEMENT 
DEPLOY 
PLATFORMS 
MONITORING 
METRICS 
Automate 
Tests 
Small features 
Code style 
Commits convention 
12 factor app 
Build Blocks 
Keep it fast 
Run cycles 
Fail early 
Fast feedback 
Step by Step 
BUILD 
PIPELINE 
CONTINUOUS 
INTEGRATION 
DevOps 
Production alike 
…as a Service 
+PVTQFWEGKV
Logs rotation 
75 
SUMMARY 
'  ! #  7 
EPAM 
 
DEVELOPMENT 
WORKFLOW 
SOURCE 
MANAGEMENT 
DEPLOY 
PLATFORMS 
MONITORING 
METRICS 
Automate 
Tests 
Small features 
Code style 
Commits convention 
12 factor app 
Build Blocks 
Keep it fast 
Run cycles 
Fail early 
Fast feedback 
Step by Step 
BUILD 
PIPELINE 
CONTINUOUS 
INTEGRATION 
DevOps 
Production alike 
…as a Service 
Metrics 
Checklist 
5GG#EV
Logs rotation 
76 
SUMMARY 
'  ! #  7 
EPAM 
 
DEVELOPMENT 
WORKFLOW 
SOURCE 
MANAGEMENT 
DEPLOY 
PLATFORMS 
MONITORING 
METRICS 
Automate 
Tests 
Small features 
Code style 
Commits convention 
12 factor app 
Build Blocks 
Keep it fast 
Run cycles 
Fail early 
Fast feedback 
Step by Step 
BUILD 
PIPELINE 
CONTINUOUS 
INTEGRATION 
DevOps 
Production alike 
…as a Service 
Metrics 
Checklist 
6T[KV

Mais conteúdo relacionado

Mais procurados

2012 coscup - Build your PHP application on Heroku
2012 coscup - Build your PHP application on Heroku2012 coscup - Build your PHP application on Heroku
2012 coscup - Build your PHP application on Heroku
ronnywang_tw
 
Buildout - Alles im Griff
Buildout - Alles im GriffBuildout - Alles im Griff
Buildout - Alles im Griff
frisi
 

Mais procurados (19)

JSLab. Грибанов Александр. "Yeoman - избавляемся от рутинных задач"
JSLab. Грибанов Александр. "Yeoman - избавляемся от рутинных задач"JSLab. Грибанов Александр. "Yeoman - избавляемся от рутинных задач"
JSLab. Грибанов Александр. "Yeoman - избавляемся от рутинных задач"
 
GDG Devfest 2019 - Build go kit microservices at kubernetes with ease
GDG Devfest 2019 - Build go kit microservices at kubernetes with easeGDG Devfest 2019 - Build go kit microservices at kubernetes with ease
GDG Devfest 2019 - Build go kit microservices at kubernetes with ease
 
如何透過 Go-kit 快速搭建微服務架構應用程式實戰
如何透過 Go-kit 快速搭建微服務架構應用程式實戰如何透過 Go-kit 快速搭建微服務架構應用程式實戰
如何透過 Go-kit 快速搭建微服務架構應用程式實戰
 
Continuous Integration with Robot Sweatshop
Continuous Integration with Robot SweatshopContinuous Integration with Robot Sweatshop
Continuous Integration with Robot Sweatshop
 
Chef training Day4
Chef training Day4Chef training Day4
Chef training Day4
 
60分鐘完送百萬edm,背後雲端ci/cd實戰大公開
60分鐘完送百萬edm,背後雲端ci/cd實戰大公開60分鐘完送百萬edm,背後雲端ci/cd實戰大公開
60分鐘完送百萬edm,背後雲端ci/cd實戰大公開
 
Dev fest 2020 taiwan how to debug microservices on kubernetes as a pros (ht...
Dev fest 2020 taiwan   how to debug microservices on kubernetes as a pros (ht...Dev fest 2020 taiwan   how to debug microservices on kubernetes as a pros (ht...
Dev fest 2020 taiwan how to debug microservices on kubernetes as a pros (ht...
 
Puppet Data Mining
Puppet Data MiningPuppet Data Mining
Puppet Data Mining
 
2012 coscup - Build your PHP application on Heroku
2012 coscup - Build your PHP application on Heroku2012 coscup - Build your PHP application on Heroku
2012 coscup - Build your PHP application on Heroku
 
Automating Large Applications on Modular and Structured Form with Gulp
Automating Large Applications on Modular and Structured Form with GulpAutomating Large Applications on Modular and Structured Form with Gulp
Automating Large Applications on Modular and Structured Form with Gulp
 
Rest, sockets em golang
Rest, sockets em golangRest, sockets em golang
Rest, sockets em golang
 
Git - Intro to the Basics of DVCS
Git - Intro to the Basics of DVCSGit - Intro to the Basics of DVCS
Git - Intro to the Basics of DVCS
 
Continuous Integration & Continuous Delivery with GCP
Continuous Integration & Continuous Delivery with GCPContinuous Integration & Continuous Delivery with GCP
Continuous Integration & Continuous Delivery with GCP
 
Big query - Command line tools and Tips - (MOSG)
Big query - Command line tools and Tips - (MOSG)Big query - Command line tools and Tips - (MOSG)
Big query - Command line tools and Tips - (MOSG)
 
Google App Engine (GAE) 演進史
Google App Engine (GAE) 演進史Google App Engine (GAE) 演進史
Google App Engine (GAE) 演進史
 
Continuous testing In PHP
Continuous testing In PHPContinuous testing In PHP
Continuous testing In PHP
 
Buildout - Alles im Griff
Buildout - Alles im GriffBuildout - Alles im Griff
Buildout - Alles im Griff
 
Docker Demo @ IuK Seminar
Docker Demo @ IuK SeminarDocker Demo @ IuK Seminar
Docker Demo @ IuK Seminar
 
Gearman work queue in php
Gearman work queue in phpGearman work queue in php
Gearman work queue in php
 

Semelhante a Modern web applications infrastructure

Js infrostructure
Js infrostructureJs infrostructure
Js infrostructure
Igor Alpert
 

Semelhante a Modern web applications infrastructure (20)

Js infrostructure
Js infrostructureJs infrostructure
Js infrostructure
 
vBACD - Introduction to Opscode Chef - 2/29
vBACD - Introduction to Opscode Chef - 2/29vBACD - Introduction to Opscode Chef - 2/29
vBACD - Introduction to Opscode Chef - 2/29
 
DevSecCon London 2017 - MacOS security, hardening and forensics 101 by Ben Hu...
DevSecCon London 2017 - MacOS security, hardening and forensics 101 by Ben Hu...DevSecCon London 2017 - MacOS security, hardening and forensics 101 by Ben Hu...
DevSecCon London 2017 - MacOS security, hardening and forensics 101 by Ben Hu...
 
Zero to Continuous Delivery on Google Cloud
Zero to Continuous Delivery on Google CloudZero to Continuous Delivery on Google Cloud
Zero to Continuous Delivery on Google Cloud
 
The Berkshelf Way
The Berkshelf WayThe Berkshelf Way
The Berkshelf Way
 
Deploying Symfony | symfony.cat
Deploying Symfony | symfony.catDeploying Symfony | symfony.cat
Deploying Symfony | symfony.cat
 
Using Nix and Docker as automated deployment solutions
Using Nix and Docker as automated deployment solutionsUsing Nix and Docker as automated deployment solutions
Using Nix and Docker as automated deployment solutions
 
MeaNstack on Docker
MeaNstack on DockerMeaNstack on Docker
MeaNstack on Docker
 
Docker
DockerDocker
Docker
 
Real-World DevOps — 20 Practical Developers Tips for Tightening Your Operatio...
Real-World DevOps — 20 Practical Developers Tips for Tightening Your Operatio...Real-World DevOps — 20 Practical Developers Tips for Tightening Your Operatio...
Real-World DevOps — 20 Practical Developers Tips for Tightening Your Operatio...
 
Capistrano与jenkins(hudson)在java web项目中的实践
Capistrano与jenkins(hudson)在java web项目中的实践Capistrano与jenkins(hudson)在java web项目中的实践
Capistrano与jenkins(hudson)在java web项目中的实践
 
Pm2
Pm2Pm2
Pm2
 
Piwik elasticsearch kibana at OSC Tokyo 2016 Spring
Piwik elasticsearch kibana at OSC Tokyo 2016 SpringPiwik elasticsearch kibana at OSC Tokyo 2016 Spring
Piwik elasticsearch kibana at OSC Tokyo 2016 Spring
 
Modern Web Application Development Workflow - EclipseCon Europe 2014
Modern Web Application Development Workflow - EclipseCon Europe 2014Modern Web Application Development Workflow - EclipseCon Europe 2014
Modern Web Application Development Workflow - EclipseCon Europe 2014
 
Where's the source, Luke? : How to find and debug the code behind Plone
Where's the source, Luke? : How to find and debug the code behind PloneWhere's the source, Luke? : How to find and debug the code behind Plone
Where's the source, Luke? : How to find and debug the code behind Plone
 
Instrumentación de entrega continua con Gitlab
Instrumentación de entrega continua con GitlabInstrumentación de entrega continua con Gitlab
Instrumentación de entrega continua con Gitlab
 
Cookbook testing with KitcenCI and Serverrspec
Cookbook testing with KitcenCI and ServerrspecCookbook testing with KitcenCI and Serverrspec
Cookbook testing with KitcenCI and Serverrspec
 
How to host an app for $20 in 20min using buildout and hostout
How to host an app  for $20 in 20min using buildout and hostoutHow to host an app  for $20 in 20min using buildout and hostout
How to host an app for $20 in 20min using buildout and hostout
 
Pyramid deployment
Pyramid deploymentPyramid deployment
Pyramid deployment
 
Buildout: How to maintain big app stacks without losing your mind
Buildout: How to maintain big app stacks without losing your mindBuildout: How to maintain big app stacks without losing your mind
Buildout: How to maintain big app stacks without losing your mind
 

Mais de EPAM

Mais de EPAM (9)

JavaScript. Code Quality.
JavaScript. Code Quality.JavaScript. Code Quality.
JavaScript. Code Quality.
 
Continuous integration for JavaScript projects
Continuous integration for JavaScript projectsContinuous integration for JavaScript projects
Continuous integration for JavaScript projects
 
Visualization of Big Data in Web Apps
Visualization of Big Data in Web AppsVisualization of Big Data in Web Apps
Visualization of Big Data in Web Apps
 
Object Oriented Concepts in Real Projects
Object Oriented Concepts in Real ProjectsObject Oriented Concepts in Real Projects
Object Oriented Concepts in Real Projects
 
Reactive Extensions: classic Observer in .NET
Reactive Extensions: classic Observer in .NETReactive Extensions: classic Observer in .NET
Reactive Extensions: classic Observer in .NET
 
SOLID Principles in the real world
SOLID Principles in the real worldSOLID Principles in the real world
SOLID Principles in the real world
 
Future of the Future of E-Commerce
Future of the Future of E-CommerceFuture of the Future of E-Commerce
Future of the Future of E-Commerce
 
Bootify Yyour App from Zero to Hero
Bootify Yyour App from Zero to HeroBootify Yyour App from Zero to Hero
Bootify Yyour App from Zero to Hero
 
Responsive Web in Brief
Responsive Web in BriefResponsive Web in Brief
Responsive Web in Brief
 

Último

%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
masabamasaba
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
masabamasaba
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
VictoriaMetrics
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
shinachiaurasa2
 
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Medical / Health Care (+971588192166) Mifepristone and Misoprostol tablets 200mg
 
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Medical / Health Care (+971588192166) Mifepristone and Misoprostol tablets 200mg
 

Último (20)

%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare
 
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
 

Modern web applications infrastructure

  • 1. MODERN WEB APPLICATIONS ! INFRASTRUCTURE PRACTICES, FLOWS AND TOOLS $CUGFQP
  • 2. ! ! IGOR ALPERT # IGOR_ALPERT@EPAM.COM HTTP://UA.LINKEDIN.COM/IN/IALPERT EPAM 2
  • 3. Application ! ! GXGNQRGT EPAM 3
  • 4. Application CSS JS HTML ! ! +%CP(62 EPAM 4
  • 5. 5 Application EPAM $ Feature #1 Feature #2 Bug fixing ! 6JG[CEVCUCVGCO
  • 6. Logs 6 Application EPAM $ % ! 5QWTEGEQFG )KICD[VGUQHFGDWI
  • 7. 7 Application EPAM Logs Doc ! $ % %QOOGPVU CPFGZCORNGU
  • 8. 8 Application $ Logs Docs Config ! % KHHDGVYGGPFGXCPFRTQFWEVKQP EPAM
  • 9. Packages 9 Application $ Config ! % L3WGT[CPFHTKGPFU EPAM Logs Docs
  • 10. 10 Application $ Logs Docs Config Tests ! % Packages *CRR[RCVJ EPAM
  • 11. 11 Application $ ! % /CIKEDWKNFU[UVGO EPAM
  • 12. 12 Application 0.5 $ 0.8 1.0 ! % #NRJC$GVC4% EPAM
  • 13. 13 Application 0.5 $ 0.8 1.0 ! Dev Test Prod % GXU3#5WRRQTV%NKGPV EPAM
  • 14. 14 Application 0.5 $ 0.8 1.0 ! Dev Test Prod APP DB SV % ' #RR5GTXGT EPAM
  • 15. ' ' ' ' DB DB DB DB 15 Application $ ! % 6QPUQHUGTXGTU CPFCVC$CUGU EPAM .QCFDCNCPEGT
  • 16. 16 Application $ ! % 7 Errors Metrics Logs 7UGHWNKPHQTOCVKQPNKXGUJGTG EPAM
  • 17. 17 Agenda ! $ DEVELOPMENT WORKFLOW % SOURCE MANAGEMENT BUILD PIPELINE DEPLOY PLATFORMS 7 MONITORING METRICS # CONTINUOUS INTEGRATION EPAM
  • 19. DEVELOPMENT WORKFLOW $ #TEJKVGEV6GEJ.GCFGXGNQRGTU DEV ( $ Managers 5WRRQTVGX1RU2TQDNGOOCPCIGOGPV ) QA % Support 3#.GCF/CPWCN#WVQOCVKQP #EEQWPV/CPCIGT#PCN[VKE EPAM 19
  • 20. DEVELOPMENT WORKFLOW $ 6JG[YCPVVQEQFG 0GYHGCVWTGU6JG[YCPVVQIQNFGPRNCVGVJGKTEQFG 6JG[YCPVVQTGFWEGVGEJPKECNFGRV ( $ DEV #NYC[UJCXGUQOGňVKP[ʼnEJCPIG Managers ) QA % Support 6JG[YCPVUKORNKEKV[ 0QOQTGUWFFGPRNCVHQTO EJCPIGU 6JG[YCPVUVCDKNKV[ VQTGSWKTGOGPVUCPFUVQTKGU #UC7UGT+YCPVŎ -PQYPDWIU6QQOWEJVKOGVQFQHWNNTGITGUUKQP DGVVGTVQWUGRTGXKQWUňUVCDNGʼnXGTUKQP EPAM 20
  • 21. DEVELOPMENT WORKFLOW $ $ DEV QA ( Managers ) % Support #EVYKVJ+PVGITKV[UJCTGFIQCNU EPAM 21
  • 22. DEVELOPMENT WORKFLOW $ ( DESIGN ) TESTING $ DEVELOP BUILD, DEPLOY LAUNCH a BUG FIX ' 2-4 WEEKS ITERATION EPAM 22
  • 23. DEVELOPMENT WORKFLOW #WVQOCVGFVGUVU %QNNCDQTCVKXGFGXGNQROGPV %QFGHGCVWTGUYKVJVGUVKPOKPF #WVQOCVGFDWKNF 9TKVGCUOWEJHCKNKPIVGUVUCURQUUKDNGVQ EQXGTTGSWKTGOGPVU 2NCPCPFGUKIP $ 'CEJUQWTEGEJCPIGVTKIIGTUYJQNG DWKNFRKRGNKPGVQTWP 6JKPMJQY[QWTHGCVWTGYKNNDG KORNGOGPVGFCPFKPVGITCVGFYKVJ QVJGTHGCVWTGU ( * % $ +PVGITCVKQP 4GCNVKOGOQPKVQTKPICPFHGGFDCEM UP TO 1 DAY ITERATION EPAM 23
  • 24. 24 DEVELOPMENT WORKFLOW SERVERS 1. NGINX 2. APACHE HTTPd 3. TOMCAT 4. IIS 5. NODEJS 6. EXPRESS 7. … EPAM STYLES 1. TWITTER BOOTSTRAP 2. ZURB FOUNDATION 3. COMPASS 4. SASS 5. LESS 6. STYLUS 7. CUSTOM SOLUTION FRAMEWORKS 1. ANGULARJS 2. BACKBONE 3. EXTJS 4. SENCHA TOUCH 5. EMBERJS 6. METEOR 7. DERBY 8. CUSTOM SOLUTION TESTING 1. JASMINE 2. MOCHA 3. BUSTER 4. QUNIT 5. KARMA 6. PROTRACTOR 7. NIGHTWATCH 8. INTERN 9. WEBDRIVER.IO 10.CUSTOM SOLUTION OS 1. WINDOWS 2. OSX 3. UBUNTU 4. CENTOS 5. FREEBSD 6. COREOS TOOLS 1. GRUNT 2. GULP 3. NPM 4. BOWER 5. YEOMAN 6. CUSTOM SOLUTION DATABASES 1. MONGODB 2. COUCHDB 3. RIAK 4. REDIS 5. CASSANDRA SERVICES 1. AMAZON 2. NODEJITSU 3. HEROKU 4. MONGOLAB 5. FIREBASE 6. JOYENT 7. PUSHER 8. DOCKER $ 6QPUQHTGCF[VQWUG 1RVKQPUHQT[QWT RTQLGEV SERVER SIDE 1. PHP 2. RUBY 3. PYTHON 4. … !
  • 25. DEVELOPMENT WORKFLOW $ Ability to compile native modules — easier to “make from source” then in Windows ;QWTHTKGPFU VIRTUAL MACHINE NODEJS, RUBY, PYTHON Your toolset will ask for them as a dependency Works better and faster on Unix based systems WINDOWS Building a Module in Windows node-gyp, Python, shell, VS, … 55*0Q)7+ %JGH2WRRGV8 EPAM 25
  • 26. DEPENDENCY MANAGEMENT $ Homebrew Packager for OSX, uses formulas to install software Mac OSX brew install [package] Advanced Packaging Tool Package manager for Debian GNU/Linux distribution and its variants Ubuntu apt-get install [package] Yum The Yellowdog Updater, Modified (yum) is an open-source command-line package management utility for Linux operating CentOS yum install [package] Chocolatey Chocolatey NuGet is a Machine Package Manager, somewhat like apt-get, but built with Windows in mind 42/ Windows choco install [package] '$ EPAM 26
  • 27. DEPENDENCY MANAGEMENT $ OPENSSL PRCE NGINX PKG-CONFIG MAKEDEPEND GIT GIT-FLOW brew install git-flow brew install nginx EPAM 27
  • 28. DEPENDENCY MANAGEMENT $ NVM APP1 Node 0.11x NVM APP2 Node 0.10.31 5VKNNVJGUCOGRTQLGEV EPAM 28
  • 29. DEPENDENCY MANAGEMENT $ NodeJS Node Version Manager - Simple bash script to manage multiple active node.js versions NVM https://github.com/creationix/nvm Ruby RVM is the Ruby enVironment Manager. It manages Ruby application environments and enables switching between them RVM https://github.com/wayneeseguin/rvm Python It creates an environment that has its own installation directories, that doesn’t share libraries with other virtualenv environments virtualenv https://github.com/pypa/virtualenv NodeJS A Node version manager for the windows folks out there. Inspired by n and nodenv Nodist https://github.com/marcelklehr/nodist 9KPFQYU EPAM 29
  • 30. DEPENDENCY MANAGEMENT $ +PVGTHCEGKUVJGUCOG NPM BOWER manager install dependencies: { name: version, name: folder, name: package }, devDependencies: { test-framework-name: version } dependencies: { name: version, name: folder, name: package }, devDependencies: { test-framework-name: version } manager install manager install EPAM 30
  • 31. DEPENDENCY MANAGEMENT $ NPM LODASH GRUNT PACKAGE.JSON ASYNC DEV-DEPS KARMA Packages: Downloads: Corporate mirrors npm init npm install npm install —save QPņVHQTIGVVQ WRFCVG[QWTRCEMCIGU EPAM 31
  • 32. DEPENDENCY MANAGEMENT $ BOWER BACKBONE LODASH BOWER JQUERY UNDERSCORE BOOTSTRAP Packages: npm install -g bower init bower install http://bower.io/ (QTHTQPVGPF EPAM 32
  • 34. BUILD PIPELINE Source Concatenate Uglify SourceMaps Test Karma Protractor Mocha Coverage Preprocess LESS SASS Compass Watch LiveReload Rebuild Serve Assets Templates CSS HTML processing Images optimization Custom ChangeLog Notifications console.debug 6CUMUVQCWVQOCVG KP[QWTDWKNFRKRGNKPG EPAM 34
  • 35. BUILD PIPELINE ! GRUNT Packages: grunt grunt coffee:app FILE BASED Good for file operations like copy/move/save. Configuration over code. Better for small projects with small amount of files. TONS OF PLUGINS Most popular JS task runner. Almost any possible task is available as plugin. You can perform build-in or custom operations. Sync/ Async 1 2 Gruntfile.js Gruntfile.coffee jshint: { // define the files to lint files: ['gruntfile.js', 'src/**/*.js', 'test/**/*.js'], // configure JSHint options: { // more options here globals: { jQuery: true, console: true, module: true } } } http://gruntjs.com/ http://gruntjs.com/plugins ITWPVEQPVTKDLUJKPV EPAM 35
  • 36. BUILD PIPELINE ! GULP 1 2 gulpfile.js EASY API Only 4 API methods: task, watch, src, dest. Easy to write complex flows. STREAM BASED No temporary files. Code over Configuration. Much more faster then Grunt for file-content processing operations. ZHCUVGT var gulp = require('gulp'); ! gulp.task('default', function() { // place code for your default task here }); Packages: npm install --save-dev gulp gulp grunt coffee http://gulpjs.com http://gulpjs.com/plugins/ EPAM 36
  • 37. BUILD PIPELINE ! YEOMAN KARMA TESTS Pre-packed with test suites SCAFFOLDING Easy scaffolding system to generate application components SERVER Comes with build-in live-reload and grunt task 1 2 3 $ yo angular:controller myController $ yo angular:directive myDirective $ yo angular:filter myFilter $ yo angular:service myService http://gulpjs.com http://gulpjs.com/plugins/ Generators: ~1100 npm install -g yo npm install -g generator-angular yo angular ITWPVUGTXG EPAM 37
  • 38. BUILD PIPELINE SLUSH https://www.npmjs.org/package/slush BROCCOLI https://www.npmjs.org/package/broccoli JAM AUTOMATION https://github.com/caolan/jam http://indigounited.com/automaton/ BRUNCH ANGUS http://brunch.io/ https://github.com/nickjanssen/angus ! EPAM 38
  • 40. SOURCE GIT EASY BRANCHING AND MERGING Cheap branching — just a reference to commit. Lots of possible merging strategies and conflict resolving. History rewrite DISTRIBUTED You can work alone or with a team. You can work with or without central server. Even without network connection. FAST You can clone whole repo/branch or just a few commits. All meta-data is stored in one place ~/.git 1 2 3 git init ! git add git commit ! git push —force ! git rebase -i git merge ! git tag -a %QPHNKEVTGUQNXGF EPAM 40
  • 41. SOURCE GITLAB PRIVATELY HOSTED You can integrate it with your own infrastructure, users base, private services etc TRUSTED BY ENTERPRISE Fully manageable and configurable Same capabilities — collaboration, forking, wiki and JIRA OPEN-SOURCE Hosted on GitHub. You can contribute and write your own features 1 2 3 - *CRR[%NKGPVU EPAM 41
  • 42. SOURCE GITHUB WEB INTERFACE You are able to create branches, tags, pull-requests, edit and commit files directly from browser CODE REVIEW AND COLLABORATION Do code-review with your team, leave comments, track issues and maintain WIKI pages FORK, PULL REQUEST You can fork and contribute to any public repository. Home for open-source projects 1 2 3 Mirror mirror on the wall, who forks best of them all? EPAM 42
  • 43. SOURCE BITBUCKET FREE PRIVATE REPOS Unlike GitHub this service will allow you to create *unlimited* amount of private repositories. ENTERPRISE ORIENTED Natively integrates with Atlasssian software stack. Trusted by Enterprise. SPOONING vs. FORKING Spooning - with Bitbucket is a pair programming process as an opposite to forking 1 2 3 ň$KVDWEMGVURQQPKPI ŃLWUV)QQINGKV EPAM 43
  • 44. SOURCE BRANCHING MODELS Centralized Gitflow Github Feature branch FEATURE BRANCH Commit Commit Commit Commit REBASE SQUASH … REBASE UPSTREAM BRANCH FEATURE FEATURE FEATURE FEATURE EPAM 44
  • 45. SOURCE HOOKS Use Cases SPELLING ERRORS ENFORCE RULES EMAIL / SMS NOTIFICATIONS DEPLOY TRIGGER http://githooks.com/ 9GDJQQMUVQQ All Git hooks are ordinary scripts that Git executes when certain events occur in the repository. This makes them very easy to install and configure Client Server PRE-COMMIT PREPARE-COMMIT-MSG COMMIT-MSG POST-COMMIT POST-CHECKOUT PRE-REBASE PRE-RECEIVE UPDATE POST-RECEIVE EPAM 45
  • 46. SOURCE COMMIT MESSAGES [FIX] Closes: #1234 [BREAKING] Interface of method has been changed… [COMPLETE] Feature (F16:Raptor) is ready for integration [ENV] Some minor refactoring MAKE YOUR CONVENTION ISSUE MANAGEMENT 1 2 3 RELEASE NOTES AND CHANGE LOGS 4 ANNOTATIONS: squash! fixup! ň+ņXGHKZGFVJCVʼn EPAM 46
  • 48. CONTINUOUS INTEGRATION # TECHNICAL DEPT TESTS WILL BE IN THE NEXT RELEASE $WITKXGPGXGNQROGPV CODE ENTROPY: “IF I TOUCH THAT CODE EVERYTHING WILL BREAK” TODO/FIXME STATEMENTS DOCS? MY CODE IS STATE OF ART LET’S JUST COPY/PASTE FOR NOW 1 2 3 4 Fix this code, the only one who can. Is in another company already. http://en.wikipedia.org/wiki/Technical_debt 5 EPAM 48
  • 49. CONTINUOUS INTEGRATION # CODE QUALITY TECH BACKLOG CODE-STYLE: TABS/SPACES, INDENTATION .KUVQHVCUMU RTKQTKV[ STATIC ANALYZE AND COMPLEXITY: BUGS, DUPLICATION, STANDARDS 1 2 3 4 UNIT-TESTS AND COVERAGE DOCS AND COMMENTS AUTOMATE 5 EPAM 49
  • 50. CONTINUOUS INTEGRATION # CODE STYLE Other validations JSCS Presets - COFFEELINT - CSS - HTML Tools - JSHINT + STYLISH - PLATO - CODE PAINTER - EDITORCONFIG - JSCS - ESLINT - AIRBNB - CROCKFORD - GOOGLE - JQUERY - MDCS (THREE.JS) - WIKIMEDIA - YANDEX 1 2 3 4 5 READABILITY GOOD NAMES CLEAR LOGIC POTENTIAL ISSUES GUIDELINES EPAM 50
  • 51. CONTINUOUS INTEGRATION TESTS # 4GF)TGGP4GHCEVQT LONG (hours) FEEDBACK TIME MEDIUM (minutes) FAST (seconds) SMOKE TESTS UNIT-TESTS UI API TDD (BDD) BETTER CODE UNDERSTANDING 1 2 3 MOTIVATION 4 RELEASE FASTER RELIABILITY 5 FILE SYSTEM DATABASE HEADLESS END-TO-END SERVICES 5VWDU/QEMU .QECNQPN[ %CPDGTGOQVG 5CHGTTGHCEVQTKPI (KTUVHCKNGF 2GTHQTOCPEGOGVTKEU EPAM 51
  • 52. CONTINUOUS INTEGRATION FIXTURES # Permission.coffee Role.coffee module.exports.Permission = login: name: 'login' title: 'Login Page' ! home: name: 'home' title: 'Home Page' ! student: name: 'student' title: 'Student Section' ! moderator: name: 'moderator' title: 'Admin Section' module.exports.Role = guest: name: 'Guest' permissions: [ Permissions.login Permissions.home ] ! user: name: 'User' permissions: [ Permissions.home Permissions.student ] ! admin: name: 'Admin' permissions: [ Permissions.home Permissions.student Permissions.moderator ] db.Role Clean Role.coffee 6GUVKPI$TGNCVGFNQIKE EPAM 52
  • 53. CONTINUOUS INTEGRATION CODE COVERAGE # COVERALS.IO CODECLIMATE 97% NOT TESTED AREA OF APP DEAD CODE DETECTION 1 2 3 TESTING QUALITY 4 ACCEPTANCE THRESHOLD 70-90% 5 REPORTS Istanbul JSCoverage Blanket *KUVQT[CPFUVCVUUGTXKEG #9'51/' EPAM 53
  • 54. CONTINUOUS INTEGRATION DOCUMENTATION GENERATION # KEEP THEM UP-TO-DATE METHODS AND CLASSES 1 2 3 PUBLIC API 4 USAGE EXAMPLES 5 (RE) USE YOUR TESTS @example @depricated @package @private @api Output HTML MARKDOWN JSDoc @param @name @class @method @option Tools JSDOC* CROJSDOC APIDOCJS DOX MOX DOCCO CODO ;17$7+.6+6 ;17470+6Ŏ *WOCPTGCFCDNGCPF )KV*WDHTKGPFN[ EPAM 54
  • 55. CONTINUOUS INTEGRATION .dot files # Project System .gitignore .gitattributes .jshintrc .jshintignore .editorconfig .jscs.json .travis.yml ESSENTIAL PART OF YOUR ENVIRONMENT SHAREABLE CONFIGURATION EASY TO MANAGE 1 2 3 4 IDE INTEGRATION 5 NOT A TRASH .bashrc .zshrc .gitconfig .aliases .functions .osx http://dotfiles.github.io/ Invest time learning to configure your machine and automate processes 1P7PKZCNKMGU[UVGOU EPAM 55
  • 56. CONTINUOUS INTEGRATION IDE # Code Completion and Inspection Refactoring, Metrics 1 2 3 Test framework integration 4 Debugger, Frameworks support 5 Source Version control Issue trackers integration Online IDE CODIO CLOUD9 CODEBOX CODENVY 9GD5VQTO EPAM 56
  • 57. CONTINUOUS INTEGRATION # CI SERVERS BUILDS HISTORY AND VISIBILITY LAST GREEN/RED STATUS 1 2 3 PARALLEL BUILDS 4 MULTIPLE ENVIRONMENTS 5 ROLLBACK TOOLS JENKINS TEAMCITY GRUNT CONCRETE STRIDER CI 1+6;1745'.( And badges: http://shields.io/ EPAM 57
  • 58. CONTINUOUS INTEGRATION # HOSTED SERVICES CI AS A SERVICE INTEGRATED WITH GITHUB AND BITBUCKET 1 2 3 BUILD ON SCHEDULE 4 DEPLOY GREEN 5 REPORTS AND STATUS DASHBOARD Options circle.yml .travis.yml Services TRAVIS CI CODESHIP CIRCLE CI BAMBOO MAGNUM CI SEMAPHORE GONDOR RULTOR
  • 61. DEPLOY PLATFORMS SERVER # CUSTOMIZABLE STACK AND ENVIRONMENT DATA: COMPANY POLICY OWN SERVICES TO USE NEED FOR (DEV) OPS g / NGINX APACHE TOMCAT d e f g ÑSSH BASH 7SYSLOG # FILES TMP CACHE $SQL NOSQL KEY:VAL (SERVICES DAEMONS CRON mSENDMAIL W IPTABLES w .QQMUIQQF CHVGTC[GCTQTVYQ 1 2 3 4 5 INFRASTRUCTURE K +CC5#/#10+)+6#.1%'#0 QT4#%-52#%' EPAM 60
  • 62. EPAM % 61 DEPLOY PLATFORMS PaaS # CLI DEPLOYS CONFIGURATION DASHBOARD 1 2 3 BUILDING BLOCKS (DISK SPACE, DB, MONITORING, ADDONS) 4 MONITORING 5 SLA AND NODES MANAGEMENT Services NODEJITSU HEROKU CLOUD FOUNDRY JOYENT ENGINE YARD #NN[QWPGGFVQTWP[QWTCRR 7RFCVGU5GEWTKV[Ŏ
  • 63. DEPLOY PLATFORMS Docker # YOUR OWN PAAS OPEN SOURCE 1 2 3 EASY SCALE 4 MANY READY TO USE STACKS 5 EASY TO MIGRATE TOOLS DEIS FLYNN TSURU OCTOHOST ! 1RGP5QWTEG2CC5 YKVJ$NCEMLCEM #RRNKECVKQP 2NCVHQTO%QPVCKPGT EPAM 62
  • 65. MONITORING EVENTS Logs management # FORMAT IS IMPORTANT AGGREGATION AND ROTATION 1 2 3 SEARCH 4 ALERTS AND NOTIFICATIONS 5 WATCHERS ITGRCEMUQTVQTŎ ŎWUGNQIUVCUJ EPAM 64
  • 66. MONITORING EVENTS Example # 2014/10/02 13:58:32 [error] 925#0: *14 connect() failed (111: Connection refused) while… CVG .GXGN 'XGPV SIZE DATE LOGS 10Mb Sept 10Mb Oct 07 EPAM 65
  • 67. MONITORING EVENTS Logging services # Services PAPERTAIL LOGENTRIES SUMOLOGIC BOUNDARY SENTRY GRAYLOG2 QKV[QWTUGNH APP %ELASTIC SEARCH DB SRV SYS n 8 ! 5QNWVKQPU CVCUQWTEGU EPAM 66
  • 68. MONITORING Errors # CONTEXT IS IMPORTANT GROUPING REPRODUCE FAIL GRACEFULLY HISTORY Services … RAYGUN TRACKJS AIRBRAKE QBAKA MUSCULA JSERRLOG TRACEKIT 1 2 3 4 5 5VCEMVTCEGQT)6(1 GHGEVKPRTQFWEVKQP! 9QTMUQPO[OCEJKPG QKV[QWTUGNH EPAM 67
  • 69. MONITORING METRICS Health Page # SERVICE #1 (UP) Ã SERVICE #1 (10k ops / s) Ã SERVICE #3 (10k users / s) Ã FREE SPACE (~2Gb) Â ;QWDGVVGTFQUQOGVJKPIYKVJKV HARDWARE SERVICES AND API 1 2 3 TRANSPORTS 4 PERFORMANCE 5 UPTIME EPAM 68
  • 71. 70 SUMMARY EPAM DEVELOPMENT WORKFLOW SOURCE MANAGEMENT DEPLOY PLATFORMS MONITORING METRICS Automate Tests Small features BUILD PIPELINE CONTINUOUS INTEGRATION ' ! # 7 +VņUGCU[KV
  • 72. 71 SUMMARY EPAM DEVELOPMENT WORKFLOW SOURCE MANAGEMENT DEPLOY PLATFORMS MONITORING METRICS Automate Tests Small features Code style Commits convention 12 factor app BUILD PIPELINE CONTINUOUS INTEGRATION ' ! # 7 +VņU
  • 73. 72 SUMMARY EPAM DEVELOPMENT WORKFLOW SOURCE MANAGEMENT DEPLOY PLATFORMS MONITORING METRICS Automate Tests Small features Code style Commits convention 12 factor app BUILD PIPELINE Build Blocks Keep it fast Run cycles CONTINUOUS INTEGRATION ' ! # 7 QYPNQCF
  • 74. 73 SUMMARY EPAM DEVELOPMENT WORKFLOW SOURCE MANAGEMENT DEPLOY PLATFORMS MONITORING METRICS Automate Tests Small features Code style Commits convention 12 factor app Build Blocks Keep it fast Run cycles Fail early Fast feedback Step by Step BUILD PIPELINE CONTINUOUS INTEGRATION ' ! # 7 1PGUOCNNUVGRHQT[QW IKCPVNGCRHQT[QWT
  • 75. 74 SUMMARY ' ! # 7 EPAM DEVELOPMENT WORKFLOW SOURCE MANAGEMENT DEPLOY PLATFORMS MONITORING METRICS Automate Tests Small features Code style Commits convention 12 factor app Build Blocks Keep it fast Run cycles Fail early Fast feedback Step by Step BUILD PIPELINE CONTINUOUS INTEGRATION DevOps Production alike …as a Service +PVTQFWEGKV
  • 76. Logs rotation 75 SUMMARY ' ! # 7 EPAM DEVELOPMENT WORKFLOW SOURCE MANAGEMENT DEPLOY PLATFORMS MONITORING METRICS Automate Tests Small features Code style Commits convention 12 factor app Build Blocks Keep it fast Run cycles Fail early Fast feedback Step by Step BUILD PIPELINE CONTINUOUS INTEGRATION DevOps Production alike …as a Service Metrics Checklist 5GG#EV
  • 77. Logs rotation 76 SUMMARY ' ! # 7 EPAM DEVELOPMENT WORKFLOW SOURCE MANAGEMENT DEPLOY PLATFORMS MONITORING METRICS Automate Tests Small features Code style Commits convention 12 factor app Build Blocks Keep it fast Run cycles Fail early Fast feedback Step by Step BUILD PIPELINE CONTINUOUS INTEGRATION DevOps Production alike …as a Service Metrics Checklist 6T[KV