SlideShare a Scribd company logo
1 of 50
Download to read offline
PRODUCT!
THE ROAD TO PRODUCTION DEPLOYMENT
presented by /Filippo Zanella @r4m
WHO I AM
Ph.D. in Information Engineering at the
, Visiting Researcher
at UC Berkeley and UC Santa Barbara.
University of Padua
Founder of , full-stack engineer
(RubyOnRails & Ember.js).
Sellf srl
President of the and Member
of the .
Fencing Club of Montebelluna
Rotary Club of Montebelluna
SELLF
Sellf helps people in sales monitor
their deals and manage their
activities to grow and close them.
Small business owners,
professionals
and sales agents
usually struggle to keep their
business life organized,
overwhelmed by spreadsheets, todo
lists, calendars and notes.
PROTOTYPING
BE STUBBORN ON VISION BUT FLEXIBLE ON DETAILS.
(JEFF BEZOS, AMAZON)
THE ARDUINO WAY
A prototype is meant to be a test. Built using the most
"hacky" approach with the least amount of time to get initial
feedback on whether a concept is viable.
Copyright © 2006-2011 by John Szakmeister
CONCEPT
Handmade sketch of the data visualization of the app.
BACKBONE
Try to de ne as much as you can:
Infrastructure
Communication protocol
Database schema
UX ow
WIREFRAMES
Detailed descriptions of the different views of the app.
(BALSAMIQ) MOCKUPS
MINIMUM VIABLE PRODUCT
IF YOU AREN'T EMBARRASSED BY THE FIRST VERSION OF THE PRODUCT YOU'VE LAUNCHED TOO LATE.
(REID HOFFMAN, LINKEDIN)
MVP
It is built from the smallest set of features that delivers
customer early adopters value.
More than 60% of features in software products are rarely or never used.
Prioritize each feature according to a few factors:
1. How important is this feature for nishing the process?
2. How often will the feature be used?
3. How many users will use this feature?
4. How much value will the feature bring to the customer?
5. How risky is this feature?
6. How much time does it take to be implemented?
SAAS, BAAS, PAAS, IAAS
Software as a Service (Sellf, Google Apps, GoToMeeting)
Backend as a Service (Parse, Apprenda)
Platform as a Service (AWS Beanstalk, Heroku)
Infrastructure as a Service (AWS EC2, Microsoft Azure)
PRODUCT
IT IS NOT ABOUT BITS, BYTES AND PROTOCOLS, BUT PROFITS, LOSSES AND MARGINS.
(LOU GERSTNER, IBM)
WHEN THE HEAT GETS HOT
You cannot survive with (too) buggy and clumsy code.
You slightly move from MVP and beta releases to a working
app that your customer expect to be:
fast
secure
stable
While you see your user base increasing, you see their
expectations growing too.
SELLF 3.0
LOGGING & ALERTING
Log activities of your app to nd:
failures
bugs
heavy algorithms
expensive queries
unwanted/unexpected behaviors
Set alerts to be noti ed when speci c events occur.
Building an ef cient logging and alerting system allows your
team to nd and x problems quickly.
USER BEHAVIOR MONITORING
What people really do with your application.
PERFORMANCE MONITORING
Nobody writes slow code on purpose.
AVAILABILITY MONITORING
How do you know when your app has an outage?
ERRORS HANDLING
Anticipate, detect, resolve BUGS.
NETWORK ERRORS
$.ajax({
type: 'POST',
url: '/some/resource',
success: function(data, textStatus) {
// Handle success
},
error: function(xhr, textStatus, errorThrown) {
if (xhr.status) {
if (xhr.status === 403) {
// Handle forbidden access error
} else {
// Handle generic error
}
}
}
});
PLATFORM ERRORS
FRAMEWORK ERRORS
LIBRARY ERRORS...
...LIBRARY REPLACEMENT
In the long run, libraries are like a stick in the mud:
not longer maintained
degrade performance
missing custom needs
not easy to debug
YOUR ERRORS
The bloody asynchrony
callAction: function() {
var _this, defer;
_this = this;
defer = Ember.RSVP.defer();
defer.promise.then(function() {
if (_this && !_this.isDestroyed) {
return _this.set('isLoaded', true);
}
}, function() {
if (_this && !_this.isDestroyed) {
return _this.set('isLoaded', false);
}
});
}
MAINTAIN 3RD-PARTY SOFTWARE UPDATED
When the project relies on external software, it's useful to
leverage the updates, for:
Fix bugs (not caused by our app)
Improve overall performances
Adding new features
Deprecate old conventions
CHANGELOG
Record of all the changes made to a project.
Now the inline form can be use in addiction:
EXAMPLE OF BUMPING
Prior v1.11 in Ember's an ifcondition in a template was
limited to the following syntax:
{{#if isEnabled}}
<a class="active" href="http://www.facebook.com">Facebook</a>
{{else}}
<a class="disabled" href="http://www.facebook.com">Facebook</a>
{{/if}}
<a class="{{if isEnabled 'active' 'disabled'}}" href="http://www.facebook.com"
simpli ng the number of lines of code, enhancing readability
and allowing new behaviours.
SECURITY
The Gartner Group however estimates that 75% of attacks
are at the web application layer, and found out "that out of
300 audited sites, 97% are vulnerable to attack".
The threats against web applications include:
user account hijacking
bypass of access control
reading or modifying sensitive data
presenting fraudulent content
SQL INJECTION
A technique where malicious users can inject SQL commands
into an SQL statement, via web page input.
Client
<p>UserId: <br>
<input type="text" name="UserId" value="105 or 1=1"></p>
Server
SELECT * FROM Users WHERE UserId = 105 or 1=1
The SQL above is valid. It will return all rows from the table
Users, since WHERE 1=1 is always true!
SSL
The Secure Socket Layer is a cryptographic protocol designed
to provide secure communications over a computer network.
Serve everything over SSL.
PS: don't let your certi cates expire.
SCALING
It means rapid adaptation to a growing user activity.
You need to push your system to a higher level, getting the best from your infrastructure.
APOCALYPSE NOW
You'll never be ready till the day you have to.
HARD STUFFS
Load balancing, caching, CDN, background jobs, ...
... sharding, master/slaves, ETAGs, etc.
TEAM GROWTH
Being agile is mandatory when your team growths to stay
focused in delivering real value to the company
No wasting time on unneeded planning docs.
No delivering features that do not t customers needs.
THE PROJECT TRIANGLE
OPTIMIZATION
IMPROVING PERFORMANCES
An optimization analysis should include:
network utilisation
CPU
memory usage
database query
Optimizing is critical because it has an impact on the scaling
factor of the system!
CODING TRICKS
Parallel versus sequential assignment
var a, b = 1, 2 a= 1, b = 2
5821.3 (±6.0%) i/s 8010.3 (±5.5%) i/s
slow fast
40% faster!
LOADING TIMES
Google Developer Tools (via Chrome)
UI DRAINING RESOURCE
In a single-page framework, template rendering choices can
make the difference in terms of RAM usage.
<ul>
{{#each alumni as |alumnus|}}
<li>
<p>Hello, {{alumnus.name}}!</p>
<!-- This is RAM consuming... -->
<div>{{detailed-profile content=alumnus}}</div>
</li>
{{/each}}
</ul>
UI DRAINING RESOURCE
Destroy not visibile child views to free up their memory.
<ul>
{{#each alumni as |alumnus|}}
<li>
<p>Hello, {{alumnus.name}}!</p>
<!-- Show the details only when the alumnus is selected -->
{{#if view.isSelected}}
<div>{{detailed-profile content=alumnus}}</div>
{{/if}}
</li>
{{/each}}
</ul>
CROSS COMPATIBILITY
The (W3C), founded in 1994 to
promote open standards for the , pulled ,
together with others to develop a standard for
browser scripting languages called " ".
World Wide Web Consortium
WWW Netscape
Microsoft
ECMAScript
TEST DRIVEN DEVELOPMENT
If you avoid at the beginning TDD practices, you'll discover
that they are as much important as the app code itself.
Continuous integration and testing is a must sooner or later.
Tests can be applied to:
backend - just do it.
frontend - think about it.
mobile - forget it.
UNIT TESTS
They are generally used to test a small piece of code and
ensure that it is doing what was intended.
App.SomeThing = Ember.Object.extend({
foo: 'bar',
testMethod: function() {
this.set('foo', 'baz');
}
});
module('Unit: SomeThing');
test('calling testMethod updates foo', function() {
var someThing = App.SomeThing.create();
someThing.testMethod();
equal(someThing.get('foo'), 'baz');
});
REFACTORING
Improving the design of code without changing its behavior.
Clarity enables performance:
long methods
speculative code
comments
When you look back to your one-year old code you look at it with the same compassion with whom you look at
a photo of you a few years before: you wonder how the hell you could get those clothes and that hairstyle.
REMOVE DUPLICATION
if (this.target.entity.is("decoration")) {
this.target.entity.game.publish("decoration/showBoost", {
entityView: this.target,
x: this.target.entity.x,
y: this.target.entity.y
});
}
var entity = this.target.entity;
if (entity.is("decoration")) {
entity.game.publish("decoration/showBoost", {
entityView: this.target,
x: entity.x,
y: entity.y
});
}
USE MEANINGFUL NAMES
var p = this.current.params;
var r = this.current.results;
if (r.restProduct) {
p.query = r.prestProduct;
}
var params = this.current.params;
var results = this.current.results;
if (results.restProduct) {
params.query = results.prestProduct;
}
THANK YOU!

More Related Content

What's hot

Working Agile with Scrum and TFS 2013
Working Agile with Scrum and TFS 2013Working Agile with Scrum and TFS 2013
Working Agile with Scrum and TFS 2013
Moataz Nabil
 
QCon Beijing - April 2010
QCon Beijing - April 2010QCon Beijing - April 2010
QCon Beijing - April 2010
Kane Mar
 

What's hot (18)

Agile Engineering Practices
Agile Engineering PracticesAgile Engineering Practices
Agile Engineering Practices
 
Understanding Scrum
Understanding ScrumUnderstanding Scrum
Understanding Scrum
 
Understanding Kanban
Understanding KanbanUnderstanding Kanban
Understanding Kanban
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
 
Working Agile with Scrum and TFS 2013
Working Agile with Scrum and TFS 2013Working Agile with Scrum and TFS 2013
Working Agile with Scrum and TFS 2013
 
MeetingPoint 2015 - Swimming upstream in the container revolution
MeetingPoint 2015 - Swimming upstream in the container revolutionMeetingPoint 2015 - Swimming upstream in the container revolution
MeetingPoint 2015 - Swimming upstream in the container revolution
 
Introduction to DevOps
Introduction to DevOpsIntroduction to DevOps
Introduction to DevOps
 
QCon Beijing - April 2010
QCon Beijing - April 2010QCon Beijing - April 2010
QCon Beijing - April 2010
 
Team Foundation Server 2012 Reporting
Team Foundation Server 2012 ReportingTeam Foundation Server 2012 Reporting
Team Foundation Server 2012 Reporting
 
Behavior Driven Development with Cucumber
Behavior Driven Development with CucumberBehavior Driven Development with Cucumber
Behavior Driven Development with Cucumber
 
Software Development 2020 - Swimming upstream in the container revolution
Software Development 2020 - Swimming upstream in the container revolutionSoftware Development 2020 - Swimming upstream in the container revolution
Software Development 2020 - Swimming upstream in the container revolution
 
NextBuild 2015 - Swimming upstream in the container revolution
NextBuild 2015 - Swimming upstream in the container revolutionNextBuild 2015 - Swimming upstream in the container revolution
NextBuild 2015 - Swimming upstream in the container revolution
 
Introduction to Project Management with Scrum
Introduction to Project Management with ScrumIntroduction to Project Management with Scrum
Introduction to Project Management with Scrum
 
EuregJUG 2016-01-07 - Swimming upstream in the container revolution
EuregJUG 2016-01-07 - Swimming upstream in the container revolutionEuregJUG 2016-01-07 - Swimming upstream in the container revolution
EuregJUG 2016-01-07 - Swimming upstream in the container revolution
 
Devoxx BE 2015 - Swimming upstream in the container revolution
Devoxx BE 2015 - Swimming upstream in the container revolutionDevoxx BE 2015 - Swimming upstream in the container revolution
Devoxx BE 2015 - Swimming upstream in the container revolution
 
Scrum + Behavior Driven Development (BDD) - Colombo
Scrum + Behavior Driven Development (BDD) - ColomboScrum + Behavior Driven Development (BDD) - Colombo
Scrum + Behavior Driven Development (BDD) - Colombo
 
Mastering Test Automation: How To Use Selenium Successfully
Mastering Test Automation: How To Use Selenium SuccessfullyMastering Test Automation: How To Use Selenium Successfully
Mastering Test Automation: How To Use Selenium Successfully
 
Black Marble Introduction To Scrum
Black Marble Introduction To ScrumBlack Marble Introduction To Scrum
Black Marble Introduction To Scrum
 

Similar to Product! - The road to production deployment

Stream SQL eventflow visual programming for real programmers presentation
Stream SQL eventflow visual programming for real programmers presentationStream SQL eventflow visual programming for real programmers presentation
Stream SQL eventflow visual programming for real programmers presentation
streambase
 
CucumberSeleniumWD
CucumberSeleniumWDCucumberSeleniumWD
CucumberSeleniumWD
Vikas Sarin
 

Similar to Product! - The road to production deployment (20)

DevOps in Practice: When does "Practice" Become "Doing"?
DevOps in Practice: When does "Practice" Become "Doing"?DevOps in Practice: When does "Practice" Become "Doing"?
DevOps in Practice: When does "Practice" Become "Doing"?
 
Pete Marshall - casmadrid2015 - Continuous Delivery in Legacy Environments
Pete Marshall - casmadrid2015 - Continuous Delivery in Legacy EnvironmentsPete Marshall - casmadrid2015 - Continuous Delivery in Legacy Environments
Pete Marshall - casmadrid2015 - Continuous Delivery in Legacy Environments
 
Best practice adoption (and lack there of)
Best practice adoption (and lack there of)Best practice adoption (and lack there of)
Best practice adoption (and lack there of)
 
Development and QA dilemmas in DevOps
Development and QA dilemmas in DevOpsDevelopment and QA dilemmas in DevOps
Development and QA dilemmas in DevOps
 
30 days or less: New Features to Production
30 days or less: New Features to Production30 days or less: New Features to Production
30 days or less: New Features to Production
 
DevOps Fest 2020. immutable infrastructure as code. True story.
DevOps Fest 2020. immutable infrastructure as code. True story.DevOps Fest 2020. immutable infrastructure as code. True story.
DevOps Fest 2020. immutable infrastructure as code. True story.
 
Software Development Standard Operating Procedure
Software Development Standard Operating Procedure Software Development Standard Operating Procedure
Software Development Standard Operating Procedure
 
Availability in a cloud native world v1.6 (Feb 2019)
Availability in a cloud native world v1.6 (Feb 2019)Availability in a cloud native world v1.6 (Feb 2019)
Availability in a cloud native world v1.6 (Feb 2019)
 
Stream SQL eventflow visual programming for real programmers presentation
Stream SQL eventflow visual programming for real programmers presentationStream SQL eventflow visual programming for real programmers presentation
Stream SQL eventflow visual programming for real programmers presentation
 
CucumberSeleniumWD
CucumberSeleniumWDCucumberSeleniumWD
CucumberSeleniumWD
 
DevSecOps | DevOps Sec
DevSecOps | DevOps SecDevSecOps | DevOps Sec
DevSecOps | DevOps Sec
 
Andrea Baldon, Emanuele Di Saverio - GraphQL for Native Apps: the MyAXA case ...
Andrea Baldon, Emanuele Di Saverio - GraphQL for Native Apps: the MyAXA case ...Andrea Baldon, Emanuele Di Saverio - GraphQL for Native Apps: the MyAXA case ...
Andrea Baldon, Emanuele Di Saverio - GraphQL for Native Apps: the MyAXA case ...
 
Angular js mobile jsday 2014 - Verona 14 may
Angular js mobile   jsday 2014 - Verona 14 mayAngular js mobile   jsday 2014 - Verona 14 may
Angular js mobile jsday 2014 - Verona 14 may
 
DevOps explained
DevOps explainedDevOps explained
DevOps explained
 
ITARC15 Workshop - Architecting a Large Software Project - Lessons Learned
ITARC15 Workshop - Architecting a Large Software Project - Lessons LearnedITARC15 Workshop - Architecting a Large Software Project - Lessons Learned
ITARC15 Workshop - Architecting a Large Software Project - Lessons Learned
 
Ci tips and_tricks_linards_liepins
Ci tips and_tricks_linards_liepinsCi tips and_tricks_linards_liepins
Ci tips and_tricks_linards_liepins
 
Mage Titans USA 2016 - Jonathan Bownds - Magento CI and Testing
Mage Titans USA 2016 - Jonathan Bownds - Magento CI and Testing Mage Titans USA 2016 - Jonathan Bownds - Magento CI and Testing
Mage Titans USA 2016 - Jonathan Bownds - Magento CI and Testing
 
WinOps Conf 2016 - Matteo Emili - Development and QA Dilemmas in DevOps
WinOps Conf 2016 - Matteo Emili - Development and QA Dilemmas in DevOpsWinOps Conf 2016 - Matteo Emili - Development and QA Dilemmas in DevOps
WinOps Conf 2016 - Matteo Emili - Development and QA Dilemmas in DevOps
 
The Future of Cloud Innovation, featuring Adrian Cockcroft
The Future of Cloud Innovation, featuring Adrian CockcroftThe Future of Cloud Innovation, featuring Adrian Cockcroft
The Future of Cloud Innovation, featuring Adrian Cockcroft
 
WoMakersCode 2016 - Shit Happens
WoMakersCode 2016 -  Shit HappensWoMakersCode 2016 -  Shit Happens
WoMakersCode 2016 - Shit Happens
 

Recently uploaded

%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
masabamasaba
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
VictoriaMetrics
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 

Recently uploaded (20)

Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT  - Elevating Productivity in Today's Agile EnvironmentHarnessing ChatGPT  - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
tonesoftg
tonesoftgtonesoftg
tonesoftg
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 

Product! - The road to production deployment

  • 1. PRODUCT! THE ROAD TO PRODUCTION DEPLOYMENT presented by /Filippo Zanella @r4m
  • 2. WHO I AM Ph.D. in Information Engineering at the , Visiting Researcher at UC Berkeley and UC Santa Barbara. University of Padua Founder of , full-stack engineer (RubyOnRails & Ember.js). Sellf srl President of the and Member of the . Fencing Club of Montebelluna Rotary Club of Montebelluna
  • 3. SELLF Sellf helps people in sales monitor their deals and manage their activities to grow and close them. Small business owners, professionals and sales agents usually struggle to keep their business life organized, overwhelmed by spreadsheets, todo lists, calendars and notes.
  • 4. PROTOTYPING BE STUBBORN ON VISION BUT FLEXIBLE ON DETAILS. (JEFF BEZOS, AMAZON)
  • 5. THE ARDUINO WAY A prototype is meant to be a test. Built using the most "hacky" approach with the least amount of time to get initial feedback on whether a concept is viable. Copyright © 2006-2011 by John Szakmeister
  • 6. CONCEPT Handmade sketch of the data visualization of the app.
  • 7. BACKBONE Try to de ne as much as you can: Infrastructure Communication protocol Database schema UX ow
  • 8. WIREFRAMES Detailed descriptions of the different views of the app.
  • 10. MINIMUM VIABLE PRODUCT IF YOU AREN'T EMBARRASSED BY THE FIRST VERSION OF THE PRODUCT YOU'VE LAUNCHED TOO LATE. (REID HOFFMAN, LINKEDIN)
  • 11. MVP It is built from the smallest set of features that delivers customer early adopters value. More than 60% of features in software products are rarely or never used. Prioritize each feature according to a few factors: 1. How important is this feature for nishing the process? 2. How often will the feature be used? 3. How many users will use this feature? 4. How much value will the feature bring to the customer? 5. How risky is this feature? 6. How much time does it take to be implemented?
  • 12. SAAS, BAAS, PAAS, IAAS Software as a Service (Sellf, Google Apps, GoToMeeting) Backend as a Service (Parse, Apprenda) Platform as a Service (AWS Beanstalk, Heroku) Infrastructure as a Service (AWS EC2, Microsoft Azure)
  • 13. PRODUCT IT IS NOT ABOUT BITS, BYTES AND PROTOCOLS, BUT PROFITS, LOSSES AND MARGINS. (LOU GERSTNER, IBM)
  • 14. WHEN THE HEAT GETS HOT You cannot survive with (too) buggy and clumsy code. You slightly move from MVP and beta releases to a working app that your customer expect to be: fast secure stable While you see your user base increasing, you see their expectations growing too.
  • 16. LOGGING & ALERTING Log activities of your app to nd: failures bugs heavy algorithms expensive queries unwanted/unexpected behaviors Set alerts to be noti ed when speci c events occur. Building an ef cient logging and alerting system allows your team to nd and x problems quickly.
  • 17. USER BEHAVIOR MONITORING What people really do with your application.
  • 18. PERFORMANCE MONITORING Nobody writes slow code on purpose.
  • 19. AVAILABILITY MONITORING How do you know when your app has an outage?
  • 21. NETWORK ERRORS $.ajax({ type: 'POST', url: '/some/resource', success: function(data, textStatus) { // Handle success }, error: function(xhr, textStatus, errorThrown) { if (xhr.status) { if (xhr.status === 403) { // Handle forbidden access error } else { // Handle generic error } } } });
  • 25. ...LIBRARY REPLACEMENT In the long run, libraries are like a stick in the mud: not longer maintained degrade performance missing custom needs not easy to debug
  • 26. YOUR ERRORS The bloody asynchrony callAction: function() { var _this, defer; _this = this; defer = Ember.RSVP.defer(); defer.promise.then(function() { if (_this && !_this.isDestroyed) { return _this.set('isLoaded', true); } }, function() { if (_this && !_this.isDestroyed) { return _this.set('isLoaded', false); } }); }
  • 27. MAINTAIN 3RD-PARTY SOFTWARE UPDATED When the project relies on external software, it's useful to leverage the updates, for: Fix bugs (not caused by our app) Improve overall performances Adding new features Deprecate old conventions
  • 28. CHANGELOG Record of all the changes made to a project.
  • 29. Now the inline form can be use in addiction: EXAMPLE OF BUMPING Prior v1.11 in Ember's an ifcondition in a template was limited to the following syntax: {{#if isEnabled}} <a class="active" href="http://www.facebook.com">Facebook</a> {{else}} <a class="disabled" href="http://www.facebook.com">Facebook</a> {{/if}} <a class="{{if isEnabled 'active' 'disabled'}}" href="http://www.facebook.com" simpli ng the number of lines of code, enhancing readability and allowing new behaviours.
  • 30. SECURITY The Gartner Group however estimates that 75% of attacks are at the web application layer, and found out "that out of 300 audited sites, 97% are vulnerable to attack". The threats against web applications include: user account hijacking bypass of access control reading or modifying sensitive data presenting fraudulent content
  • 31. SQL INJECTION A technique where malicious users can inject SQL commands into an SQL statement, via web page input. Client <p>UserId: <br> <input type="text" name="UserId" value="105 or 1=1"></p> Server SELECT * FROM Users WHERE UserId = 105 or 1=1 The SQL above is valid. It will return all rows from the table Users, since WHERE 1=1 is always true!
  • 32. SSL The Secure Socket Layer is a cryptographic protocol designed to provide secure communications over a computer network. Serve everything over SSL. PS: don't let your certi cates expire.
  • 33. SCALING It means rapid adaptation to a growing user activity. You need to push your system to a higher level, getting the best from your infrastructure.
  • 34. APOCALYPSE NOW You'll never be ready till the day you have to.
  • 35. HARD STUFFS Load balancing, caching, CDN, background jobs, ... ... sharding, master/slaves, ETAGs, etc.
  • 36. TEAM GROWTH Being agile is mandatory when your team growths to stay focused in delivering real value to the company No wasting time on unneeded planning docs. No delivering features that do not t customers needs.
  • 39. IMPROVING PERFORMANCES An optimization analysis should include: network utilisation CPU memory usage database query Optimizing is critical because it has an impact on the scaling factor of the system!
  • 40. CODING TRICKS Parallel versus sequential assignment var a, b = 1, 2 a= 1, b = 2 5821.3 (±6.0%) i/s 8010.3 (±5.5%) i/s slow fast 40% faster!
  • 41. LOADING TIMES Google Developer Tools (via Chrome)
  • 42. UI DRAINING RESOURCE In a single-page framework, template rendering choices can make the difference in terms of RAM usage. <ul> {{#each alumni as |alumnus|}} <li> <p>Hello, {{alumnus.name}}!</p> <!-- This is RAM consuming... --> <div>{{detailed-profile content=alumnus}}</div> </li> {{/each}} </ul>
  • 43. UI DRAINING RESOURCE Destroy not visibile child views to free up their memory. <ul> {{#each alumni as |alumnus|}} <li> <p>Hello, {{alumnus.name}}!</p> <!-- Show the details only when the alumnus is selected --> {{#if view.isSelected}} <div>{{detailed-profile content=alumnus}}</div> {{/if}} </li> {{/each}} </ul>
  • 44. CROSS COMPATIBILITY The (W3C), founded in 1994 to promote open standards for the , pulled , together with others to develop a standard for browser scripting languages called " ". World Wide Web Consortium WWW Netscape Microsoft ECMAScript
  • 45. TEST DRIVEN DEVELOPMENT If you avoid at the beginning TDD practices, you'll discover that they are as much important as the app code itself. Continuous integration and testing is a must sooner or later. Tests can be applied to: backend - just do it. frontend - think about it. mobile - forget it.
  • 46. UNIT TESTS They are generally used to test a small piece of code and ensure that it is doing what was intended. App.SomeThing = Ember.Object.extend({ foo: 'bar', testMethod: function() { this.set('foo', 'baz'); } }); module('Unit: SomeThing'); test('calling testMethod updates foo', function() { var someThing = App.SomeThing.create(); someThing.testMethod(); equal(someThing.get('foo'), 'baz'); });
  • 47. REFACTORING Improving the design of code without changing its behavior. Clarity enables performance: long methods speculative code comments When you look back to your one-year old code you look at it with the same compassion with whom you look at a photo of you a few years before: you wonder how the hell you could get those clothes and that hairstyle.
  • 48. REMOVE DUPLICATION if (this.target.entity.is("decoration")) { this.target.entity.game.publish("decoration/showBoost", { entityView: this.target, x: this.target.entity.x, y: this.target.entity.y }); } var entity = this.target.entity; if (entity.is("decoration")) { entity.game.publish("decoration/showBoost", { entityView: this.target, x: entity.x, y: entity.y }); }
  • 49. USE MEANINGFUL NAMES var p = this.current.params; var r = this.current.results; if (r.restProduct) { p.query = r.prestProduct; } var params = this.current.params; var results = this.current.results; if (results.restProduct) { params.query = results.prestProduct; }