Merken

Ember Engines as an Application Platform

Zitierlink des Filmsegments
Embed Code

Automatisierte Medienanalyse

Beta
Erkannte Entitäten
Sprachtranskript
and and that hi I'm tired to them and talk to you guys about in using engines as application platform and on some of the decisions that are gonna inevitably come up when you choose to go that route so go to cover today so it's going to be a fast and furious so buckle your seat belts and so 1st of all let's talk about 1 application platform is when I talk about it and it's getting a few things to different people on so really what I'm talking about is a collection of separate applications that are tied together by a single cohesive user experience and these applications on hopefully can share common assets between just between each other to reduce the amount of duplication and they have to to to do that to create that common experience on but at the same time these applications I have separate business school so they are in you have separate and interests and and different goals and what they do and they might release on their own schedule some I wanna released weekly some might wanna release every month or whatever but and then they all have their own cultures in internal best practices and standards some might like semicolon some might not know the other prose stuff like that some are going
ahead to make a bold statement and say engines
and our web let Ember winning as the technology of choice in my
company I'm in what we give you little back story to the I'm so we essentially had 3 separate web technologies or point different acts in different things so we had some angular apps we had some knock out that's we had in the end there was a point where are the product team in our user experience team said well we need to make this 1 experience because people biases sweet they want them to be only use these things together and not have to go find your roles and bookmark things or whatever so we made it work
but together so we use an eye framing PostMessage strategy of which got pretty interesting but and there was 1 case where we had as application show an I frame with angular in it and I framework that would think an embryo and again and so we made some interesting things happen but we need to work but it wasn't quite what we wanted it to be long term and then engines came out of and allowed us to come and knock off the other user experiences and and we have nothing but an beloved this point of so some of the reasons that in the engines came along and allowed us to do this was its ability to give some autonomy to the team so every application can be in inseparable and several repo and there's some more barriers between you have been able to break each other and more accountability because people the applications can set up their own processes around limiting standards around the coding standards of their own bills but the you know namespacing kept us from something on each other as a channel is a really big thing in time as you can imagine you're limited in the number of things you can share between and knock out at an angular an abrupt and so allowed us to share components and services and it lazy loading which i is a must I think if we use engines because as you get bigger and bigger and bigger your JavaScript download for everything together gets a little wacky and finally like a big thing for us was technical consistency so all the fact that each of these application teams can be using the same technology sharing best practices building of each other on which it was a big thing for us so I'm
acted in the top here since they will hit the incidents that a
you know we we may 1 number 1 yeah
but so but the really the the
point of my talk was you know as making a decision to go on and and so you know reduce some of our absent as and engines and that was really the beginning of the story because it opened up a lot of decisions for us that we needed to make but to make this thing successful so they're little bit about myself I senior developer at genesis genesis is the customer service software company and the so in that we are but in that is an act of for this applications we called pure clout and so pure cloud is a cloud based uh customer service so customer can just stand subscribe to us and doesn't have to bring in any hardware software and the system and we offer them all these great things for the customer service organization we also offer a lot of real-time collaboration type stuff like videoconferencing and chat and things like that that you know you think you need as a as a customer service for about benefits company as well but I'm also contributed to the Milan team so we do a lot of infrastructure for Amber we do a lot of documentation stuff and you know uh so few of you know have any questions or anything that will feed it back to us and where you start taking the heat for that to happen and then finally I'm I'm organizer for the triangle ever me that and so try to do some stuff around local North Carolina area live on so a little
bit more about our and replication eventually there's a cognitive load of the Kenig uses temporal non-compressed backstory and we were a start up that just a few years ago and the on pre Amber 1 . 0 so that was we started off at like an ember collaboration that we connected to a companies directory and cold and everybody in their skills and certifications logical important that stuff and then group automatically group people so can have different groups and chat groups based on so we got acquired a couple times the end of today and where an application the essentially the same screen after earlier but now I know a lot more what point leads to the whole absolutely and so essentially how it works is on the spot menu items of our our application suite and those things arrival in a large into different applications and and then this side items on building i services that are you are Provide so as you're we for instance reviewing a and application of customer service interactions you can actually open up a chat in chat with your peers more you can start videoconferences you can open the help of a measure going through the administration Council and things like that so we provide radical engine applications but then we also provide you services on top of that so all this but he's that's about our company and were somewhere in the range of 50 to 100 and the developers of and we have 10 engines right now on the were adding more as as things move over to it on and then we try to keep things moving on to the for the plan month optimally we we release every week on so or begin to try to keep things rolling and but I say how do we get there this is really the question so you know
start engines we have a lot of questions that we knew the answer 1st of all it is really
How do we avoid breaking each other so that there was a time where things were all had the same Ricoh and we allowable breaks support than engines help with that but there was no it opened up some other way so ways
that we started to break each other and so we had to come up with some answers there on the first one is dependencies so every engine has its own add-ons that users on the and sometimes they overlap and so for instance if you that you have add on X and in a user's out x at 1 . 0 into the decides that let's just revenues latest greatest on t . all and then you're gonna run into some problems
and I don't know about tolerance level
problems but you know what will
happen with the friend and you hand it in with them build is that on the
game tree will have both of the add-ons and then when things
build on wonderful when 1
of those add-ons and so it will just be
somebody's out 1 2 instead of that
onto it's going to be it's going to use
that on case in late on top of the old out on so you might have some other things on there still get some weird
issues of things on so i
are are a solution that was a semantic versioning and each other I'm and so that can enable us to get our teams back loving each other at least not killing each other and if you wanna find out and then I thought of previous utterances semantic versioning and it it's been very beneficial to us uh may I suggest you read up on it and then it can help you take I know each other off your people to kill I think from here um so as a practical close it as a practical um yeah all suggestions and so we really try to be disciplined about Harris dependencies on I know would because I worked on more individual and perhaps that they don't think about the semantic burgeoning version too much and when you default install at answered it kind of pens and but so you really want to try for versioning because I the if out if both the your engines are depending on the same thing you don't want nothing comes out with the new feature you don't wanna have to go through all the ceremony for dispatch releases it even for minor releases of pick up this levels picked up the slope the same time as the placement of the upper the same time to avoid any windows of things breaking each other so if at all possible I mean if you follow the rules of semantic reasoning than just taking the latest should work itself out fairly well I promise you find that you lose trust in and we there's a couple of instances were lose trust in online and we have to the least tended to a patch but on a mistake September there because embers so pervasive that and we use it for so long that am in the in number of prey can break things and that you know even Amber doesn't realize that that the broken maybe some ways that we've and used it mean and not so great away on another thing is to lecture dependencies as part of your builders spread out on call ever see like let's and and it will actually break a test cases unbreakable 1 of the texts and that there's 2 different engines that have add-ons that at different levels and so just inspection you're in tree and will let you know on this is great because it keeps on those breaks from actually getting deployed on now we treat when the upgrading dependencies like if you do want go out on version 1 to add on version 2 of a major dependency but will prop will require a major dependency bonds all the way up so for instance if the internet a and once great on add on X 2 T . no then engine is also going to have to go up at the end of a major version what that does is it requires a parent act to make the decision of when it's good to go in and we usually saw that the animation gate of yeah finally this is something we don't think about body there especially sustains a lot of time install into their head things but when you make an ad on and make your dependencies public release dependencies that your parents are gonna need at 1 time on the sometimes the we've got troll because of and we'll put it that dependency and that dependencies and we just let that we got is apparent already included it but then you know another dependency came in switched up the tree and certain breaks and was an obvious where there was and so you have to think through where you're dependencies are going to go and finally we do some add-on development and we do some things with broccoli in the tree for on and sometimes it's true for hooks are are going to access stuff out of dependencies for instance if you are planning and a style she or some kind of asset from a dependency in building it in 2 years of job scripts for you're in your Bender when you're vendor files then of the new you can have this we use the eminent can you know sometimes they say this is a plus but want to get us on Indian thousand souls is not deterministic with the tree when they create the dependency trees and so you really can guarantee that all the tree is gonna be where you think it is and so if you add on is assuming that the dependency is going to be in strike and then you're out of it by not always be there and we have things like that we've added a new engine and shook up the tree and then some of our out on the broken so you really need to be careful and so when you access other dependencies you really have to put in logic that can build what's up the tree and looks for the things you looking for the dependency I just included uh change for upgrading Amber that can get us sometimes I'm not saying that in the smelly and standard sometimes our approach uses of November causes tennis and smelly upgrades and so what we try to do is uh as soon as we upgrade member we create a new imbricate branch for the next level of we require our engines or engines don't have to upgrade Ember every time because users are parents inversion of pop an act but but we do require that they will use ever try so that they you know on every bill that they keep up to release it these because that's what that's for we will try to keep our applications on and then we gates of number upgrade branch we run a big battery of tests on a 2 D on the actual upgrade and finally the engine owners access to prove that and so we have to I will have to get onto them to to make sure were continually upgrading and just just to get the OK I now I think will realize and we're not quite there yet is that I'm really keeping up keeping our upgrade branch up with the emperor beta if we want beyond current at all times Amber because of our usage of engines in Kansas than the stuff coming out with performance in different things like that we want to keep as close embers we tended can be feel safe and stable with the and so keep that upgrade pension there is were trying to get to the I to make sure like if ever breaks us in some way that we can feed that back into that the core of you code to to make sure that when we do upgrade that and it's it's smooth as possible so the next thing is is how we test so that leaves a couple of decisions
right because you have now this and it's free of applications from an add-ons uh and so 1 way to go would be used to drop all the tests at the
application level so we went a
slightly different way just because our application is growing so large
and we tend to try to push many tests down to engines and ad on this weekend so keep that local and kind of goes into that theme of autonomy that we had where on each engine teams accountable for their code and and the way they do things of and so some of the upside to this is that it distributes the load of test so we're not creating 1 large sweet that runs the all day and nite whatever were were in distributed out to smaller quicker Swedes and you like glycosidic keeps things accountable on it gates bills for each engine so that you know when engine builds and bounces version before bounces burgeoning were sure that it passes assassinations week so that it it it doesn't break the pair and we really try to here 2 on test image in because were really and because of the size replication were really cognizant of the speed of our tests and so what this is really saying is that the higher level your tests and so you can think of the bottom so the pyramid as you remember integration and unit test and can middle is you're Amber acceptance tests and then at the very top we have an intense week we use a rental cucumber but is right of technology in use of that but that really kind of sets up onto deployed servers and there's a lot of data setup and teardown and so the further up that a triangle you go the slower your tests and so on we really separator test out that those 3 some sections and you know the 1st 2 sections were really ah builds an our local environments and so we really want those to be fastened and there's different ways you know cause of I've heard some folks say that you know that we just do all acceptance tests because it's really effective force before us and like our developers are complaining because you know it takes 3 or 4 minutes to to run our union integration and acceptance tests were trying to get that down on right now because we have things like 3 pushups and different things like that to keep people from you know uploading broken stuff together and so on we so timing really be cognizant of that as your application grows and so how we share of so we tend to her and then you can do this in 2 ways because engines allows you to have shared services right and so on we tend to try to push every as much that arms as we can the makes sense always for everything but River we can we push that into an add-on so that's why the prefer common to shared so shared is your lives on the pair that and we shared onto an engine we prefer to kind keep the tree unidirectional so all the dependencies the or downward and so and this helps further like the testing especially on because like dimension I want we want each engine to be autonomous and so we want them to fire up their own acceptance tests and you have to do that then you have to t of accommodate for services shared from the parents rights you either have to somehow extract that bringing to you on it acceptance test or it's an add-on you just have it you don't have to do anything so the next thing is how split these add-ons right so we years were developing a lot of internal add-ons for things like common components and styles on to and so you can you put all those into 1 giant ones out on that makes it simple for IR engines recommend say rely on this out on I did everything I need and in the obsolete but then I then you not using the most of the effective anyway at all times to to do that especially when you have might not even need at least most of it and so what we've done is kind of double more pragmatic approach approach to it so we are more fine-grained with public out on so we have a public get hold and things so some of our atoms we actually published the world and those we wanna come very cheap fine-grained and keep you know they do 1 thing in the useful you know for what they do so so if you just want Weber RTC functionality then you can get that around if you want a data visualization stand out for that and and then we have a single major add-ons in these add-ons are on crafted into an add-on because of their management or maintenance like you are components out on is is maintained by a single team right and so they also were almost feel like an engine on where that team is on you you know coming up with their own tests having their own practices and stuff like that
of the then we have our basic asset at and so this is are add-ons that you could use in any in replication and not just hours and so we do that with like styles and stuff than and finally we have a suite of dances like everything else and so we have a common your practices we have a couple of major components we add-ons and those components leads on their own you know really rigid instructors thus all that's genes share so we don't 1 common do and different things and you know having if anybody else comes in to fix something because they're using it to we don't want them to be lost or you know we don't want that to get out of control and so the next question is how will do we build and deploy with all these different applications in this name that in our sweet so some so we try to get every engine happen at and have the these kind of aspects so on our company uses get float so essentially we have different branches that gave different stages of our development so of the new features or to branch was set features ready to put an end to develop develops just taking whatever the latest dependency is on things and incentives wants means a non-place and then is the uh then we have released which is were were gearing up for release and we actually what we want John for a release branch and we lock the dependencies there so it's just not picking up the latest of everything so some random and on that we you know pull and that's not even ours can break a sweat before we get a product and then finally our masters what goes out and is deployed you for uh for happy goes into S 3 and 4 you know engines and can publish their picks on so speaking of that branch deployments of we try to get each other's major branch types to be deployed so that it gets put on on a certain as 3 somewhere that we can access and run automated tests against the Indian branches um did deployed for test of the same thing with engines so they have automated test suites they deployed with are a snapshot of parent at so that we can run a a full set of tests on a specific level of an engine and and then to ship and this is that we are in PM publish for engines and then we deploy a problem dimension for hour and then finally there are automation is really a big of the point so I are ever suite will break builds so that's a quick feedback right and then are intensely like I mentioned earlier actually gates are apt so for private it Gates said that before we go on to master and and we have to make sure we have a good test we run and then finally there for an engine before we publish version then PM we make sure we have good test runs if so what's next for us and whether the decisions upcoming that we haven't even the figured yet but these are things that are kind of on radar on 1st is catching so I think what would be cool is now were moving interlacing engines that if we on if we want a passionate engine at runtime we shouldn't really have to build the whole Sweden redeployed everything since everything's in their own jobs for file on would be cool if we could just swap their jobs for follow up at runtime in France but so were stopped looking at that little bit of managing the size of our ap and is the duplication in add-on scissors and especially now that we're lazy loading stuff you know how can we keep things as small as possible and ease of deployment as new engines come on I can we write blue prints that um you know enable that were you can just installing new engine in and get it added to the list of application menus and stuff like that so I think that that would be helpful to because we also have some offer the ability for clients to install applications onto a platform on it would be interesting to to have members an option 3rd party and this like what I mentioned and then finally managing outages I don't know if you guys notice a couple weeks ago but like a story went down from the east coast and so on that's really driven us to think about like all services were so available but you I was those because it was survey 3 and so that's really pushed us to start looking into GWA is across the press well that's across our applications to leave on and then finally the cultural questions and so you know
bit figuring out builds in deployment and tests and stuff is all great but we
have a diverse set of things that come from different backgrounds like like I mentioned
before were a set of acquisitions with different cultures and different ways of doing things and so how do we you communicate across these diverse and global teams like we have things in India so that things in California we obtained Indiana so I can North Carolina so that we can it and keep everybody on the same page released enough to to to push you know that a lot of the technical issues that we have and so on similar to slack parts that we have a and an ember JS channel where all the teams and will look into and can see work with things like tissue with a gun like Bauer and phantom and so
on in that room we make sure that questions always answered especially team transition from angular and stuff like that that's kind like the help support network and we share links we can keep everybody up with new stuff in amber and best practices of blog posts so we pitch ideas and even before we have enzymes that we can use it to discuss and also we we gonna review so PR as a part of our big process of getting things into you know promotion not just automation and so that's say got a review of the lecture and and then so we we want nobody can be on an island ominous distributed set of applications that we have also we scratch each other's backs of we also have this best practice series of and so
essentially every other week we get together and we talk about some of the
design stuff and some of them were best practices
and that's a lot that you know as ever is that is beginning in
a feature-rich framework and so there's a lot of different ways that the staff and there's a lot
of ways best practices that allow people to learn as they go so we get around people quick so we and you know
educate people on specially like for this example there's like uh uh
Simba but things so these are some of the topics we done so far and we continue to do so we've stolen NRC process for member and so and so when we do stuff that goes crosses at and we actually create in our C with a similar template that Amber as in that it came and so the things that that helps it helps document what we're doing for instance like our process talk about earlier on and publicize it to the team say hey this is what we're doing and then it define from the team's before goes out and so they get to boys are concerned make it the top through stuff and make updates as we need to and then finally we also have a living
style guide which we also lifted from us and the
cost of so we and our common components
that we create we actually uh and uh
try to document that is the best we can and you give all the documents for the components and and showman and then also the teams
can can take from the catalog of what they can used for further problems so we really want to create a contribution culture and so we're using some lessons we learned by participating in the community and trying to feed them back to to participate across teams in income and stuff and so on so we have a core team had passed board and detailed tasks and help-wanted test and so uh so we build all those things into like a common thing and so we really did try to keep get people to commit back as they're doing stuff and building on the framework across teams and and that's all I had thank you can contact
me on Twitter 1 lacking in that is the URL to you the an actual on slides and I'll put that on Twitter as well to the best the course so that that
is
Trennungsaxiom
Subtraktion
Kohäsion
Einfache Genauigkeit
Systemplattform
Kartesische Koordinaten
Routing
Systemplattform
Computeranimation
Kohäsion
Entscheidungstheorie
Überlagerung <Mathematik>
Scheduling
Standardabweichung
Trennungsaxiom
App <Programm>
Subtraktion
Benutzerbeteiligung
Befehl <Informatik>
Lesezeichen <Internet>
Punkt
Biprodukt
Auswahlaxiom
Prozess <Physik>
Punkt
Gemeinsamer Speicher
Gebäude <Mathematik>
Zahlenbereich
Kartesische Koordinaten
Inzidenzalgebra
Term
Widerspruchsfreiheit
Framework <Informatik>
Computeranimation
Dienst <Informatik>
Codierung
Strategisches Spiel
Zusammenhängender Graph
Repository <Informatik>
Widerspruchsfreiheit
Feuchteleitung
Standardabweichung
Bit
Punkt
Selbst organisierendes System
Zahlenbereich
Kartesische Koordinaten
Computeranimation
Videokonferenz
Software
Datentyp
Vorlesung/Konferenz
Softwareentwickler
Softwareindustrie
Hardware
Stellenring
Physikalisches System
Dreieck
Entscheidungstheorie
Dienst <Informatik>
Kollaboration <Informatik>
Echtzeitsystem
Flächeninhalt
Chatten <Kommunikation>
Verbandstheorie
Dreieck
Streuungsdiagramm
Subtraktion
Punkt
Automatische Handlungsplanung
Gruppenkeim
Interaktives Fernsehen
Kartesische Koordinaten
Mathematische Logik
Videokonferenz
Spannweite <Stochastik>
Datenreplikation
Statistische Analyse
Radikal <Mathematik>
Hilfesystem
Einflussgröße
Touchscreen
Streuungsdiagramm
Softwareentwickler
Digitales Zertifikat
Gebäude <Mathematik>
Systemverwaltung
Systemplattform
Peer-to-Peer-Netz
Dienst <Informatik>
Kollaboration <Informatik>
Last
Chatten <Kommunikation>
Verzeichnisdienst
Programmpaket
Instantiierung
Kontrollstruktur
Instantiierung
Netzwerktopologie
Spieltheorie
Übergang
Verzweigendes Programm
Subtraktion
Einfügungsdämpfung
Kontrollstruktur
Mathematisierung
Versionsverwaltung
Abgeschlossene Menge
Zahlenbereich
Mathematische Logik
Computeranimation
Internetworking
Übergang
Formale Semantik
Netzwerktopologie
Softwaretest
Prozess <Informatik>
Bildschirmfenster
Vererbungshierarchie
Kontrollstruktur
Skript <Programm>
Umkehrung <Mathematik>
Installation <Informatik>
Softwareentwickler
Schreib-Lese-Kopf
Softwaretest
Vererbungshierarchie
Betafunktion
Verzweigendes Programm
Systemaufruf
Telekommunikation
Schlussregel
Elektronische Publikation
Entscheidungstheorie
Verknüpfungsglied
Betafunktion
Mereologie
Speicherabzug
Instantiierung
Subtraktion
Komponententest
Hausdorff-Dimension
Versionsverwaltung
Kartesische Koordinaten
Ordinalzahl
Dienst <Informatik>
Computeranimation
Übergang
Komponente <Software>
Softwaretest
Datenmanagement
Modul <Datentyp>
Datenreplikation
Minimum
Vererbungshierarchie
Visualisierung
Kontrollstruktur
Vorlesung/Konferenz
Zusammenhängender Graph
Softwareentwickler
Bildgebendes Verfahren
Softwaretest
Lineares Funktional
Physikalischer Effekt
Stellenring
Einfache Genauigkeit
Dreieck
Integral
Softwarewartung
Teilmenge
Dienst <Informatik>
Verknüpfungsglied
Menge
Last
Rechter Winkel
Heegaard-Zerlegung
Server
Garbentheorie
Rückkopplung
Bit
Punkt
Hausdorff-Dimension
Versionsverwaltung
Sprachsynthese
Kartesische Koordinaten
Sondierung
Systemplattform
Computeranimation
Entscheidungstheorie
Übergang
Freeware
Client
Modul <Datentyp>
Prozess <Informatik>
Datenreplikation
Datentyp
Speicherabzug
Vererbungshierarchie
Flächeninhalt
Zusammenhängender Graph
Softwaretest
Suite <Programmpaket>
Benutzerfreundlichkeit
Machsches Prinzip
sinc-Funktion
Verzweigendes Programm
Rechenzeit
Mailing-Liste
Elektronische Publikation
Biprodukt
Entscheidungstheorie
Konfiguration <Informatik>
Dienst <Informatik>
Verknüpfungsglied
Suite <Programmpaket>
Menge
Rechter Winkel
Softwaretest
Subtraktion
Menge
Chatten <Kommunikation>
Mereologie
Homepage
Prozess <Physik>
Web log
Datennetz
Gruppenoperation
Reihe
Kartesische Koordinaten
Binder <Informatik>
Reihe
Menge
Verschlingung
Mereologie
Vorlesung/Konferenz
Hilfesystem
Reihe
Subtraktion
Stab
Vorlesung/Konferenz
Framework <Informatik>
Reihe
Prozess <Physik>
Prozess <Informatik>
Template
Vorlesung/Konferenz
Instantiierung
Softwaretest
Gebäude <Mathematik>
Online-Katalog
Whiteboard
Framework <Informatik>
Task
Task
Whiteboard
Speicherabzug
Vorlesung/Konferenz
Zusammenhängender Graph
Speicherabzug
Elektronischer Programmführer
Rechenschieber
Twitter <Softwareplattform>
COM
Systemplattform
Twitter <Softwareplattform>
Computeranimation

Metadaten

Formale Metadaten

Titel Ember Engines as an Application Platform
Serientitel Ember Conf 2017
Autor Jordan, Todd
Lizenz CC-Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported:
Sie dürfen das Werk bzw. den Inhalt zu jedem legalen und nicht-kommerziellen Zweck nutzen, verändern und in unveränderter oder veränderter Form vervielfältigen, verbreiten und öffentlich zugänglich machen, sofern Sie den Namen des Autors/Rechteinhabers in der von ihm festgelegten Weise nennen und das Werk bzw. diesen Inhalt auch in veränderter Form nur unter den Bedingungen dieser Lizenz weitergeben.
DOI 10.5446/33636
Herausgeber Confreaks, LLC
Erscheinungsjahr 2017
Sprache Englisch

Inhaltliche Metadaten

Fachgebiet Informatik

Ähnliche Filme

Loading...