[python] 배포 (Deployment)

배포 (Deployment)

배포란?

  • what 무엇을

  • 우리는 서버컴퓨터에서 요청과 응답을 처리할 프로그램을 개발한다.

  • when

    • while alive

    • 분석,계획,설계 => 개발 => 테스트 => 배포(배치) => 운영

    • TDD - Test Driven Development

      • 코드가 코드를 테스트한다. => T 가 되야함
      • image-20200513094545571
  • who & where
    • 누가, 어디에 배치(설치) 하는가?
    • Download => .dmg, .exe, .iso, $brew, apt, choco
    • Native App
      • 사용자가 사용자 컴퓨터에 (설치해야함)
    • Web App
      • 제공자가 제공자 컴퓨터에
      • 직접 산, 빌린(Cloud)
    • 컴퓨터 빌려주는 플랫폼 ( Cloud Computing Platforms)
      • AWS
      • Azure
      • Google Cloud
      • Heroku
  • how

    • image-20200513095823914
    • image-20200513100259250
    • DevOps ( 개발과 운영 )
  • why - In reality
    • 프로그램을 개발하는 이유?
      • 사용하기 위해서
    • SW 배치?
      • SW 를 사용할 수 있도록 하는 활동
    • Real Artists Ship - Steve Jobs
      • 진짜 예술가(프로그래머) 는 띄운다. ( 배포한다. )

:one: 패키지 버전 관리 / 배포

로컬PC 에서 개발하고, Cloud(AWS) 를 통해 배포할때 lib 버전 맞춰야 한다.

:cupid: ​패키지 버전 관리 / 배포

# 안좋은 예시 ( 이렇게 한다는 뜻 )
$ touch a.packages
django==2.1.15
wrapt==1.12.2

# 버전이 붙어서 lib 정보들이 나온다.
$ pip freeze

# 내가 가진 lib 들을 requirements.txt 라는 이름의 파일로 만든다.
$ pip freeze > requirements.txt # 이름 약속

# requirements.txt 안에 적혀있는 라이브러리 버전들을 설치한다.
$ pip install -r requirements.txt

:cupid: 문제점

image-20200513103301498

:cupid: 해결책

image-20200513103852232