SlideShare a Scribd company logo
1 of 28
Download to read offline
Full stack 
What stands behind these words
@Me 
● Front-end lead developer 
● Front-end since 2008 
● Full stack since 2013 
● Now: Node.js 
● Before: Angular.js, Backbone.js, Chaplin, 
Google Closure Toolkit, Flex, Actionscript
Agenda 
1. Front-end world 
2. Back-end world 
3. Reasons of bugs 
4. Best practices 
5. Stories with morality 
6. Summary 
7. QA?
Front-end. So different applications. 
● Gaming 
● Media publishing 
● Internet Messaging 
● Data visualization 
● Social networks 
● GIS 
● And many many more...
Front-end evolution 
1. Pre AJAX: 
a. LAMP: Linux + Apache + MySQL + PHP(PERL, 
Python). index.php 
2. AJAX: 
a. Multi paged: CakePHP, Django, Symfony, Zend 
Framework, JSP 
b. Single paged: Index.html + anchors, jQuery 
3. Post AJAX: 
a. Realtime API: Meteor.js, WebSockets, WebRTC
Typical tasks 
● Unit testing, end-to-end testing of modules 
and components 
● Minifaction and merge of javascript 
modules 
● Compilation of LESS/SASS/Stylus to CSS 
● Revisioning of files 
● Assets preparation 
● Generation of manifesto file
Front-end 
● Client-side 
○ Interoperability 
■ Cross-browser - same feature + different 
implementations, polyfills 
■ Mobile devices - fast css + slow javascript + slow 
internet connection 
● Presentation 
○ HTML5 - a lot of buzz-words, but only few jedis 
know about them
Front-end 
● Modularity 
○ Pre-AMD 
○ AMD: Require.js, DojoToolkit 
○ ES6 modules 
● Core 
○ Prototype.js, DojoToolkit, Google Closure Toolkit 
○ jQuery them all 
○ MVP, MVVP: Backbone.js, Knockout.js, Angular.js, 
Ext.js, Ember.js
Reasons of front-end bugs 
● Browser detection code 
● Too wide CSS selectors 
● Event cycle management 
● Event listeners not removed properly 
● Closures variables
Summary 
● One language many environments 
● Heterogenous clients (OS + Browser + 
Platform) 
● Significant amount of events are invoked by 
user: mouse, keyboard, touch-screen 
● Mostly visual representation
Back-end 
● Platforms 
○ *nix: Linux, BSD, Solaris, AIX, HP-UX 
○ MS Windows 
● Databases 
○ Relational: Oracle, MySQL, PostgreSQL, MS SQL 
○ Non-relational: MongoDB, OrientDB, CouchDB, Cassandra, BerkeleyDB 
● Languages 
○ Perl, PHP, Python, Erlang 
○ Java, Scala, Groovy 
○ Ruby, Ruby on Rails 
○ Node.js, CoffeeScript
Tasks 
● Builds (unit testing, integration testing) 
● Deployment 
● Environment configurations 
● High Availability 
● Load balancing 
● Performance testing 
● Continuous Integration
Reasons of back-end bugs 
● Configuration 
○ Not applied 
○ Not loaded 
○ Points to wrong place 
● Action sequence flow 
● Asynchronicity issues 
● Parameters validation 
● Integration with third-party API’s or other services 
● Trying to apply coding pattern that does not work as expected 
● Memory management issues
Back-end summary 
● Mostly homogenous environment 
● Price of API changes 
● Most events are emitted by 
OS/Services/Network/Databases 
● Predictability - you are driving environment 
● User does not see the back-end explicitly. He even 
does not know that it exists.
Kill em’ all 
● One paltform could not fit all tasks: 
○ Many data sources, fast handling - Node.js 
○ Universal scripting platform - Python 
○ Hipster platform -Ruby on Rails 
○ Long-term tasks performance - Java, Scala 
○ Narrow fast tasks - C/C++ 
● One interchange format is not applicable for all use cases 
○ JSON - Data 
○ HTML - Pages 
○ Markdown - documentation 
○ XML - RPC, SOAP, Structured text 
○ YAML - Configuration files, descriptions
Full stack profile 
1. Client side stack 
a. HTML5 - presentation and client side API 
b. Build automation Grunt/Ant/Maven 
c. Unit testing 
d. LESS/SASS/Stylus 
e. AJAX, WebSockets, WebRTC 
2. Server side stack 
a. Java, Python, PHP, Ruby 
b. MVC framework 
c. Databases 
d. *nix 
e. CI
Stories: Four Weddings and One Funeral 
● What could happen if developers do not 
understand each other 
● What should be avoided 
● Where to point 
● What is going on when: oh crap it does not 
work!
Story #1 
1. HTML5 game for mobile platforms 
2. CSS3 + Spritesheets + Lime.js + Google 
Closure Toolkit 
3. CakePHP + MySQL + Ubuntu Linux 
4. XML as interchange format 
5. Over 20 API calls to load friends game 
scores and over 5 minutes to load it all
Story #2 
1. HTML5 Newspaper App for mobiles 
2. Backbone.js + Require.js + jQuery 
3. Drupal6 + Ubuntu linux + MySQL 
4. XML as interchange format 
5. XML built using strings concatenation (sic!) 
6. Many drupal hooks that do not know about 
each other 
7. 5 - 10 mins to load news feeds
Story #3 
1. HTML5 Multi Page Web App 
2. Java + Ubuntu Linux + Oracle DB 
3. Require.js + Backbone.js + jQuery 
4. All clients in GMT timezone 
5. Server was located in non-GMT and used local time 
zone 
6. Clients needed to adopt server time to local time 
7. Day could have 22, 23 and 25 hours. Really.
Story #4 
1. HTML5 Web portal for OpenStack platform 
2. Python + OpenStack + Ubuntu + RabbitMQ 
3. Angular.js + LESS + HTML5 
4. One action invokes many (>5) ajax calls 
5. All calls are enqueued as long as domain is the same 
6. Gimme code #1, Gimme code #2 
7. Huge latency, over 1 min to see single statistics 
entry
Moral 
1. One single UI element could involve a lot of back-end 
interactions 
2. Applying front-end approaches to back-end and vice 
versa is a bad idea 
3. Quick and dirty in a long term period leads to just 
dirty 
4. Laziness on one side leads to overtime on another side
Best practices 
● RAML 
● When you have over 3-5 calls per single action - think about middleware 
● Tools should be chosen when you have analysed requirements and 
workaround 
● No silver bullet and ‘Не все йогурты одинаково полезны’ 
● Be ready for production from the very beginning 
● Be ready for changes and do not rely on library/framework. Library 
could be replaced with another one if it implements the same pattern
Best practices 
● Definition of done for back-end work 
○ RAML or documentation about HTTP 
request/response format 
○ Unit tests 
○ Deployable package deb, rpm whatever 
○ VM where it could be deployed Jenkins job is even 
better 
○ Notification to all team
Best practices 
● Definition of done for front-end work 
○ Proper config for web server/requirements for back-end 
○ Unit tests, cover these cases: negative, positive, invalid 
○ Behavior 
■ Right for correct user data. 
■ Expected for incorrect user data. 
■ Predictable for network failures. 200 OK is not the only response 
○ Look and feel 
■ Check your target browsers and devices. Safari !== iOS safari !== 
Chrome 
○ Load time is reasonable and not only from localhost;) 
○ Packaged into deb/rpm
Best practices 
● Definition of bugfix is done 
○ Jira issue with description about bug 
○ Code fixed and reviewed 
○ Unit and automation test added to cover the case 
that bug is fixed 
○ Code merged into master branch 
○ Deployable package is available
Resume, or why to choose full-stack? 
1. Being full stack developer makes you 
polyglot. You can negotiate with front-end 
and back-end devs and dev-ops and QAs 
2. Being full stack developer gives you better 
understanding of product lifecycle 
3. You will know the junction points of your 
app
Contacts 
● pavlo.iuriichuk@globallogic.com 
● skype: pavlo.yuriychuck 
● twitter: @pavlo-yuriychuck

