Django 배포 - Postgres DBaaS

Postgres 서버를 시작하고 실행하기 위한 마지막 시도 중에 실제로 시간이 얼마나 걸리는지 다시 한 번 깨달았습니다. Postgres 서버 설치 외에도 전체 서버를 보호해야 합니다. 이것은 많은 시간이 걸릴 수 있습니다. 사용자가 많은 소규모 vps의 경우 성능도 제한적입니다.

대안: DBaaS(Database-as-a-Service).

DBaaS의 장점은 간단합니다.
  • 시간 절약(서버 관리 및 설치)
  • 보안(위험 감소 및 모범 사례)
  • 데이터 보안(자동 백업)
  • 확장성(빠르고 쉽게 확장 및 축소)

  • 내가 추천할 수 있는 공급자는 다음과 같습니다.
  • Linode
  • DigitalOcean
  • Render

  • fly.ioPostgres on Fly의 서비스도 매우 유망해 보입니다.

    준비



    포스트그레스


  • 로그인: psql -U doadmin -h host -p port -d database
  • 데이터베이스 생성: CREATE DATABASE djangodb;
  • 새 DB로 전환: \c djangodb;

  • 그런 다음 안전한 비밀번호로 새 사용자를 만들 수 있습니다.

    CREATE USER djangouser WITH PASSWORD 'securepassword';
    


    모든 것이 원활하게 작동하려면 django는 다음 매개변수를 권장합니다(django-docs 참조).

    ALTER ROLE djangouser SET client_encoding TO 'utf8';
    
    ALTER ROLE djangouser SET default_transaction_isolation TO 'read committed';
    
    ALTER ROLE djangouser SET timezone TO 'UTC';
    


    마지막으로 새 사용자의 권한을 변경할 수 있습니다.

    GRANT ALL PRIVILEGES ON DATABASE djangodb TO djangouser;
    


    장고



    여기서 나는 env.db()django-environDATABASE_URL를 사용하기로 결정했습니다.

    
    import os
    from pathlib import Path
    import environ
    
    BASE_DIR = Path(__file__).resolve().parent.parent
    
    env = environ.Env()
    env_file = os.path.join(BASE_DIR, ".env")
    if os.path.isfile(env_file):
        env.read_env(env_file)
    
    DATABASE_URL = env.str("DATABASE_URL", default=False)
    
    if DATABASE_URL:
        DATABASES = {"default": env.db()}
    else:
        DATABASES = {
            "default": {
                "ENGINE": "django.db.backends.sqlite3",
                "NAME": BASE_DIR / "db.sqlite3",
            }
        }
    
    


    DigitalOcean의 앱 플랫폼에 대한 참고 사항:

    DigitalOcean의 앱 플랫폼을 사용하는 경우 동적 변수${dbname.DATABASE_URL}DATABASE_URL로 건너뛸 수 있습니다. 이로 인해 재배포할 때 항상 빈 데이터베이스가 생성되었습니다. 이전에 DO의 GUI를 통해 데이터베이스를 생성하고 그에 따라 변수를 변경하더라도.

    향후 재배치 후에도 데이터를 사용할 수 있도록 하기 위해 Postgres-String을 변수로 사용할 수 있습니다(암호화 사용).

    결론



    (DO의 Postgres DBaaS와 연계)

    지금까지의 공연에 매우 만족합니다. 나중에 연결 풀링(PgBouncer를 통해)이 필요한 경우 DO의 GUI를 통해 쉽고 빠르게 추가할 수 있습니다. 단일 및 소규모 프로젝트의 경우 가격이 약간 비싸지만 다른 프로젝트가 추가되면 빠르게 보상을 받습니다. DigitalOcean의 재미는 15€ 및 3개의 데이터베이스(1GB 메모리, 1 vCPU, 15GB 디스크)부터 시작됩니다.


    읽어 주셔서 감사합니다.

    rburkhardt.com에 원래 게시됨
    언제든지 내RSS를 구독하고 또는Github에 연결하세요.

    좋은 웹페이지 즐겨찾기