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