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