Slide 1

Slide 1 text

MODERN WEB APPLICATIONS INFRASTRUCTURE PRACTICES, FLOWS AND TOOLS ! $CUGFQP4'#.UVQTKGU

Slide 2

Slide 2 text

EPAM Systems 2 ! ! " # [email protected] HTTP://UA.LINKEDIN.COM/IN/IALPERT IGOR ALPERT

Slide 3

Slide 3 text

EPAM Systems 3 APPLICATION ! ! &GXGNQRGT Front-end developer

Slide 4

Slide 4 text

EPAM Systems 4 APPLICATION CSS JS HTML ! ! +%CP(62 Knowledge scope — good for “my file”

Slide 5

Slide 5 text

5 APPLICATION EPAM Systems $ Feature #1 Feature #2 Bug fixing ! 6JG[CEVCUCVGCO Looking out of “my file“ scope

Slide 6

Slide 6 text

Logs 6 APPLICATION EPAM Systems $ % ! 5QWTEGEQFG )KICD[VGUQHFGDWI Every application has some kind of logs

Slide 7

Slide 7 text

7 APPLICATION EPAM Systems Logs Doc ! $ % %QOOGPVU CPFGZCORNGU Every application has some kind of docs

Slide 8

Slide 8 text

8 APPLICATION $ Logs Config Docs ! % &KHHDGVYGGPFGXCPFRTQFWEVKQP EPAM Systems Configuration — difference between environments

Slide 9

Slide 9 text

Packages 9 APPLICATION $ Config ! % L3WGT[CPFHTKGPFU EPAM Systems Logs Docs Every application has some kind of 3rd party components

Slide 10

Slide 10 text

10 APPLICATION $ Logs Docs Config Tests ! Packages % *CRR[RCVJ EPAM Systems Every application has some kind of tests, implicit/explicit

Slide 11

Slide 11 text

11 APPLICATION $ & ! % /CIKEDWKNFU[UVGO EPAM Systems Every application has some kind of build and deploy process

Slide 12

Slide 12 text

12 APPLICATION 0.5 $ 0.8 1.0 ! & % #NRJC$GVC4% EPAM Systems Every application has some kind of build results — versions

Slide 13

Slide 13 text

13 APPLICATION 0.5 $ 0.8 1.0 ! Dev Test Prod & % &GXU3#5WRRQTV%NKGPV EPAM Systems Application versions runs on various environments, usable by sub teams

Slide 14

Slide 14 text

14 APPLICATION 0.5 $ 0.8 1.0 ! Dev Test Prod APP DB SV & % ' #RR5GTXGT EPAM Systems Every application runs on a server

Slide 15

Slide 15 text

DB DB DB DB ' ' ' ' 15 APPLICATION $ ! & % " 6QPUQHUGTXGTU CPF&CVC$CUGU EPAM Systems .QCFDCNCPEGT Some applications runs on server farms

Slide 16

Slide 16 text

16 APPLICATION $ ! & % " 7 Errors Logs Metrics 7UGHWNKPHQTOCVKQPNKXGUJGTG EPAM Systems Metrics — various usable information regarding our app

Slide 17

Slide 17 text

17 AGENDA ! $ DEVELOPMENT
 WORKFLOW % SOURCE
 MANAGEMENT & BUILD
 PIPELINE " DEPLOY PLATFORMS 7 MONITORING
 METRICS CONTINUOUS IMPROVEMENTS # EPAM Systems Today’s requirements to application development and support

Slide 18

Slide 18 text

DEVELOPMENT WORKFLOW $

Slide 19

Slide 19 text

EPAM Systems 19 DEVELOPMENT WORKFLOW $ DEV $ ( Managers ) QA 3#.GCF/CPWCN#WVQOCVKQP #TEJKVGEV6GEJ.GCF&GXGNQRGTU #EEQWPV/CPCIGT#PCN[UV Support % 5WRRQTV&GX1RU2TQDNGOOCPCIGOGPV Project teams

Slide 20

Slide 20 text

EPAM Systems 20 DEVELOPMENT WORKFLOW $ DEV $ ( Managers ) QA #NYC[UJCXGUQOGňVKP[ʼnEJCPIG 6JG[YCPVUVCDKNKV[ 6JG[YCPVVQEQFG Support % 6JG[YCPVUKORNKEKV[ VQTGSWKTGOGPVUCPFUVQTKGU #UC7UGT+YCPVŎ -PQYPDWIU6QQOWEJVKOGVQFQHWNNTGITGUUKQP DGVVGTVQWUGRTGXKQWUňUVCDNGʼnXGTUKQP PGYHGCVWTGU6QIQNFGPRNCVGVJGKTEQFGVQTGFWEG VGEJPKECNFGRV 2NGCUGPQOQTGUWFFGP RNCVHQTOEJCPIGU Project team and goals

Slide 21

Slide 21 text

EPAM Systems 21 DEVELOPMENT WORKFLOW $ ( Managers ) QA DEV $ #EVYKVJ+PVGITKV[UJCTGFIQCNU Support % Result oriented project team

Slide 22

Slide 22 text

EPAM Systems 22 DEVELOPMENT WORKFLOW $ TEAM 1 2 3 COMMUNICATION TEACH, SHARE SUPPORT VISIBILITY HELPING HAND TEAM BUILDINGNGS 4 5 6 (GGFDCEM &QPņVFQ=CP[VJKPI?UKNGPVN[ 5GPUGQHVGCOKUETKVKECN Team communication points

Slide 23

Slide 23 text

EPAM Systems 23 DEVELOPMENT WORKFLOW $ ( DESIGN ) TESTING & BUILD, DEPLOY a BUG FIX ' LAUNCH DEVELOP $ 2-4 WEEKS ITERATION Typical workflow for iteration: Step-by-Step

Slide 24

Slide 24 text

EPAM Systems 24 DEVELOPMENT WORKFLOW #WVQOCVGFVGUVU #WVQOCVGFDWKNF %QNNCDQTCVKXGFGXGNQROGPV 2NCPCPF&GUKIP 9TKVGCUOWEJHCKNKPIVGUVUCURQUUKDNGVQ EQXGTTGSWKTGOGPVU 'CEJUQWTEGEJCPIGVTKIIGTUYJQNG DWKNFRKRGNKPGVQTWP %QFGHGCVWTGUYKVJVGUVKPOKPF 6JKPMJQY[QWTHGCVWTGYKNNDG KORNGOGPVGFCPFKPVGITCVGFYKVJ QVJGTHGCVWTGU & ( * $ % +PVGITCVKQP 4GCNVKOGOQPKVQTKPICPFHGGFDCEM UP TO 1 DAY ITERATION $ Continuous integration

Slide 25

Slide 25 text

25 DEVELOPMENT WORKFLOW EPAM Systems SERVERS 1. NGINX 2. APACHE HTTPd 3. TOMCAT 4. IIS 5. NODEJS 6. EXPRESS 7. … 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. … Web Application infrastructure blocks

Slide 26

Slide 26 text

EPAM Systems 26 DEVELOPMENT WORKFLOW $ VIRTUAL MACHINE Your toolset will ask for them as a dependency Works better and faster on Unix based systems NODEJS, RUBY, PYTHON Ability to compile native modules — easier to “make from source” then in Windows Building a Module in Windows WINDOWS node-gyp, Python, shell, VS, … ;QWTHTKGPFU 55*0Q)7+ %JGH2WRRGV8 Base platforms and dependencies

Slide 27

Slide 27 text

EPAM Systems 27 DEPENDENCY MANAGEMENT $ Packager for OSX, uses formulas to install software Homebrew Mac OSX brew install [package] Package manager for Debian GNU/Linux distribution and its variants Advanced Packaging Tool Ubuntu apt-get install [package] The Yellowdog Updater, Modified (yum) is an open-source command-line package management utility for Linux operating Yum CentOS yum install [package] Chocolatey NuGet is a Machine Package Manager, somewhat like apt-get, but built with Windows in mind Chocolatey Windows choco install [package] &'$ 42/ Application management

Slide 28

Slide 28 text

EPAM Systems 28 DEPENDENCY MANAGEMENT $ PRCE NGINX OPENSSL MAKEDEPEND PKG-CONFIG GIT GIT-FLOW brew install git-flow brew install nginx Application management example

Slide 29

Slide 29 text

EPAM Systems 29 DEPENDENCY MANAGEMENT $ NVM APP1 Node 0.11x NVM APP2 Node 0.10.31 5VKNNVJGUCOGRTQLGEV When you can have more then 1 project at a time

Slide 30

Slide 30 text

EPAM Systems 30 DEPENDENCY MANAGEMENT $ Node Version Manager - Simple bash script to manage multiple active node.js versions NodeJS NVM https://github.com/creationix/nvm RVM is the Ruby enVironment Manager. It manages Ruby application environments and enables switching between them Ruby RVM https://github.com/wayneeseguin/rvm It creates an environment that has its own installation directories, that doesn’t share libraries with other virtualenv environments Python virtualenv https://github.com/pypa/virtualenv A Node version manager for the windows folks out there. Inspired by n and nodenv NodeJS Nodist https://github.com/marcelklehr/nodist 9KPFQYU Platform version management

Slide 31

Slide 31 text

EPAM Systems 31 DEPENDENCY MANAGEMENT $ +PVGTHCEGKUVJGUCOG http://browsenpm.org/package.json PACKAGE MANAGERS Most popular package managers NPM, BOWER Save package to runtime dependency list MANAGER INSTALL —SAVE Save package to development dependency list MANAGER INSTALL —SAVE-DEV 1 2 3 Popular package managers

Slide 32

Slide 32 text

EPAM Systems 32 DEPENDENCY MANAGEMENT $ NPM GRUNT PACKAGE.JSON LODASH ASYNC KARMA Packages: npm install npm install —save Downloads: Corporate mirrors npm init &QPņVHQTIGVVQ WRFCVG[QWTRCEMCIGU DEV-DEPS https://docs.npmjs.com/ Package manager - NPM

Slide 33

Slide 33 text

EPAM Systems 33 DEPENDENCY MANAGEMENT $ BOWER LODASH BOWER BACKBONE JQUERY UNDERSCORE BOOTSTRAP Packages: bower init bower install npm install -g http://bower.io/ (QTHTQPVGPF Package manager - Bower

Slide 34

Slide 34 text

BUILD
 PIPELINE &

Slide 35

Slide 35 text

EPAM Systems 35 BUILD PIPELINE & TYPICAL FLOW 1 2 3 DOWNLOAD LIBRARIES SPRITES, IMAGES WRITE BOILERPLATES MANUAL TESTING WRITE CODE, REFESH MINIFY, CONCATINATE 4 5 6 %VTN 5(Ŏ Ŏ2KZGNRGTHGEV Your typical development tasks

Slide 36

Slide 36 text

EPAM Systems 36 BUILD PIPELINE & Source Concatenate Uglify SourceMaps Test Karma Protractor Mocha Coverage Preprocess LESS SASS Compass Assets Templates CSS HTML processing Images optimization Watch LiveReload Rebuild Serve Custom ChangeLog Notifications console.debug KP[QWTDWKNFRKRGNKPG 6CUMUVQCWVQOCVG What tasks to automate

Slide 37

Slide 37 text

EPAM Systems 37 GRUNT BUILD PIPELINE & Packages: grunt grunt coffee:app 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 } } } Gruntfile.js Gruntfile.coffee http://gruntjs.com/ http://gruntjs.com/plugins Good for file operations like copy/move/save. Configuration over code. Better for small projects with small amount of files. FILE BASED Most popular JS task runner. Almost any possible task is available as plugin. You can perform build-in or custom operations. Sync/ Async TONS OF PLUGINS 1 2 ITWPVEQPVTKDLUJKPV Task runner — Grunt

Slide 38

Slide 38 text

EPAM Systems 38 GULP BUILD PIPELINE & var gulp = require('gulp'); gulp.task('default', function() { // place code for your default task here }); gulpfile.js http://gulpjs.com http://gulpjs.com/plugins/ Packages: gulp grunt coffee npm install --save-dev gulp No temporary files. Code over Configuration. Much more faster then Grunt for file-content processing operations. STREAM BASED Only 4 API methods: task, watch, src, dest. Easy to write complex flows. EASY API 1 2 ZHCUVGT Build pipeline — Gulp

Slide 39

Slide 39 text

EPAM Systems 39 YEOMAN BUILD PIPELINE & Generators: ~1100 npm install -g generator-angular yo angular npm install -g yo $ yo angular:controller myController $ yo angular:directive myDirective $ yo angular:filter myFilter $ yo angular:service myService Pre-packed with test suites KARMA TESTS Easy scaffolding system to generate application components SCAFFOLDING Comes with build-in live-reload and grunt task SERVER 1 2 3 ITWPVUGTXG Application scaffolding — Yeoman

Slide 40

Slide 40 text

& SOURCE
 MANAGEMENT %

Slide 41

Slide 41 text

EPAM Systems 41 SOURCE % GIT Cheap branching — just a reference to commit. Lots of possible merging strategies and conflict resolving. History rewrite EASY BRANCHING AND MERGING You can work alone or with a team. You can work with or without central server. Even without network connection. DISTRIBUTED You can clone whole repo/branch or just a few commits. All meta-data is stored in one place ~/.git FAST 1 2 3 % git init git add git commit git push —force git rebase -i git merge git tag -a 2TQ6KR %QPHNKEVTGUQNXGF 580 )+6'#5; GIT — source code management

Slide 42

Slide 42 text

EPAM Systems 42 SOURCE % GITLAB You can integrate it with your own infrastructure, users base, private services etc PRIVATELY HOSTED Fully manageable and configurable Same capabilities — collaboration, forking, wiki and JIRA TRUSTED BY ENTERPRISE Hosted on GitHub. You can contribute and write your own features OPEN-SOURCE 1 2 3 - *CRR[%NKGPVU GIT Platforms — GitLab

Slide 43

Slide 43 text

EPAM Systems 43 SOURCE % GITHUB You are able to create branches, tags, pull-requests, edit and commit files directly from browser WEB INTERFACE Do code-review with your team, leave comments, track issues and maintain WIKI pages CODE REVIEW AND COLLABORATION You can fork and contribute to any public repository. Home for open-source projects FORK, PULL REQUEST 1 2 3 Mirror mirror on the wall, who forks best of them all? GIT Platforms — GitHub

Slide 44

Slide 44 text

EPAM Systems 44 SOURCE % BITBUCKET Unlike GitHub this service will allow you to create *unlimited* amount of private repositories. FREE PRIVATE REPOS Natively integrates with Atlasssian software stack. Trusted by Enterprise. ENTERPRISE ORIENTED Spooning - with Bitbucket is a pair programming process as an opposite to forking SPOONING vs. FORKING 1 2 3 ň$KVDWEMGVURQQPKPI ŃLWUV)QQINGKV GIT Platforms — BitBucket

Slide 45

Slide 45 text

EPAM Systems 45 SOURCE % BRANCHING MODELS Centralized Gitflow Github Feature branch Commit Commit Commit Commit REBASE SQUASH FEATURE BRANCH … REBASE FEATURE FEATURE FEATURE FEATURE UPSTREAM BRANCH GIT — Branching models

Slide 46

Slide 46 text

EPAM Systems 46 SOURCE % HOOKS 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 PRE-COMMIT PREPARE-COMMIT-MSG COMMIT-MSG POST-COMMIT POST-CHECKOUT PRE-REBASE PRE-RECEIVE UPDATE POST-RECEIVE Client Server http://githooks.com/ SPELLING ERRORS ENFORCE RULES EMAIL / SMS NOTIFICATIONS DEPLOY TRIGGER Use Cases 9GDJQQMUVQQ GIT Hooks

Slide 47

Slide 47 text

EPAM Systems 47 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 GIT — Commit message conventions

Slide 48

Slide 48 text

EPAM Systems 48 CONTINUOUS INTEGRATION IDE # Code Completion and Inspection Refactoring, Metrics 1 2 3 Test frameworks integration 4 Debugger, Frameworks support 5 Source Version control Issue trackers integration CODIO CLOUD9 CODEBOX CODENVY Online IDE 9GD5VQTO IDE — toolset that matters

Slide 49

Slide 49 text

CONTINUOUS IMPROVEMENTS #

Slide 50

Slide 50 text

EPAM Systems 50 TECHNICAL DEBT TESTS WILL BE IN THE NEXT RELEASE LET’S JUST COPY/PASTE FOR NOW 1 2 3 CODE ENTROPY: “IF I TOUCH THAT CODE EVERYTHING WILL BREAK” 4 TODO/FIXME STATEMENTS CONTINUOUS IMPROVEMENTS # Fix this code, the only one who can. Is in another company already. http://en.wikipedia.org/wiki/Technical_debt 5 DOCS? MY CODE IS STATE OF ART $WI&TKXGP&GXGNQROGPV Technical debt — can be found in any project

Slide 51

Slide 51 text

EPAM Systems 51 CODE QUALITY CODE-STYLE: TABS/SPACES, INDENTATION STATIC ANALYZE AND COMPLEXITY: BUGS, DUPLICATION, STANDARDS 1 2 3 UNIT-TESTS AND COVERAGE 4 DOCS AND COMMENTS CONTINUOUS IMPROVEMENTS # 5 TECH BACKLOG .KUVQHVCUMU RTKQTKV[ +PFKECVGUJQYSWKEMN[FGXGNQRGTU ECPCFFDWUKPGUUXCNWGVQ UQHVYCTGU[UVGO Code quality — measurable

Slide 52

Slide 52 text

EPAM Systems 52 CODE STYLE CONTINUOUS IMPROVEMENTS # - JSHINT + STYLISH - PLATO - CODE PAINTER - EDITORCONFIG - JSCS - ESLINT - AIRBNB - CROCKFORD - GOOGLE - JQUERY - MDCS (THREE.JS) - WIKIMEDIA - YANDEX - COFFEELINT - CSS - HTML Other validations JSCS Presets 1 2 3 4 5 Tools READABILITY GOOD NAMES CLEAR LOGIC POTENTIAL ISSUES GUIDELINES Code style — measurable

Slide 53

Slide 53 text

EPAM Systems 53 CONTINUOUS IMPROVEMENTS .dot files # .gitignore .gitattributes .jshintrc .jshintignore .editorconfig .jscs.json .travis.yml SHAREABLE CONFIGURATION EASY TO MANAGE 1 2 3 IDE INTEGRATION 4 ESSENTIAL PART OF YOUR ENVIRONMENT 5 NOT A TRASH Invest time learning to configure your machine and automate processes Project System .bashrc .zshrc .gitconfig .aliases .functions .osx http://dotfiles.github.io/ 1P7PKZCNKMGU[UVGOU Dot files — overwrite settings per project

Slide 54

Slide 54 text

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

Slide 55

Slide 55 text

EPAM Systems 55 CONTINUOUS IMPROVEMENTS CODE COVERAGE # 97% NOT TESTED AREA OF APP DEAD CODE DETECTION 1 2 3 TESTING QUALITY 4 ACCEPTANCE THRESHOLD 70-90% 5 REPORTS JSCoverage Istanbul COVERALS.IO Blanket #9'51/' *KUVQT[CPFUVCVUUGTXKEG CODECLIMATE Code coverage — testing quality metric

Slide 56

Slide 56 text

EPAM Systems 56 CONTINUOUS IMPROVEMENTS DOCS GENERATION # KEEP THEM UP-TO-DATE METHODS AND CLASSES 1 2 3 PUBLIC API 4 USAGE EXAMPLES 5 (RE) USE YOUR TESTS HTML MARKDOWN JSDoc Output JSDOC* CROJSDOC APIDOCJS DOX MOX DOCCO CODO Tools @param @name @class @method @option @example @depricated @package @private @api ;17$7+.6+6 ;17470+6Ŏ *WOCPTGCFCDNGCPF )KV*WDHTKGPFN[ Documentation generation — What…, How…, When…?

Slide 57

Slide 57 text

EPAM Systems 57 CONTINUOUS IMPROVEMENTS # $TQUFQP VNGVDTQU VQFGRNQ[OCPWCNN[

Slide 58

Slide 58 text

EPAM Systems 58 WHY CI Ready to use product always available. Feature flags to have changes hidden until finished Risks mitigation: The smaller changes — the smaller effect. Every defect once — cover bug with test. Easy diff reviews, tracking Deploy is available for anybody: Dev, QA, PM: No special knowledge is necessary. One button or one-liner command 6QQNU 2TQEGUU%QPHKFGPEG 1 2 3 4 5 TIME TO MARKET FEEDBACK CYCLE ERRORS BUS FACTOR FEAR OF CHANGES Why we need Continuous Integration in our projects # CONTINUOUS IMPROVEMENTS

Slide 59

Slide 59 text

EPAM Systems 59 CI SERVERS CONTINUOUS IMPROVEMENTS # BUILDS HISTORY AND VISIBILITY LAST GREEN/RED STATUS 1 2 3 PARALLEL BUILDS 4 MULTIPLE ENVIRONMENTS 5 ROLLBACK JENKINS TEAMCITY GRUNT CONCRETE STRIDER CI TOOLS &1+6;1745'.( And badges: http://shields.io/ Continuous Integration Servers — Single source of truth

Slide 60

Slide 60 text

EPAM Systems 60 HOSTED SERVICES CONTINUOUS IMPROVEMENTS # CI AS A SERVICE INTEGRATED WITH GITHUB AND BITBUCKET 1 2 3 BUILD ON SCHEDULE 4 DEPLOY GREEN 5 REPORTS AND STATUS DASHBOARD circle.yml .travis.yml Options TRAVIS CI CODESHIP CIRCLE CI BAMBOO MAGNUM CI SEMAPHORE GONDOR RULTOR Services [ON Continuous Integration Servers —

Slide 61

Slide 61 text

DEPLOY PLATFORMS "

Slide 62

Slide 62 text

EPAM Systems 62 DEPLOY PLATFORMS SERVER # CUSTOMIZABLE STACK AND ENVIRONMENT NEED FOR (DEV) OPS DATA: COMPANY POLICY OWN SERVICES TO USE d e f g g / NGINX APACHE TOMCAT Ñ SSH BASH 7SYSLOG + FILES TMP CACHE , SQL NOSQL KEY:VAL (SERVICES DAEMONS CRON W IPTABLES mSENDMAIL w .QQMUIQQF CHVGTC[GCTQTVYQ 1 2 3 4 5 INFRASTRUCTURE +CC5#/#<10&+)+6#.1%'#0 QT4#%-52#%' K 0QVJKPIURGEKCN Server as a Platform

Slide 63

Slide 63 text

EPAM Systems - 63 DEPLOY PLATFORMS PaaS # CLI DEPLOYS CONFIGURATION DASHBOARD 1 2 3 BUILDING BLOCKS (DISK SPACE, DB, MONITORING, ADDONS) 4 MONITORING 5 SLA AND NODES MANAGEMENT NODEJITSU HEROKU CLOUD FOUNDRY JOYENT ENGINE YARD Services #NN[QWPGGFVQTWP[QWTCRR 7RFCVGU5GEWTKV[Ŏ Platform as a Service

Slide 64

Slide 64 text

EPAM Systems 64 DEPLOY PLATFORMS DOCKER # YOUR OWN PAAS OPEN SOURCE 1 2 3 EASY SCALE 4 MANY READY TO USE STACKS 5 EASY TO MIGRATE DEIS FLYNN TSURU OCTOHOST TOOLS 1RGP5QWTEG2CC5 YKVJ$NCEMLCEM #RRNKECVKQP 2NCVHQTO%QPVCKPGT Containerization platform — Docker

Slide 65

Slide 65 text

MONITORING EVENTS
 METRICS 7

Slide 66

Slide 66 text

EPAM Systems 66 MONITORING EVENTS LOGS # FORMAT IS IMPORTANT AGGREGATION AND ROTATION 1 2 3 SEARCH 4 ALERTS AND NOTIFICATIONS 5 WATCHERS ITGRCEMUQTVQTŎ ŎWUGNQIUVCUJ Logs management

Slide 67

Slide 67 text

EPAM Systems 67 MONITORING EVENTS LOGS ROTATION # &CVG .GXGN 2014/10/02 13:58:32 [error] 925#0: *14 connect() failed (111: Connection refused) while… 'XGPV SIZE DATE 10Mb LOGS Sept 10Mb Oct 07 Logs rotation

Slide 68

Slide 68 text

EPAM Systems 68 MONITORING EVENTS LOGGING SERVICES # PAPERTAIL LOGENTRIES SUMOLOGIC BOUNDARY SENTRY GRAYLOG2 ERRBIT Services &QKV[QWTUGNH APP DB SRV SYS - ELASTIC SEARCH n 8 ! 5QNWVKQPU &CVCUQWTEGU Logs management — as a Service

Slide 69

Slide 69 text

EPAM Systems 69 MONITORING Errors # CONTEXT IS IMPORTANT GROUPING REPRODUCE FAIL GRACEFULLY HISTORY … RAYGUN TRACKJS AIRBRAKE QBAKA MUSCULA JSERRLOG TRACEKIT Services 1 2 3 4 5 5VCEMVTCEGQT)6(1 &GHGEVKPRTQFWEVKQP! 9QTMUQPO[OCEJKPG &QKV[QWTUGNH Errors management — as a Service

Slide 70

Slide 70 text

EPAM Systems 70 MONITORING METRICS Health Page # SERVICE #1 (UP) Ã SERVICE #3 (10k users / s) Ã SERVICE #1 (10k ops / s) Ã Â FREE SPACE (~2Gb) ;QWDGVVGTFQUQOGVJKPIYKVJKV HARDWARE SERVICES AND API 1 2 3 TRANSPORTS 4 PERFORMANCE 5 UPTIME Health page — system status overview

Slide 71

Slide 71 text

SUMMARY .

Slide 72

Slide 72 text

72 SUMMARY EPAM Systems . DEVELOPMENT WORKFLOW SOURCE MANAGEMENT DEPLOY PLATFORMS MONITORING METRICS Automate Tests Small features BUILD PIPELINE CONTINUOUS INTEGRATION $ % & " 7 # +VņUGCU[KVUVCTV

Slide 73

Slide 73 text

73 SUMMARY EPAM Systems . 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ņUHTGGHQT[QWTVGCO

Slide 74

Slide 74 text

74 SUMMARY EPAM Systems . 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 BUILD PIPELINE CONTINUOUS INTEGRATION $ % & " 7 # &QYPNQCFCPFKPVGITCVG

Slide 75

Slide 75 text

75 SUMMARY EPAM Systems . 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[QWT2TQLGEV

Slide 76

Slide 76 text

76 SUMMARY EPAM Systems . 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 $ % & " 7 # +PVTQFWEGKV[QWTUGNH

Slide 77

Slide 77 text

77 SUMMARY EPAM Systems . 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 $ % & " 7 # Logs rotation 5GG#EV2TGXGPV

Slide 78

Slide 78 text

78 SUMMARY EPAM Systems . 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 $ % & " 7 # Logs rotation 6T[KVVQFC[

Slide 79

Slide 79 text

79 EPAM Systems QUESTIONS? ? THANKS!