-
TIL 2023.05.10내일배움캠프 2023. 5. 10. 19:42
[테스트 코드 / 배포 특강]
프로젝트 퀄리티를 높이는 방법
- S.A. 설계대로 구현하기
- db 테이블, api 설계가 바뀌어야 하면 S.A.도 바뀌어야 한다
- 설계를 토대로 잘 구현했는 지가 중요
테스트와 배포
테스트를 어떻게 자동화 할 수 있는 지
배포 = 절대 눈으로만 보고 할 수 없다. 이론 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 - S.A. 설계대로 구현하기