Divide and conquer - Component based development with Mendix
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Divide and conquer - Component based development with Mendix

on

  • 1,409 views

Large scale distributed development using Mendix. Scaling Agile through productized component architecture.

Large scale distributed development using Mendix. Scaling Agile through productized component architecture.

Statistics

Views

Total Views
1,409
Views on SlideShare
366
Embed Views
1,043

Actions

Likes
0
Downloads
5
Comments
0

3 Embeds 1,043

https://sprintr.home.mendix.com 1030
https://twitter.com 11
http://www.slideee.com 2

Accessibility

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • Audience – application / information architects, ExpertsMessage – It is a well known fact that after about 10 years most applications become extremely hard to change. Improvements take a lot of time, and money. This seriously limits business agility. Many companies are turning to cloud, SOA and agile as a solution. The key is to build small teams around loosely coupled components. In this talk you’ll learn how Mendix can help you do this productively. We’ll share guidelines to successfully build large IT solutions from small components.you need to break up large apps in small components, easy to do in Mendix, aligns perfectly with agileMessage - No limit to size of Mx app
  • Partners and customers are increasingly asking us about building component based applications.How do we build applications by combining multiple small apps?
  • Main actor – enterprise application designers, solution architects, …Situation – Most green field applications have a good, modularized design, but after a number of years turn into spaghetti, hard to modify, and improveChallenge – Ensure long term adaptable and improvable software, that enables business agility, and software to support changing business requirements
  • After a number of years maintenance and enhancements, most software design turns into spaghetti
  • Usually the spaghetti is a result of necessary business shortcuts, due to limited time, resources and budget.Achieving business goals is key, but the overall architecture suffers
  • As technical debt builds up, it get harder and costlier to modify the software and support new business requirementsAt some point the software get so hard to change, and brittle that change is almost impossibleSmall changes in one place, cause regressions in unexpected waysI’ve seen this happen more than once with software about 10 years old
  • Then projects to refactor and improve the quality of the software is startedThe aim is to get back to modules and components, This is harder than expected, and often fails.
  • The biggest question around architecture isn’t “how do you design this?”, but “how do I create an enduring architecture?”.In the end we want to create an architecture/design right now, that will also ensure future business agility.Lets look at some examples that can show us how to create an enduring architecture
  • Next to Apple, Toyota is the most used example when explaining successful processes.When looking at architecture, Volkswagen may be a more apt exampleVolkswagen has had massive success with their platform architectureThis basically productizes components, new products are build using released, productized components
  • Turning components into products ensures clean separation of concernsMaking quickwin, shortcut solutions is a lot harderAt the same time, it turns projects into smaller problems, smaller teams, less coordination and less risk
  • Can this architecture work for IT?This model is very successful for many software companies:amazon, Netflix, …Key insights – servicesSmall teams create productized componentsServices with own roadmapServices architecture and cloud enables teams to operate independentlyAgain: separation of modules enforces by productized components Teams can own their roadmap by being able to independently deploy trough platform and service architectureYou build it, you run it (cloud self service enables teams to build, deploy and run)Build services, or be fired
  • Another aspect of working with components.Understand that you are not creating components part of a single project.People compare software architecture to building architecture, but this is not the correct comparison
  • Enterprise Architectuur is like city zoning: you define zones and responsibility of zones, but leave the actuall implementation of the zone to different teams/projectsA city lives longer than any of it’s parts, you frequently want to rebuild parts of the whole.
  • An example how this could work:Multiple teams, working on different componentsProductized components means, separate roadmaps, release calendars, etc
  • Teams release products, ready to be used by other teams.
  • Each team releases products at it’s own pace, suitable for the product/component
  • Building a end-customer product consists of integrating existing productized components, and adding a little bit that’s unique to the end-product
  • The project to release a new end-user product become a lot smaller, less teams to coordinate, less components to debug.Less risk, shorter project, faster time to market.
  • And more reuse of components
  • Key Insights: platform architectureTurning components into products ensures clean separation of concernsMaking quick and dirty solutions is a lot harderAnd turns projects into smaller problems
  • Enterprise architecture should focus on defining zones/modulesThe plumpingAnd the interfaces between the zonesLeaving the rest open creates agilityComponents, like zones, have their own lifecycles
  • Enterprise architecture should focus on defining zones/modulesThe plumpingAnd the interfaces between the zonesLeaving the rest open creates agilityComponents, like zones, have their own lifecycles
  • Every component should be able to determine its own lifecycle and release calendar
  • Components should be designed, implemented and run by separate, autonomous teams
  • And components should be able to choose the solution architecture best fit for the component
  • Productizing components is key to creating a resilient architecture, to avoid cross component shortcuts, and to promote reuse.Therefore, the Mendix appstore is a key element: it lets everybody focus on productizing components, and building composite solutions composed of productized components
  • App services enable you to quickly and easily expose functionality to other components
  • And to integrate it easily in other componentsFocus here is on ease of use.
  • App services work well between Mendix applications,To facilitate communication between heterogeneous components Mendix enables you to use webservices
  • Users need to be able to quickly and easily navigate between the different components and applications in your organization.This is the goal of Launchpad: give user easy access to the application they are authorized to use
  • Key pluming here is single sign on: a centralized store for authentication en authorization
  • A default app module is available so you can easily add the SSO functionality to your application
  • Small teams need to be able to design, build, deploy and run their application autonomously, this means that they need easy to use tools to deploy and monitor. The Mendix platform provides these tools through the Mendix portal: One place to easily deploy your application to the cloud, one place to monitor the well being of your application.
  • Unified monitoring dashboard helps teams run their application
  • Designing distributed Mendix systemsFocus on processFocus on autonomous apps, Minimize dependencies,Minimize data volume
  • How do you define your apps: what should the size and responsibility of the apps be?
  • How do you best handle communication between the apps
  • “There’s an app for that” best summarizes the responsibility of an App: focus on the activity of the user.It should provide a one stop shop for a specific activity within a business process
  • Start with whole processCluster by user/role/persona and activityUser activity: “There’s an App for that”Don’t focus on code reuse, it’s ok to re-implement similar pages in multiple apps
  • Determine goals, activities in business process done by users
  • Define apps for user activities. Goal is to have autonomous apps that support user activities.
  • The pace layer architecture as defined by Gartner is a good guideline for the lifecycle of your appsMost apps will focus on:Systems of innovation – short lived applications that enable you to innovate your businessSystems of differentiation – relatively short lived applications that enable you to differentiate from our competitionYou’ll probably have legacy systems for:Systems of records – this is where most master data and transactional data will eventually be stored
  • Apps will be implemented by independent teams, i.e., productized componentsEvery app can use an appropriate architecture
  • Using synchronous webservices to integrate apps results in one slow monolith. User interfaces become slow, as using webservices to get data introduces latency. Apps are not really autonomous, as you can use an app if other apps are not available. This becomes an uptime/availability nightmare. Even scheduled administration is hard.
  • Apps can be made more autonomous by pushing data from one app to the next when an activity/phase has been completed.Send course/large grained documents, transfer complete documents between activities (apps)Make sure app has all data needed for user activity before showing pagesPush from one activity app to next appsJIT pull when user opens appThis removes latency, and improve autonomy. Apps can work standalone for a while. Problem: Tightly coupled apps, apps have to know about the other apps.Adding extra apps/activities requires changes to other apps.No good way to maintain master data
  • Best way to decouple applications is by introducing an (event) busAll apps publish business events to the busYou can use existing cloud ESBs (iPAAS) like Mule, or use one of the ESBs created by a Mendix partner
  • Events can be received by all apps that needs it, for example to cache data needed by the application to work autonomously
  • Master Data ManagementEvents can be used to update master dataData can be cached in other apps, but all master data should have one owner
  • Another useful strategy: create a separate, autonomous, data store.Decrease dependency on legacy solutions to manage master data,Create a way to replace those legacy solutionsApps can subscribe to data change information with the data store.

