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

Introduction to Flutter
Introduction to FlutterIntroduction to Flutter
Introduction to FlutterApoorv Pandey
 
Full-Stack Development
Full-Stack DevelopmentFull-Stack Development
Full-Stack DevelopmentDhilipsiva DS
 
Intro To React Native
Intro To React NativeIntro To React Native
Intro To React NativeFITC
 
What is flutter and why should i care?
What is flutter and why should i care?What is flutter and why should i care?
What is flutter and why should i care?Sergi Martínez
 
Intro to react native
Intro to react nativeIntro to react native
Intro to react nativeModusJesus
 
Introduction to Flutter.pptx
Introduction to Flutter.pptxIntroduction to Flutter.pptx
Introduction to Flutter.pptxDiffouoFopaEsdras
 
Flutter Tutorial For Beginners | Edureka
Flutter Tutorial For Beginners | EdurekaFlutter Tutorial For Beginners | Edureka
Flutter Tutorial For Beginners | EdurekaEdureka!
 
Flutter tutorial for Beginner Step by Step
Flutter tutorial for Beginner Step by StepFlutter tutorial for Beginner Step by Step
Flutter tutorial for Beginner Step by StepChandramouli Biyyala
 
How native is React Native? | React Native vs Native App Development
How native is React Native? | React Native vs Native App DevelopmentHow native is React Native? | React Native vs Native App Development
How native is React Native? | React Native vs Native App DevelopmentDevathon
 
Getting started with flutter
Getting started with flutterGetting started with flutter
Getting started with flutterrihannakedy
 
Android Development with Kotlin, Part 1 - Introduction
Android Development with Kotlin, Part 1 - IntroductionAndroid Development with Kotlin, Part 1 - Introduction
Android Development with Kotlin, Part 1 - IntroductionAndreas Jakl
 
Introduction to react native
Introduction to react nativeIntroduction to react native
Introduction to react nativeDani Akash
 
What and Why Flutter? What is a Widget in Flutter?
What and Why Flutter? What is a Widget in Flutter?What and Why Flutter? What is a Widget in Flutter?
What and Why Flutter? What is a Widget in Flutter?MohammadHussain595488
 
Introduction to React Native
Introduction to React NativeIntroduction to React Native
Introduction to React NativeSambhu Lakshmanan
 
[Final] ReactJS presentation
[Final] ReactJS presentation[Final] ReactJS presentation
[Final] ReactJS presentation洪 鹏发
 
Introduction to Flutter - truly crossplatform, amazingly fast
Introduction to Flutter - truly crossplatform, amazingly fastIntroduction to Flutter - truly crossplatform, amazingly fast
Introduction to Flutter - truly crossplatform, amazingly fastBartosz Kosarzycki
 

What's hot (20)

Introduction to Flutter
Introduction to FlutterIntroduction to Flutter
Introduction to Flutter
 
Android MVVM
Android MVVMAndroid MVVM
Android MVVM
 
Full-Stack Development
Full-Stack DevelopmentFull-Stack Development
Full-Stack Development
 
Intro To React Native
Intro To React NativeIntro To React Native
Intro To React Native
 
What is flutter and why should i care?
What is flutter and why should i care?What is flutter and why should i care?
What is flutter and why should i care?
 
Intro to react native
Intro to react nativeIntro to react native
Intro to react native
 
Introduction to flutter
Introduction to flutter Introduction to flutter
Introduction to flutter
 
Introduction to Flutter.pptx
Introduction to Flutter.pptxIntroduction to Flutter.pptx
Introduction to Flutter.pptx
 
Flutter Tutorial For Beginners | Edureka
Flutter Tutorial For Beginners | EdurekaFlutter Tutorial For Beginners | Edureka
Flutter Tutorial For Beginners | Edureka
 
Flutter tutorial for Beginner Step by Step
Flutter tutorial for Beginner Step by StepFlutter tutorial for Beginner Step by Step
Flutter tutorial for Beginner Step by Step
 
React Native
React NativeReact Native
React Native
 
How native is React Native? | React Native vs Native App Development
How native is React Native? | React Native vs Native App DevelopmentHow native is React Native? | React Native vs Native App Development
How native is React Native? | React Native vs Native App Development
 
Getting started with flutter
Getting started with flutterGetting started with flutter
Getting started with flutter
 
Android Development with Kotlin, Part 1 - Introduction
Android Development with Kotlin, Part 1 - IntroductionAndroid Development with Kotlin, Part 1 - Introduction
Android Development with Kotlin, Part 1 - Introduction
 
