[풀스택] 가장 빠른 풀스택 파이썬 백엔드와 웹기술 부트캠프 Part1 정리


풀스택 관련 강의 들은거 간단하게 내용 정리.


파이썬 시작하기

  • 1차서비스는 파이썬과 vue로 간단하게 만들고 -> 고객 반응 봐서(데이터분석, 기능 개선 테스트) -> 2차 서비스는 잘되는거 봐서 Java Spring이나 React로 만들면 된다.

  • 프론트엔드와 백엔드 기본구성

    • 웹서버 1세대 : HTML만, 웹서버
    • 2세대 : HTML + DB
    • 3세대 : MVC패턴으로 활용(웹페이지만 바꾸고싶을때 하나만 바꾸면 되니까 Model - View - Control, 화면웹페이지-프로그램-데이터베이스)
    • 4세대 : Rest API로 통신(Gmarket에서 광고부분 따로, Best부분 따로 등등 API로)

파이썬 flask 기본과 웹기술

  • @app.route(“/”) 이거만 기억하면 된다.
  • 우리가 테스트할때는 127.0.0.1:포트번호 쓰는데, 네이버같은거는 포트번호같은게 없다. 그이유는 http는 80포트를 https 443포트가 디폴트이기 때문 때문이다.
  • 통신은 HTTP 규격으로 하는데 request는 보통 메서드(GET같은거)와 Path가 핵심이고 헤더(소포 주소)랑 바디(소포내용물)도 같이 보낸다고 보면된다
  • response는 HTTP 버젼과 Status Code(200 같은거)와 Status Message(OK같은거)로 오고, 헤더와 바디가 있다
  • REST: CRUD 오퍼레이션
  • REST API : REST기반으로 서비스 API 구현한거
  • HTTPie를 사용하면 Postman 같은걸 터미널에서 가능

flask로 백엔드와 프론트엔드 둘다 구현

  • flask render_template 을 쓰면:  flask가 실행되는 하위폴더인 templetes 폴더에서 HTML파일을 전송한다. 그러면 flask로 정적 웹페이지를 로드할수 있다.
  • 그래서 flask 구동하는 python 파일(안에 render_template코드) + 템플릿폴더에 템플릿 -> 크롬같은 웹브라우저에서 url이랑 파라미터 보내면 끝
  • bootstrap 이용하면 웹페이지 쉽게 만들수 있다.(템플릿이라고 생각하면 됨)

다양한 프론트엔드

  • jinja2 템플릿 : 웹페이지에서 파이썬 프로그래밍 가능 (``````, 반복문 등)

프론트엔드(vue)와 flask 기반 REST API

  • CDN
    • 멀리있는 아마존 서버까지 컨텐츠 다운받으면 힘드니까 가까운데에 컨텐츠를 저장해놓는 그런 기술
    • 내서버에 css, js파일을 다운받는거 힘드니까 링크에서 바로 가져오는게 있다.
  • Vue
    • HTML 파일 안에서 url 경로를 포함시켜 CDN으로부터 Vue 라이브러리를 불러오는 방식
    • 우리가 원래 button 클릭하면 클릭한걸 백엔드에서 가져오는 그런 코드를 써야되는건데
    • 그러면 너무 힘드니까 vue를 사용하면 html에서 바로 백엔드에서 가져오는거처럼 할수 있다
    • 백엔드 연결이 안되어서 CORS 임포트 해줘야 된다.
  • Rest API
    • POST만 좀 다르고 GET/PUT/DELETE는 방식이 비슷하다.
    • POST는 json형식으로 받는거만 좀 다르다고 보면된다.
    • GET은 파라미터가 URL 뒤에 붙고, POST는 바디에 들어간다

다양한 flask 백엔드 기능

  • 에러다루기
    • errorhandler로 에러를 다룰수있다.(없는 페이지 화면같은거 가능)
  • 로깅
    • DEBUG > INFO > WARNING > ERROR > Critical 순으로 크리티컬이 가장 쌘거(그래서 보통 에러 이하로만 저장해! 라는식으로 짬)
    • from loggin.handlers 로 기능을 쓸수 있다
    • 로그파일보면 log.1, log.2 이런거를 가끔 보는데 이게 maxByte옵션을 줘서 그렇다
    • if not app.debug:와 같이 debug를 트루로 하고 아래 디버깅할때는 로깅 안남기는 식으로 만든다.
    • 파일 저장하는거나 이런건 자세히 찾아 보면서 코드 치면 되겠다.
  • 다양한 데코레이터
    • before_first_request : 데코레이터로 추가해서 웹 어플리케이션 기동 이후 가장 처음 들어오는 HTTP 요청에서만 실행할수 있음
    • before_request, after_reqest 등이 있다.

실전 블로그 풀스택 구현하기 : 기획과 구조잡기

  • MVP(Minimum Viable Product)
    • 최소한의 기능으로 제품을 만듬, 점차적으로 개선, 최근 스타트업 개발 방식
  • MVC
    • 웹서비스 구현할때 필요한 MVC 패턴. 이렇게 하면 유지보수가 쉬어진다고 한다.
    • Model-View-Controller
      • Model : 데이터(주로 데이터베이스)
      • View : 텍스트, 버튼등 사용자 인터페이스(웹페이지)
      • Controller : Model 과 View를 제어하는 중간 역할(중간 제어 코드)
    • 이제부터 강의에서 아래 내용을 구현하려 한다.
  • 지금까지는 하나의 파일에 flask를 때려박았는데, 이제 안그런다
  • 현업에서 이렇게 AB테스트를 많이 한다
    • 원래 같으면 blog_abtest.py에 모든 소스를 넣어야되는데,
    • 블루프린트를 쓰면 여러 소스 파일에 Flask 코드를 작성할 수 있도록 하는기능(이걸 안쓰면 1개의 파이썬 파일에 다 집어넣어야함)

실전 블로그 풀스택으로 구현하기 : 데이트베이스 셋업

  • 변경할필요없는건 mysql, 변경여지가 많은 logging은 Nosql을 사용한다.
    • 이메일 구독 데이터는 pymysql을 쓸꺼다
    • 로그 파일은 mongoDB 쓸꺼다(redis와 같은 in-memory 방식은 빠른 성능을 위해서 쓰인다.)
    • pymysql, mongoDB도 CRUD 하는거랑 해봄
    • 예를들어 프로젝트 안에 mongodb.py랑 mysql.py에서 접속 붙이고, session_mgmt.py랑 user_mgmt.py에서 insert하는 것들 코드를 넣었다.(Control부분=제어)

실전 블로그 풀스택으로 구현하기 : flask 로그인 기능과 라이브러리

  • flask_login
    • 로그인된 상태를 만들어주고 싶어서(쿠키로)
    • 참고로 request 계속 보낼때 DB에있는 정보를 변환해서 보내주는걸 세션이라고 한다(쿠키vs세션 얘기해주는데..)
    • F12 눌러서 네트워크 눌러서 보면 쿠키가 이상한난수로 되어있고, 아래 보면 세션에 그 쿠키내용이 들어가있다.
    • 한번 세션을 만들면 is_authenticated 함수를 이용해서 다음부터는 로그인 된거처럼 한다
  • staticmethod
    • 코드에서 staticmethod 나오는데 이건 원래 클래스 만들고 매서드 만들면 객체 선언해야 쓸수있는데, staticmethod는 객체 선언 안해도 쓸수있다.
    • 예를들어 고객 데이터 뽑기는 객체에 연관되어있는게 아니고 통용되어서 쓰이니까 객체 필요없이 뽑아낸다.

참고 강의




© 2018. by statssy

Powered by statssy