Decoupled Software

 

When to do it and when not

About

Evgeniy Maslovskiy (@Spleshka)

  • CTO @ SystemSeed
  • Active open source contributor

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

APP FRONTEND

APP 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?

  • Everybody have a website they love. It's not Drupal

  • Content editors hate Drupal

  • Much. Better. UX. Users buy with their eyes

  • Fewer features but perfect VS more features but ordinary

  • Users forgive mistakes if they like the product

Why did we decide to change?

  • Better user tolerance => more conversions

  • Drupal has many opinionated modules with poor UX

  • Real concurrent FE & BE development

  • API first & Offline first approaches

  • Frontend web development is the future

Foreseen Problems

Foreseen Problems

  • Learning curve
  • Hosting change. Platform.sh.
  • 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

  • Started building future proof products

  • 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

  • Everyone loves API first and Offline first approaches

  • First project with take double of what you expect

  • First project should be internal

  • Decoupled projects are more expensive

Lessons learned

  • More complicated to find new developers*

  • There are many contribution opportunities

  • Decoupled is very trending topic

Summary

Summary

  • More expensive to build

  • Harder hosting requirements

  • Harder to staff

Summary

  • Much better UX

  • More performant application. Potentially.

  • 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 Evgeniy Maslovskiy

Decoupled software - When to do it and when not

  • 497