Monday, December 2, 2019

Re: Which Cloud Service Provider should be chosen to host Django Application

Many thanks Bill,

I am starting to see the bigger picture now. My site is just a basic blog for a non-profit. It's gonna be low traffic with no payment method attached. I checked out AWS and it's a bit overwhelming for a beginner like me. Guess I'll do a test run with Heroku's free account to get a feel of the process.

Anyway, thanks again for all the efforts man!

Cheers!

Deb

On Mon, Dec 2, 2019 at 8:41 PM Bill Freeman <ke1g.nh@gmail.com> wrote:
Deployment for a production environment is never without complications.   And that is affected by how much you choose to configure yourself.  I can't speak for Heroku, Digital Ocean, or Python Anywhere, because I haven't used them.  Perhaps some of their users will comment.

Even with virtual hosting it is best to pick one of the kernels that they have customized to work well with their virtualization mechanisms.  (If you had a physical host you would need to do kernel configuration yourself.)  I know that AWS and Linode keep their eye on kernel security updates and will offer new versions promptly, but you will need to keep your eyes open and install the upgraded versions when they become available.  They may or may not include application updates as part of these packages, particularly database, but also perhaps http server and python version, though if you want to pick your own version of these then you will be reinstalling them when the kernel upgrades happen.  And you must watch for security updates of the packages that you choose to hand install, which will include Django.  (One of the attractions of shared hosting is that the provider takes care of more of these things.)

But as far as picking your own version goes, you really want to stay close to the latest stable version, rather than having to back port security patches yourself.  You also don't want to go with versions so old that they are unsupported, or the people finding new exploits will be limited to the bad guys.  Doing the work right along to stay close to current best practices is valuable so that you don't have a large panic update to do when your version becomes unsupported, needs a security fix, and some old, previously deprecated, way of doing something has been dropped.

You will want to learn how to use one of the automated deployment tools, since setting things up by had every time gets old, and is error prone.  As a python guy, I've had fun with fabric, but there are other fine open source and free tools.  In addition to running pip for your, they can remotely run apt, rpm, etc., build your database, http server, python version (including plugging the http server into the desired python using modwsgi, for example).

(Note that it is not difficult to have multiple versions of python installed on a Linux system without them getting in one another's way.  So the kernel scripts can run with the version for which they have been designed and tested, and you can still have your favorite running behind your http server, running Django.

I'm unaware of AWS pricing.  Last I checked Linode can be as cheap as $5/mo (I pay closer to $20), depending on how big a server you need.  Linode, and I presume AWS and others, provides a base amount of bandwidth to the outside world, and if your site has a lot of users (including DDOS attacks) you may have to pay for extra.  Having them run backups for you is an extra cost option (at least for Linode, and probably for most others).  Otherwise your bandwidth to storage at your house or office counts against your bandwidth allotment.  (And you should back up this way, at least occasionally, even if your regular backups are handled by the provider.)

Linode will host DNS records for your VPS.  I presume the others will too, though there may be differences as to whether there is extra cost.

If you're going to accept money, don't do it on your server:  Hook up with PayPal and/or one of the other credit card service providers.  You don't want sensitive customer financial (or medical) records on your site.  (You would need full time security staff, and probably private physical servers to do that safely.)

If you have a very high traffic site, then most providers, including Linode and certainly AWS, can offer geographic diversity of server location, which helps with responsiveness, and the ability to continue to conduct business if a natural disaster takes one of the provider's server farms off line for a while.  (Most of us don't need this.  And if you have backups not collocated with the failed farm, you can bring up an alternate instance quickly.)

There is no substitute for doing your own research into costs, features, restrictions, and reputation of the various possible providers.

Bill



On Sat, Nov 30, 2019 at 1:54 PM Debabrata Chakraborty <debobroto.c.in@gmail.com> wrote:
Thanks a million ke1g!

That was really helpful. I am definitely going to use PostgreSQL now.

Only one question remains. I'm willing to deploy my site in any reasonably priced virtual server hosting. You mentioned using VPS means I can install what I want.

So does that mean - it doesn't matter which version of Django (i.e. Django 2.2.5) I use for the site development, they will all be equally supported inside a VPS hosting plan?

Also, what is the least complicated, least technically challenging Django hosting option for a beginner like me?

Thanks again

Deb


On Saturday, November 30, 2019 at 8:01:15 PM UTC+5:30, ke1g wrote:

SQLite is fine for development, but, unless things have changed, it is single threaded, and unsuitable for a production environment.  Most folks seem to go for MySQL, though the fork MariaDB is usually preferred no that Oracle owns MySQL.  I prefer PostgreSQL (or just Postgres) because I think that it comes closest to the SQL standard and is competitive in other respects.  Any of these have to be "administered" (though is many cases the provider helps with this), so if this is for a toy installation, SQLite may be OK.

SQLite, however, is built into Python these days, and even in older Python versions it was just a pop install, so providers can't squawk about the version.  But shared hosting (as opposed to virtual server) will mean that a particular python version is installed, and the SQLite version in that version of Python is what you are going to get.  But SQLite handles queries written for older versions well, and you will wind up with a quite recent version, so you are unlikely to be using any features that are too new for the installed version.

Virtual server hosting means that you can install what you want, but does mean that you will be administering the whole OS as well as the database, the http server, and even the version of Python, installing new versions when there are security updates, etc.

I, personally, haven't used any of the providers that you mentioned.  The last time I deployed on a shared host I used WebFaction, and was quite satisfied.  Today I use Linode, who provide a virtual server, and are also quite satisfactory (though you must, last time I checked, use Linux, which I consider a plus).



On Sat, Nov 30, 2019 at 9:02 AM Debabrata Chakraborty <debobr...@gmail.com> wrote:

Hi everyone,

I'm a beginner Django developer. So my apologies in advance for newbie like questions.

I am building my site with " Django version 2.2.5 " and " SQLite 3.30 " in back-end. My question is -

# Do services like "Heroku", "Digital Ocean", "Python Anywhere" and "AWS" - have limitation on which version of Django  or which DBMS I can use?

I've seen this before with PHP/MySQL hosting where some hosting companies will limit which version of PHP or MySQL one can use. Is the same applicable to Django hosting in the above mentioned hosting platforms as well?

I will very much grateful if you can help me out with this confusion.

Best

Deb

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/e0918e60-bdf4-4721-a931-1e030d697558%40googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/CAB%2BAj0ujQ6hnDdj-8_kLnxVw-W5WZ-C9v_Mnz68EWn8GQCeiYA%40mail.gmail.com.

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/CAPDzUOgyAPhS1%3Dc_w_OZQsp6mAV6PKYmBhum64usEVxw1JQ-SQ%40mail.gmail.com.

No comments:

Post a Comment