Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Legacy to Mobile First

Legacy to Mobile First

We all dream of that greenfields project, using the latest technologies and targeting modern mobile devices, but most of us live in a world of existing legacy systems that weren't built with mobile in mind. In this presentation, I'll show how REA is tackling mobile development in a sea of legacy systems systems to make "mobile first" a reality. I look at the challenges and rewards of microservice architectures and hypermedia APIs, as well as how that influences client side development for mobile devices. The hardest aspect of building mobile apps is generally not the app itself, but in massaging the backend systems to provide the useful APIs that make developing mobile apps possible. Yesterday's software systems are unable to deliver today's mobile experiences. I present the shift from a monolithic desktop web app, to a system of microservice APIs with multiple mobile clients.

Stewart Gleadow

September 09, 2014
Tweet

More Decks by Stewart Gleadow

Other Decks in Technology

Transcript

  1. _links : { autosuggest : { href : “https://autosuggest.realestate.com.au/suburbs{/address}”, templated

    : true }, search : { href : “https://listings.realestate.com.au/listings{?query}”, templated : true }, login : { href : “https://users.realestate.com.au/users”, templated : false } } JSON endpoint configuration
  2. my_service_provider. given("something exists"). upon_receiving("a request for something”). with(method: :get, path:

    '/something'). will_respond_with( status: 200, headers: {'Content-Type' => 'application/json'}, body: {name: 'A small something'} ) ! subject.get_something
  3. _links : { autosuggest : { href : “https://autosuggest.realestate.com.au/suburbs{/address}”, templated

    : true }, search : { href : “https://listings.realestate.com.au/listings{?query}”, templated : true }, login : { href : “https://users.realestate.com.au/users”, templated : false } } Use entry points to test different environments
  4. _links : { autosuggest : { href : “https://autosuggest.realestate.com.au/suburbs{/address}”, templated

    : true }, search : { href : “https://listings.realestate.com.au/listings{?query}”, templated : true }, login : { href : “https://users.realestate.com.au/users”, templated : false } } Use entry points to test different environments
  5. _links : { autosuggest : { href : “https://autosuggest.realestate.com.au/suburbs{/address}”, templated

    : true }, search : { href : “https://listings.realestate.com.au/listings{?query}”, templated : true }, login : { href : “https://users.realestate.com.au/users”, templated : false } } Use entry points to test different environments “https://users.test.realestate.com.au/users”
  6. REFERENCES • Martin Fowler, Microservices: http://martinfowler.com/articles/microservices.html • Sam Newman, Demistifying

    Conways Law: http://www.thoughtworks.com/insights/blog/demystifying-conways-law • Michael Feathers, Microservices Until Macro Complexity: https://michaelfeathers.silvrback.com/microservices-until-macro-complexity • Anthony Green, What Is A Microservice And Why Does It Matter: http://www.brunton-spall.co.uk/post/2014/05/21/what-is-a-microservice-and-why-does-it-matter • Richard Clayton, Failing At Microservices: https://rclayton.silvrback.com/failing-at-microservices • Fred George, Microservices Architecture: http://yow.eventer.com/yow-2012-1012/micro-services-architecture-by-fred-george-1286 • Todd Hoff, Microservices Not A Free Lunch: http://highscalability.com/blog/2014/4/8/microservices-not-a-free-lunch.html • Martin Fowler, Strangler Application: http://martinfowler.com/bliki/StranglerApplication.html • Mike Kelly, HAL JSON: http://stateless.co/hal_specification.html • Brandon Byars, Enterprise REST: http://martinfowler.com/articles/enterpriseREST.html • Stewart Gleadow, No App Is An Island: https://speakerdeck.com/sgleadow/no-app-is-an-island • Ronald Holshausen, Testing Interactions With Web Services Without Integration Tests In Ruby: http://techblog.realestate.com.au/testing-interactions-with-web-services-without- integration-tests-in-ruby/ • Ian Robinson, Consumer Driven Contracts: http://martinfowler.com/articles/consumerDrivenContracts.html • Beth Skurrie, Pact Github Repository: https://github.com/realestate-com-au/pact • Travis Dixon, Pact JVM Github Repository: https://github.com/DiUS/pact-jvm • Ronald Holshausen, Simlifying Micro-Service Testing With Pacts: http://dius.com.au/2014/05/19/simplifying-micro-service-testing-with-pacts/ • Henrik Kniberg & Anders Ivarsson, Scaling Agile @ Spotify: https://dl.dropboxusercontent.com/u/1018963/Articles/SpotifyScaling.pdf • Sam Newman, Practical Microservices: http://www.slideshare.net/spnewman/practical-microservices-yow-2013