Introduction to react native
Introduction to react nativeIntroduction to react native
Introduction to react native
 
What and Why Flutter? What is a Widget in Flutter?
What and Why Flutter? What is a Widget in Flutter?What and Why Flutter? What is a Widget in Flutter?
What and Why Flutter? What is a Widget in Flutter?
 
Introduction to React Native
Introduction to React NativeIntroduction to React Native
Introduction to React Native
 
[Final] ReactJS presentation
[Final] ReactJS presentation[Final] ReactJS presentation
[Final] ReactJS presentation
 
Introduction to Flutter - truly crossplatform, amazingly fast
Introduction to Flutter - truly crossplatform, amazingly fastIntroduction to Flutter - truly crossplatform, amazingly fast
Introduction to Flutter - truly crossplatform, amazingly fast
 
Introduction to React Native
Introduction to React NativeIntroduction to React Native
Introduction to React Native
 

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

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
 
chaitra-1.pptx fake news detection using machine learning
chaitra-1.pptx  fake news detection using machine learningchaitra-1.pptx  fake news detection using machine learning
chaitra-1.pptx fake news detection using machine learningmisbanausheenparvam
 
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
 
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130Suhani Kapoor
 
(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escortsranjana rawat
 
(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
 
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...ranjana rawat
 
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...Dr.Costas Sachpazis
 
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...Christo Ananth
 
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...Dr.Costas Sachpazis
 
the ladakh protest in leh ladakh 2024 sonam wangchuk.pptx
the ladakh protest in leh ladakh 2024 sonam wangchuk.pptxthe ladakh protest in leh ladakh 2024 sonam wangchuk.pptx
the ladakh protest in leh ladakh 2024 sonam wangchuk.pptxhumanexperienceaaa
 
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130Suhani Kapoor
 
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
 
Introduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptxIntroduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptxupamatechverse
 
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...Soham Mondal
 
Analog to Digital and Digital to Analog Converter
Analog to Digital and Digital to Analog ConverterAnalog to Digital and Digital to Analog Converter
Analog to Digital and Digital to Analog ConverterAbhinavSharma374939
 
GDSC ASEB Gen AI study jams presentation
GDSC ASEB Gen AI study jams presentationGDSC ASEB Gen AI study jams presentation
GDSC ASEB Gen AI study jams presentationGDSCAESB
 
Porous Ceramics seminar and technical writing
Porous Ceramics seminar and technical writingPorous Ceramics seminar and technical writing
Porous Ceramics seminar and technical writingrakeshbaidya232001
 
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
 

Recently uploaded (20)

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
 
chaitra-1.pptx fake news detection using machine learning
chaitra-1.pptx  fake news detection using machine learningchaitra-1.pptx  fake news detection using machine learning
chaitra-1.pptx fake news detection using machine learning
 
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
 
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
 
(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
(MEERA) Dapodi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune Escorts
 
(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...
 
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
 
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
 
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
Call for Papers - African Journal of Biological Sciences, E-ISSN: 2663-2187, ...
 
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
 
the ladakh protest in leh ladakh 2024 sonam wangchuk.pptx
the ladakh protest in leh ladakh 2024 sonam wangchuk.pptxthe ladakh protest in leh ladakh 2024 sonam wangchuk.pptx
the ladakh protest in leh ladakh 2024 sonam wangchuk.pptx
 
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130
 
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
 
Call Us -/9953056974- Call Girls In Vikaspuri-/- Delhi NCR
Call Us -/9953056974- Call Girls In Vikaspuri-/- Delhi NCRCall Us -/9953056974- Call Girls In Vikaspuri-/- Delhi NCR
Call Us -/9953056974- Call Girls In Vikaspuri-/- Delhi NCR
 
Introduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptxIntroduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptx
 
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
OSVC_Meta-Data based Simulation Automation to overcome Verification Challenge...
 
Analog to Digital and Digital to Analog Converter
Analog to Digital and Digital to Analog ConverterAnalog to Digital and Digital to Analog Converter
Analog to Digital and Digital to Analog Converter
 
GDSC ASEB Gen AI study jams presentation
GDSC ASEB Gen AI study jams presentationGDSC ASEB Gen AI study jams presentation
GDSC ASEB Gen AI study jams presentation
 
Porous Ceramics seminar and technical writing
Porous Ceramics seminar and technical writingPorous Ceramics seminar and technical writing
Porous Ceramics seminar and technical writing
 
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
 

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