Django Deployments Done Right

Video in TIB AV-Portal: Django Deployments Done Right

Formal Metadata

Django Deployments Done Right
Title of Series
Part Number
Number of Parts
CC Attribution 3.0 Unported:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Release Date

Content Metadata

Subject Area
There's no single standard toolkit for deploying Django sites. In our years of consulting, we've seen lots of deployment systems in the wild and where they break down or cause pain. Independent of the system you use (Salt, Ansible, Fabric, Chef, Docker, etc.), there are a few principles a good deployment should follow: Deployments don't take the site down or interrupt active users on the site. Deployments don't involve more than one step or are completely automated. Deployments are fast. A failed deployment never takes down the current running version of the code. Rolling back to a previous deployment is a single step. By following these principles, deployments go from being error-prone, nerve-wracking experiences to trivial non-events in your daily development cycle. This talk will walk you through the steps necessary to create a better deployment process.
Point (geometry) Building Gender Software developer Moment (mathematics) Information technology consulting Grothendieck topology
Web application Building Scaling (geometry) Gender Communications protocol
Point (geometry) Server (computing) Software Multiplication sign Bit Staff (military)
Point (geometry) Quicksort Office suite Grothendieck topology
Point (geometry) Process (computing) Different (Kate Ryan album) Personal digital assistant Mereology Grothendieck topology
Point (geometry) Boss Corporation Server (computing) Process (computing) Software Personal digital assistant Software developer Stress (mechanics) Control flow Event horizon Surjective function Product (business)
Point (geometry) Goodness of fit Observational study Personal digital assistant State of matter Multiplication sign Self-organization Traffic reporting Wave packet Product (business) Number Software bug
Point (geometry) Laptop Axiom of choice Server (computing) Code Multiplication sign Data recovery Control flow Continuous integration Function (mathematics) Grothendieck topology Product (business) 2 (number) Web 2.0 Inference Mathematics System programming Software testing Error message Task (computing) Software developer Cellular automaton Gender Idempotent Feedback Determinism Arithmetic mean Word Process (computing) Integrated development environment Personal digital assistant output Right angle Cycle (graph theory)
Point (geometry) Service (economics) Software System programming Student's t-test Quicksort Remote procedure call Configuration management Disk read-and-write head
Default (computer science) Server (computing) Constraint (mathematics) Code Projective plane Counting Directory service Product (business) Revision control Subject indexing Arithmetic mean Software Software repository Internetworking Right angle Quicksort Data structure Information security
Point (geometry) Covering space Server (computing) State transition system Service (economics) Multiplication sign 1 (number) Line (geometry) Cartesian coordinate system Event horizon 2 (number) Process (computing) Different (Kate Ryan album) System programming Cuboid Proxy server
Scripting language Point (geometry) Server (computing) Functional (mathematics) Service (economics) Wrapper (data mining) Software developer 1 (number) Branch (computer science) Line (geometry) Login Configuration management Product (business) Web 2.0 System programming Error message
Web 2.0 Service (economics) Code Multiplication sign Structural load Staff (military) Moving average
Point (geometry) Server (computing) Computer file Code Multiplication sign Control flow Directory service Line (geometry) Event horizon Grothendieck topology Product (business) Revision control Type theory Process (computing) output Quicksort Determinant
Point (geometry) Mobile app Building Service (economics) Computer file Divisor Code Multiplication sign User-generated content Device driver Coma Berenices Mereology Grothendieck topology Revision control Medical imaging Fluid statics Mechanism design Mathematics Goodness of fit Atomic number Extension (kinesiology) Default (computer science) Key (cryptography) Cellular automaton Binary code Model theory Database Virtualization Directory service Instance (computer science) Cartesian coordinate system Type theory Software repository Password Network topology Configuration space Website Knowledge-based configuration Moving average Cycle (graph theory) Quicksort
Area Scripting language Server (computing) Email Computer file Software developer Polygon Projective plane Database Line (geometry) Vibration Product (business) Revision control Human migration Medical imaging Roundness (object) Order (biology) File archiver
Human migration Ocean current Default (computer science) Goodness of fit Code Buffer solution Database Table (information)
Trail Server (computing) Building Perfect group Computer file Code Fourier series Linear regression State of matter Multiplication sign Hecke operator Representational state transfer Client (computing) Configuration management System call Grothendieck topology Computer cluster Hypermedia Term (mathematics) Different (Kate Ryan album) System programming Configuration space Software testing Metric system
Building Code State of matter Multiplication sign System administrator Mereology Perspective (visual) Mathematics Computer cluster Ontology Curve Software developer Stress (mechanics) Bit Type theory Message passing Process (computing) Hash function Software repository Self-organization Website Right angle Moving average Figurate number Quicksort Point (geometry) Service (economics) Identifiability Computer file Similarity (geometry) Control flow 2 (number) Twitter Product (business) Goodness of fit Authorization System programming Energy level Metropolitan area network Computing platform Standard deviation Dialect Multiplication Inheritance (object-oriented programming) Forcing (mathematics) Uniqueness quantification Projective plane Directory service Configuration management Word Loop (music) Software Commitment scheme Optics Point cloud Video game Service-oriented architecture
1 of the and the and the and the 2nd half of the and the FPR ch gold ivory sorry further issues given that the logo uh I'm going about my notes here so hopefully I remember quick about
me but underfunded legally is a
shot of a few of us that I can last year Mr. and I like we do gender development and consulting and everything that goes along with building gender sites like that out JavaScript's you UX design and today will talk about the point which is something a topic that I'm kind of interested in a moment I'm
also because after this book high-performance Django and it's all about how to build gender so that scale fast you can get a copy of high-performance doing about common there's little coupons in years so i'd but as well so today's topic
is traded appointments done right but really I protocol a pipeline deployments done right there's not a whole lot of gender-specific stuff in here and honestly deployments right Hollywood that most of it as well and deployments for a web applications and all that kind of similar the end so you know what you are doing well over node or Python regarding the or whatever and a lot of these things will still apply the
so 1st of all what is the point I think is into is 1 is the noun
like uh that the deployment is kind of obvious that you have set up your servers your software out our acts and then the verb like the actual act of getting all that stuff onto your servers in and keeping up to date so today we must again be talking about the verb of but interchange is a little bit the so that maybe you want a good
point but for staff at time
of this is it's like you don't want the point is to take on your site of the problem that you don't want to be scared to data points because they're gonna take down your site
but there may be less obvious is the humans that are working with the deployment of 1 thing I noticed is have that includes sort of feels like
this it's like showing up the messy office you can find anything it's stressful all you know there's probably 1 person that knows where the thing that you need is and there's these gatekeepers and it's it's really of it's really bad
for the for people like the idea of consulting work and I work on lots of different sites and I notice the difference at the end of the day what I'm working with the side that's you know got really poor process and not well managed in kind of a bus routes is 1 that's kind of clean and tidy and does what I expect from a stressful uh it tends to lead to burnout and burnout leads to people leaving your company so the there's a case that you know the the humans that are important to the deployment process the
of it and for me this is a good the point you know it's kind anytime you know everything is 1 of the moving parts it's it's just
simple deployments non events it shouldn't be a you know hand wringing hands sweating like 0 . of nothing breaks of about when you do deployment of it should just happen and nobody really notices in in the points also empowering could deployments let's uh the let you and your users from users in the sense of developers get software In onto servers where you know it's it's stating a production and that's our job as as developers you know we build software and we want the world to see it and to not letting people manage that process of getting the software and the production and having gatekeepers in the middle of it is really kind of limiting so empowering developers to to do this stuff is pretty powerful and in fact it is a business case
for the deployment so if you know you can convince your boss that burnout and stress is a bad thing but you know that did the
you should faster and you get new features that production quicker you fix bugs quicker and you recover from failures cook more quickly but in my notes I had something from the state of that's report by Puppet Labs in the head of of you know they did a study on the differences between high performing IQ organizations and and low-performing IT organizations numbers are really fascinating and if I if I have my notes would tell you what they were but like it's like you know they they deploy 30 times more per day in and day out the you know 60 times faster to to fail to recover from failures and from all this stuff so so there's a really big business use case here and then also having happy people that are at your company happy people are more productive and they're gonna leave lasting Ășnica brain drain the training people all the time so there's a great business case for good appointments that's what
makes a good the point the per that
works it's surprising how many times we see people get this wrong like you know they've got the point process and the play and you know we had an issue a while ago where we we made a bunch of changes to somebody's so work at you and they deployed and things broken nothing worked so what we're what happened in the you know the 1 guy who was in charge of the points that I have to go in and restart sorry manually after we did what that nobody else knew that but the 1 person dead and so do this kind of stuff is really common and so you know what works and it's rowdily works every time and you know in half and it doesn't work it doesn't break things in the process the yes if it's going but this is the kind of the right on a little rant about the darker could dead that could cool technology and and this and I think it's interesting for a lot of stuff but if you just getting started with the point it it's very likely not not the best choice for you the darker cells that interesting problems but also I can brings in a lot of problems of its own so I prefer a kind of using technology let's tried troop tried and true but true improvement and and Dr. you uh you know you end up using a lot of kind of bleeding edge technology it's great for a lotta use cases but for your standard hey I just need to get a gender site on the web it's probably overkill for your purposes the the the next of its user-friendly so that you know that everybody should know how to use your deployment system that doesn't mean they need to know all the internals of how your system works but they should know how to you get the code from their laptops to get to you a server they said it's fast and there's a give you an anecdote here as well so so we were to somebody who had a deployment system and and the idea was all the test had the past every time before they can deploy the software so that a really good idea you know we wanna gosh make sure tests we passes before we put in production but the tests we took something like 45 minutes to an hour to run so when they wanted to do the point they needed to wait an hour before the servers ever got updated while a problem-set set through their continuous integration and you know it didn't get caught in the task in the deployed a change that to bound the sites and then knew the fix was if they could push it out it would have been a 32nd minute 1 issue but instead I had to go through this hour long pipeline to get inference in a production so um fast deployments are really important for recovery and also important for closing the feedback loop with developers you know uh we we record we test it locally we write tests we put on staging environments the true we never really know how to operate in 2 we put it into production so being able to give you developers that quick cycle of had that's something it's in production it works and I can move on to the next thing it is really important to productivity but that said it's not disruptive and you shouldn't have to deploy after-hours Europe 1 it's shouldn't take down the site and you know even for a few seconds of people shouldn't get 500 errors when the points happen and finally
a couple of 5 dollar words here it's idempotent deterministic and In deployment these words are kind of blend into each other at basically that it's idempotent you can run it over and over again and you get the same thing and it's deterministic given the same inputs you get the same output so when you deploy you should expect that if you plan 1 server and you're gonna get the exact same thing on another server
so students at a point now how do we how we build all this stuff
so 1st I have use configuration management uh it it's kind of key to to this or working and if you
are not using configuration management today look at answer ball they are the pipe understand and they also have you're going empowered the most comfortable with those unless somebody in your shop has experience with chef or puppet 1 of these other systems and that is not a configuration management tool it's remote execution tools and you can do configuration management like things with it but you're gonna hate yourself into a corner in your head this really messy system and its uh this is better tools out there so you don't use it for configuration management and then I use it for everything like and you shouldn't configure your services with your configuration management system in an update your software with other thing and then do deployments with another thing because uh that's kind of violating the don't repeat yourself principle and you're gonna end up in situations where the systems diverge and 1 starts over the other so once you kind of get everything codified into configuration management and that's what you wanna use to to sort of drive all the stuff that includes you set up updates deployed as the next 1 the
dependencies of this sort of
is that deterministic thing and when we deploy the software we want to know exactly what we're getting so that doesn't mean in your pet requirements you put you know in Santiago or even install Django less than 1 9 there's a chance that a minor version update you know if a security issue could be backwards incompatible so make sure you put in this specific versions of 1 thing I would consider is actually just using uh set up that high and put in your in your requirements and and so requires there that sort of gives you a constraint but you can't linked to a crazy the party get have because you don't wanna count and some random person on the Internet's code repo being in the up existing when you're doing deployments and you know there's certain scenarios where you can't use Pontiac uh maybe you've got proprietary code that's shared among multiple projects maybe there's a new default something and it's not available of unpopular in that scenario consider setting up your own party uh it's it's not that difficult to do a simple index which basically is gonna get you will you need there's a product called pitch 2 p i that will take the requirements fall and dump out the directory structure that's compatible with that and you just pointed to that and you can store stuff from it so popping out to a server that has and do not serve pushing up as 3 years pretty viable solution the this up if you're have you got code that is you know you you felt some project and your diverging significantly over the other projects is you know that the latter are not getting updates anymore considered as pandering and put in your project and the the the fewer the external things you need to manage the better so just drop right in there and you know take ownership of it and then finally if you insist on installing out of a git repo or something like that make sure it's when you on it and don't don't count on other people's stuff
so this up this this artist but I see a lot of people that don't do this you when you but the point you should we load and
not restart your services so the differences of doing we start but you basically tell your was the server or whatever to shut down and come back up and you have a couple seconds during that time were all the cars come in your application are going to get dropped so what i would you recommend doing instead is is graceful reloads and what that does is it did clear was the worker is going about the processes that are serving requests it's gonna let the old processes finish it's gonna bring new processes up alongside them once Eolanda finish they diet and the new ones are already serving new incoming requests your phone and perhaps is probably support this as well and next Polish each proxy and that just looks like a service and annex reload and most of when experience there were the box with upstart if you're using a current event to LTS uh and if you're an system be putting this line in there the exact reloaded which is going to send the hop signal to your was the server which was the was the servers will do the graceful reload when they get that signal that'll cover so that said a user-friendly if you
using configuration management you might have a line like this if you using salt that is going to SSH and your salt master server and update all your web servers that's not good and and answer so you know if you're going onslaught might look like this but also not good and it's kind exposing all the details of your configuration management system to year developers and you don't need to do that and much better is something like this and I said fabric is not a configuration management system but it is really great at remote execution so wait a deployed function and all you deploy function does is is call these other ones in a few users in our coming in and use anything like her roku or something like that but they're going to be much more comfortable with a script like this error fabric command like this other than the instead of so the other options of me and there consider concerning some other stuff up for users in most of these are wrappers around really simple and you know kind of bash command line options so you know hack the people the point of production can easily get a branch out to a server for other people look at it that's a super common scenario you know him working on something and you guys look it over the making that's scenario really easy uh this is great for them know the common thing you know hey I needed to stop the logs on the server something where it's happening and they should have to asses agent anytime some use as a aging into a server consider that an opportunity for improvement and then and you know the status here what Weber genetic code is running on a server and you know this is our services up and stuff like that
so far has this really nice that should fact that will list all the fabric commands here's an example from our Lincoln live the web and it has a about 200 staff and we went through most of also has like here need open up agenda shallower than I need to see what releases happen a roll back to a previous early release when you and as you get
something like this is user as the service status such as you like the load and involved in and what perjury codes running and 1 last time he was he restarted so the next step
and how we do how you get the point is isolating each bill the
so this is something that wasn't really feasible for a couple years ago and wasn't super easy uh up until a few months ago so we're talking about is basically every time you build a new value you do a new release you building a flash virtual and you're putting all your dependencies in you bring a copy of your code it and probably even a copy of your static files at any sort of have this bundled uh you know directory that has everything to run this version of code and it's written as for few a few reasons what is if if you do have something that breaks down uh during the deployment of you're not doing it in your running the version of the code so you know that the typical processes had a year ago by around updated on the fly and install a any new requirements I have and then reload my server and if something breaks during that process you've now broken you're production site in and in our scrambling to fix it so this way we you can kind of build build 1 in the background once it's already you switch over to it and it helps with that determinism you don't have any craft left over from previous builds a has anybody here been bitten by like a straight QIC file that you know you deleted everything but the faster inputs are working at the so and you know something that and all versions of stuff that you now removed from your requirements but are still in there and those types of things can come about you and prevent you from having a kind of at a true gold so the next thing that this creates is it's really easy to roll back quickly to previous versions in the event of an issue so I'll show you that in a 2nd and it is again as an
example from our legally . com website and it's really simple but the same thing applies for the you know of a larger sites so we have this sort of home directory for a site but it's got a data directory in in Nikos any sort of user-generated content and stuff that is versions so you user uploads and stuff like that it's got the deployed and that Jason file of but not really going to this but that's kind of a tall factor type application thing where we store the secrets like API keys or your new database of IP in password and all that so that comes in from the configuration system in an app read that the uh there's a package cash which is so the secret to making being able to create new virtual lands every time a really fast so the the change that happened a few months ago is that kid now when you install dependencies will build paper wheels wheels our like binary kind of blobs of by the model so if you have a C extensions like common once a cycle PG to oppose this driver or pillow your image manipulator and those 2 usually take a long time to build like other in minutes that so that made it really hard to build fresh every time because you're deployment got really really slow and the nice thing is that by default now creates these wheels and stick them into a cash and will check their 1st for the and if you if you haven't updated versions it's almost an instance in cell so using that that package catch and in keeping kind of outside of our of versioned repo we reinstall everything really quickly there's a check out of a repo and you was the cash you can ignore it so directly using you whiskies caching mechanism there's a you is the configuration file which tells you is the heroine and then there's a virtual atoms directory so
this is not the vigilance directory which like the those are the hatches of code and uh the the date in that it was a directory but it's actually a virtual and and uh you can see the date on there that shows the time when that 1 was deployed and there's a trick to car making this all work is you don't run out of a commit hatch you run out of this current directory the current directory is just a symlink to whatever is currently running that use the points to that and any sort of like static file-serving points that and so updating to anyone or rolling back to a previous 1 part is is you change the SemLink you religious services and you have a new version so but this is very nice for a bunch of reasons but 1 is a if you have here is an example of a into so we had a site and it had dependencies in those dependencies have dependencies in 1 of the sub dependencies got lots of updated and broke 1 of our dependencies and that the tendency was obtained in the it down the chain and so we have a working version of the code on we deployed a new version and things broke and we weren't sure why and once we finally handed down you know you you you try that like release a new version 0 well back to the previous version and it's still broken here using the same code but something else Thomas status broke so using this it was in in in that when those things happen that you can flip back to the previous working version of the code even if you're a dependency tree has broken even if you know pikey I went down or get help went down or whatever you always know that you had some good working version that you can quickly flip back to you and that can be priceless in other scenarios right into like they deploy code and somebody put something in it that broke and that person's not available right now and you don't have time to begin trouble it and paid with his plot and roll back and you know we'll know we'll be safe and we know that to marker on with our get history or anything like that
well so the other interesting thing that that this kind of gives you is the ability to bend once and apply everywhere and that's kind of no 1 of the big things that people like about doctors you promised doctor that you better you know exactly what's in then you can ship that image to multiple servers I so you can do is have a build server maybe it's Jenkins or something like that a new a new commit comes in and it starts barely order dependencies into these wheels you can build on to the 3rd round a tall and ship that archive after all your servers which simply on packet and run it you don't need to install your development headers on your production servers they just live in 1 spot and everybody else gets precompiled wheels there's a project by Armand hot air from the dead flask and ginger so rigorous entry to the called platter and it's a really small Python script of poly for 500 lines that does all this for you so you can still stuff area of the static files in there and it's a really nice way to kind of isolate Python builds enviable the ship in a single file out your servers which you can easily unpacking right and next up his Davis
federations so a semi made the and notice like if we're gonna easily well back to previous versions higher database vibrations play that you know but what about backwards migrations and all that quite
frankly I have never seen people the really use backwards migrations effectively the idea that you can you know move forward and then move backwards so what I would recommend instead is just maintaining backwards compatibility for a little bit but until you know that your current produce good code so if you need if you think you're going to delete a column I don't release the code that doesn't depend on the column and delete the column in the same deployed release the code 1st and once you sure everything's working then release a migration which is going to delete that column so you always maintained kind of a buffer that you can roll back if you have a large database and get a sufficient enough a sufficient a sufficient amount of traffic and you can run into the risk of locking your database with migration and so you know maybe you're adding new column and it needs to have a default value or something like that and you know you're your database starts ripping through all columns it puts a lock on the table and nobody else can write to the table until that migration completes so if you have a sense of like that this is a post that describes it all in detail much better than I could it's there it's by the also in my notes Ludvig behind uh I think his name and it basically gives you techniques on how to identify migrations that are going to be problematic how to use but there's migrations up into multiple migrations that will allow you to do the same thing without locking your database and it's a really great resource then well I think this is the last
1 is tracking releases so and if you want to when you
release the code and know that new code was released and Noel uh when it was released into and what was released this is like hugely important for regression testing uh it's really common on big high traffic sites that you know you're moving faster you're releasing new coding and a week later somebody checks your in know at metrics and holy cow were 30 per cent slower than we were a week ago what the heck happened but you know when you put in terms of new stuff in in the interim of being able to go back and see you know have a state we release this this commit and prevent performance degraded immediately after that is huge uh and it's it's frequent that it's not a media it's like hey I need to know from a week ago or 2 weeks ago or something like that so doing this data really close to where you're tracking performance is helpful and if you paid relic a bunch of money you can get them to you can you can do this and op include set includes at and you know you can even just like push into to a slack tell him when I get cluster performance but at least you have that data somewhere and that you can reference it later on In usually these are just like to call it P I call and a really easy to add into your configuration management system kind of upper last up like a new codes deployed Mikako call to this REST API and a little handled all the release tracking Fourier so to
wrap up the thing and those with a building on configuration management system and believe for clients over the years is probably the the biggest difference uh the biggest you know think that that helped us was that we always chipping away and making it better if you're not using configuration management today you don't need to sit down and stop everything and spend a weaker tutored in a build up a perfect configuration management system start small like add you know next I mean you that a new user to a server do do it with a configuration management system next time you need to change a configuration file you know put that in your configuration management system and and so triple over time you think of the humans that need
to use the system you know that that in it that I gave earlier about hate you only have we haven't we haven't a configuration management system but it doesn't respect salary when when you deploy that's gonna come back to bite somebody like you know soon that's so when you run into those issues fix them and figure out how you can use any time you do have a failure to figure out what went wrong and how you can fix it and make that fixed text it's not something that you need to invest tons and tons time into but you need to come to chip away at it and make things better and eventually you get a system that's really really nice and really reliable and has all those features I talked about earlier if it's slow letting the that slow communicat faster can you you know do some catching or something of some files like we talked about the wheels you know that's that's 1 thing we ran into with without deployments we were doing the standard stuff for fun and files in a building stuff with gold and it took government when you 30 seconds and it has spent an hour looking into it and figured out how to do you cut that time in half all the time adds up and if you nobody ever looks at that you're and up with the system that's slow and people don't wanna use and finally make it easier when people ask you questions when people are confused figure out why and figure out how you can improve and make a better so you know people don't have questions in the future that they can empower themselves to do this to build own software and to put it on your systems and that will make make people happier both on the sysadmin inside that they're not enough constantly answering the same questions and on the development side that the you know they don't need to have a gatekeeper to to get this coder so that's it so
thanks and I have a few minutes left so I'd be happy to field a few questions and also met the beautiful Lincoln loop over here and and yet the conductor x if thanks very gradual and I come from a sysadmin background and this is Edmund Welter we're starting to look and all that kind of stuff similar stuff that that you've just been describing that we're coming from the perspective of things systems that change recover usable thing and you want to put was Waco pointed dial twice now what about I'm the big movies and changes of the season will not people like gene came from here has written a couple of other things other things predictive this 1 if you're familiar with that the ontology like I'm and spent time in Chile you uh along with cup of co authors have has written a book and which Cloud administration they don't use word cloud anywhere except on the front cover a greater but basically flat coming from suspended perspective that these some of the things I was working in had tried last question rather than just deliver a comment that I know if you if you want to do those things on the I know I'm not familiar with them and I I do have a was originally a sysadmin and probably not very strong 1 and then became a developer so I do have some empathy from those sysadmin side of things but on you know I I was only going down in the trenches for 15 years type guys so the obstacles optics but can you talk about the uh the symlinks used the virtual and talked about using the current some links and that really good way to solve all our problems is or some similar use for the actual after the code also so that you mention that leaving craft like the rest the files desire is our you know right also so we have here is a this Reval directory here and that of a directory above the virtual comes of that is that did check out there so that we we really get point and then we copy of like a flat copy of that could directly into the virtual and and that we have the who are the products we put a set up up I've while and it's like super simple but then we Pippin style that that copy of the code into that virtual and so it's also debate in there and it's independent of the repo even if you do like a force pushing blow the command like that that is sort of you know they there and you can us with that of thank you for that I again with separate virtual and the does that mean that your Python processes need to be restarted you're working you really there's red when you're switching works so that we have where we're trying to do it is of yeah that's an issue if you if you're you know you you the processor your salary process or something like that is running from within that virtual and you you can't really loaded that you know because it's it's still a copy and so what we don't deserve to a different philosophy a little bit and a looked at you was inside sorry more like we're looking at and genetic suppose stress those alike system-level services so you the inside or you're going to get installed kind of on the system at a higher level and then they just point into those directories in those virtual which lets you can do all that stuff so what we don't have a long-running processes that are big kicked off a managed up I they're going to cost you know by external a Python the so this morning I did the Asher Microsoft challenge and I pushed to get have been booming when life and I was able to do that and this feels like a really big no learning curve so at what point will lie the not 1 suggesting right that Microsoft Azure or roku whatever method that has a beginning has decided a can be when you do small-scale coleslaw skill development of of with Platform as a Service is amazing I strongly recommend that you he as a you don't wanna do have this stuff they probably do this stuff in the back room for you but that at some point if you know you're you're learning the when you're using these services are you're studying the you know get lots of traffic in your starting you know that those services can get expensive quickly when you're a you know running large-scale and at some point you said to kind of uh feel pain that like you're you know and to constructed using this I wanna do something that's not possible on here our holy cow and paying a ton of money and I think I could do this you know cheaper on my own and at that point you know you that that that's when you start looking at you know how I like man other stuff myself but I am I'm very uh it's it's kind of sad to me how much stuff there is that developers need to know to get a website online news there's is and anything that the kind of makes that smaller and and prevents people from like just getting so overwhelmed that they give up that is a good thing so I'm a big fan of and and and all that stuff in it works great that at a certain point and there's no points were it doesn't this the I was very kind of the question and if you have multiple projects that sort of depend on each other in convergence some versions of you're talking about like the easily roll back but then I will would be your suggestion for if you have that we multiple part is completely separate but maybe 1 for messes up I know I'm right would you handle that would be this way right so it's not dependent on each other you just create like to these directories and in separately uh the the challenging is when they start to depend on each other in a do you that attack on how to how to kind of gracefully you know you start talking about them like you're in a service-oriented architecture and of multiple services and how to ensure that this service knows talking the saying saying you know messages that the service understands and there's really hard on that and uh not my take on it is like the world micro-services stuff is of uh you don't do it until you like really really feel the pain of the big monolithic project and stick with you know that there is this you know it really big organizations that have I think like Twitter and maybe Google to have like monolithic pose that a huge that encompass like multiple services and everything but then they still have like you know who he is then commit that represents a certain state of the world and you know it's it's really hard you know I've done this sort of system so late up other services so you reflect multiple products and you you can do it to commit hashes as you're unique identifier so that that breaks down pretty quickly so the their answers your question the thank to the in and of the and the more the if


  411 ms - page object


AV-Portal 3.20.1 (bea96f1033d39fbe77f82542458e108105398441)