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

Microservices - Portland Oregon 2018-09-25

September 25, 2018

Microservices - Portland Oregon 2018-09-25


Portland Java User Group
Portland Oregon
September 25, 2018

#hbctech #pdxtech #java #scala #microservices


September 25, 2018

More Decks by sullis

Other Decks in Technology


  1. Sean Sullivan September 25, 2018 Portland Java User Group MICROSERVICES

    AT HBC
  2. software engineer Portland Oregon back office systems Hudson’s Bay Company

    About me
  3. Monoliths Microservices


  5. saksfifthavenue.com saksoff5th.com lordandtaylor.com thebay.com

  6. saksfifthavenue.com

  7. January 2016

  8. June 2018

  9. 2009 large monolith 2010 a few services 2011 microservices gilt.com

  10. Ruby on Rails Postgres Gilt monolith (2009)

  11. Gilt monolith (2009) customer facing UI customer service UI purchase

    order management shopping cart logic checkout logic order processing logic fraud scanning sales management inventory management email return logic daily reports
  12. Gilt monolith (2009) drawbacks • unintended coupling of feature releases

    • single repo for customer-facing UI and non- customer-facing UI • rollbacks were painful
  13. Gilt monolith (2009) drawbacks • central coordination of each release

    • difficult to scale to higher levels of traffic • difficult to upgrade to new version of Ruby on Rails
  14. Gilt services (2011) product service inventory reservation service shopping cart

    service user service checkout service credit card service kvstore service discount service order history service
  15. 2012 L.O.S.A. 2013 binary coupling hell 2014 ApiBuilder gilt.com

  16. L.O.S.A. ?

  17. Lots Of Small Applications

  18. Customer facing UI was a monolithic app (hundreds of JSP’s

    in a single Git repo)
  19. large UI monolith smaller UI apps

  20. Gilt L.O.S.A. web- product- detail web- homepage web-mosaic web-search web-

    account web- checkout web-login web- navigation web-seo- page
  21. Lots Of Small Bugs Lots Of Small Applications

  22. Benefits of L.O.S.A. easier to troubleshoot UI bugs easier to

    implement bug fixes easier to test fixes easier to release fixes to production
  23. binary coupling gilt.com (2013)

  24. binary coupling can emerge in large microservice systems

  25. binary coupling was a significant problem at Gilt.com and Netflix

  26. None
  27. how to mitigate binary coupling?

  28. API descriptors + code generation

  29. ApiBuilder gilt.com (2014)

  30. describe REST API in a JSON file

  31. www.apibuilder.io

  32. None
  33. code generation

  34. Web Checkout Android Checkout iPhone Checkout Checkout service

  35. ApiBuilder CLI

  36. $ brew install apibuilder-cli $ cd myproj $ vi .apibuilder/config

    $ apibuilder update
  37. 2015 migrate to AWS 2016 AWS cloud native gilt.com

  38. 2017 embrace serverless 2018 payment platform v3 2018 shutdown gilt.com

  39. lessons learned from gilt.com

  40. decentralized decision making

  41. minimize undifferentiated heavy lifting

  42. one path to production

  43. small, autonomous teams

  44. end-to-end ownership

  45. deploy to production everyday

  46. small incremental releases

  47. ApiBuilder is awesome

  48. developer experience matters

  49. continuous improvement

  50. testing in production

  51. feature flags

  52. engineering velocity is a competitive advantage

  53. None
  54. HBC 2018 multi-tenant services ApiBuilder safe deployments

  55. Mark Zuckerberg

  56. Move Fast and Break Things Move Slow and Don’t Break

  57. https://twitter.com/jaykreps/status/312338174108106754

  58. Move Fast and Don’t Break Things Move Purposefully and Fix

  59. continuous delivery

  60. https://twitter.com/evanderkoogh/status/1036787227697664000

  61. None
  62. HBC email types • order acknowledgement • order shipment partial

    • order shipment full • order cancel • ready for pickup in store
  63. Queue consumer Event queue Email Dashboard UI Email Sender Email

    Render External Email Provider Feature Flag service
  64. Email Render Product Detail service Delivery Date Estimation service request

    HTML Feature Flag service
  65. HBC email system • multi-tenant design • Cloudwatch Metrics •

    Cloudwatch Alerts
  66. HBC email system • code coverage threshold • components deployed

    independently • safe deployments
  67. safe AWS Lambda deployments?

  68. traffic shifting

  69. You can now shift incoming traffic between two AWS Lambda

    function versions based on pre-assigned weights. You can now also use AWS CodeDeploy to automatically manage the rollout of new function versions. This allows you to gradually shift traffic between two versions source: aws.amazon.com
  70. AWS traffic hooks • PreTraffic hook • PostTraffic hook

  71. Final thoughts

  72. autonomous teams

  73. ApiBuilder

  74. engineering velocity is a competitive advantage

  75. https://www.infoq.com/presentations/microservices-arch-infrastructure-cd

  76. The end

  77. None