Merken

Client/Server Architecture: Past, Present, & Future

Zitierlink des Filmsegments
Embed Code

Automatisierte Medienanalyse

Beta
Erkannte Entitäten
Sprachtranskript
my my balls of ideas like those close it to the area that act about the client-server architectures are before you start a
little bit about me of you find them of social media as like a fusion of moral Web architects that we maps that come those couple of the we goes in the audience Amen rails of application is large high traffic Ruby Rails site were currently in the process of migrating it to a MicaZ services architecture which will allow us to base the scale with the industry demands and were hiring so if you're interested compact media after OK you
started so the other day on Twitter I saw in Paris and say he was worried about the audience getting tired of ponds In this concern me because I think in Patterson's ponds are a huge part of of the reals culture so I decided to upon razor
on Twitter and raise community awareness around the importance of ponds and also rule-based support for girls encode the 5 year old daughter and right now she thinks everything I boring but you never know the the fund-raiser was successful I received a
lot of times in fact days later people are still sending me ponds but I now completely pond out as so there will be no plans in the start of the ones you see on the screen so a few days ago I found
this out the change my life it's not that allows you this what faces with other people so I tested out honor Patterson
undertake and I thought is 1 last speakers 1 I document lecture period to the medium of the swapping for example me Chris I when my
good friends and office mate he's sitting right there so this is us an airplane
traveling real counts and here's us losing a
this is losing money and made string are layover over so that client server side there were rails count
so of course they can talk about the client-server without talking about the majestic monolith
and when I talk about the model if I'm referring to an application which the presentation layer business logic database integration are all tied together to address a single problem
there are lots of pros and cons to consider when developing along with so many of you might have different experiences so don't consider these rules of as much as just things to consider as the 1st topic was thought about team structure when working in a model the the we can talk about team structure without
bring up Conway's Law of basically stating that the teams will produce code that reflects the structure the organization along those lines of persists in 1 model of of work well for a small tightly integrated teams like under 10 developers usually full-stack of were we all work in the same code base will have the same standards the same backlog etc. because again the structure of the team is somewhat monolithic so continued on
that leads to the time of the prose with regards to developing in 1 1st we have a
single codebase work in which gives us a speed will jumping around the application which makes it uh uh which makes the other guy easier factor for of functionality between services that side note here if you've ever worked in a modular application of multiple packages in repose you quickly find that refactoring code of between different services can be a pain and not only 10 to test but also to deploy etc. as model of code gives you uh so the model of the code gives you view the entire system which makes things easier to reason about for smaller applications which implies a simpler architecture additionally you consistency across a code base for example it becomes easier to enforce coding standards slanting good complexity analysis of Achilles canus of like that and again all for a small change grows and everyone is contributing code-based eventually start getting more merge conflicts and and and then uh really go at o in a society more more and then the code it starts becoming more and more complex especially when people put in code to meet deadlines which possibly causes them to skip back that much new refactor excetera and that's all they make the code harder to reason about maintain suicide note I was wondering what it would
be like to sort cases with the statue as for the looks
like me with long hair as
analysis get system scalability and a monolithic architecture of 1st we converted vertically scale up the system by increasing the size of our application server and database by throwing hardware at it but a point will come where you will eventually reach the limitations of vertically scaling and we end up eventually horizontal and scaling out our observers how we basically do this by
creating clones of our model if is Martin Fowler's says in his stocks basic cookie-cutter in our application on 2 new machines but at some point within reach the limitations of a database I've personally in the largest audiences since you can get on AWS at 100 % CPU and what happens is not a good day so you can scale up the database at least in the relational world the same way you would with your app servers because you knew single source of truth but but what you can do is we because the sharding there's different techniques and what
we're up because they still do all your rights to a primary database which then replicates itself on the secondary database and then you do all your reads from the secondary about taking a portion load off the right server and distributed across a read server so let's look at the client flow in this
model is and his architecture viewing a page
basically consists of the flow something like this and assume you're not using AJAX intra-links or anything but c . browser to your l the request turns into a request from the from the client to the server for that page the server then returns HTML JavaScript CSS returning the content of that you're all the browser renders the page at this point in new actions cause in New York a request from the client which starts all over again note the tight coupling between the client server in this flow because and then come back to it was talk about mobile
native apps that help move where that's in a new direction since native apps installed rather than serve the page load time their forces to think about the client and server as 2 very separate entities we now have to assume that the client can be anything Android IOS desktop app excetera this creates a new requirement that we
have multiple presentation tears meaning that we now have multiple ways to communicate with you and you take the state of our model and up until now integration with extra resources has been an after thought so what we do with alternate decided snow attacked an API under a system may be presented to supply great for something and we are après basis started to grow some pretty nasty appendages and as a product requirements grow in of supporting both a API eyes and a legacy views
additionally in order for the web to keep up with the current expectation web apps have also evolved and we see this state birth single-page acts as single-page apps work to emulate their expectations of native apps in that they attempt to create an experience where you don't leave the page but rather manipulated this is also the feel very messy before so in there is a solution and that is the
separator client concerns from back-end server concerns doing this helps draw a clear
separation of responsibilities were on 1 side we have a static asset server serving of HTML CSS and JavaScript on the other side we have an API servers serving abroad you send data to the client for it to do with it however pleases but there's something important here not to be overlooked In addition to creating and in addition the separator technical concerns and cleaning up the interface between a client server we've also this created a separation of concerns along more human boundaries of basically between the data and business logic side of things and the user experience is extremely important front and back and require different had spaces but even for those of us to go back and forth between the 2 there is definitely a context which involved this now enables us to have 2 separate teams each having a different style expertise working out what they do best friend and team work on developing amazing user experiences and the back and team focusing on reliability scalability data that you can best practices excetera at this point you
pry thinkin man in this talk from the chef guys there exist at the same time so there so
the claim is left the comfort of the monolith what is this new world look like now and in the future and of course I can talk about the client that time by Java script and
I love John script but I'm also not denial of the language flaws but it has a strength first-class functions AC by nature of but it also has plenty of weaknesses which applied only to go in to details on because everybody here's reviews than in those but still had we solve this
let's talk about transparency we start with coffee
script most of us are familiar with it and its similarities with Ruby uh has a clean syntax it's it simplifies language it helps avoid a lot of pitfalls you get into a job after but the JavaScript language itself has
evolved with the latest standards yes 6 give this arrow functions default assignments temple in by destructuring assignment a tail call optimization which allows you do recursion without 1 stack and 7 has a simple way and with babble we Transpiler code yes 5 so we can use the latest features of the language in the browser now without having to wait for browsers support capture all of their lot other transport of
languages typescript closure script . to name a few and all this allows us to write more elegant code that runs in today's browsers so the key takeaway trans piling is good I believe it's here to stay and mostly because the browsers will never keep up with the demands of for new and better language features and so I believe we should get used to it and mostly embraces no
such registering works because we also have 1 choices to make person got angular sin
opinionated client-side monolith but strength is in the ability you dependency injection although you can use it without angular twos recommend use typescript and angular 2 also moved away from scopes and gone entirely controller-based 3rd component-based and if you've used a new 1 maneuvers with the and lastly we have amber which is another large opinionated framework has yes 6 built in our the the novel Transpiler and has extremely powerful rather us this so that actually that reacting to that taking it for their community react by itself is an arrow without a both uh it's not very opinionated it focuses on being simple in declarative it's built using reusable components and has a unidirectional dataflow but it's not concerned with you later there's only concern with 3 layer of seed pair was something like redox to drive the stadia but there are a lot of other frameworks out
there of low gas which is like the backpack of tools everyone needs energy query which is like the knife everyone has in the pocket are functional reactant friends cycle GSP congested reactive x and lastly shameless plug for law which is something we just open source this week which is a convention over configuration framework for a react redex applications but if you ask this guy he's
innocent I suggest use Amber to that's
I was like about how we deploy kind code 1st in this new client-side world we no longer want have to worry about servers servers should no longer be a client-side concern so 1
way to guarantee front and will basically never go down is to use in AWS S 3 bucket to serve front and and you can pair with something like gold OpenScript up the deployment of the only downside to this is that there are some hatch required but to get it to work without using cash minerals and can also use like
th pages which something there that I just push a everybody G 2 pages branch automatically be hosted for you but it's easier to set up the necessary but also has a few issues that same hash being neural problem but they also don't support custom SSL the uh for SSL for custom domains I personally I recommend you something like
search other stage that allows you to push a client-side code of the command line but also addresses the SSL issue on hash issue and so now let's talk about the
convergence of native web and area where and native development so this is a kind of touchy subject for some but I feel obligated talk about it but Cordoba ionic to react
near all the tools available that allow you to build apps for in native devices using traditional Web tools like Eastern LC assessing job script so begs the question
why are people so writing native apps that was starkly there's been hesitation by many it to use these tools because of the performs a script but it's hard to emulate the performance of native experience but this is changing for example we will use react native to right pocket cough and it worked great so why would you converge so why should we converge native app development Web will 1st remove the specialization required to build native apps I red no 1 wants to write but it also helps give consistency and experience across platforms it also allows you to share components across the code across the codebase like this a 2nd ago performance is no longer an issue but before moving away from the
client have quickly talked about something we often hear the JavaScript community and those job at the job script fatigue In my opinion a lot of
58 I we're seeing is due to some of the modularity and ecosystem combined with Attorney interface I love the modularity and I love Java script us of the job modularity is not really a bad thing but the way I see it the more modulated we have in the more we have in our interfaces the more frustration the community has so how do we avoid this probably the best way to do it is that no 1 you're using cutting edge that there is a high probability that you're interfaces will change we see this happening a lot now and react ecosystem but also like a dependency versions I've seen many times were patch update this post backwards compatible as of breaking things so summarize this
section the climates is about creating human experiences we detected to get out the way of creating these experiences which is part of the growing pains of this fast-growing ecosystem choices are great but without a lot of opinions things are still feeling very modular which has a task
Charlie sometimes for some more face-on pictures
and this just in there's Alex
Ch this OK
and I said last nite we went to Kansas City just Kansas City barbecue before going to carry out the that was amazing barbecue so we had some
pictures there but the site of the series the
i which means we should start but I'm not monolithic EPA it's of monolithic API sameAs same
prose of the model that we discussed at the beginning but the key is that we remove some of the columns that were brought by removing the client and thus removing all the client-side concerns with
we can easily build monolithic DPI by using the new rails 5 API but by using this rails API you get many of the same benefits with no income there we've come to know and love like infringes convention over configuration while still being lighter weight than a full of rails are
additionally when we talk about how to scale monolithic API as very similar to how is scalar a normal monolith with many of the same pros and cons but at some point you start your team will start to grow and that leads us to new type from micro-services web services have some of the same
problems that modularity in the JavaScript community can have and that is that you needed have stable interfaces clearly defined a before you start with that reason I personally believe of scaling marker using micro-services is about scale a then optimization technique used to scale the code in your organization and we all know you should always be cautious when prematurely optimizing so why would we want to avoid using my services right off the bat will rapid stage of pitfalls you might
find 1st the interfaces are harder to refactor
once they're there and whereas in the model as you may have shared services queries pools past runners but in micro-services additional effort is going to be required to share code between individual services your marks c latency between systems is now much bigger issue because now rather than calling other methods in your own code you don't have to go across the the data you need deadlocks and systems historically Ising companies underestimate the importance of deadlocks so if you feel like you have a few systems not getting enough DevOps love of then imagine scaling this too many systems of the heavily depend on each other and additionally with the demo outside of things comes of the complexity of monitoring the health of your system they'll the predict when something is going to go wrong in knowing how to recover when it does and lastly developers have a tendency to build and move on to the next project I with micro-services you wanna keep all your systems of the same standards basically the philosophy you're only as strong as the weakest link and this takes a lot effort because there's often this building forget philosophy of when using the services but given all that there will come a
time when you need it when application will reach a point where you're needing Mike services for scale so let's talk high-level real quick about how 1 might do that with my services within your application you have a number of demand-driven models that can be grouped by bounded contexts by breaking up your app along these boundaries you create a number of smaller apps for services with explicit interfaces between a are they should communicate with each other and the outside world using like what rate lightweight protocols like rest because you 1 of the of the web but not behind the Web each micro-services should have its own database or databases to ensure that the micro-services early eponymous units and
so now we have a list of atomic services each with their own normalize database but but there is a problem we don't what the client to have to do when 2 queries just get the data it needs for example let's say we wanna get all the circles of longer triangle of a specific color as it currently stands we her 1st have to query the triangle service to get the trial ID in the query the circles with that ID but instead we can do it you normalize data such as lasted search and new for Joseph like that in the next and then add a
layer of composition services above that of the composition layer allows us to prepare data in a way that might be more suitable for the consumer
and this is all going back to Conway's Law because the beauty of this is that each service can have its own team which then has its own data set storage device and different technologies potentially the only thing that really matters is the reliability of the system and its the interface between them at this 1 is a good
1 said yeah wondrous cytosolic faces with twins but this when I talked about the
future I really had pies about my about serverless architecture back in the service of like the 1 of the building as source you that come out but then yesterday I went in a global talk which got me thinking and as a result a few hours ago I threw away the and my slide deck and replace it with this but if you wonder what that talk was it was so good that may be modify my talk it was guy's
and if you don't see the talk shared and the recap it's for some context so obligatory spoiler uh that uh till the art of his talk was basing that Ruby is no longer the new hotness and the Colcord languages no JS i was saying less people talk about Ruby less people hiring for a b as a result of list people building things with Ruby but basically let less people carrying the torch that's I don't have a consulting company
and I actually do a lot of stuff in node so then why would I change my talk at the last minute to tell you about this was because the mother of the community and I truly feel we have a story to tell and and I think we have the ability to change the conversation and it starts with change the way we talk about a news rails for example we do need so splitting apart client-server concerns and you want to use that new Austin JavaScript framework that's great was the rails API can spin up back in 4 units you worried about scaling because no micro-services can scale cool we can set up rails API micro-services to but you're worried about performance other languages a faster that is also true but in most situations response time delay is going to come from latency going across the wire is between a micro-services or between years server in database the speed of your language starts to become negligible unless you're doing crazy uh the algorithms so let's start using rails for more than the model left and what's the change in conversation about how we use rail use Rails the skill architectures as an summary were on the edge of creating some really great stuff and every day I look forward to the challenges that await us now be due to use in the words of DHH let's go out and put a dent in the universe the gear thank you thank you thank that's stored
Zentrische Streckung
Web Site
Bit
Server
Computerarchitektur
Prozess <Physik>
Architektur <Informatik>
Kartesische Koordinaten
Computeranimation
Mapping <Computergraphik>
Benutzerbeteiligung
Flächeninhalt
Client
Server
Computerarchitektur
Faser <Mathematik>
Twitter <Softwareplattform>
Reelle Zahl
Logische Programmierung
Kontextbezogenes System
Computeranimation
Gammafunktion
Videospiel
Hyperbelverfahren
Mathematisierung
Automatische Handlungsplanung
Touchscreen
Eins
Güte der Anpassung
Zählen
Frequenz
Office-Paket
Mathematische Logik
Mereologie
Desintegration <Mathematik>
Datenhaltung
Darstellungsschicht
Kartesische Koordinaten
Zählen
Kombinatorische Gruppentheorie
Mathematische Logik
Datenhaltung
Integral
Physikalisches System
Client
Informationsmodellierung
Ebene
Adressraum
Ganze Funktion
Server
Zeichenkette
Selbst organisierendes System
Schlussregel
Telekommunikation
Gesetz <Physik>
Code
Computeranimation
Systemprogrammierung
Informationsmodellierung
Datenstruktur
Datenstruktur
Softwareentwickler
Gerade
Standardabweichung
Subtraktion
Computerarchitektur
Mathematisierung
Kartesische Koordinaten
Kolmogorov-Komplexität
Dienst <Informatik>
Code
Methodenbank
Physikalisches System
Informationsmodellierung
Multiplikation
Code
Widerspruchsfreiheit
Lineares Funktional
Güte der Anpassung
Einfache Genauigkeit
Physikalisches System
Sichtenkonzept
Widerspruchsfreiheit
Teilbarkeit
Server
Codierung
Computerarchitektur
Refactoring
Funktionentheorie
Standardabweichung
Zentrische Streckung
Hardware
Punkt
Datenhaltung
Skalierbarkeit
Kartesische Koordinaten
Physikalisches System
Systemprogrammierung
Skalierbarkeit
Server
Inverser Limes
Luenberger-Beobachter
Computerarchitektur
Analysis
App <Programm>
Punkt
Datenhaltung
Skalierbarkeit
Einfache Genauigkeit
Kartesische Koordinaten
Quellcode
Zentraleinheit
Datenfluss
Systemprogrammierung
Informationsmodellierung
Client
Rechter Winkel
Last
Server
Inverser Limes
Lesen <Datenverarbeitung>
Klon <Mathematik>
Server
Punkt
Physikalischer Effekt
Browser
Mobiles Internet
Gruppenoperation
Web Site
Sichtenkonzept
Datenfluss
Homepage
Informationsmodellierung
Client
Client
Server
Computerarchitektur
Inhalt <Mathematik>
App <Programm>
Client
Forcing
Last
sinc-Funktion
Server
Humanoider Roboter
Ein-Ausgabe
Homepage
Richtung
App <Programm>
Sichtenkonzept
Web-Applikation
Strömungsrichtung
Physikalisches System
Biprodukt
Kombinatorische Gruppentheorie
Integral
Homepage
Benutzerbeteiligung
Informationsmodellierung
Multiplikation
Erwartungswert
Basisvektor
Ordnung <Mathematik>
Aggregatzustand
Trennungsaxiom
Router
Addition
Subtraktion
Punkt
Kontextbezogenes System
Mathematische Logik
Raum-Zeit
Computeranimation
Hydrostatik
Randwert
Client
Skalierbarkeit
Front-End <Software>
Endogene Variable
Client
Server
Schnittstelle
Client
Mereologie
Applet
Skript <Programm>
Metropolitan area network
Lineares Funktional
Softwareschwachstelle
Natürliche Zahl
Formale Sprache
Skript <Programm>
Motion Capturing
Lineares Funktional
Freeware
Browser
Minimierung
Formale Sprache
Zeitrichtung
Systemaufruf
Skript <Programm>
Ähnlichkeitsgeometrie
Rekursive Funktion
Steuerwerk
Code
Standardabweichung
Sinusfunktion
Algebraisch abgeschlossener Körper
Freeware
Browser
Formale Sprache
Skript <Programm>
Vorzeichen <Mathematik>
Schlüsselverwaltung
Auswahlaxiom
Code
Computeranimation
Lineares Funktional
Open Source
Abfrage
Kartesische Koordinaten
Datenfluss
Gesetz <Physik>
Framework <Informatik>
Computeranimation
Energiedichte
Betafunktion
Injektivität
Dreiecksfreier Graph
Zeitrichtung
Zusammenhängender Graph
Konfigurationsraum
Freeware
Server
Code
Server
Freeware
Domain-Name
App <Programm>
Hash-Algorithmus
Verzweigendes Programm
Speicher <Informatik>
URL
Homepage
Homepage
Benutzerbeteiligung
Flächeninhalt
Hash-Algorithmus
Softwareentwickler
Code
Computeranimation
App <Programm>
App <Programm>
Gebäude <Mathematik>
Systemplattform
Systemplattform
Widerspruchsfreiheit
Code
Komponente <Software>
Benutzerbeteiligung
Prozess <Informatik>
Rechter Winkel
Code
Skript <Programm>
Zusammenhängender Graph
Softwareentwickler
Widerspruchsfreiheit
Patch <Software>
Methodenbank
Client
Geometrische Frustration
Informationsüberlastung
Prozess <Informatik>
Applet
Versionsverwaltung
Skript <Programm>
Patch <Software>
Versionsverwaltung
Innerer Punkt
Schnittstelle
Task
Mereologie
Client
Garbentheorie
Auswahlaxiom
Web Site
Reihe
Informationsmodellierung
Client
Kanal <Bildverarbeitung>
Client
Ablöseblase
Schlüsselverwaltung
Computeranimation
Caching
Punkt
Web Services
Gewicht <Mathematik>
Gewicht <Mathematik>
Login
Konfigurationsraum
Datentyp
Parser
Konfigurationsraum
Skalarfeld
Computeranimation
Zentrische Streckung
Methodenbank
Computerarchitektur
Maßstab
Randwert
Selbst organisierendes System
Minimierung
Server
Dienst <Informatik>
Code
Computeranimation
Schnittstelle
Schnittstelle
Demo <Programm>
Punkt
Gemeinsamer Speicher
Zahlenbereich
Gebäude <Mathematik>
Kartesische Koordinaten
Dienst <Informatik>
Komplex <Algebra>
Code
Computeranimation
Physikalisches System
Systemprogrammierung
Informationsmodellierung
Benutzerbeteiligung
Code
Softwareentwickler
Schnittstelle
Gebundener Zustand
Verklemmung
Addition
App <Programm>
Zentrische Streckung
Protokoll <Datenverarbeitungssystem>
Datenhaltung
Gebäude <Mathematik>
Befreundete Zahl
Physikalisches System
Binder <Informatik>
Bitrate
Kontextbezogenes System
Randwert
Server
Projektive Ebene
Standardabweichung
Client
Kreisfläche
Server
Abfrage
Mailing-Liste
Ordinalzahl
Kantenfärbung
Dreieck
Computeranimation
Subtraktion
Menge
Server
Physikalisches System
Speicher <Informatik>
Gesetz <Physik>
Computeranimation
Schnittstelle
Rechenschieber
Resultante
Primzahlzwillinge
Gebäude <Mathematik>
Besprechung/Interview
Pi <Zahl>
Quellcode
Computerarchitektur
Primzahlzwillinge
Computeranimation
Resultante
Umsetzung <Informatik>
Datenhaltung
Formale Sprache
Mathematisierung
Besprechung/Interview
Mailing-Liste
Störungstheorie
Kontextbezogenes System
Framework <Informatik>
Freeware
Informationsmodellierung
Knotenmenge
Einheit <Mathematik>
Algorithmus
Wort <Informatik>
Response-Zeit
Grundraum

Metadaten

Formale Metadaten

Titel Client/Server Architecture: Past, Present, & Future
Serientitel RailsConf 2016
Teil 36
Anzahl der Teile 89
Autor Groseclose, Mike
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/31502
Herausgeber Confreaks, LLC
Erscheinungsjahr 2016
Sprache Englisch

Inhaltliche Metadaten

Fachgebiet Informatik
Abstract The client/server architecture that powers much of the web is evolving. Full stack, monolithic, apps are becoming a thing of the past as new requirements have forced us to think differently about how we build apps. New client/server architectures create a clear separation of concerns between the server and the client. As developers, we have the ability to create the new abstractions that will power the web. Understanding the past, present, and future of the client/server help us to become more active participants in the future ecosystem for building web applications.

Ähnliche Filme

Loading...