More Related Content

What's hot

RESTful Machine Learning with Flask and TensorFlow Serving - Carlo Mazzaferro
RESTful Machine Learning with Flask and TensorFlow Serving - Carlo MazzaferroRESTful Machine Learning with Flask and TensorFlow Serving - Carlo Mazzaferro
RESTful Machine Learning with Flask and TensorFlow Serving - Carlo MazzaferroPyData
 
Windows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCPWindows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCPSeungmo Koo
 
모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101)
모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101) 모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101)
모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101) YoungSu Son
 
Inter-Process Communication in Microservices using gRPC
Inter-Process Communication in Microservices using gRPCInter-Process Communication in Microservices using gRPC
Inter-Process Communication in Microservices using gRPCShiju Varghese
 
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉iFunFactory Inc.
 
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기현철 조
 
Container based android
Container based androidContainer based android
Container based androidLihan Chen
 
Introduction to gRPC
Introduction to gRPCIntroduction to gRPC
Introduction to gRPCPrakash Divy
 
Introduction to Redis
Introduction to RedisIntroduction to Redis
Introduction to RedisDvir Volk
 
게임 운영에 필요한 로그성 데이터들에 대하여
게임 운영에 필요한 로그성 데이터들에 대하여게임 운영에 필요한 로그성 데이터들에 대하여
게임 운영에 필요한 로그성 데이터들에 대하여iFunFactory Inc.
 