Divide and conquer - Component based development with Mendix Presentation Transcript

  • 1. Divide and Conquer: Tackling Large Apps with Component- Based Delivery Mendix World, April 4th 2014, Andrej Koelewijn
  • 2. Divide and Conquer: Tackling Large Apps with Component- Based Delivery Andrej Koelewijn, April 4th 2014 Architect Expert Services @ Mendix
  • 3. What starts with architecture…
  • 4. Often ends in spaghetti chaos…
  • 5. Usually due to necessary shortcuts…
  • 6. Increasing cost of change…
  • 7. Almost impossible to repair…
  • 8. How do you to ensure long term agile architecture?
  • 9. Productized components
  • 10. Amazon: scaling agile through cloud and services
  • 11. Enterprise IT is not like designing a building…
  • 12. But like maintaining a long term city plan…
  • 13. Teams/components
  • 14. Releases
  • 15. How to do this on the Mendix platform?
  • 16. App store
  • 17. Publish an App-Service
  • 18. Consume an App-Service
  • 19. Web services
  • 20. Launchpad
  • 21. Single Sign On
  • 22. Authorization
  • 23. Unified deployment
  • 24. Unified management and monitoring
  • 25. How do you use this?
  • 26. There’s an App
  • 27. There’s an App for th
  • 28. There’s an App for that!
  • 29. There’s an App for tha
  • 30. There’s an App f
  • 31. There’s an App for t
  • 32. Manage products Contract confirmation Declare Expenses Validate expense declaration ReimburseShop
  • 33. Manage products Contract confirmation Declare Expenses Validate expense declaration ReimburseShop Webshop Product Management tool Contract confirmation App Expenses App Smart Expenses Rules App Reimbursement App
  • 34. Manage products Contract confirmation Declare Expenses Validate expense declaration ReimburseShop Webshop Product Management tool Contract confirmation App Expenses App Smart Expenses Rules App CRM Finance Reimbursement App
  • 35. Inn Manage products Contract confirmation Declare Expenses Validate expense declaration ReimburseShop Innovation Differentiation Records Webshop Product Management tool Contract confirmation App Expenses App Smart Expenses Rules App CRM Finance Reimbursement App
  • 36. Inn Manage products Contract confirmation Declare Expenses Validate expense declaration ReimburseShop Innovation Differentiation Records Webshop Product Management tool CRM Expenses App Smart Expenses Rules App Contracts Finance Reimbursement App
  • 37. Inn Manage products Contract confirmation Declare Expenses Validate expense declaration ReimburseShop Innovation Differentiation Records Webshop Product Management tool Contract confirmation App Expenses App Smart Expenses Rules App CRM Finance Reimbursement App
  • 38. Inn Manage products Contract confirmation Declare Expenses Validate expense declaration ReimburseShop Innovation Differentiation Records Webshop Product Management tool Contract confirmation App Expenses App Smart Expenses Rules App CRM Finance Reimbursement App
  • 39. Inn Manage products Contract confirmation Declare Expenses Validate expense declaration ReimburseShop Innovation Differentiation Records Webshop Product Management tool Contract confirmation App Expenses App Smart Expenses Rules App CRM Finance Reimbursement App Product Created Insurance Purchased Contract Validated Expense Declared Declaration Validated Reimbursement Payed
  • 40. Inn Manage products Contract confirmation Declare Expenses Validate expense declaration ReimburseShop Innovation Differentiation Records Webshop Product Management tool Contract confirmation App Expenses App Smart Expenses Rules App CRM Finance Reimbursement App Product Created Insurance Purchased Contract Validated Expense Declared Declaration Validated Reimbursement Payed
  • 41. Inn Manage products Contract confirmation Declare Expenses Validate expense declaration ReimburseShop Innovation Differentiation Records Webshop Product Management tool Contract confirmation App Expenses App Smart Expenses Rules App CRM Finance Reimbursement App Product Created Insurance Purchased Contract Validated Expense Declared Declaration Validated Reimbursement Payed products customers Contracts
  • 42. Inn Manage products Contract confirmation Declare Expenses Validate expense declaration ReimburseShop Innovation Differentiation Records Webshop Product Management tool Contract confirmation App Expenses App Smart Expenses Rules App CRM Finance Reimbursement App Product Created Insurance Purchased Contract Validated Expense Declared Declaration Validated Reimbursement Payed products products customers Contracts
  • 43. Focus on developm organization...
  • 44. Focus on developm organization... And users...
  • 45. Key insights •Productized components ensure long-term architectural quality •Autonomous products and teams create business agility •Autonomous products enable scaling agile processes •Autonomous products decrease time-to-market •Autonomous products decrease risks •Focus on user activities to scope products
  • 46. Mendix Workshops 2014 •Testing •Performance •Mx 5 Features & conversion •Styling/Theming •User experience •Widgets •Component based development Pick a flyer & register at academy.mendix.com
  • 47. Thank you! Contact: Andrej.Koelewijn@Mendix.com Twitter: @andrkoel