Everything You NEED to Know About WEB APP Architecture

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
one of the most important aspects of software development is the architecture of your application which is basically the blueprint for how the web app is structured think about the first decent size app you ever built i'd be willing to bet that you unknowingly implemented the monolithic architecture or basically where you put all of the code into a single code base tightly coupled together but if you want to efficiently scale your app from a hundred users to 100 000 users then maybe you want to take a look at microservice architecture but that's not all there is to consider in terms of architecture i mean how many tiers is your application where does each component live all on the same server each have their own server are you going with a server-less architecture and if you're on web 2 you're probably doing client server but if you're on web3 then you're doing peer-to-peer all of this matters in the context of what type of app that you want to build so i've broken these down put them into levels or buckets that are actually comparable and created explanations in a way for you to simply understand the differences in the types of web app architecture but first i'm stoked to announce that jetbrain space is the sponsor of today's video and i may take a wild guess that you've already heard of jetbrains they've created intellij idea pycharm team city and kotlin among many other tools for developers and software teams alike but today i want to talk to you about a specific product created by jetbrains jetbrains space space is really a one-stop shop for all development tools it's a unified platform that covers the entire software development pipeline everything you need in a single tool set source code control hosting using git code reviews with merge requests and quality gates automation jobs for building and deploying applications project management tools checklist for planning and issue tracker and visual boards packaging container registries for our publishing artifacts the first class integration with jetbrains intellij based ides and cloud development environment for remote development with jetbrains ides but it's not only about the development aspect it's also about the organizational and communication tools you have a team directory for managing the company's organizational structure management of vacations absences and locations chats collaborative documents blogs meeting management personal calendars and to-do lists for task management so if you work in a team especially if you use any jet branch products ides i would heavily recommend checking out space because it puts everything you need for communicating and collaborating with your team in one place you can try it out for free using my link in the description but you can also upgrade to space team using my code which is also in the description just below the link so what is web app architecture to put it simply the web app architecture of a system describes its major components their relationships and how they interact with each other it essentially serves as a blueprint the layout of it all and there are two main ways in which it's laid out at least in the overarching more broad idea of architecture with the main one being client server architecture it would be irresponsible for me not to start with this as it is the fundamental building block of the web so let's take the web app we typically have the client side or front-end the server side or back-end the database and everything in between and not all web applications are set up just like this where you have the client side the server side which is the business logic in this case and then the database all living on their own physical machines this is where different tiers in software architecture comes into play a one-tier application will have all of this on a single machine a two-tier application can be split one of two ways with all of the code so the client side and then the server side business logic living on one machine and the database living on a second machine or the client side living on one machine and then the server side business logic and database living on the second machine that's two tier what you're looking at now is three tier with each individual section being in its own machine and finally you have interior which is anything more than a three-tier application this typically takes into consideration the single responsibility principle where each individual component lives on its own machine so if you have five or ten different components in terms of business logic you're gonna have five or ten different machines just to cover this and for this example we're sticking with a three tier application so on the client side as you interact with the web application it'll send an http request to the server the business logic which will then query the database if needed which will respond with that data which then we will transform that data as needed to send an http response back to the client and i will say for all of the well actually that'll be in the comments section saying well actually send the http request to a web server which then sends an os thread to the application server then does all of that and back through actually you're speculating there however by strict definition web server is a subset of an application server so all of that occurs in our server tier right here now let's take youtube as a real world example when you're on youtube.com and you saw this video pop up and you clicked on this video you send an http request from the client side which is what you see to the server side which is what you don't see unless something has gone terribly wrong in order to access the business logic the database and everything that you need in order to populate the webpage that you're on right now which contains the video the description all of the metadata the comment section the recommendation system on your well that side i think everything that you see right now it accesses all of that information and then responds back to the client side with that information and serves it to you basically every website you use youtube facebook twitter your banking app is all client server architecture however there is something that opposes client server architecture and that is known as peer-to-peer architecture there are a small percentage of business businesses that use this and i'll give you some examples but something that you can really wrap your head around is web 3 the blockchain peer-to-peer architecture is the base of blockchain technology it is a network of computers also known as nodes that are able to communicate with each other without the need of a central server like that of client server architecture so it rules out the possibility of single point failure which i think i don't know if it was earlier this year or in 2021 when facebook and everything that facebook owned whatsapp instagram went down for a day because their servers failed that is one of the negatives of client server in one of the avoidances or solutions that peer-to-peer provides peer-to-peer technology however is not only used in web 3 and blockchain technology it is that it actually exists currently with some online gaming platforms for example blizzard uses peer-to-peer to download games between users they use this for diablo 3 starcraft 2 and wow but for the vast majority of what the internet is today it is client server architecture so now we have the next level of architecture again these are these are levels created by myself i just wanted to be able to give you architecture that is actually comparable to each other and not just a bunch thrown in your face so this is where monolithic microservices and serverless come into play in a monolithic architecture all the modules will be coded in a single codebase tightly coupled together this is unlike the microservices architecture where every distinct feature of an application may have one or more dedicated microservices powering this is how basically everything used to be built because it's i mean it's simple it's fast you can easily deploy it however there are a lot more negatives than there are positives because it's not scalable it's not reliable there are single points of failure to put in perspective every single time you add a single line of code you would have to redeploy the entire application and not only do you have to redeploy it but if something breaks it breaks the entire application however the answer to all of those problems is solved with microservice architecture this is where you have a collection of services that each serve a unique responsibility every single service is deployed and lives separately from one another and to complete the business logic they can connect to each other as needed or to put it simply it's modular so where you have all of these different aspects of youtube that you can see on your page right now you have a software development team that works on one service the recommendation system and then you have another team that works another service the search function they have another team that works on the comment system so on and so forth if they change one line of code they're only redeploying their service not the entire app and if they break something they are breaking only their service not the entire app and then of course with it being modular you can see just how scalable it is because each service can be scaled independently based on traffic and where there is monolithic architecture and microservice architecture there's also something called serverless architecture also known as serverless service list serverless computing or function as a service it's a software design pattern where our function which is a part of the microservices responsibility is hosted by a third party this is your aws lambda functions your zur functions that never know how to pronounce that in your firebase cloud functions did i explain oh no sure that's weird did i explain that well enough let me give you one more example as if you were online shopping you have a product catalog you have a checkout system and you have a shipping process in a monolithic application all of those are built and deployed as one holistic unit in a microservice application each individual component is broken down into its own service a benefit here is that each individual microservice can have its own language its own libraries and typically have its own database and a serverless application in this instance we're going to be talking about serverless microservices break the microservices down even smaller into their own individual event-driven functions for example the shipping microservice will have multiple functions within and once an order is marked as ready to ship that event could trigger a function that validates the customer a successful validation could trigger another function that generates a shipping label and finally creation of that shipping label could trigger a final function that sends a shipping confirmation email to the customer see they're built with serverless functions which execute small blocks of code with one bucket code triggering the next goodbye
Info
Channel: ForrestKnight
Views: 215,348
Rating: undefined out of 5
Keywords: web app, web application architecture, web app architecture, software architecture, software development, coding, programming, software engineer, engineering, microservices, monolith, monolithic, client server, peer to peer, web3, web2, serverless, frontend, backend, database, fullstack
Id: sDlCSIDwpDs
Channel Id: undefined
Length: 10min 27sec (627 seconds)
Published: Wed Jun 22 2022
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.