코루틴(Coroutine)
코루틴(Coroutine)코루틴(Coroutine)
코루틴(Coroutine)QooJuice
 
이원, 절차적 지형 생성과 하이트필드의 사원, NDC2011
이원, 절차적 지형 생성과 하이트필드의 사원, NDC2011이원, 절차적 지형 생성과 하이트필드의 사원, NDC2011
이원, 절차적 지형 생성과 하이트필드의 사원, NDC2011devCAT Studio, NEXON
 
Full Stack Web Development
Full Stack Web DevelopmentFull Stack Web Development
Full Stack Web DevelopmentSWAGATHCHOWDARY1
 
Software engineer가 되기 위한 여정
Software engineer가 되기 위한 여정Software engineer가 되기 위한 여정
Software engineer가 되기 위한 여정Aree Oh
 
게임서버프로그래밍 #1 - IOCP
게임서버프로그래밍 #1 - IOCP게임서버프로그래밍 #1 - IOCP
게임서버프로그래밍 #1 - IOCPSeungmo Koo
 
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장Dylan Ko
 
현업 엔지니어의 시각에서 본 알고리즘 공부의 장점과 단점
현업 엔지니어의 시각에서 본 알고리즘 공부의 장점과 단점현업 엔지니어의 시각에서 본 알고리즘 공부의 장점과 단점
현업 엔지니어의 시각에서 본 알고리즘 공부의 장점과 단점Wonha Ryu
 
Ppt full stack developer
Ppt full stack developerPpt full stack developer
Ppt full stack developerSudhirVarpe1
 
파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)Heungsub Lee
 

What's hot (20)

RESTful Machine Learning with Flask and TensorFlow Serving - Carlo Mazzaferro
RESTful Machine Learning with Flask and TensorFlow Serving - Carlo MazzaferroRESTful Machine Learning with Flask and TensorFlow Serving - Carlo Mazzaferro
RESTful Machine Learning with Flask and TensorFlow Serving - Carlo Mazzaferro
 
Windows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCPWindows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCP
 
모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101)
모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101) 모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101)
모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101)
 
Inter-Process Communication in Microservices using gRPC
Inter-Process Communication in Microservices using gRPCInter-Process Communication in Microservices using gRPC
Inter-Process Communication in Microservices using gRPC
 
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
 
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
 
Container based android
Container based androidContainer based android
Container based android
 
Introduction to gRPC
Introduction to gRPCIntroduction to gRPC
Introduction to gRPC
 
Introduction to Redis
Introduction to RedisIntroduction to Redis
Introduction to Redis
 
게임 운영에 필요한 로그성 데이터들에 대하여
게임 운영에 필요한 로그성 데이터들에 대하여게임 운영에 필요한 로그성 데이터들에 대하여
게임 운영에 필요한 로그성 데이터들에 대하여
 
코루틴(Coroutine)
코루틴(Coroutine)코루틴(Coroutine)
코루틴(Coroutine)
 
