Merken

Building mobile APIs with services at Yelp

Zitierlink des Filmsegments
Embed Code

Automatisierte Medienanalyse

Beta
Erkannte Entitäten
Sprachtranskript
few
thank you and source for the figure of the emotions use slides and you would hope here will who knows what the outcome is 0 and socially it is sort actually quite a few people so I'll be quick and well the of the gets mission is about to connect
people with great local businesses and we have a website and have and a mobile website it from we have a 142 million unique active visitors monthly with 77 million reviews by those users and we are available in over 30 countries we most recently launched in the Philippines and and we're not only for finding might great restaurants and bars but also like great doctors great shops and any other kind of local business but we also have this is probably like less known we have yelled for business owners so if you're a business owner you can come to you know you can claim your business you can mark it as your own and and you can then measure visitor activity on your page you can interact with customers so if customers review for your business and you can apply to that and public or in private and you can upload photos for your business and to a bunch of other things so when I and back and developer therefore for the biz owner apps and I worked on the main killer app back and before that the and the Pi phone users since 2008 and I started doing a lot of China work better than before switching to application and all the mobile development so let's included why we're going to OK but that's really not good that's supposed to be an image that no the about the album let's take a look we were founded in 2004 and actually like 1 of the co-founders Jeremy Stoppelman is still running the and of the company's always you and all of cold was in a central repository we call them your name and which means call for the website including templates the mobile web the mobile backend and business or aside all in 1 and repository which means that we had a lot of homegrown code and as people worked on it and they introduced new abstractions didn't remove the old ones and it was hard to reason about the code do these big refactoring so as grew and we are still growing was hiring people this started to become a bottleneck richer like at 1 point we had 3 different ways to do sequel statement was exocuticle statements in your mind that was not and so we have we can the really refactoring all the code and a lot of dig deeper into another area that really highlights more bottleneck on the Sinai thank thank you to you know just we OK the
use of this but what the
OK yeah its quality and use because summary of all of the yes we had a lot of ongoing
and finally we see the images this is what you look like background in we have a lot of yeah abstractions and talked about their so let's talk about the push process which is what we call when we deploy on yeah cold we deal deploy called several times a day and this is done by a push master which is an engineer that has production system access the people take their code changes they're called review changes they want to push to production and they join a push and then the push mass runs this approach we have like several tools to assist us in doing this you see a screenshot of push manager which is actually open source and where we manage the pushes and people can say hey I wanna join this portion and I want to push my changes to production and as again hopefully see it's not the clearest like a small red bar next to my post and I you I ran and it's red which means this pushed didn't make it to production and we had to abandon it and I'm going to talk a bit about about why this might happen so when we run a push 1st there are some automatic checks that take all changes build the deployment branch where they merge all the changes in and that deployment branches than yeah well deployed to a stage system and then after manual verification so all people that joint is pushed to be present they need to verify that the changes work on the stage system and if everything is OK or test which we're happy with what tests which runs then we send this branch to production we use the same thing we watch production for around a certain amount of time and and if we're happy the push gets certified to changes get merged into 1 master and starting from that the changes are alive and well and I went down people when they branch off and they started to work on a new change that will branch off all these changes this is a tool or process with really no upper bound on the why no upper bound because like if we find problems let's say on the stage system we need to take out the the problematic changed rebuild the deployment branch put it again on stage system run our test suites gold can to production and so on and so on until we have a new cold version that is good and we can leave on production and you see here is the so this is actually like another tool that helps us during the push where you can see which holes in our data centers are already running the new version of the code this is green bars which the holes in the data centers are running the old version of the core which is red and the yellow bars are those that are in the process of balancing so switching to the new code version I after say like a lotta reasons there are hard at work and like optimizing this pro process really sound like making a better and better more automatic but still it was obvious that like this doesn't scale you can run only so many pushes the day and on as the more people join and we're still growing the harder it becomes to have like a push will divisions so that some of the intelligent mind set together at the Albany thought about a solution they found 1 I don't think we have the 1st the company that came up with this solution but it's some get
kind of obvious we need to marginalize them we are at a certain size where
you can not work with a single codebase can only run so many pushes the register and and even if you increase the number of pushes is the number of people that development also increases so yeah you will run into problems so eventually some well let's build how those services to solve this problem well each services from developed and deployed independently so you don't actually need to know about this huge called base you just need to know what the service that service pushes are very easy and very quick and people can do it themselves after like before training services and all usually only cover like 1 aspect 1 a set of features which also makes it very easy to like introduce new technologies to refactor called reduce technical debt all that kind of thing down and it's and actually it might even bring some performance benefits since so when you have like this big monolithic called base and pi fun it's not that easy to parallelize things right so and when you switch to a service-oriented architecture you know at 1st you might think a like I'm doing network requests himself like function calls this should be slow or it might he actually faster than before if you do those requests asynchronously at the same time and just wait for the longest result the we actually also unrolled like job service principles it's like a list of 2 and domains for services or anything about services of falsely go check it out it's on 1 get up yeah so wine what we not want to do services and because well chaos might ensue like I've to told us from had the front have like a colleague of mine and she also gave a talk about services you can find line it's really good well why not services consistency is really hard it's actually like nonexistent there's no such thing as a transactional were like several service calls and you don't have a clear dependency your usage graph so which means you need to maintain your interfaces with the for for ever and since no was going to use it and fall off and it also means like the testing that 1 huge self-contained called base it's easy and 1 of the simple but it's easy and but how do you test loosely coupled services which are all called there so this is the details I was talking about how do you make sure stuff doesn't break unit test everybody loves unit test was this many people do not in my opinion they're great but they are not enough since in the world of loosely coupled services the breakage and many times occurs at the interface level so like some service call it suddenly changes its interface it's the developers maybe didn't even intend to and I guess your call breaks the answer is not that would you expected it to be and this is a huge problem from what's all solution to all solution acceptance tests so instead of walking and like you test at the function level or further out we don't do any talking we ran all the coal from the request as a constant through all services we might call back the whole workflow and then we test the response we get and make sure that's what we wanted to be it's this close to production as possible without like setting up your own dedicated stage environment and and it's yeah what we do at at Yale so we put all the components to services anything else you need in DARPA images we spent stopper containers we use production called for these containers and then we'll stop compose it's that was previously called the to manage use the infrastructure that's a bit Heavyweight so it takes a long time to run not the test itself that's actually fairly quick but like spinning up all those stalker containers setting everything up there that takes quite some time in and it actually grows with the number of services you have obviously like so you call most services so your acceptance testing set up has to grow accordingly and yet so it's a bit heavy but we're really happy with the results since it gives you a certain amount of confidence in your changes because they can say yes this is going to work in production and so just an example of what what this might look like and this is part of the acceptance testing set up for the loss is wrapped back and
so we have some configs we have 2 main is that definition we can see on their links this is like all the dependencies we have all the direct dependencies will select several different services within yelled control API is actually like to service front end of means let's like our legacy code base you can see on the right that 1 itself has a bunch of dependencies so that's how we work the acceptance testing a set of rules yeah but as I said it can be a bit cumbersome also like setting up test data because some services have their own data store so when you create your test features you need to make sure like services are like in sync have the the same data elsewhere tests work but overall and we're pretty happy with it so now that we know why would do services and how we make sure that they don't break randomly what's Service stack we originally started with tornado but that denote the work out quite as well as we all hoped of so of stack this pyramid just the latest version of agreement with the EU whiskey and Haskell alchemy and it works out quite well so we used http obviously as transport protocol J. store forward the data formats and
around 1 a very important block of also this status swagger which is API framework so what's where you specify your API you right actually Jerusalem to specify your API and and there's a bunch of tools included 1 of them is to swagger UI which helps to visualize the API you just find this is what it looks like for for a random service I think this is business media and so you see you methods scared and POST see the end point you see the request parameters to service expects all of that and pointed space the data model you you you will get as a response I'm so controls and find all the end points you
might need for your work so where does more and it also does
request and response validation optionally but I would encourage you to to activate the evidence and makes sure like your request parameters are there and in the specified type as as specified in the spectral response is actually from fits what we saw here in the data model and it the does data structure and basic type checking on individual feels level from and it works dynamically were reading from services back so there's some the library called Pareto it was called where pilots open source we it's some up on or that of account and and it's like dynamically reads this back and generates will stop so you can like to function calls a method calls and Python would actually do the http requests and and we used to do that with client libraries which was quite painful so say you want to develop a new and point of for your service you would do that when you check out the client library would generate and the stuff called for that new and point you would commit that after it went through code review you will want the client library version number and only then when people upgraded to the new client libraries may could use union and what all of this swagger pilot provide all takes care of it so for standard makes it would really nice to work with so let's talk a bit about a specific service the bits that service which is sum the service that powers of his own wrapped clients and run iris clients it's a bit of a special snowflake since it's 1 of the very few services that help you can reach from the outside usually very it can only reach them from the internal network it's also unlike other services it's not constraint like 1 set of
features or 1 area that contains the whole API for from AP clients and that has no local data so actually many
services have their own data store we don't so oftentimes we're just a proxy we are calling other services were calling your main we aggregating data and returning the formatting and enriching it and returning it toward clients so how those
or mobile API look like well wild it's it's in risky API arrive 1 resource for point to multiple calls to federally resources of about probably already know all of this and this is how we develop services that yeah but not how you do the mobile API because you all over a cellular network you wanna be as efficient as possible and you want to do as a few calls as possible so what we do is we have 1 endpoint per client at page so for every page of here at this place we just wanted to do if possible just 1 network requests and send it all the data it needs and for posts and puts environment that you will you want to say something from the client we not only acknowledge that the right happened successfully but we also send the client all data it might need for follow-up pages to display them this is quite different from the all the other lower-level service if you guys that really are more resting so all you can say that the yeah we aggregated and we do like many service calls for typically many service calls from 1 of client requests we go and we just aggravate and send data back and then act as a proxy so what does it mean to develop mobile apps and back and I come from web development I imagine that some of you do as well in terms of mobile apps have in our case for the this or that they are synchronized so we're released Android and IOS at the same time with the same set of features from an I O apps need to be reviewed as metaphor and this actually takes quite some time I remember it like it used to be like 5 days nowadays I think all along this review time was 11 days I think it's back to about 9 days let's see like quite a long time and you probably want to test the whole thing before you release it and in this case using means submitting it to review to Apple sold our API needs to be done sooner then the find implementations and which means it needs to be done way smaller than when the app was released so when you can download it on your however this is different than web development you can upgrade the client whenever you upgrade the server in fact some clients never operate like we still have a tiny portion of users on the 1 . 0 released for the bits on that which we use late last year so unless you want to drop support for those that users who need to support your API for ever which means you cannot do backwards incompatible changes how do we deal with that we to multi-version API so we have the same endpoint with a different version in this case we append the version at the end and we
do maintain and test all versions to make sure they still work this is obviously it costs something it costs ever so maintaining multiple versions we don't want to do that needlessly so what the ways we can think of to make sure we don't have to to multiple versions of all the time it turns out if you just add data to the response that's backwards compatible all clients they will just ignore the legacy clients old plants and or response
validation what swagger for you it's also smart enough to just ignore additional data just make sure that the data as it's defined in spec is there and once we develop on the server and we add that new field we also added to the stack selectional response will be it will be OK you will validate right so this is what it looks like this an example of adjacent spec for an API and you see the green part just added 1
field times only type string with a description and we could do that without having to do any other change to that file so obviously like would and introduce a new version and point it would just work so how
do we make sure it actually does work and production well we do some monitoring and we monitor the number of requests to so onerous and task you and push notifications here some examples as a tool like in all the tools and almost not see it where we look at the types of errors that happened at the rate of errors so we now have like a bunch of nice give off for dashboards we can like that you do almost anything you want uh we send a bunch of our metrics to signal effect so you can build a nice test was you can visualize them analyze them and we used the lesson learnt which is really nice open-source tools the open source I think last year but you should really check it out it's very easy to set up your own words and so you know whenever something useful 4 Apr crashes so whenever or client apps scratch use professionally exposed on Android and IOS and and as soon as you reach a certain size you probably need an on-call rotation so all you need to wake up people whenever things break the we use page a duty for that we have integrated the last art and major duties so for severe terrorist we get page we have integrated pressured soul if our precious life we get paid yeah that's basically already about it and I want to just 1 mention another talk if you're interested in services Scott tree going to hold another from that given other talk about services arrested development surviving the awkward adolescence on micro-services based applications that was hard and it's Friday 11 AM in the Python anywhere room go check it out and it's really a great talk also some other shameless plants we're hiring so if that something interesting to you a check of Yelp . com slash careers and even if you don't find like the ideal job opening contact me or contact us on our tools and we will figure something out we're always looking for talented people we actually have offices in Hamburg Germany this is where I work also in London and obviously in sentences called yeah we also serve have an engineering hardware we aggregate or blog posts we have all the source affluence document the and more we're on Twitter from and last but not least this is a fun 1 I urge you to check it out the yield dataset challenge if you ever wanted to do some data analysis but you didn't have data going to know what to do the goal of that up of the last 1 just ended but the new 1 will probably start like before the end of summer and go check the website will be announced there and the deadline will be some time by the end of the year and yet it's a lot of fun and you might actually even comes with some money so that's all thank you very much and sorry for the technical difficulties and yet if you have any questions just ask
without B you can you can it took a bit more about your aggregate are like is it something source do plan to a pencil it's or uh is it process on its own nor is it a web module how does it work and aggregating what a player at the eyes well you say like you have an aggregate or for making only 1 requests and then have to note that under 1 would respect Bayesian that Democrats that's basically like what our this lamps service does so when a when a client and an app makes a request should be as request tool or service that it's Paula servers it it's always service and or service does everything it needs to like satisfy the request so it will do multiple service calls aggregated data collected from different services from the name put it together Federated data everything the client needs and then send them back to the client in Jason from over GPS so actually like all or service this is like what we developed is the the aggregator and does all of and yeah and sometimes like when we want to aggregated they are there is like I mentioned this internally interface into your main sometimes there is no interface for the data we need so actually we will also be developing that interface and then use it to such an aggregate data by effectively 2 questions the the 1st 1 is so what was the problem with tornado from this year's yeah was fearing that Asian Michael by was actually not idea when the when this was the trial and you might try to ask Scott about it I know if you know also you can also belongs there are other people we can ask honestly I can I cannot tell you I just know that it didn't work out well and now we are really happy with pyramid again and the the 2nd question is how the handle locking in the docket containers yeah that is an issue that we do logging it's it's done inside the dock and containers we expose them and the lowing folders as volume so you can actually like start another doctor container and mount those volumes from the individual docker containers and look at the law is necessary hi things for the dog and can you come and more of their own your development process because I can imagine that testing and the huge overhead so do you have the breadth steam that makes the and testing go does every developer is able to set up and the whole infrastructure of dockers how does it work now thanks it's a great question and yes every developer is supposed to not only write the cold but also like to test so to be like the development process is to create a branch is from within get right you do your development once you ready you post under changes for called review other developers review the code and hopefully if they pay attention and and you didn't change without adding tests for that change they will say hey like you should write a test for that the developer then decides well is a unit test enough to enable an acceptance test but yes every developers that to run the whole test suite on there local machine M then from the test yes so actually like and when I say local machine we we have something called develop a playground where you will log into a machine where you do your actual work on and it has like everything ready for you to run the tests hold doctor is installed everything is there we have our own local docker registry so it will just yes from the tests and the you can write them and from them by yourself I think you're much for the talk at the edges of basic question how these services communicate actually didn't to get the same you may be as and services come so a million Intel services because you said you have a model structure and yes so it's just HDP calls of with yeah Jason data exchange so that's basically how they all communicate unless it's like something very special thank you you mentioned the acceptance tests when you do deploys of do you do any locking to avoid to deploys of the services that are required in the acceptance as so if if 1 service depends on service being and both the service and be worse they want to be deployed what do you do then I OK that's like since so loosely coupled from either you have to pay like real good attention all you cannot do that so each service is considered independent so if you need like the deployment you have a deployment of the service and it needs to in have some other changes and other services before you can do that deployment you you just you as a developer as all the other as you need to make sure you don't deployed too early and usually like when we do deployed the whole test suite is run as the 1st thing even before we go to stage so hopefully if you have good test coverage you would like notice then that things are not there but generally it's your responsibility since we have loose coupling that you don't deploy breaking changes to other services that you remain backwards compatible and that if you depend on changes from other service that you do the deployment in the right order the to facing the sort of talk so what they have listed clarify what is the problem we use the test and services so you said that each services specification there is some tooling around it like whether which verifies that subsets of a response of matches the specification and so there is always a with dependence his being and why can't I just a expect the summer's B is always producing value responses and it looks like you don't really need to run a request to all the services around and there it with the production version of service before that yes I great question so it's mainly about the human factor so and we don't have the tuning in place to check for this automatically basically all our acceptance tests are that tooling to make sure a new service deployment doesn't break anything it it has happened in the past multiple times actually remember once that a service starts deployed which then broke something inside the mind because the main called the service because the developers so they just didn't think about the fact that it is small change will was actually not backwards compatible and since we don't have something like as rigid to make like sure hate you to cannot deploy change that's not backwards compatible we have to write tests for that and that's basically all over or check for the yeah hi and tanks loaded presentation and if I understood correctly you have the uh mobilize API like an API specific to Milan applications have you ever considered to having different slightly different uh structure information returned to different types of devices like different for Android ideas yes we actually do that for or what we call consumer absolutely succubi apps you will download on your devices that we not only might do that depending on device type but also depending on the version of the app run and other factors so yes yes we do that up until now we would we have been able to get away with just a different version and points and sending generally the same variables to Android and IOS but we are in the process of actually developing something similar for the this around as well doesn't it make a testing your API uh more complicated all much more complicated than that so it's like basically any of these checks is like another branch in your code so yes that's why we are trying to avoid that as much as possible completely were thanks I think 1 alone good instead talked so question that you have in your mind and was the definition of reasons like color you recognize that you need to the couple its main from so some info Eucomis service 1st flight was a diffusion of Forest Service well we tried to put like any new called we right if it's reasonable we try to put it inside and services and then use that from you may know wherever to decouple cold they also efforts going on in taking called which is already in the opening extracting it and putting it into services just so our development speed can increase ramping up new developers actually becomes much faster since called is just simply less complicated and less huge this what that's the that difficult to like answer generally but and if you look at our Yelp service principles states like the connection reasons about that so that I can only mention all of it but I encourage you to check it out it's actually like handles that topic and if you wanna talk more about this like I will be at the both no there's also a bunch of other also on the open Genius there so just come talk to us with happy to not out about this thank you thank you the band approval
Punkt
Dokumentenserver
Kartesische Koordinaten
Fortsetzung <Mathematik>
Code
Computeranimation
Homepage
Eins
Homepage
W3C-Standard
Digitale Photographie
Code
Front-End <Software>
Front-End <Software>
Mobiles Internet
Softwareentwickler
Figurierte Zahl
Bildgebendes Verfahren
Einflussgröße
App <Programm>
Softwareentwickler
Befehl <Informatik>
Dokumentenserver
Template
Abstraktionsebene
Mobiles Internet
Stellenring
Einfach zusammenhängender Raum
Systemaufruf
Web Site
Quellcode
Quick-Sort
Sinusfunktion
Rechenschieber
Flächeninhalt
Refactoring
Metropolitan area network
Computeranimation
Bit
Prozess <Physik>
Dokumentenserver
Mathematisierung
Digital Rights Management
Versionsverwaltung
Code
Computeranimation
W3C-Standard
Rechenzentrum
Physikalisches System
Code
Front-End <Software>
Mobiles Internet
Bildgebendes Verfahren
Softwaretest
Zentrische Streckung
Suite <Programmpaket>
Open Source
Abstraktionsebene
Verzweigendes Programm
Programmverifikation
Ruhmasse
Physikalisches System
Biprodukt
Endlicher Graph
Speicherabzug
Resultante
Einfügungsdämpfung
Bit
Komponententest
Versionsverwaltung
NP-hartes Problem
Synchronisierung
Computeranimation
Übergang
Metropolitan area network
Softwaretest
Web Services
Prozess <Informatik>
Code
Unordnung
Kontrollstruktur
Gerade
Schnittstelle
Serviceorientierte Architektur
Web Services
Softwaretest
Lineares Funktional
Softwareentwickler
Datennetz
Singularität <Mathematik>
Nichtkommutative Jordan-Algebra
Systemaufruf
Programmierumgebung
Zeiger <Informatik>
Biprodukt
Widerspruchsfreiheit
Teilmenge
Arithmetisches Mittel
Menge
Rechter Winkel
Ablöseblase
Dateiformat
Programmierumgebung
Schnittstelle
Wellenpaket
Kontrollstruktur
Mathematisierung
Zahlenbereich
Abgeschlossene Menge
Code
Data Mining
Graph
Domain-Name
Bereichsschätzung
Endogene Variable
Zusammenhängender Graph
Softwareentwickler
Speicher <Informatik>
Konfigurationsraum
Stochastische Abhängigkeit
Bildgebendes Verfahren
Widerspruchsfreiheit
Gammafunktion
Graph
Protokoll <Datenverarbeitungssystem>
Mathematisierung
Mailing-Liste
Schlussregel
Binder <Informatik>
Portscanner
Debugging
Mereologie
Gamecontroller
Personal Area Network
Einfügungsdämpfung
Web Services
Parametersystem
Datentyp
Datenmodell
p-Block
Framework <Informatik>
Raum-Zeit
Systemaufruf
Computeranimation
Endogene Variable
Metropolitan area network
Web Services
Zustandsdichte
Endogene Variable
Hypermedia
Gamecontroller
Nebenbedingung
Bit
Gewichtete Summe
Punkt
Versionsverwaltung
Zahlenbereich
Code
Computeranimation
Client
Web Services
Endogene Variable
Datentyp
Programmbibliothek
Multitasking
Datenstruktur
Leistung <Physik>
Web Services
Parametersystem
Datentyp
Datennetz
Open Source
sinc-Funktion
Datenmodell
Validität
Systemaufruf
IRIS-T
Endogene Variable
Zustandsdichte
Flächeninhalt
Schnittstelle
Proxy Server
Server
Bit
Punkt
Mathematisierung
Versionsverwaltung
Implementierung
Term
Computeranimation
Homepage
Homepage
W3C-Standard
Metropolitan area network
Medianwert
Freeware
Trigonometrische Funktion
Client
Web Services
Front-End <Software>
Proxy Server
Mobiles Internet
Flächeninhalt
Speicher <Informatik>
Große Vereinheitlichung
Implementierung
Web Services
App <Programm>
Datennetz
Singularität <Mathematik>
Mobiles Internet
Datenmodell
Systemaufruf
Übergang
Humanoider Roboter
Ein-Ausgabe
Systemaufruf
Sinusfunktion
Arithmetisches Mittel
Menge
Datenerfassung
Client
Server
Dateiformat
Web-Designer
Programmierumgebung
Portscanner
W3C-Standard
Client
Multiplikation
Datenfeld
Mereologie
Endogene Variable
Server
Validität
Versionsverwaltung
Versionsverwaltung
Computeranimation
Offene Menge
Punkt
Web log
Datenanalyse
Versionsverwaltung
Kartesische Koordinaten
Drehung
Computeranimation
Homepage
Netzwerktopologie
Metropolitan area network
Deskriptive Statistik
Client
Web Services
Prozess <Informatik>
Softwaretest
Web Services
App <Programm>
Hardware
Humanoider Roboter
Quellcode
Bitrate
Ein-Ausgabe
Biprodukt
Intelligentes Netz
Web log
Endlicher Graph
Datenfeld
Versionsverwaltung
Fehlermeldung
Zeichenkette
Web Site
Server
Multiplikation
Mathematisierung
Systemzusammenbruch
Zahlenbereich
Task
Task
Datentyp
COM
Gravitationsgesetz
Softwareentwickler
Soundverarbeitung
Videospiel
Linienelement
Open Source
Elektronische Publikation
Office-Paket
Portscanner
Warteschlange
Chatten <Kommunikation>
Wort <Informatik>
Bit
Komponententest
Punkt
Prozess <Physik>
Versionsverwaltung
Kartesische Koordinaten
Gesetz <Physik>
Client
TUNIS <Programm>
Web Services
Gruppe <Mathematik>
Kontrollstruktur
Schnittstelle
Konfigurationsdatenbank
Umwandlungsenthalpie
Softwaretest
App <Programm>
Suite <Programmpaket>
Dicke
Güte der Anpassung
Stellenring
Systemaufruf
Ähnlichkeitsgeometrie
Quellcode
Humanoider Roboter
Ein-Ausgabe
Biprodukt
Teilbarkeit
Teilmenge
Datenaustausch
Server
Information
Ordnung <Mathematik>
Overhead <Kommunikationstechnik>
Aggregatzustand
Sichtbarkeitsverfahren
Subtraktion
Mathematisierung
Automatische Handlungsplanung
Code
Virtuelle Maschine
Benutzerbeteiligung
Informationsmodellierung
Variable
Datentyp
Endogene Variable
Spezifisches Volumen
Datenstruktur
Softwareentwickler
Einfach zusammenhängender Raum
Verzweigendes Programm
Modul
Quick-Sort
Modallogik
Offene Menge
Kantenfärbung

