SlideShare a Scribd company logo
1 of 87
From PilotToProduct
By Ivan Verhun
Notice
• Ask questions during presentation
• Time is limited
• Business domain is not important
Agenda
• Core product
overview
• Pilot architecture
•
• Dev Process
CoreProduct Overview
• B2B
• Import data from clients
• Process data
– Validate
– Filter
– Generate report
Data Flow
SaaSMaturity Models
Main Disadvantages
• Single tenant
• Tightly coupled components –
impossible to reuse
• Business logic in stored procedures
This slide intentionally left blank
Pilot Overview
Pilot Overview
• Target audience - SMB
• Business pilot
• Limited TTL
• Preferably short TTM
• Isolated from the core platform
Individuals
Businesses
Pilot Overview
• Target audience
• Business pilot
• Limited TTL
• Preferably short TTM
• Isolated from the core platform
This slide intentionally left blank
Pilot Architecture
• 1000 meters view
• Technologies and Tools
• Mistakes
Initial Key Decisions
• Multitenant
• Extract data from single tenant DBs
• Functionality spread between modules
• All business logic in Java
– No stored procedures
Multitenant
Initial Key Decisions
• Multitenant
• All business logic in Java
– No stored procedures
• Extract data from single tenant DBs
• Functionality spread between modules
Extract data from single tenant DBs
Modules(Services)
Endpoints
• Asynchronous – AMQP endpoints for
prod, qa, dev
• Synchronous – HTTP endpoints for
IT
• Endpoints switched on/off depending
on spring profile
This slide intentionally left blank
No Downtime Deployment
• Maintain an application mode
– LIVE
– MAINTAINCE
• Application mode is used by LB
• Switch mode to MAINTAINCE before
updating the application
• Switch mode to LIVE after re-
deployment
No Downtime Deployment
This slide intentionally left blank
TechStack– Before
Tools
• Java 6
• Jenkins
• Maven 3
• MySQL 5.1
• Jetty 6
• RabbitMQ
• Git/Github
Libs and Frameworks
• Spring
– IOC
– AMQP
– MVC
– JDBC Template
– Aspects
• JUnit
• slf4j
• Mockito, Powermock
• Joda Time
Database Schema Migrations
• Startup
• Patch Level (patch0001_test_patch.sql)
• Patch Loading
• Patch Ordering
• Patch Execution
• Post-Patch Tasks
Newest DB Schema
• Shell script generating DB dump
• Runs on Jenkins
• Commits newest dump to git repo
• Used to create empty test DBs
ATDD:
http://wakaleo.com/thucydides-sample-reports/
http://thucydides.info/
BDDandJBehave
BDD:
• is an evolution of test-driven development (TDD)
and acceptance-test driven design…
• shifts the vocabulary from being test-based to
behaviour-based
• Was developed as a response to the issues
encountered teaching test-driven development
Author: Dan North
http://en.wikipedia.org/wiki/Behavior-driven_development
JBehave:exampleof story
This slide intentionally left blank
CentralizedLogging
A tool for managing events
and logs. You can use it to
• collect logs
• parse them
• and store them for later
use (like, for searching)
http://logstash.net/
Kibana– ES data visualization engine
PerformanceMonitoring
• Reporting Via JMX, HTTP,
slf4j, CSV, Graphite etc
• The Registry
• Counters
• Meters
• Histograms
• Timer (@Timed)
http://metrics.codahale.com/
Java7
• Java 6 is dead
• Java 8 is baby
This slide intentionally left blank
Persistence
• JDBC was not OK
• JPA/Hibernate was not enough
• MyBatis – good for complex
queries
WebUI
http://www.thymeleaf.org/
TSVGeneration
ReportPrinter
PDF Validation
Impossible to:
• reliably verify absence of an element
• associate present text to particular
report attribute
– there may be false positives
• verify correct order of the text elements
• parse/verify graphs
http://pdfbox.apache.org/
Limitations
Verify:
• number of missing files
• number of unexpected files
• file content
Scope
Web UI (Admin)
https://angularjs.org/
TechStack–After
Initial tool kit
• Java 6
• Jenkins
• Maven 3
• MySQL 5.1
• Jetty 6
• RabbitMQ
Added/updated tools
• Autopatch
• Configuration Service
• JBehave + Thucydides
• Java 7
• Logstash
• Metrics library
• Amazon S3
TechStack–After
Original tech stack
• Spring
– IOC
– AMQP
– MVC
– JDBC Template
– Aspects
• JUnit
• slf4j
• Mockito, Powermock
• Joda Time
Added later
• JPA/Hibernate
• MyBatis
• Freemarker
• Thymeleaf
• Js:
– AngularJS
– RequireJS
– Bower
• Apache PDFBox
Mistakes
• JDBC code is poorly maintainable
• JUnit – @Parameterized tests
DevelopmentProcess
• Methodology
• Techniques and Tools
• Mistakes and Lessons
Scrum Rules
Principle Is Adopted
Product Owner +
Development Team +
Scrum Master +/-
Sprint planning meeting +
Daily Scrum meeting +
Sprint Review +
Sprint Retrospective +
Product backlog +
Sprint backlog +
Burndown chart -
SprintStructure
Planningprocess
• Preplanning (30-60 min)
– high level plans and priorities
• Grooming (up to 3 hours)
– discussion
– estimation
– Poker
– Story points (0-8)
• Planning (30-60 min)
– final estimation
– defining sprint scope (commitment)
Scrum Board
Task Workflow
• Analysis and writing AC
• AC Review
• Coding
– Unit tests
– Functionality
– Integration tests
– Writing resolution comments
• Code review
• Verification on QA env
Daily Scrum
Daily Scrum
Daily Scrum
Daily scrum
AdvertisingUkraine
Demo
Retrospective
• What is working
• What’s not working
• To improve next
time
CodeReviewTypes
Ad hoc
Passaround
Pair programming
Walkthrough
Team review
Inspection
Code ReviewTools
– Github
• Pros
– inline comments
– no extra software required
• Cons
– emails per comment (it's even not configurable)
– inline diffs, no side-by-side comparison
– small diff context
– directory structure is not visible
– Side-by-side comparison (Beyond compare)
• lines comparison in the bottom (above status bar)
• compare different files
• compare with clipboard content
– Reviewer checklist
BeyondCompare
BeyondCompare
ReviewChecklist
• The Obvious
– Code compiles, it’s
clear, test cases
etc.
• Design
• Coding Standards
• Error Handling
• Security
• Thread Safety
• Control Structures
• Functions
• Performance
• Bug Fixes
• Math
• Maintainability
• Documentation
• Requirements Tracing
This slide intentionally left blank
PeopleManagement
• Let people choose the task they like (if
possible)
• Avoid knowledge islands
• Let people be initiative
• Minimize micromanagement
• Semi-periodic face to face meetings
Peoplemanagement
• Dealing with highly
motivated/enthusiastic people
• Trainings
– Agile (scrum)
– Code review
– Thucydides
– Virtualization
– TDD and Refactoring
• Dinners
TeamBuildings
Thursdays Dinner
Cross functionalteam
TeamComposition
Ichak Adizes:
• Producers
• Administrators
• Entrepreneurs
• Integrators
This slide intentionally left blank
Mistakes
WeDon’t NeedTesters
WeManagedto AvoidThis
Code Review(ers)
• Start with seniors only
• Establish code review process before
extending reviewers list
• Extend reviewers list gradually
• “Code Reviewer” title should be
honorable
Learnings
• Testers are essential
• Sometimes micromanagement is a
must
• Establish code reviews right
This slide intentionally left blank
CustomerManagement
Why Customer NeedReportsTrust
LowHigh
Low High
Transparency
This slide intentionally left blank
From PilotToProduct
• Successful production launch
• Unexpectedly big demand
• Extended contract
• Rewriting on core platform
– New set of exciting technologies
Resources
SaaS Maturity Model:
• http://www.avuetech.com/wp-content/uploads/sites/7/2012/03/SaaS-Maturity-Levels.pdf
• http://blogs.msdn.com/b/architectsrule/archive/2008/08/18/saas-maturity-model-
according-to-forrester.aspx
• http://www.infoq.com/news/2008/02/saas-architecture-maturity-model
Code review:
• http://en.wikipedia.org/wiki/Code_review#Types
• http://www.softwaretestinggenius.com/istqb-foundation-level-exam-crash-course-part-6
• https://www.owasp.org/images/2/2e/OWASP_Code_Review_Guide-V1_1.pdf
• http://smartbear.com/SmartBear/media/pdfs/WP-CC-11-Best-Practices-of-Peer-Code-
Review.pdf
Cross functional team
• http://en.wikipedia.org/wiki/Cross-functional_team
Customer management
• http://habrahabr.ru/company/stratoplan/blog/202028/
Picture Sources
• http://en.wikipedia.org/wiki/File:American_truck.JPG
• http://www.expresstaxiinc.us/
• http://www.dreamstime.com/
• http://www.durhamcharterservices.com/
• http://www.galingas.com.ua/
• http://provse.te.ua/
• http://www.huffingtonpost.com/
• https://en.wikipedia.org/wiki/Scrum_(software_development)#mediaviewer/File:Scrum_process.svg
From Pilot to Product

More Related Content

What's hot

Introduction to Spring
Introduction to SpringIntroduction to Spring
Introduction to SpringSujit Kumar
 
Performance metrics for a social network
Performance metrics for a social networkPerformance metrics for a social network
Performance metrics for a social networkThierry Schellenbach
 
symfony_from_scratch
symfony_from_scratchsymfony_from_scratch
symfony_from_scratchtutorialsruby
 
Orm and hibernate
Orm and hibernateOrm and hibernate
Orm and hibernates4al_com
 
JDK Tools For Performance Diagnostics
JDK Tools For Performance DiagnosticsJDK Tools For Performance Diagnostics
JDK Tools For Performance DiagnosticsBaruch Sadogursky
 
The economies of scaling software - Abdel Remani
The economies of scaling software - Abdel RemaniThe economies of scaling software - Abdel Remani
The economies of scaling software - Abdel Remanijaxconf
 
Drools, jBPM and OptaPlanner (NYC and DC Sept 2017 - Keynote Talk Video)
Drools, jBPM and OptaPlanner (NYC and DC Sept 2017 - Keynote Talk Video)Drools, jBPM and OptaPlanner (NYC and DC Sept 2017 - Keynote Talk Video)
Drools, jBPM and OptaPlanner (NYC and DC Sept 2017 - Keynote Talk Video)Mark Proctor
 
MVC + ORM (with project implementation)
MVC + ORM (with project implementation)MVC + ORM (with project implementation)
MVC + ORM (with project implementation)Prateek Chauhan
 
Fundamentals of performance tuning PHP on IBM i
Fundamentals of performance tuning PHP on IBM i  Fundamentals of performance tuning PHP on IBM i
Fundamentals of performance tuning PHP on IBM i Zend by Rogue Wave Software
 
Bottlenecks in Java Applications
Bottlenecks in Java ApplicationsBottlenecks in Java Applications
Bottlenecks in Java ApplicationsGlobalLogic Ukraine
 
20140228 fp and_performance
20140228 fp and_performance20140228 fp and_performance
20140228 fp and_performanceshinolajla
 
Server-side JS with NodeJS
Server-side JS with NodeJSServer-side JS with NodeJS
Server-side JS with NodeJSLilia Sfaxi
 
LatJUG. JSF2.0 - The JavaEE6 Standard
LatJUG. JSF2.0 - The JavaEE6 StandardLatJUG. JSF2.0 - The JavaEE6 Standard
LatJUG. JSF2.0 - The JavaEE6 Standarddenis Udod
 
CA Harvest "Private Solutions - State of New Hampshire
CA Harvest "Private Solutions - State of New HampshireCA Harvest "Private Solutions - State of New Hampshire
CA Harvest "Private Solutions - State of New HampshireBill Mannion (LION)
 
50 Shades of Fail KScope16
50 Shades of Fail KScope1650 Shades of Fail KScope16
50 Shades of Fail KScope16Christian Berg
 

What's hot (20)

Introduction to Spring
Introduction to SpringIntroduction to Spring
Introduction to Spring
 
Plantilla oracle
Plantilla oraclePlantilla oracle
Plantilla oracle
 
Performance metrics for a social network
Performance metrics for a social networkPerformance metrics for a social network
Performance metrics for a social network
 
symfony_from_scratch
symfony_from_scratchsymfony_from_scratch
symfony_from_scratch
 
Fashiolista
FashiolistaFashiolista
Fashiolista
 
Orm and hibernate
Orm and hibernateOrm and hibernate
Orm and hibernate
 
JDK Tools For Performance Diagnostics
JDK Tools For Performance DiagnosticsJDK Tools For Performance Diagnostics
JDK Tools For Performance Diagnostics
 
The economies of scaling software - Abdel Remani
The economies of scaling software - Abdel RemaniThe economies of scaling software - Abdel Remani
The economies of scaling software - Abdel Remani
 
Drools, jBPM and OptaPlanner (NYC and DC Sept 2017 - Keynote Talk Video)
Drools, jBPM and OptaPlanner (NYC and DC Sept 2017 - Keynote Talk Video)Drools, jBPM and OptaPlanner (NYC and DC Sept 2017 - Keynote Talk Video)
Drools, jBPM and OptaPlanner (NYC and DC Sept 2017 - Keynote Talk Video)
 
MVC + ORM (with project implementation)
MVC + ORM (with project implementation)MVC + ORM (with project implementation)
MVC + ORM (with project implementation)
 
Fundamentals of performance tuning PHP on IBM i
Fundamentals of performance tuning PHP on IBM i  Fundamentals of performance tuning PHP on IBM i
Fundamentals of performance tuning PHP on IBM i
 
Bottlenecks in Java Applications
Bottlenecks in Java ApplicationsBottlenecks in Java Applications
Bottlenecks in Java Applications
 
20140228 fp and_performance
20140228 fp and_performance20140228 fp and_performance
20140228 fp and_performance
 
Server-side JS with NodeJS
Server-side JS with NodeJSServer-side JS with NodeJS
Server-side JS with NodeJS
 
Building foundations
Building foundationsBuilding foundations
Building foundations
 
Zend Code in ZF 2.0
Zend Code in ZF 2.0Zend Code in ZF 2.0
Zend Code in ZF 2.0
 
02 cldc
02 cldc02 cldc
02 cldc
 
LatJUG. JSF2.0 - The JavaEE6 Standard
LatJUG. JSF2.0 - The JavaEE6 StandardLatJUG. JSF2.0 - The JavaEE6 Standard
LatJUG. JSF2.0 - The JavaEE6 Standard
 
CA Harvest "Private Solutions - State of New Hampshire
CA Harvest "Private Solutions - State of New HampshireCA Harvest "Private Solutions - State of New Hampshire
CA Harvest "Private Solutions - State of New Hampshire
 
50 Shades of Fail KScope16
50 Shades of Fail KScope1650 Shades of Fail KScope16
50 Shades of Fail KScope16
 

Viewers also liked

Python from zero to hero (Twitter Explorer)
Python from zero to hero (Twitter Explorer)Python from zero to hero (Twitter Explorer)
Python from zero to hero (Twitter Explorer)Yuriy Senko
 
Voltdb: Shard It by V. Torshyn
Voltdb: Shard It by V. TorshynVoltdb: Shard It by V. Torshyn
Voltdb: Shard It by V. Torshynvtors
 
JavaScript in Mobile Development
JavaScript in Mobile DevelopmentJavaScript in Mobile Development
JavaScript in Mobile DevelopmentDima Maleev
 
Big data analysis in java world
Big data analysis in java worldBig data analysis in java world
Big data analysis in java worldSerg Masyutin
 
Tweaking performance on high-load projects
Tweaking performance on high-load projectsTweaking performance on high-load projects
Tweaking performance on high-load projectsDmitriy Dumanskiy
 
Хитрости UX-дизайна: ключевые лайфхаки, которые должен знать разработчик
Хитрости UX-дизайна: ключевые лайфхаки, которые должен знать разработчикХитрости UX-дизайна: ключевые лайфхаки, которые должен знать разработчик
Хитрости UX-дизайна: ключевые лайфхаки, которые должен знать разработчикNick Grachov
 
Introduction to real time big data with Apache Spark
Introduction to real time big data with Apache SparkIntroduction to real time big data with Apache Spark
Introduction to real time big data with Apache SparkTaras Matyashovsky
 
Elasticsearch, Logstash, Kibana. Cool search, analytics, data mining and more...
Elasticsearch, Logstash, Kibana. Cool search, analytics, data mining and more...Elasticsearch, Logstash, Kibana. Cool search, analytics, data mining and more...
Elasticsearch, Logstash, Kibana. Cool search, analytics, data mining and more...Oleksiy Panchenko
 
Java concurrency in practice
Java concurrency in practiceJava concurrency in practice
Java concurrency in practiceMikalai Alimenkou
 
HBaseCon 2015: HBase 2.0 and Beyond Panel
HBaseCon 2015: HBase 2.0 and Beyond PanelHBaseCon 2015: HBase 2.0 and Beyond Panel
HBaseCon 2015: HBase 2.0 and Beyond PanelHBaseCon
 
Hortonworks Technical Workshop: HBase For Mission Critical Applications
Hortonworks Technical Workshop: HBase For Mission Critical ApplicationsHortonworks Technical Workshop: HBase For Mission Critical Applications
Hortonworks Technical Workshop: HBase For Mission Critical ApplicationsHortonworks
 
HBase at Bloomberg: High Availability Needs for the Financial Industry
HBase at Bloomberg: High Availability Needs for the Financial IndustryHBase at Bloomberg: High Availability Needs for the Financial Industry
HBase at Bloomberg: High Availability Needs for the Financial IndustryHBaseCon
 
From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.Taras Matyashovsky
 
HBase and HDFS: Understanding FileSystem Usage in HBase
HBase and HDFS: Understanding FileSystem Usage in HBaseHBase and HDFS: Understanding FileSystem Usage in HBase
HBase and HDFS: Understanding FileSystem Usage in HBaseenissoz
 

Viewers also liked (19)

Apache HBase Workshop
Apache HBase WorkshopApache HBase Workshop
Apache HBase Workshop
 
Python from zero to hero (Twitter Explorer)
Python from zero to hero (Twitter Explorer)Python from zero to hero (Twitter Explorer)
Python from zero to hero (Twitter Explorer)
 
Voltdb: Shard It by V. Torshyn
Voltdb: Shard It by V. TorshynVoltdb: Shard It by V. Torshyn
Voltdb: Shard It by V. Torshyn
 
JavaScript in Mobile Development
JavaScript in Mobile DevelopmentJavaScript in Mobile Development
JavaScript in Mobile Development
 
Creation of ideas
Creation of ideasCreation of ideas
Creation of ideas
 
Big data analysis in java world
Big data analysis in java worldBig data analysis in java world
Big data analysis in java world
 
Tweaking performance on high-load projects
Tweaking performance on high-load projectsTweaking performance on high-load projects
Tweaking performance on high-load projects
 
Take a REST!
Take a REST!Take a REST!
Take a REST!
 
Хитрости UX-дизайна: ключевые лайфхаки, которые должен знать разработчик
Хитрости UX-дизайна: ключевые лайфхаки, которые должен знать разработчикХитрости UX-дизайна: ключевые лайфхаки, которые должен знать разработчик
Хитрости UX-дизайна: ключевые лайфхаки, которые должен знать разработчик
 
Boot in Production
Boot in ProductionBoot in Production
Boot in Production
 
Introduction to real time big data with Apache Spark
Introduction to real time big data with Apache SparkIntroduction to real time big data with Apache Spark
Introduction to real time big data with Apache Spark
 
Morning at Lohika
Morning at LohikaMorning at Lohika
Morning at Lohika
 
Elasticsearch, Logstash, Kibana. Cool search, analytics, data mining and more...
Elasticsearch, Logstash, Kibana. Cool search, analytics, data mining and more...Elasticsearch, Logstash, Kibana. Cool search, analytics, data mining and more...
Elasticsearch, Logstash, Kibana. Cool search, analytics, data mining and more...
 
Java concurrency in practice
Java concurrency in practiceJava concurrency in practice
Java concurrency in practice
 
HBaseCon 2015: HBase 2.0 and Beyond Panel
HBaseCon 2015: HBase 2.0 and Beyond PanelHBaseCon 2015: HBase 2.0 and Beyond Panel
HBaseCon 2015: HBase 2.0 and Beyond Panel
 
Hortonworks Technical Workshop: HBase For Mission Critical Applications
Hortonworks Technical Workshop: HBase For Mission Critical ApplicationsHortonworks Technical Workshop: HBase For Mission Critical Applications
Hortonworks Technical Workshop: HBase For Mission Critical Applications
 
HBase at Bloomberg: High Availability Needs for the Financial Industry
HBase at Bloomberg: High Availability Needs for the Financial IndustryHBase at Bloomberg: High Availability Needs for the Financial Industry
HBase at Bloomberg: High Availability Needs for the Financial Industry
 
From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.From cache to in-memory data grid. Introduction to Hazelcast.
From cache to in-memory data grid. Introduction to Hazelcast.
 
HBase and HDFS: Understanding FileSystem Usage in HBase
HBase and HDFS: Understanding FileSystem Usage in HBaseHBase and HDFS: Understanding FileSystem Usage in HBase
HBase and HDFS: Understanding FileSystem Usage in HBase
 

Similar to From Pilot to Product

DrupalSouth 2015 - Performance: Not an Afterthought
DrupalSouth 2015 - Performance: Not an AfterthoughtDrupalSouth 2015 - Performance: Not an Afterthought
DrupalSouth 2015 - Performance: Not an AfterthoughtNick Santamaria
 
Auditing Drupal Sites for Performance, Content and Optimal Configuration - SA...
Auditing Drupal Sites for Performance, Content and Optimal Configuration - SA...Auditing Drupal Sites for Performance, Content and Optimal Configuration - SA...
Auditing Drupal Sites for Performance, Content and Optimal Configuration - SA...Jon Peck
 
Lean-Agile Development with SharePoint - Bill Ayers
Lean-Agile Development with SharePoint - Bill AyersLean-Agile Development with SharePoint - Bill Ayers
Lean-Agile Development with SharePoint - Bill AyersSPC Adriatics
 
Drupal Site Audit - SFDUG
Drupal Site Audit - SFDUGDrupal Site Audit - SFDUG
Drupal Site Audit - SFDUGJon Peck
 
MIGRATION - PAIN OR GAIN?
MIGRATION - PAIN OR GAIN?MIGRATION - PAIN OR GAIN?
MIGRATION - PAIN OR GAIN?DrupalCamp Kyiv
 
Architecting for Huper Growth and Great Engineering Culture
Architecting for Huper Growth and Great Engineering CultureArchitecting for Huper Growth and Great Engineering Culture
Architecting for Huper Growth and Great Engineering CultureSARCCOM
 
Architecting for Hyper Growth and Great Engineering Culture
Architecting for Hyper Growth and Great Engineering CultureArchitecting for Hyper Growth and Great Engineering Culture
Architecting for Hyper Growth and Great Engineering Cultureifnu bima
 
5 Common Mistakes You are Making on your Website
 5 Common Mistakes You are Making on your Website 5 Common Mistakes You are Making on your Website
5 Common Mistakes You are Making on your WebsiteAcquia
 
How to grow your own Microservice?
How to grow your own Microservice?How to grow your own Microservice?
How to grow your own Microservice?Dmitry Buzdin
 
Lean-Agile SharePoint Development
Lean-Agile SharePoint DevelopmentLean-Agile SharePoint Development
Lean-Agile SharePoint DevelopmentBill Ayers
 
How to write test in node.js
How to write test in node.jsHow to write test in node.js
How to write test in node.jsJason Lin
 
Node.js Dublin Meetup April 2014
Node.js Dublin Meetup April 2014Node.js Dublin Meetup April 2014
Node.js Dublin Meetup April 2014Damian Beresford
 
Hands-on Performance Tuning Lab - Devoxx Poland
Hands-on Performance Tuning Lab - Devoxx PolandHands-on Performance Tuning Lab - Devoxx Poland
Hands-on Performance Tuning Lab - Devoxx PolandC2B2 Consulting
 
Lambda architecture: from zero to One
Lambda architecture: from zero to OneLambda architecture: from zero to One
Lambda architecture: from zero to OneSerg Masyutin
 
Profiling and Tuning a Web Application - The Dirty Details
Profiling and Tuning a Web Application - The Dirty DetailsProfiling and Tuning a Web Application - The Dirty Details
Profiling and Tuning a Web Application - The Dirty DetailsAchievers Tech
 
Spider进化论
Spider进化论Spider进化论
Spider进化论cjhacker
 

Similar to From Pilot to Product (20)

DrupalSouth 2015 - Performance: Not an Afterthought
DrupalSouth 2015 - Performance: Not an AfterthoughtDrupalSouth 2015 - Performance: Not an Afterthought
DrupalSouth 2015 - Performance: Not an Afterthought
 
Auditing Drupal Sites for Performance, Content and Optimal Configuration - SA...
Auditing Drupal Sites for Performance, Content and Optimal Configuration - SA...Auditing Drupal Sites for Performance, Content and Optimal Configuration - SA...
Auditing Drupal Sites for Performance, Content and Optimal Configuration - SA...
 
Lean-Agile Development with SharePoint - Bill Ayers
Lean-Agile Development with SharePoint - Bill AyersLean-Agile Development with SharePoint - Bill Ayers
Lean-Agile Development with SharePoint - Bill Ayers
 
Drupal Site Audit - SFDUG
Drupal Site Audit - SFDUGDrupal Site Audit - SFDUG
Drupal Site Audit - SFDUG
 
MIGRATION - PAIN OR GAIN?
MIGRATION - PAIN OR GAIN?MIGRATION - PAIN OR GAIN?
MIGRATION - PAIN OR GAIN?
 
Architecting for Huper Growth and Great Engineering Culture
Architecting for Huper Growth and Great Engineering CultureArchitecting for Huper Growth and Great Engineering Culture
Architecting for Huper Growth and Great Engineering Culture
 
Architecting for Hyper Growth and Great Engineering Culture
Architecting for Hyper Growth and Great Engineering CultureArchitecting for Hyper Growth and Great Engineering Culture
Architecting for Hyper Growth and Great Engineering Culture
 
5 Common Mistakes You are Making on your Website
 5 Common Mistakes You are Making on your Website 5 Common Mistakes You are Making on your Website
5 Common Mistakes You are Making on your Website
 
DrupalCon 2011 Highlight
DrupalCon 2011 HighlightDrupalCon 2011 Highlight
DrupalCon 2011 Highlight
 
How to grow your own Microservice?
How to grow your own Microservice?How to grow your own Microservice?
How to grow your own Microservice?
 
Lean-Agile SharePoint Development
Lean-Agile SharePoint DevelopmentLean-Agile SharePoint Development
Lean-Agile SharePoint Development
 
How to write test in node.js
How to write test in node.jsHow to write test in node.js
How to write test in node.js
 
Node.js Dublin Meetup April 2014
Node.js Dublin Meetup April 2014Node.js Dublin Meetup April 2014
Node.js Dublin Meetup April 2014
 
Hands-on Performance Tuning Lab - Devoxx Poland
Hands-on Performance Tuning Lab - Devoxx PolandHands-on Performance Tuning Lab - Devoxx Poland
Hands-on Performance Tuning Lab - Devoxx Poland
 
Lambda architecture: from zero to One
Lambda architecture: from zero to OneLambda architecture: from zero to One
Lambda architecture: from zero to One
 
ow.ppt
ow.pptow.ppt
ow.ppt
 
ow.ppt
ow.pptow.ppt
ow.ppt
 
Ow
OwOw
Ow
 
Profiling and Tuning a Web Application - The Dirty Details
Profiling and Tuning a Web Application - The Dirty DetailsProfiling and Tuning a Web Application - The Dirty Details
Profiling and Tuning a Web Application - The Dirty Details
 
Spider进化论
Spider进化论Spider进化论
Spider进化论
 

Recently uploaded

Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfInnovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfYashikaSharma391629
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxAndreas Kunz
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsChristian Birchler
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)jennyeacort
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfStefano Stabellini
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Developmentvyaparkranti
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf31events.com
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Mater
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commercemanigoyal112
 

