Hello I’m trying to deploy my Restaurant Ordering Django Project, it needs to be able to hold images and data and be able to scale easily.
I’m a noob at this kind of more advanced deployment for a reliable product.
I’ve previously used Heroku, but turns out it couldn’t store images.
There are so many options that I have no idea what to use.
Some of the options I’m considering are Railway.app and AWS Lambda.
Are you looking for a Server
or Storage
platform?
You can use Cloudinary
, AWS S3
, and Azure blob
for storing your images.
I’m looking for a hosting platform to do both I think.
Then you should consider using Amazon Web Service
or Microsoft Azure
You’re right, there are many hosting providers out there. In addition to AWS and Azure, you have companies like Linode or Digital Ocean that are also quite popular. (Disclaimer: In the interest of transparency, I’m a very satisfied Linode and AWS customer. This is not to disparage any other provider, or to suggest that either of them are better for you for your requirements.)
Scalability and flexibility are two factors to consider. However, in the real world, you also want to factor in price, support, and reliability - especially if you’re building a business around this.
With a production deployment, you’ll want to consider issues like backups, recovery processes, failure notifications, hot- or cold- standbys, etc.
There are no absolute answers for these - it’s a question of where and how to allocate your resources. (What are you willing to handle yourself vs what you’re willing to pay someone to do for you - and how much risk you’re willing to assume.)
For example, what’s the damage to your business if the site is down for a day? What about in the case of a data breach? What’s the potential damage on either end of the line if you suffer an intrusion? What’s the risk of a lawsuit in such a case?)
How you want to prepare or defend yourself regarding these issues is entirely up to you - but you want these to be conscious decisions, not ones arrived at by default.
I don’t think i could use a server that might have servers down for an entire day. I’m trying to build a business off of this so it should be reliable for my customer’s sake.
It’s funny cause I have everything working fantastic on Django on my local env, all the APIs and whatnot are working great, now when it comes time to deploy it’s a whole other beast.
Is there any reading that you guys would suggest for this? I’m just trying to blast through this part so I can start testing the market.
Which AWS service would you guys recommend for django?
Some of the training books I’ve read suggest using Elastic Beanstalk but some devs I’ve met suggest Lambda, I’m currently researching on my own but I’m hoping to just dive into getting this done.
We use EC2 instances. We want to ensure complete control over the instance to manage as we see fit. However, we also have 4 people on staff with a combined total in excess of 50 years of managing Unix & Linux servers, so this isn’t really a stretch for us.
Yes, production deployments of any application are a complex situation.
Again, it comes down to “what do you want to do” vs “what are you willing to pay for”.
Note:
Things happen. Tornados, hurricanes, blizzards, cut circuits, DNS failures, DoS attacks - you name it, it can happen. There is no such thing as 100% reliability. Outages occur, planned and unplanned - That’s where budgeting and management of redundancy, business continuity planning (BCP), and disaster recovery (DR) come into play. The only question is how much risk are you comfortable with accepting, and how much you are willing to spend to mitigate these events.
How difficult would you say it is to deploy a Django Project on EC2? I’m trying to gauge how long it will take me to deploy it from zero knowledge to functioning web app. If i work on it fulltime everyday.
Also have you or your team used Lambda Before? or Elastic Beanstalk?
I think one of the major headaches of AWS is that there are too many choices! There’s like over 1000 choices! Just picking one takes weeks lol.
I’m hoping that the django forum will help me choose one that is just speficallly good for django haha.
It seems EC2 is the most popular choice for django projects ATM after reading articles online.
I’ve been dreading using AWS because of how many things there are to configure, but it seems over and over again like it is the best option.
Do you have a resource I could read for Django Deployment?
It’s a deployment to what you can effectively consider to be a bare-metal environment. The “difficulties” all surround your knowledge of things like nginx, systemd, uwsgi/gunicorn, postfix/sendmail, PostgreSQL server, Linux standard directories, file system permissions, firewalls, system monitoring, etc.
The more comfort you have with administering a Unix/Linux system, the easier it’s going to be.
If you have a decent grasp of the fundamentals and can find a tutorial or guide that makes sense to you, you should be able to expect to have the system running in less than a day.
If you don’t have any experience at all in managing an internet-facing system or as an effective SysAdmin, you could be talking months.
No we have not. We chose to minimize costs and avoid any form of vendor lock-in by avoiding any AWS-specific technologies. We’re only using those tools and utilities that we can easily replicate outside the AWS environment.
The page and links at How to deploy Django | Django documentation | Django are a place to start - but that’s only going to cover the Django-specific portions. Properly managing a server is a whole different set of topics.
Oh my goodness, the Devops world is a whole other MONSTER!
My head is spinning lol.
2 Likes