Arch BEES
Arch: mischievous or playful��When someone acts archly,�it might taunt you or�it might make you laugh.
Bees: honeybees��Symbol of hard work,�dedication and�sustainability.
1
Scaling Sustainably
Time to Market
Community and Codebase Size
2
Boundaries
Extensions
Events
Standards
3
Boundaries
4
Frontend Plugin Framework
with Javascript APIs & Hooks
Backend Plugin Framework
with Python APIs & Hooks
Extensions
5
A. Backend� Apps
B. Micro Services
C. Micro Frontends
D. Frontend� Apps
Events
6
Events
7
Standards
8
Standards
9
Standards
10
Write purpose of components (repos/apps) in their READMEs.
Review OEP-50 and its ADRs; will impact edx-platform dev.
Read and upskill in upcoming event-driven arch book club.
Boundaries
Extensions
Events
Standards
Review LTI Freedom OEP coming with Experience Plugins.
11
Intentionality
12
Getting to Extensible Core
Need to build together differently
We cannot scale contributions,� We cannot grow our developer capacity,� Unless we build together an extensible core.
Here’s how we get there:
13
Monolith�slows us down
| Monolith (Ball of Mud) | Extension of Monolith | Separate Small Service |
Lines of code to understand when developing � (cognitive load) | 2.5 Million | 5-100 Thousand | 100 Thousand |
Lines of code-mates (in-process) when running on edx.org (risk of error) | 2.5 Million | 2.5 Million | 100 Thousand |
Time it takes to see a change get to edx.org after development (lead time) | 2-4 hours | 2-4 hours | 10-30 mns |
Number of other developers to depend on for success �(reduced autonomy) | 100+�(many engineers) | 100+�(many engineers) | 6-8�(owning team) |
Examples of features in each situation |
|
|
|
The monolith contains 2.5 million lines of code, organically accumulated over the years.
The lack of separation of concerns in the monolith make it hard to make changes on features within it, requiring high cognitive load.
The first step in taming�the monolith (or migrating �its code to smaller �services) is establishing �Boundaries.
14
Getting to Extensible Core�Valuable code is stuck in the monolith (Ball of Mud).
More valuable code continues�to be added to the monolith,�now reaching 10,000+ files.
We cannot innovate as fast as we did in 2012 on the features and functionalities that are still stuck in the monolith.
15
Getting to Extensible Core
Ball of Mud -> Boundaries of Modularity
Boundaries��High interconnectedness reduces developer autonomy and requires unscalable communication structures. Lack of aligned business taxonomy makes naming hard. ��Action: Establish business-domain names and document our codebase by business concerns. Later, separate the codebase, aligned with organizational boundaries.��Next Step: Document purpose of each component.
Extensions��Today, new features are still built in the monolith since it is easier to do so. Adding new code to the existing tangledness exacerbates problems.��Action: Invest upfront in extensibility frameworks and APIs. Collaborate on developing, advancing, and using these frameworks, with senior engineers and product.��Next Step: Develop with APIs & extensions.
Events��The lack of real-time notifications of user and platform events forces developers to create tightly coupled & fragile connections in our system.��Action: Invest in designing and implementing event-based frameworks. Take the time to learn industry best practices to prevent false starts and long-term issues.��Next Step: Education on event-driven architecture.
Standards��Proprietarily built solutions and APIs prevent us from leveraging industry commodities and technologies in the EdTech space.��Action: Expand usage of existing/new standards integrations in our platform. Leverage our 1-year-old membership in IMS Global to identify and prioritize our certifications.��Next Step: Adopt xAPI/Caliper & ‘LTI Freedom’.
Ask: Deliberateness in investing in BEES when squads implement new features and update old ones we care about.
16