이원, 절차적 지형 생성과 하이트필드의 사원, NDC2011
이원, 절차적 지형 생성과 하이트필드의 사원, NDC2011이원, 절차적 지형 생성과 하이트필드의 사원, NDC2011
이원, 절차적 지형 생성과 하이트필드의 사원, NDC2011
 
Full Stack Web Development
Full Stack Web DevelopmentFull Stack Web Development
Full Stack Web Development
 
Software engineer가 되기 위한 여정
Software engineer가 되기 위한 여정Software engineer가 되기 위한 여정
Software engineer가 되기 위한 여정
 
게임서버프로그래밍 #1 - IOCP
게임서버프로그래밍 #1 - IOCP게임서버프로그래밍 #1 - IOCP
게임서버프로그래밍 #1 - IOCP
 
Backend Programming
Backend ProgrammingBackend Programming
Backend Programming
 
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
 
현업 엔지니어의 시각에서 본 알고리즘 공부의 장점과 단점
현업 엔지니어의 시각에서 본 알고리즘 공부의 장점과 단점현업 엔지니어의 시각에서 본 알고리즘 공부의 장점과 단점
현업 엔지니어의 시각에서 본 알고리즘 공부의 장점과 단점
 
Ppt full stack developer
Ppt full stack developerPpt full stack developer
Ppt full stack developer
 
파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)파이썬 생존 안내서 (자막)
파이썬 생존 안내서 (자막)
 

Similar to Full stack development

Node.js Web Apps @ ebay scale
Node.js Web Apps @ ebay scaleNode.js Web Apps @ ebay scale
Node.js Web Apps @ ebay scaleDmytro Semenov
 
Критика "библиотечного" подхода в разработке под Android. UA Mobile 2016.
Критика "библиотечного" подхода в разработке под Android. UA Mobile 2016.Критика "библиотечного" подхода в разработке под Android. UA Mobile 2016.
Критика "библиотечного" подхода в разработке под Android. UA Mobile 2016.UA Mobile
 
Introduction to node.js aka NodeJS
Introduction to node.js aka NodeJSIntroduction to node.js aka NodeJS
Introduction to node.js aka NodeJSJITENDRA KUMAR PATEL
 
node.js 실무 - node js in practice by Jesang Yoon
node.js 실무 - node js in practice by Jesang Yoonnode.js 실무 - node js in practice by Jesang Yoon
node.js 실무 - node js in practice by Jesang YoonJesang Yoon
 
Griffon for the Enterprise
Griffon for the EnterpriseGriffon for the Enterprise
Griffon for the EnterpriseJames Williams
 
Serverless Computing with Google Cloud
Serverless Computing with Google CloudServerless Computing with Google Cloud
Serverless Computing with Google Cloudwesley chun
 
IDEALIZE 2023 - NodeJS & Firebase Session
IDEALIZE 2023 - NodeJS & Firebase SessionIDEALIZE 2023 - NodeJS & Firebase Session
IDEALIZE 2023 - NodeJS & Firebase SessionBrion Mario
 
Serverless computing with Google Cloud
Serverless computing with Google CloudServerless computing with Google Cloud
Serverless computing with Google Cloudwesley chun
 

Similar to Full stack development (20)

Node.js Web Apps @ ebay scale
Node.js Web Apps @ ebay scaleNode.js Web Apps @ ebay scale
Node.js Web Apps @ ebay scale
 
Nodejs
NodejsNodejs
Nodejs
 
Beginners Node.js
Beginners Node.jsBeginners Node.js
Beginners Node.js
 
Node.js scaling in highload
Node.js scaling in highloadNode.js scaling in highload
Node.js scaling in highload
 
Netty training
Netty trainingNetty training
Netty training
 
Критика "библиотечного" подхода в разработке под Android. UA Mobile 2016.
Критика "библиотечного" подхода в разработке под Android. UA Mobile 2016.Критика "библиотечного" подхода в разработке под Android. UA Mobile 2016.
Критика "библиотечного" подхода в разработке под Android. UA Mobile 2016.
 
Go at Skroutz
Go at SkroutzGo at Skroutz
Go at Skroutz
 
