39
Multi-Team/ Multi-UI Development @Interactive Intelligence

Multi-Team Development w Ember, Angular, Knockout etc @ Interactive Intelligence

Embed Size (px)

Citation preview

Page 1: Multi-Team Development w Ember, Angular, Knockout etc @ Interactive Intelligence

Multi-Team/Multi-UI Development

@Interactive Intelligence

Page 2: Multi-Team Development w Ember, Angular, Knockout etc @ Interactive Intelligence

Who Am I?• Senior Developer @

Interactive Intelligence

• Member of the Ember Learning Team

• twitter: @tddjordan

• github: toddjordan

• Ember Slack: todd.jordan

Page 3: Multi-Team Development w Ember, Angular, Knockout etc @ Interactive Intelligence

Who Are We?• Cloud-based Global Contact Center Software• …plus Realtime Collaboration (chat, webrtc, telephony)• Headquartered in Indianapolis• Development Lab in RTP• https://www.inin.com/careers

Page 4: Multi-Team Development w Ember, Angular, Knockout etc @ Interactive Intelligence

3 Web Frameworks

Page 5: Multi-Team Development w Ember, Angular, Knockout etc @ Interactive Intelligence

One Cohesive UI

Page 6: Multi-Team Development w Ember, Angular, Knockout etc @ Interactive Intelligence

Dreams within

Dreams

Page 7: Multi-Team Development w Ember, Angular, Knockout etc @ Interactive Intelligence

Large Scale Development:

Its hard.

Page 8: Multi-Team Development w Ember, Angular, Knockout etc @ Interactive Intelligence

The more people on a team, the harder to

manage.

Page 9: Multi-Team Development w Ember, Angular, Knockout etc @ Interactive Intelligence

• Unwanted dependencies (Tangles)

• Inconsistent coding standards• Build breakages/bugs• Maintenance

Page 10: Multi-Team Development w Ember, Angular, Knockout etc @ Interactive Intelligence

Autonomous Teams Want

• Own release cadence• Own coding standards• Protection from each other

Page 11: Multi-Team Development w Ember, Angular, Knockout etc @ Interactive Intelligence

An Oral History

Page 12: Multi-Team Development w Ember, Angular, Knockout etc @ Interactive Intelligence

Our Story BeginsCirca 2012

Page 13: Multi-Team Development w Ember, Angular, Knockout etc @ Interactive Intelligence

Ember 0.98@OrgSpan

Page 14: Multi-Team Development w Ember, Angular, Knockout etc @ Interactive Intelligence

Engage2013

Page 15: Multi-Team Development w Ember, Angular, Knockout etc @ Interactive Intelligence

Code Repo

Core application code / common services

Page 16: Multi-Team Development w Ember, Angular, Knockout etc @ Interactive Intelligence

Code RepoSub-App

Core application code / common services

Page 17: Multi-Team Development w Ember, Angular, Knockout etc @ Interactive Intelligence

Code RepoSub-App

Core application code / common services

Page 18: Multi-Team Development w Ember, Angular, Knockout etc @ Interactive Intelligence

Code Repo(s)Sub-App

Core application code / common services

Page 19: Multi-Team Development w Ember, Angular, Knockout etc @ Interactive Intelligence

Angular Admin2014

Page 20: Multi-Team Development w Ember, Angular, Knockout etc @ Interactive Intelligence

Acquisition2014

Page 21: Multi-Team Development w Ember, Angular, Knockout etc @ Interactive Intelligence

Initially, we were thinking lets treat apps separately and access them

with a launcher

Think Google Apps

Page 22: Multi-Team Development w Ember, Angular, Knockout etc @ Interactive Intelligence

Single App Look/Feel2015

Page 23: Multi-Team Development w Ember, Angular, Knockout etc @ Interactive Intelligence

IFRAME, Cross Document Messaging, and You

Window.postMessageWindow.on(‘message.x’, …)

EmberKnockout

Page 24: Multi-Team Development w Ember, Angular, Knockout etc @ Interactive Intelligence

KnockoutEmber

Page 25: Multi-Team Development w Ember, Angular, Knockout etc @ Interactive Intelligence

EmberAngular

Page 26: Multi-Team Development w Ember, Angular, Knockout etc @ Interactive Intelligence

EmberAngularEmber

Page 27: Multi-Team Development w Ember, Angular, Knockout etc @ Interactive Intelligence
Page 28: Multi-Team Development w Ember, Angular, Knockout etc @ Interactive Intelligence

Why Ember as the App Platform?The OrgSpan App was a logical “Decorator” to our customer servicing product

line…

But choosing ember as the shell paid immediate advantages :-)• Robust Routing• Rich Addon ecosystem• A helpful and passionate community• Semver - Steady, predictable releases (no rewrites?)

Page 29: Multi-Team Development w Ember, Angular, Knockout etc @ Interactive Intelligence

Embedded App Component

Page 30: Multi-Team Development w Ember, Angular, Knockout etc @ Interactive Intelligence

Embedded App Service

• Routing• Sending Events Back• App State around the sub-app (is it active,

etc)

Page 31: Multi-Team Development w Ember, Angular, Knockout etc @ Interactive Intelligence

Incremental Rewrites

1. UX or significant change from Product Team2. Create a feature flag (in our feature flag service)3. Implement it in Ember (preferably/eventually engines)4. Flip the switch when ready

Page 32: Multi-Team Development w Ember, Angular, Knockout etc @ Interactive Intelligence

2016

Page 33: Multi-Team Development w Ember, Angular, Knockout etc @ Interactive Intelligence

Engines• A namespaced, routable addon• Allows for accessing shared services• Like an addon, can run in a dummy app• No Cross Document Messaging needed• Can be Lazy loaded (future)• Currently Piloting with our Engage Queues

App

Page 34: Multi-Team Development w Ember, Angular, Knockout etc @ Interactive Intelligence

Engine!

Page 35: Multi-Team Development w Ember, Angular, Knockout etc @ Interactive Intelligence

Challenges• Not quite ready for Prime-time• Lots of time currently spent on getting

engine dependencies right. Most common complaint is that there’s not a good way to manage add-on dependencies between parent and child.

• No Lazy Loading (yet)

Page 36: Multi-Team Development w Ember, Angular, Knockout etc @ Interactive Intelligence

Apps

Page 37: Multi-Team Development w Ember, Angular, Knockout etc @ Interactive Intelligence

We want to consolidate…• but it makes no business sense to stop and rewrite• We want to continuously deliver on a cadence and as we do

that…• Keep developing our Ember shell into a robust application

platform• Incremental conversion• Continue developing Common Components as Addons!!• Utilize our Common App Platform?• Stay with Engines and contribute to its maturity

Page 38: Multi-Team Development w Ember, Angular, Knockout etc @ Interactive Intelligence

Parting Thoughts• Autonomy and Standards• Continuous Delivery and Ambitious Change • Choosing the best Tech and Maintenance Concerns• Customization and Reuse• Pragmatism and Idealism

Truth is, we constantly balance between

We are not special snowflakes in this

Page 39: Multi-Team Development w Ember, Angular, Knockout etc @ Interactive Intelligence

Thanks!!!!