Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

From Pilot to Product - Morning@Lohika

1,029 views

Published on

A sincere story about the successful project.

Published in: Software
  • Be the first to comment

From Pilot to Product - Morning@Lohika

  1. 1. From PilotToProduct By Ivan Verhun
  2. 2. Notice • Ask questions during presentation • Time is limited • Business domain is not important
  3. 3. Agenda • Core product overview • Pilot architecture • • Dev Process
  4. 4. CoreProduct Overview • B2B • Import data from clients • Process data – Validate – Filter – Generate report
  5. 5. Data Flow
  6. 6. SaaSMaturity Models
  7. 7. Main Disadvantages • Single tenant • Tightly coupled components – impossible to reuse • Business logic in stored procedures
  8. 8. This slide intentionally left blank
  9. 9. Pilot Overview
  10. 10. Pilot Overview • Target audience - SMB • Business pilot • Limited TTL • Preferably short TTM • Isolated from the core platform
  11. 11. Individuals
  12. 12. Businesses
  13. 13. Pilot Overview • Target audience • Business pilot • Limited TTL • Preferably short TTM • Isolated from the core platform
  14. 14. This slide intentionally left blank
  15. 15. Pilot Architecture • 1000 meters view • Technologies and Tools • Mistakes
  16. 16. Initial Key Decisions • Multitenant • Extract data from single tenant DBs • Functionality spread between modules • All business logic in Java – No stored procedures
  17. 17. Multitenant
  18. 18. Initial Key Decisions • Multitenant • All business logic in Java – No stored procedures • Extract data from single tenant DBs • Functionality spread between modules
  19. 19. Extract data from single tenant DBs
  20. 20. Modules(Services)
  21. 21. Endpoints • Asynchronous – AMQP endpoints for prod, qa, dev • Synchronous – HTTP endpoints for IT • Endpoints switched on/off depending on spring profile
  22. 22. This slide intentionally left blank
  23. 23. 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
  24. 24. No Downtime Deployment
  25. 25. This slide intentionally left blank
  26. 26. 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
  27. 27. Database Schema Migrations • Startup • Patch Level (patch0001_test_patch.sql) • Patch Loading • Patch Ordering • Patch Execution • Post-Patch Tasks
  28. 28. Newest DB Schema • Shell script generating DB dump • Runs on Jenkins • Commits newest dump to git repo • Used to create empty test DBs
  29. 29. ATDD: http://wakaleo.com/thucydides-sample-reports/ http://thucydides.info/
  30. 30. 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
  31. 31. JBehave:exampleof story
  32. 32. This slide intentionally left blank
  33. 33. 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/
  34. 34. Kibana– ES data visualization engine
  35. 35. PerformanceMonitoring • Reporting Via JMX, HTTP, slf4j, CSV, Graphite etc • The Registry • Counters • Meters • Histograms • Timer (@Timed) http://metrics.codahale.com/
  36. 36. Java7 • Java 6 is dead • Java 8 is baby
  37. 37. This slide intentionally left blank
  38. 38. Persistence • JDBC was not OK • JPA/Hibernate was not enough • MyBatis – good for complex queries
  39. 39. WebUI http://www.thymeleaf.org/
  40. 40. TSVGeneration
  41. 41. ReportPrinter
  42. 42. 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
  43. 43. Web UI (Admin) https://angularjs.org/
  44. 44. 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
  45. 45. 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
  46. 46. Mistakes • JDBC code is poorly maintainable • JUnit – @Parameterized tests
  47. 47. DevelopmentProcess • Methodology • Techniques and Tools • Mistakes and Lessons
  48. 48. 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 -
  49. 49. SprintStructure
  50. 50. 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)
  51. 51. Scrum Board
  52. 52. Task Workflow • Analysis and writing AC • AC Review • Coding – Unit tests – Functionality – Integration tests – Writing resolution comments • Code review • Verification on QA env
  53. 53. Daily Scrum
  54. 54. Daily Scrum
  55. 55. Daily Scrum
  56. 56. Daily scrum
  57. 57. AdvertisingUkraine
  58. 58. Demo
  59. 59. Retrospective • What is working • What’s not working • To improve next time
  60. 60. CodeReviewTypes Ad hoc Passaround Pair programming Walkthrough Team review Inspection
  61. 61. 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
  62. 62. BeyondCompare
  63. 63. BeyondCompare
  64. 64. 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
  65. 65. This slide intentionally left blank
  66. 66. 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
  67. 67. Peoplemanagement • Dealing with highly motivated/enthusiastic people • Trainings – Agile (scrum) – Code review – Thucydides – Virtualization – TDD and Refactoring • Dinners
  68. 68. TeamBuildings
  69. 69. Thursdays Dinner
  70. 70. Cross functionalteam
  71. 71. TeamComposition Ichak Adizes: • Producers • Administrators • Entrepreneurs • Integrators
  72. 72. This slide intentionally left blank
  73. 73. Mistakes
  74. 74. WeDon’t NeedTesters
  75. 75. WeManagedto AvoidThis
  76. 76. 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
  77. 77. Learnings • Testers are essential • Sometimes micromanagement is a must • Establish code reviews right
  78. 78. This slide intentionally left blank
  79. 79. CustomerManagement
  80. 80. Why Customer NeedReportsTrust LowHigh Low High Transparency
  81. 81. This slide intentionally left blank
  82. 82. From PilotToProduct • Successful production launch • Unexpectedly big demand • Extended contract • Rewriting on core platform – New set of exciting technologies
  83. 83. 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/
  84. 84. 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

×