Introduction to node.js aka NodeJS
Introduction to node.js aka NodeJSIntroduction to node.js aka NodeJS
Introduction to node.js aka NodeJS
 
Node.js Course 2 of 2 - Advanced techniques
Node.js Course 2 of 2 - Advanced techniquesNode.js Course 2 of 2 - Advanced techniques
Node.js Course 2 of 2 - Advanced techniques
 
Node.js
Node.jsNode.js
Node.js
 
Node js for beginners
Node js for beginnersNode js for beginners
Node js for beginners
 
Netty training
Netty trainingNetty training
Netty training
 
20120306 dublin js
20120306 dublin js20120306 dublin js
20120306 dublin js
 
node.js 실무 - node js in practice by Jesang Yoon
node.js 실무 - node js in practice by Jesang Yoonnode.js 실무 - node js in practice by Jesang Yoon
node.js 실무 - node js in practice by Jesang Yoon
 
Griffon for the Enterprise
Griffon for the EnterpriseGriffon for the Enterprise
Griffon for the Enterprise
 
Serverless Computing with Google Cloud
Serverless Computing with Google CloudServerless Computing with Google Cloud
Serverless Computing with Google Cloud
 
18_Node.js.ppt
18_Node.js.ppt18_Node.js.ppt
18_Node.js.ppt
 
IDEALIZE 2023 - NodeJS & Firebase Session
IDEALIZE 2023 - NodeJS & Firebase SessionIDEALIZE 2023 - NodeJS & Firebase Session
IDEALIZE 2023 - NodeJS & Firebase Session
 
Next.js with drupal, the good parts
Next.js with drupal, the good partsNext.js with drupal, the good parts
Next.js with drupal, the good parts
 
Serverless computing with Google Cloud
Serverless computing with Google CloudServerless computing with Google Cloud
Serverless computing with Google Cloud
 

More from Pavlo Iuriichuk

Switching to angular.js silk way
Switching to angular.js   silk waySwitching to angular.js   silk way
Switching to angular.js silk wayPavlo Iuriichuk
 
Global logic tech talk switching to Angular.js
Global logic tech talk switching to Angular.jsGlobal logic tech talk switching to Angular.js
Global logic tech talk switching to Angular.jsPavlo Iuriichuk
 
Mobile Web Apps development essentials
Mobile Web Apps development essentialsMobile Web Apps development essentials
Mobile Web Apps development essentialsPavlo Iuriichuk
 

More from Pavlo Iuriichuk (7)

Switching to angular.js silk way
Switching to angular.js   silk waySwitching to angular.js   silk way
Switching to angular.js silk way
 
Global logic tech talk switching to Angular.js
Global logic tech talk switching to Angular.jsGlobal logic tech talk switching to Angular.js
Global logic tech talk switching to Angular.js
 
SVG in game development
SVG in game developmentSVG in game development
SVG in game development
 
Jsfwdays 2013-2
Jsfwdays 2013-2Jsfwdays 2013-2
Jsfwdays 2013-2
 
Mobile web apps
Mobile web appsMobile web apps
Mobile web apps
 
Lime.JS
Lime.JSLime.JS
Lime.JS
 
Mobile Web Apps development essentials
Mobile Web Apps development essentialsMobile Web Apps development essentials
Mobile Web Apps development essentials
 

Recently uploaded

High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur EscortsHigh Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur High Profile
 
Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...
Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...
Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...Christo Ananth
 
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur Suman Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur High Profile
 
UNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its PerformanceUNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its Performancesivaprakash250
 
College Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
College Call Girls Nashik Nehal 7001305949 Independent Escort Service NashikCollege Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
College Call Girls Nashik Nehal 7001305949 Independent Escort Service NashikCall Girls in Nagpur High Profile
 
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur EscortsCall Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur High Profile
 
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...roncy bisnoi
 
UNIT-V FMM.HYDRAULIC TURBINE - Construction and working
UNIT-V FMM.HYDRAULIC TURBINE - Construction and workingUNIT-V FMM.HYDRAULIC TURBINE - Construction and working
UNIT-V FMM.HYDRAULIC TURBINE - Construction and workingrknatarajan
 