Metadaten

Formale Metadaten

Titel Building mobile APIs with services at Yelp
Serientitel EuroPython 2015
Teil 12
Anzahl der Teile 173
Autor Jaensch, Stephan
Lizenz CC-Namensnennung - keine kommerzielle Nutzung - 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/20208
Herausgeber EuroPython
Erscheinungsjahr 2015
Sprache Englisch
Produktionsort Bilbao, Euskadi, Spain

Technische Metadaten

Dauer 37:43

Inhaltliche Metadaten

Fachgebiet Informatik
Abstract Stephan Jaensch - Building mobile APIs with services at Yelp At Yelp, we ship code multiple times a day and have maintained this pace as our team has grown to 300+ and our codebase to several million lines of Python code. This talk explores the pain points we experienced along the ways, how our service-oriented architecture alleviates them, and the infrastructure we built to develop, test, and deploy in this highly-distributed environment. As a case study, we’ll be looking at the backend powering the new Yelp Business Owner Android and iOS apps. At the start, most of the development at Yelp occurred in a single, monolithic web application, creatively named “yelp-main” (naming is hard!). As the company grew, our developers were spending increasing amounts of time trying to ship code. After recognizing this pain point, we started experimenting with a service oriented architecture to scale the development process, and so far it’s been a resounding success. Over the course of the last three years, we’ve gone from writing our first service to having over seventy production services. Along the way, we’ve dabbled with Docker containers, Pyramid, SQLAlchemy, uWSGI, gevent, and virtualenv in an effort to build the next-generation service platform for our engineers.
Schlagwörter EuroPython Conference
EP 2015
EuroPython 2015

Ähnliche Filme

Loading...