Recently uploaded (20)

Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfInnovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdf
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Development
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commerce
 

From Pilot to Product

Editor's Notes

  1. Explain the SMB term Explain difference between Individual and SMB products Gas stations
  2. Gas station example Tips – pick up few passengers
  3. Similar businesses Business segment Schedule Length of the route Tips – pick up few passengers – doesn’t work
  4. Explain “Business pilot” term Reasons for isolation Level of isolation
  5. Change slide template
  6. SMB services: web app running on Jetty. Every service contains “similar” functionality There are 2 instances of a service Started with smb-dataimport and smb-reportgeneration services
  7. Multitenancy with multiple app instances (SaaS Level 4) Pros Support costs Ability to trigger a job for multiple clients in a single click Cons Integration with lot’s of single-tenant data sources Data isolation between clients
  8. Rule engine Separate business logic from system logic Created custom RE not based on JSR94 (JavaTM Rule Engine API) Used in Eligibility Pre-report checks Profile completeness %
  9. Connects to multiple Legacy DBs for data extraction Just a restart is needed to add new DB (no build required) Used org.springframework…AbstractRoutingDataSource Abstract {@link javax.sql.DataSource} implementation that routes {@link #getConnection()} calls to one of various target DataSources based on a lookup key. Created custom BeanFactoryPostProcessor to dynamically determine list of DBs
  10. Explain purpose of every file TSV file generation: Third parties data providers TSV Report data file Freearker vs Velocity vs Tiles
  11. Verify Seed files How PDFs are validated? Limitations Generally impossible to verify absence of an element There may be false positives – PDF may contain a text (e.g. month name) in some place, but this is not the place we expect Impossible to associate present text to particular report attribute Impossible to verify correct order of the text elements Impossible to parse/verify graphs PDF generator for integration testing No need to wait until printer provides generated seed reports
  12. What is Angular Client side MVC framework How it works reads in HTML that contains additional custom tag attributes; it then obeys the directives in those custom attributes, and binds input or output parts of the page to a model represented by standard JavaScript variables Angular teaches the browser new syntax through a construct we call directives. Examples include: Data binding, as in {{}}. DOM control structures for repeating/hiding DOM fragments. Support for forms and form validation. Attaching code-behind to DOM elements. Grouping of HTML into reusable components. Why Angular
  13. Tell why we have chosen every technology AMQP load balancing Consuming Stargate messages Spring MVC: to make it easier to trigger a process, we used HTTP endpoints to send an AMQP message later, we added a “synchronous” implementation of the HTTP endpoints for IT JDBC Initially used everywhere Now, used only in “Reading” part of legacy data extraction Aspects Refresh properties Tracking job start/end time, input parameters and status
  14. SQLs testing Dev Tools testing
  15. Few sentences about process: Scrum etc.
  16. Scrum master – removing impediments ensures that the Scrum process is used as intended.
  17. How branching is dictated by code review? Why do we use forks Types of code review
  18. https://wiki/display/PD/Code+Review+Checklist
  19. Team lead is between two fires – customers on one side and motivated people on the other Goal: ensure the customer is happy and people do what they like to do.
  20. Team lead is between two fires – customers on one side and motivated people on the other Goal: ensure the customer is happy and people do what they like to do.
  21. Dinners
  22. A cross-functional team is a group of people with different functional expertise working toward a common goal
  23. Іцхак Калдерон Адізес — один з провідних світових експертів в області підвищення ефективності ведення бізнесу і урядової діяльності шляхом внесення кардинальних змін, які не породжують хаосу і деструктивних конфліктів, що перешкоджають змінам. producers - those who work, like developers administrators - those who introduce processes entrepreneurs - new ideas, lets change everything - disruptions integrators - communicate, social glue no 4 qualities can be present, you should find others jobs - entrepreneur,
  24. We don’t need testers Sometimes micromanagement is a must
  25. Only senior and motivated person should review the code at first stage Establish code review process before extending reviewers list Extend reviewers list gradually “Code reviewer” title should be honorable