UNIT-III FMM. DIMENSIONAL ANALYSIS
UNIT-III FMM.        DIMENSIONAL ANALYSISUNIT-III FMM.        DIMENSIONAL ANALYSIS
UNIT-III FMM. DIMENSIONAL ANALYSISrknatarajan
 
KubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghlyKubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghlysanyuktamishra911
 
The Most Attractive Pune Call Girls Manchar 8250192130 Will You Miss This Cha...
The Most Attractive Pune Call Girls Manchar 8250192130 Will You Miss This Cha...The Most Attractive Pune Call Girls Manchar 8250192130 Will You Miss This Cha...
The Most Attractive Pune Call Girls Manchar 8250192130 Will You Miss This Cha...ranjana rawat
 
BSides Seattle 2024 - Stopping Ethan Hunt From Taking Your Data.pptx
BSides Seattle 2024 - Stopping Ethan Hunt From Taking Your Data.pptxBSides Seattle 2024 - Stopping Ethan Hunt From Taking Your Data.pptx
BSides Seattle 2024 - Stopping Ethan Hunt From Taking Your Data.pptxfenichawla
 
Glass Ceramics: Processing and Properties
Glass Ceramics: Processing and PropertiesGlass Ceramics: Processing and Properties
Glass Ceramics: Processing and PropertiesPrabhanshu Chaturvedi
 
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service NashikCall Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service NashikCall Girls in Nagpur High Profile
 
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...ranjana rawat
 
Introduction to IEEE STANDARDS and its different types.pptx
Introduction to IEEE STANDARDS and its different types.pptxIntroduction to IEEE STANDARDS and its different types.pptx
Introduction to IEEE STANDARDS and its different types.pptxupamatechverse
 
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete RecordCCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete RecordAsst.prof M.Gokilavani
 
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...Call Girls in Nagpur High Profile
 
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdfONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdfKamal Acharya
 

Recently uploaded (20)

High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur EscortsHigh Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
 
Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...
Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...
Call for Papers - Educational Administration: Theory and Practice, E-ISSN: 21...
 
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur Suman Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Suman Call 7001035870 Meet With Nagpur Escorts
 
UNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its PerformanceUNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its Performance
 
College Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
College Call Girls Nashik Nehal 7001305949 Independent Escort Service NashikCollege Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
College Call Girls Nashik Nehal 7001305949 Independent Escort Service Nashik
 
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur EscortsCall Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
 
Roadmap to Membership of RICS - Pathways and Routes
Roadmap to Membership of RICS - Pathways and RoutesRoadmap to Membership of RICS - Pathways and Routes
Roadmap to Membership of RICS - Pathways and Routes
 
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
Call Girls Pimpri Chinchwad Call Me 7737669865 Budget Friendly No Advance Boo...
 
UNIT-V FMM.HYDRAULIC TURBINE - Construction and working
UNIT-V FMM.HYDRAULIC TURBINE - Construction and workingUNIT-V FMM.HYDRAULIC TURBINE - Construction and working
UNIT-V FMM.HYDRAULIC TURBINE - Construction and working
 
UNIT-III FMM. DIMENSIONAL ANALYSIS
UNIT-III FMM.        DIMENSIONAL ANALYSISUNIT-III FMM.        DIMENSIONAL ANALYSIS
UNIT-III FMM. DIMENSIONAL ANALYSIS
 
KubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghlyKubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghly
 
The Most Attractive Pune Call Girls Manchar 8250192130 Will You Miss This Cha...
The Most Attractive Pune Call Girls Manchar 8250192130 Will You Miss This Cha...The Most Attractive Pune Call Girls Manchar 8250192130 Will You Miss This Cha...
The Most Attractive Pune Call Girls Manchar 8250192130 Will You Miss This Cha...
 
BSides Seattle 2024 - Stopping Ethan Hunt From Taking Your Data.pptx
BSides Seattle 2024 - Stopping Ethan Hunt From Taking Your Data.pptxBSides Seattle 2024 - Stopping Ethan Hunt From Taking Your Data.pptx
BSides Seattle 2024 - Stopping Ethan Hunt From Taking Your Data.pptx
 
Glass Ceramics: Processing and Properties
Glass Ceramics: Processing and PropertiesGlass Ceramics: Processing and Properties
Glass Ceramics: Processing and Properties
 
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service NashikCall Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
 
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
 
