Decoupled Software

 

When to do it and when not

About

Sergey Korzh (@skorzh)

  • Senior Developer @ SystemSeed
  • Active open source contributor

Presentation plan

  • How does it work in the nutshell

  • Why did we decide to change

  • Foreseen / Unforeseen problems

  • Things we succeed / failed at

  • Case studies

  • Lessons learned

  • Summary

How it works

How it works

Monolithic

FRONTEND

BACKEND

DATA

Decoupled

APP FRONTEND

APP BACKEND

DATA

API

Mobile
App

Watch
App

Why did we decide to change

Why did we decide to change?

  • Much. Better. UX. Users buy with their eyes
  • Better user tolerance => more conversions
  • Content editors hate Drupal
  • Real concurrent FE & BE development
  • API first & Offline first approaches
  • Frontend web development is the future

Foreseen Problems

Foreseen Problems

  • Learning curve
  • Hosting change
  • DevOps & Automation rebuild
  • Local environment enhancements

Unforeseen Problems

Unforeseen Problems

  • Frontend security
  • No community unified coding standards
  • Javascript has gone way further that we expected 
  • Issues related to new technology (Server Side Rendering, Authentication)
  • Too much freedom

Things we succeeded at

  • Existing clients saw significant conversion increase

  • Wow effect

  • Opportunities for new architecture

  • Built & open sourced the boilerplate

  • Re-thought & improved the development approach

Things we succeeded at

Things we failed at

Things we failed at

  • Identifying the right tools at the beginning

  • Risks / problems prediction

  • Over-designed the first project

  • Initially had problems with estimates

Case studies

Case Study #1

Case Study #2

Lessons Learned

Lessons learned

  • First project with take double of what you expect

  • First project should be internal

  • Decoupled projects are more expensive

  • There are many contribution opportunities

  • Decoupled is very trending topic. Everyone loves API first and Offline first approaches

Summary

Summary

  • More expensive to build

  • Harder hosting requirements

  • Harder to staff*

Summary

  • Much better UX

  • More performant application 

  • Better change reflection

  • Easier in support

  • The effort worth it

Dev Quick Start References

  • JSON API (+ Extras)
  • Consumers
  • Simple OAuth
  • Config Pages
  • Decoupled Router
  • REST UI
  • Subrequests
  • Create-react-app (no SSR)
  • Next.js (SSR)
  • Awesome React Components
  • Express.js (server)
  • Redux (+ Saga)

Drupal

React.js

https://github.com/systemseed/drupal_reactjs_boilerplate

Thank you

Decoupled software - When to do it and when not

By Sergey Korzh

Decoupled software - When to do it and when not

  • 463