Тёмный

Traditional vs Cloud Native Applications 

Tony B
Подписаться 4,5 тыс.
Просмотров 133 тыс.
50% 1

A short generalized description of the differences between traditional applications and "cloud native" applications.

Наука

Опубликовано:

 

31 авг 2015

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 80   
@codewithnacho
@codewithnacho 4 года назад
I just saw IBM's explanation of this and this 1000x superior. Well done!
@8roma8
@8roma8 3 года назад
Same, I also saw an ibm video
@XaberSL
@XaberSL 2 года назад
Same here. Compared to IBM explanation this is much better but still I'm not fully convinced. For an example a traditional application can be designed as stateless and still able to share the 'shopping cart' information among the servers via session replication if the servers are in a cluster. With this it doesn't necessarily need to use sticky sessions and will be fault tolerant as much as a cloud application.
@mountainvideos
@mountainvideos Год назад
same experience...
@chwpas6012
@chwpas6012 6 лет назад
You're explanations are very clear and easy to understand. You are great.
@xerohr
@xerohr Год назад
I was so confused when I saw the author of this video, thinking "wait, don't I watch him for skydiving advice?" but funnily enough I watch these kinds of videos all the time as a computer science student
@slapassdevil
@slapassdevil 8 лет назад
This is fantastic! Thank you so much for the awesome explanation! Super helpful!
@DavidTanJeeBoon
@DavidTanJeeBoon 7 лет назад
Very simple and clear! Excellent Tony!
@semmyalex4692
@semmyalex4692 3 года назад
Thanks for the simple and clear explanation for non IT folks.
@wodge73
@wodge73 8 лет назад
Great overview of the reasons for re-architecting to cloud-native. Many thanks - it really helped me to understand the justification for CNA architecture. Just a slight comment though to remove any confusion (and its certainly not central or important to your focus). At around 5:40, you refer to VMware vMotion as a failure recovery technology (used for orchestrating VM recovery when a VM dies)... It is VMware HA that carries out cluster-based recovery in vSphere. vMotion is used together with DRS to live-migrate continually running VMs (providing contention avoidance), so isn't a recovery technology.
@rajeshw978
@rajeshw978 4 года назад
in tradition apps , we have in-memory session replication option in middleware servers to replicate sessions among other servers so that the session wont be lost when a server is down and also if required we can disable sticky session at LB level.
@albud6687
@albud6687 4 года назад
True - server sticky can't be the _only_ thing to make it cloud native. Here's a different take that supports that point with different tech tricks. First of all we don't use sticky at our on-prem and have had stateless web since asp 3.0! On the other hand we have apps that would have to deserialize their objects from the cache or db server before processing requests in stateless mode, and lose 100ms in the process ... so just turn on server sticky and leave the objects alive in session, spit out the results to the client and keep a secure token client side, and then queue the cached/modified session object tree for serialization/saving to the db as the request is processed. Then on the next request, we look up the token in the cached docs in the session, If sticky works, your old objects are right there in the session, no deserialize! Otherwise if the server died (or AWS killed it or has to rebalance the load) the web app doesn't find the cached objects, takes the time to deseriazlize from the db/cache server, and the rest of the app behaves as normal. This is literally one IF statement in code (plus obviously token management, and starting with architecture that supports this).
@oshoosho5713
@oshoosho5713 4 года назад
Al Bud , very nicely explained. Thanks! I have lately gotten into Appian (BPM) programming and having come from a traditional SQL/ETL/BI world with very little hands on experience in web development, developing in Appian is new and exciting to me since the BPM tool's architecture hides most of the complexities that come with the traditional web application development. I am trying to gain more knowledge on what used to be and what is to come in the web application development field so I can be more prepared to field challenges that might come about in my new career path.
@phyominhtun2503
@phyominhtun2503 6 лет назад
Very useful and clearly understand.Thanks Tony! :D
@mohanpuri9917
@mohanpuri9917 4 года назад
Very clear, and understandable. Excellent.
@jakedtreble7055
@jakedtreble7055 3 года назад
thanks for this very clear explanation of cloud native.
@MrRafabro
@MrRafabro 3 года назад
I think, from most of the coments in this video we can see how this is such a nice "breath of fresh air"... Sometimes, especially in the topic of software development it's almost Impossible to find good explanations to a concept and not just a crappy, generic, almost advertising-like vídeo... Like that IBM vídeo wich is a bunch of bullshit talk about how everyone should be using cloud native architecture and never getting to the point of why and what it is... We love straight to the point explanations and documentation, and not stupid waste of time videos and adverstisement as I see a lot in the software engineering community nowadays. Thank you sir!
@danishhabib3495
@danishhabib3495 7 лет назад
Very nice explanation Tony
@barshazaman7136
@barshazaman7136 4 года назад
I just saw IBM's explanation of this and didn't get anything. I see your explanation, I get everything.
@arindamkar3508
@arindamkar3508 6 лет назад
excellent,please share some more videos
@davidgg2391
@davidgg2391 5 лет назад
maybe I missed an explanation: why in cloud apps the load is immediately shared when adding VMs? Is it that all VMs share the state, but only one of them is processing the traffic at any given time?
@shadeland
@shadeland 5 лет назад
Ah I think the confusion is the term "load" itself. It doesn't refer to raw CPU load, it refers to HTTP requests. With a stateful applications, a user's HTTP requests are tied to a single host. If the host goes down, then the session has to restart, causing a negative user experience (required to log in again, shopping cart empty, etc.) With a shared-state application, the HTTP requests from a user can be sent to any hosts in the cluster. If a host goes down, the user doesn't notice.
@juniafindlay5310
@juniafindlay5310 5 лет назад
In the cloud native apps example are those instances in each cart? If so, are those instances consuming resources on all three servers? In the traditional example the cart is only on one server. So the traditional example is only consumer 1/3 the resources(of the 3 servers) compared to the cloud native. What am I missing?
@indiautube4915
@indiautube4915 5 лет назад
Not sure why he showed that way..typically in these apps session info would be stored outside the app server in database or redis..like spring session jdbc
@willgny7749
@willgny7749 4 года назад
@@indiautube4915 He did say there are a couple of ways to do it DB or shared storage, etc. This was just an example.
@2585kanand
@2585kanand 3 года назад
The explanation given for traditional environment tend to miss the session replication feature which was implemented in clusters.
@ennore82
@ennore82 6 лет назад
Thank you
@ManoharK
@ManoharK Год назад
I see that you did this 7 years ago. Can you think of redoing this with the developments that are current?
@mypage9331
@mypage9331 5 лет назад
Are the load balancers required for traditional vs. cloud based appls fundamentally different? Also,
@shadeland
@shadeland 5 лет назад
You can use very simple Layer 4 load balancers for cloud-based applications. For traditional applications, you'll need a Layer 7 load balancer with something like cookie-persistence. You don't need persistence if an app is written "cloud-based" style.
@greanbean001
@greanbean001 6 лет назад
is it possible to share the session among the servers in the traditional dc? if so, we can achieve the same level of elasticity by turning on vms on demand and evenly distribute the traffic among all the servers for existing and new users.
@shadeland
@shadeland 5 лет назад
It's possible, but it requires a partial re-write of the application. In many cases, it's not done because 1) the app was purchased from a company that won't do it or 2) the scaling requirements (or rather, lack of scaling requirements) are not such that there would be an immediate benefit.
@sivakumarkanagaraj1216
@sivakumarkanagaraj1216 4 года назад
You must break your business process into events and implement each event in a web service and must go for container based solution. Please note that containerisation or micro service cannot be achieved without redundancy.
@vimalk78
@vimalk78 6 лет назад
how does applications become shared-stateful from stateful just because it is using cloud native style?
@arunk5307
@arunk5307 5 лет назад
it's not because , it's clod-native, but you are sharing state using some technique, such ad DB service.
@utkarshagrawal839
@utkarshagrawal839 7 лет назад
but why is this change towards cloud native application architecture happening now only ?? what is driving factor behind it ??
@abhishekule
@abhishekule 5 лет назад
utkarsh agrawal increase in Internet network infrastructure, Availability of Cloud service providers, reduction in cost of server storage infrastructure
@indiautube4915
@indiautube4915 5 лет назад
Because users like us don't want to see websites going down or running slowly..to achieve always on and autoscaling (so that instances come and go,increase/decrease dynamically based on load) we need to treat the app server as stateless and store session outside
@sotsch9280
@sotsch9280 4 года назад
Keyword: Scalability
@r.v.e3361
@r.v.e3361 3 года назад
in the digital vax/vms time it was called clustering
@MainEffort
@MainEffort 7 лет назад
Thanks pal, very informative video. You mentioned about building applications that are cloud native and compatible with "shared state " loadbalancers. Can you reference such frameworks especially for java web applications ? Many thanks !
@utkarshagrawal839
@utkarshagrawal839 7 лет назад
did you find any answers to your question ??
@dehman6836
@dehman6836 4 года назад
They're called stateful services which are basically key/store databases used by the stateless servers that the app has access to. Like instead of your app request, which has a session token, being checked by the server that the load balancer redirected it to, the server which is stateless (does not store the users' data) will check if there's a match between your request's token and a stored token on the stateful service. Every server does that making the stateful service their single source of truth. Of course you can scale this architecture by having multiple stateful services if there's a need for that and adding a load balancer between them but that's beyond what you're asking about. I recommend reading Cornelia Davis' book 'Cloud Native Patterns'.
@durat
@durat 4 года назад
Cloud native apps is a form or evolution that can be to a PaaS and IaaS app? or how is the relation with the cloud models ( paas,saas, iaas) ?
@shadeland
@shadeland 4 года назад
Hi Diego. Cloud Native apps are an evolution from how apps used to be engineered. It's mostly used on IaaS, as most PaaS have this inherently built in I believe. The lack of a persistence/server sticky requirement is probably the primary differentiating trait.
@miladfrqn.3093
@miladfrqn.3093 4 года назад
Great video! Tnx. But, is cloud native is equal to containerized? Is this what a tool like K8s does?
@shadeland
@shadeland 4 года назад
Hi Milad, containers are separate from cloud native. You can have cloud native apps with VMs (Netflix does this). However, most apps that run on K8 are "cloud native" because of the ephemeral nature of the containers. It would be difficult I think to made a stateful app with K8 and have it reliable in any way.
@miladfrqn.3093
@miladfrqn.3093 4 года назад
@@shadeland Hi Tony, Thanks for getting back to my comment :). I'm indeed new to all this with no virtualization background. Have you done a deep dive on this so that I can watch and learn more? What I'm trying to get is how the servers in a cloud-native environment synch with each other and provide a seamless availability and scalability?
@WorstDeveloper
@WorstDeveloper 4 года назад
How exactly do you share state though?
@shadeland
@shadeland 4 года назад
There's a variety of methods. It could be something along the lines of keeping state in the back-end DB or having a distributed key store across web/app hosts, but there's many ways.
@Emersonxsu1
@Emersonxsu1 3 года назад
Agree with the second part talking about elasticity, however, the first part regarding stateless, or non-sticky apps is not that clear and obvious IMO. Micro-service + K8s is the core of cloud-native.
@dr.kiranbirgndu6322
@dr.kiranbirgndu6322 4 года назад
That was a really nice explanation. Can you kindly give a demo of how to refactor a traditional application to make it Cloud Native? Thanks in advance
@dehman6836
@dehman6836 4 года назад
Here are my two cents from what I've read about the subject: 0- Invest in reading about Cloud Native patterns for example I highly recommend Cornelia Davis' book "Cloud Native Patterns". 1- Transition from monolithic to microservices based App architecture 2- When developing your microservices based App, which you've obtained from step 1, make use of DevOps automated Continuous Integration and Continuous Delivery Pipelines (Lots of open source free tools offer this such as Openshift and Cloud Foundry, ...) 3- Make sure you're opting for a container based deployment pipeline. For example, Docker containers are on top of the container world and Kubernetes is the big boss of Docker containers orchestration. If anybody has any comments regarding what I've just shared please make sure you reply because I'm a student and I'd love to have better understanding of the inner workings of the Cloud Native world.
@8roma8
@8roma8 3 года назад
I get the feeling the cloud forces to develop resilient apps
@sotsch9280
@sotsch9280 4 года назад
Good Explanation. But the last point, when you explain that scaling up and down is no problem anymore, dont shows me that the benefit of Loadbalancing remains. Here in the newer approach all servers get all the requetsts/data.
@vallabhchugh2075
@vallabhchugh2075 2 года назад
Amazing where to start
@AmrishPandey
@AmrishPandey 4 года назад
removing stickiness to support elastic load balancing seems logical but it leads to problem of not being able to execute actions on given shopping cart / any entity in sequence since multiple user actions on same cart could go to different server. This could be very important in many cases. Also, any attempt to synchronise access to shared data impacts performance severely. In my experience of trying to solve this in recent years, middle ground is to keep stickiness for old requests ( short life span ) but route new requests across all servers.
@shadeland
@shadeland 4 года назад
Hi Amrish, with cloud native application-style apps, you can still have a shopping cart or other stateful behavior, it's just that the state is stored on the back-end or its shared across all nodes. So if request is sent to a different server, that server *also* has the shopping cart information. When applications are architected that way, stickiness is not needed on the load balancer. Synchronizing state locally has no performance impact, it's only when syncing databases/data structures over long distances does performance become impacted (because of the round-trip-time). Applicaitons that are written in this way look the same to the end user, but they are much more flexible operationally (being "elastic", scaling up and down, etc.)
@AmrishPandey
@AmrishPandey 4 года назад
@@shadeland yes synchronisation solves the race condition problem and does not impact latency much in most of the cases. This however becomes an issue in the area of very Low-Latency processing requirement where we want to keep design lock-free and highly concurrent.
@manuxuser
@manuxuser 5 лет назад
In my experience, LB was already storing inproc sessions....
@shadeland
@shadeland 5 лет назад
lookart loveboat it never tracked sessions usually, it only assigned a non-unique cookie and the cookie had the specific server encoded into it
@manuxuser
@manuxuser 5 лет назад
sure outofbox maybe
@shadeland
@shadeland 5 лет назад
lookart loveboat what did you mean by inproc sessions?
@satish1012
@satish1012 4 года назад
So stateless applications are cloud native.?
@dehman6836
@dehman6836 4 года назад
No. I believe that for an application to be labeled as cloud native it has to have a microservice architecture, be stateless, be the product of a CI/CD pipeline and be able to natively use the cloud features such as auto scaling, high availability,... Etc
@thecloudtherapist
@thecloudtherapist 4 года назад
Useful video but the first part (shared storage for traditional apps), didn't really make it that convincing, since stateful applications do not have to store their data locally - why can't they store the user status (logged in, items in shopping cart) on a shared SAN? The second part (scaling out vs scaling up) is more convincing. Are there no other compelling reasons, aside from being non-sticky, for Cloud Native architecture?
@sanjoymitra1586
@sanjoymitra1586 4 года назад
Good explanations, but.. your 'pets' explanation doesnt cover clustering of the a server ie multiple prod servers synchronized to fail over to a contingency environment that is in warm stand by... so that 'cart' persistent data would actually exist in the failed over server you mention.
@huabingzhao7685
@huabingzhao7685 5 лет назад
Thanks Nick for this great video! According to your explanation, the key feature of "cloud native" application is that they're stateless? It seems to me the "stateless" feature is not directly relevant to the "cloud" as the term "cloud native" implies.
@shadeland
@shadeland 5 лет назад
Huabing Zhao the applications aren’t stateless, though that’s a common name for them. Almost every application has some state, older applications have singular state on the application server side. If that server goes down, the session state is lost. One of the defining traits of cloud native is the state is shared across app servers, so if one goes down the customer doesn’t notice, becasie their session is available on any sever. You can scale on demand that way, where with stateful/singular state apps it’s disruptive to scale up or down in terms of nodes.
@huabingzhao7685
@huabingzhao7685 5 лет назад
@@shadeland It makes sense. Shared state allows "cloud native" applications scale up and down without impacts to the client sides. So besides this, are there any other important features you think an application must have to make it "cloud native"?
@shadeland
@shadeland 5 лет назад
Huabing Zhao typically they’re updated very frequently (weeks, days, hours) in stead of infrequently (months, years). Unit testing is typically automed (such as Jenkins). Deployment/updates are usually automated making them portable without relying on vmotion or OVAs. Check out 12factor.net for some more aspects.
@shadeland
@shadeland 5 лет назад
Huabing Zhao oh and another big one: not reliant upon hard-coded ip addresses.
@sivakumarkanagaraj1216
@sivakumarkanagaraj1216 4 года назад
Stateless does not work if you want to perform 2 phase commit.
@sivakumarkanagaraj1216
@sivakumarkanagaraj1216 4 года назад
Tony, your Shopping cart analogy is poor. How do you manage database lock on rows that you have just read for update in cloud computing if you run the same transactions on multiple application / web server? Your explanation is good though but and Cloud based transactional application is good only if you are reading the data objects from cloud storage or block storage (SAN), not for update / database commit. Your approach is not the solution for all business scenarios. If you follow CAP theory of database, you can only achieve eventual consistency in cloud, and if you need strict consistency on the data in the cloud native application, you must maintain or enable stateful. What I expect from the system is that, once I put an item in shopping cart, it should be available until timeout or complete my transaction. Thanks.
@shadeland
@shadeland 4 года назад
The shopping cart analogy is a class one used in the load balancing world for about 20 years now. There are multiple ways to provide for immediate consistency. Nothing I talked about here necessitates having inconsistent database writes. Shared in-memory sessions, and string session tables on a database are just a few ways to do this. State is always stored somewhere. With cloud native applications, the state is not dependent on the survival of a single node. With traditional enterprise applications, if a single app server goes down, there's some lost state. With cloud applications, the loss of any node is non-disruptive because session state is not stored on just one node.
@jeremytheoneofdestiny8691
@jeremytheoneofdestiny8691 2 года назад
wtf are pets and cattle
@teddyzhai4442
@teddyzhai4442 4 года назад
I don’t really like the drawing on the fly presentation. Looks super ugly.
Далее
Pets v Cattle: Deeper Dive
22:24
Просмотров 16 тыс.
Cloud Native Architectures - Cornelia Davis
39:21
Просмотров 3,5 тыс.
Дарю Самокат Скейтеру !
00:42
Просмотров 339 тыс.
ШОКОЛАДКА МИСТЕРА БИСТА
00:44
Просмотров 398 тыс.
Luiza Rasulova #luizarasulova
00:37
Просмотров 1,7 млн
아이들은 못말려 〰️ With #짱구
00:11
Просмотров 410 тыс.
Containers vs VMs: What's the difference?
8:08
Просмотров 745 тыс.
Link Aggregation and LACP
36:41
Просмотров 36 тыс.
Hybrid cloud vs. multi-cloud
17:07
Просмотров 15 тыс.
But What Is Cloud Native Really All About?
7:32
Просмотров 140 тыс.
Introduction to AWS Services
38:54
Просмотров 2,2 млн
Cloud Foundry Explained
10:31
Просмотров 111 тыс.
Acer Predator Тараканьи Бега!
1:00
Просмотров 285 тыс.
ИГРОВОВЫЙ НОУТ ASUS ЗА 57 тысяч
25:33