Introduction to IEEE STANDARDS and its different types.pptx
Introduction to IEEE STANDARDS and its different types.pptxIntroduction to IEEE STANDARDS and its different types.pptx
Introduction to IEEE STANDARDS and its different types.pptx
 
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete RecordCCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
 
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...Booking open Available Pune Call Girls Koregaon Park  6297143586 Call Hot Ind...
Booking open Available Pune Call Girls Koregaon Park 6297143586 Call Hot Ind...
 
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdfONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
 

Full stack development

  • 1. Full stack What stands behind these words
  • 2. @Me ● Front-end lead developer ● Front-end since 2008 ● Full stack since 2013 ● Now: Node.js ● Before: Angular.js, Backbone.js, Chaplin, Google Closure Toolkit, Flex, Actionscript
  • 3. Agenda 1. Front-end world 2. Back-end world 3. Reasons of bugs 4. Best practices 5. Stories with morality 6. Summary 7. QA?
  • 4. Front-end. So different applications. ● Gaming ● Media publishing ● Internet Messaging ● Data visualization ● Social networks ● GIS ● And many many more...
  • 5. Front-end evolution 1. Pre AJAX: a. LAMP: Linux + Apache + MySQL + PHP(PERL, Python). index.php 2. AJAX: a. Multi paged: CakePHP, Django, Symfony, Zend Framework, JSP b. Single paged: Index.html + anchors, jQuery 3. Post AJAX: a. Realtime API: Meteor.js, WebSockets, WebRTC
  • 6. Typical tasks ● Unit testing, end-to-end testing of modules and components ● Minifaction and merge of javascript modules ● Compilation of LESS/SASS/Stylus to CSS ● Revisioning of files ● Assets preparation ● Generation of manifesto file
  • 7. Front-end ● Client-side ○ Interoperability ■ Cross-browser - same feature + different implementations, polyfills ■ Mobile devices - fast css + slow javascript + slow internet connection ● Presentation ○ HTML5 - a lot of buzz-words, but only few jedis know about them
  • 8. Front-end ● Modularity ○ Pre-AMD ○ AMD: Require.js, DojoToolkit ○ ES6 modules ● Core ○ Prototype.js, DojoToolkit, Google Closure Toolkit ○ jQuery them all ○ MVP, MVVP: Backbone.js, Knockout.js, Angular.js, Ext.js, Ember.js
  • 9. Reasons of front-end bugs ● Browser detection code ● Too wide CSS selectors ● Event cycle management ● Event listeners not removed properly ● Closures variables
  • 10. Summary ● One language many environments ● Heterogenous clients (OS + Browser + Platform) ● Significant amount of events are invoked by user: mouse, keyboard, touch-screen ● Mostly visual representation
  • 11. Back-end ● Platforms ○ *nix: Linux, BSD, Solaris, AIX, HP-UX ○ MS Windows ● Databases ○ Relational: Oracle, MySQL, PostgreSQL, MS SQL ○ Non-relational: MongoDB, OrientDB, CouchDB, Cassandra, BerkeleyDB ● Languages ○ Perl, PHP, Python, Erlang ○ Java, Scala, Groovy ○ Ruby, Ruby on Rails ○ Node.js, CoffeeScript
  • 12. Tasks ● Builds (unit testing, integration testing) ● Deployment ● Environment configurations ● High Availability ● Load balancing ● Performance testing ● Continuous Integration
  • 13. Reasons of back-end bugs ● Configuration ○ Not applied ○ Not loaded ○ Points to wrong place ● Action sequence flow ● Asynchronicity issues ● Parameters validation ● Integration with third-party API’s or other services ● Trying to apply coding pattern that does not work as expected ● Memory management issues
  • 14. Back-end summary ● Mostly homogenous environment ● Price of API changes ● Most events are emitted by OS/Services/Network/Databases ● Predictability - you are driving environment ● User does not see the back-end explicitly. He even does not know that it exists.
  • 15. Kill em’ all ● One paltform could not fit all tasks: ○ Many data sources, fast handling - Node.js ○ Universal scripting platform - Python ○ Hipster platform -Ruby on Rails ○ Long-term tasks performance - Java, Scala ○ Narrow fast tasks - C/C++ ● One interchange format is not applicable for all use cases ○ JSON - Data ○ HTML - Pages ○ Markdown - documentation ○ XML - RPC, SOAP, Structured text ○ YAML - Configuration files, descriptions
  • 16. Full stack profile 1. Client side stack a. HTML5 - presentation and client side API b. Build automation Grunt/Ant/Maven c. Unit testing d. LESS/SASS/Stylus e. AJAX, WebSockets, WebRTC 2. Server side stack a. Java, Python, PHP, Ruby b. MVC framework c. Databases d. *nix e. CI
  • 17. Stories: Four Weddings and One Funeral ● What could happen if developers do not understand each other ● What should be avoided ● Where to point ● What is going on when: oh crap it does not work!
  • 18. Story #1 1. HTML5 game for mobile platforms 2. CSS3 + Spritesheets + Lime.js + Google Closure Toolkit 3. CakePHP + MySQL + Ubuntu Linux 4. XML as interchange format 5. Over 20 API calls to load friends game scores and over 5 minutes to load it all
  • 19. Story #2 1. HTML5 Newspaper App for mobiles 2. Backbone.js + Require.js + jQuery 3. Drupal6 + Ubuntu linux + MySQL 4. XML as interchange format 5. XML built using strings concatenation (sic!) 6. Many drupal hooks that do not know about each other 7. 5 - 10 mins to load news feeds
  • 20. Story #3 1. HTML5 Multi Page Web App 2. Java + Ubuntu Linux + Oracle DB 3. Require.js + Backbone.js + jQuery 4. All clients in GMT timezone 5. Server was located in non-GMT and used local time zone 6. Clients needed to adopt server time to local time 7. Day could have 22, 23 and 25 hours. Really.
  • 21. Story #4 1. HTML5 Web portal for OpenStack platform 2. Python + OpenStack + Ubuntu + RabbitMQ 3. Angular.js + LESS + HTML5 4. One action invokes many (>5) ajax calls 5. All calls are enqueued as long as domain is the same 6. Gimme code #1, Gimme code #2 7. Huge latency, over 1 min to see single statistics entry
  • 22. Moral 1. One single UI element could involve a lot of back-end interactions 2. Applying front-end approaches to back-end and vice versa is a bad idea 3. Quick and dirty in a long term period leads to just dirty 4. Laziness on one side leads to overtime on another side
  • 23. Best practices ● RAML ● When you have over 3-5 calls per single action - think about middleware ● Tools should be chosen when you have analysed requirements and workaround ● No silver bullet and ‘Не все йогурты одинаково полезны’ ● Be ready for production from the very beginning ● Be ready for changes and do not rely on library/framework. Library could be replaced with another one if it implements the same pattern
  • 24. Best practices ● Definition of done for back-end work ○ RAML or documentation about HTTP request/response format ○ Unit tests ○ Deployable package deb, rpm whatever ○ VM where it could be deployed Jenkins job is even better ○ Notification to all team
  • 25. Best practices ● Definition of done for front-end work ○ Proper config for web server/requirements for back-end ○ Unit tests, cover these cases: negative, positive, invalid ○ Behavior ■ Right for correct user data. ■ Expected for incorrect user data. ■ Predictable for network failures. 200 OK is not the only response ○ Look and feel ■ Check your target browsers and devices. Safari !== iOS safari !== Chrome ○ Load time is reasonable and not only from localhost;) ○ Packaged into deb/rpm
  • 26. Best practices ● Definition of bugfix is done ○ Jira issue with description about bug ○ Code fixed and reviewed ○ Unit and automation test added to cover the case that bug is fixed ○ Code merged into master branch ○ Deployable package is available
  • 27. Resume, or why to choose full-stack? 1. Being full stack developer makes you polyglot. You can negotiate with front-end and back-end devs and dev-ops and QAs 2. Being full stack developer gives you better understanding of product lifecycle 3. You will know the junction points of your app
  • 28. Contacts ● pavlo.iuriichuk@globallogic.com ● skype: pavlo.yuriychuck ● twitter: @pavlo-yuriychuck