ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • TIL 2023.05.10
    내일배움캠프 2023. 5. 10. 19:42

    [테스트 코드 / 배포 특강]

     

    프로젝트 퀄리티를 높이는 방법

    1.  S.A. 설계대로 구현하기
      1. db 테이블, api 설계가 바뀌어야 하면 S.A.도 바뀌어야 한다
      2. 설계를 토대로 잘 구현했는 지가 중요

     

    테스트와 배포

    테스트를 어떻게 자동화 할 수 있는 지

    배포 = 절대 눈으로만 보고 할 수 없다. 이론 x

    직접 손으로 해봐야 알 수 있다.

    직접 손으로 해보지 않은 이상 의미가 없습니다.

    배포를 강의는 모범 답안 강의를 따라서 들었다고 이해했다고 생각 x

    배포는 너무 너무 중요 면접에도 무조건 나옴

    무조건 손으로 해봐야 한다 이론만으로 안됨

     

     

    테스트 코드 간단히 되짚어보기

    깃허브 액션을 이용한 자동화

    배포 미리보기

    CI/CD 개념

     

     

    코드기반 테스트 -> 이번 프로젝트에 이거를 써봤으면 좋겠어요.

    나는 실력이 부족하여 ~~ -> 테스트를 맡아서 해주시라

     

     

    테스트 되짚어 보기

    class TestView(TestCase)

        def test_one_is_one(self):

            self.assertEqual(1, 1)

     

    reverse(url)

    client.post

     

    코드를 기반으로 테스트하는 게 좋다

     

    얘를 깃허브 액션을 이용해 자동으로 수행하는 법

     

    setUp 메서드 테스트 db 셋업

     

    python manage.py test 입력하면 테스트 실행

    하지만 깃허브 상에서 자동으로 할 수 있다.

    github action을 이용한 테스트 자동화

    푸쉬 PR이 될 때마다 자동으로 시행하게 할 수 있다.

     

    깃허브에 Actions가 있어요

    특별한 폴더 안에 특별한 파일이 필요

    .github/workflow/<이름>.yml

    name: Django Tests
    
    on:
      push:
        branches:
          - main
    
    jobs:
      test:
        runs-on: ubuntu-latest
    
        steps:
        - name: Checkout repository
          uses: actions/checkout@v2
    
        - name: Set up Python
          uses: actions/setup-python@v2
          with:
            python-version: 3.8.2
    
        - name: Install Dependencies
          run: |
            python -m pip install —upgrade pip
            pip install -r requirements.txt
    
        - name: Run Tests
          run: |
            python manage.py test

    뭐 이런 식으로 쓴대요.

    yml 파일은 탭, 스페이스, 개행에 민감합니다

    스페이스 두 번으로 통일

     

    test.py를 먼저 작성해 주는게 우선

     

    테스트 코드는 언제 변경해야 할까요?

    새로운 기능이 추가되거나 결과가 달라질 때마다 변경해줘야 한다

    전담하는 사람 필요 지속적으로 변경 필요

     

     

    배포 미리보기

    장고 배포할 때 반드시 알아야 하는 것

    웹서버(nginx) gunicorn docker 다른DB

     

    클라이언츠 <-> 웹서버(NGINX, apache) <-> WSGI Server(Gunicorn) <->Web Application(Django) <-> DB

     

    Nginx

    Nginx는 웹 서버의 일종(장고는 웹 어플리케이션 서버)

    웹 서버는 단순 정적 파일만을 응답

    WAS는 동적인 정보까지 응답

    웹 서버가 처리할 수 있는 정적 정보는 웹 서버가 처리

    +로드 밸런싱, 캐싱, 비동기처리 등…

     

    gunicorn

    WSGI 의 일종

    파이썬 스크립트와 쉡 서버가 통신하기 위한 관문 (통역사)

     

    docker

    독립된 작업 환경

    경량화된 운영체제

    충분히 익숙해질 것

     

    db

    sqlite가 아닌 다른 db 쓰려면 세팅즈.파이에 데이터베이스 정의해 주면 됨

     

    포트번호가 뭐지?

    TCP에서 프로세스를 구분하는

    여러분 컴퓨터에서 웹 서버로 요청을 보냅니다

    그러면 그 요청이 여러 프로세스로 뜨고 있을 거예요

    db 프로세스 nginx 프로세스 장고 ~

    이 요청이 올바른 프로세스로 찾아갈 수 있어야 해요

    어던 프로세스인지 구분 짓는 게 포트 port

    ip: 네트워크 상 특정 컴퓨터를 식별

    port: 특정 컴퓨터에서 특정 프로세스를 식별

     

    CI 컨티뉴어스 통합

    CD 컨티뉴어스 디플로이

    CI/CD를 이해하려면 하단의 내용을 알고 있어야 합니다.

    테스트 자동화, git, docker, aws ,nginx, gunicorn, github action

    '내일배움캠프' 카테고리의 다른 글

    TIL 2023.05.12  (0) 2023.05.12
    TIL 2023.05.11  (0) 2023.05.11
    TIL 2023.05.09  (6) 2023.05.09
    TIL 2023.05.08  (0) 2023.05.08
    WIL 내일배움캠프 8주차  (0) 2023.05.05
Designed by Tistory.