목록분류 전체보기 (309)
진취적 삶
2.1 쿠버네티스란 ? 쿠버네티스는 여러 서버로 구성된 클러스터 환경에서 컨테이너화된 프로세스를 관리하기 위한 컨테이너 오케스트레이션 플랫폼이다. 컨테이너는 가상 머신과는 다르게 호스트 운영체제를 공유한다. 가상머신에 비해 훨씬 더 가볍지만 가상머신과 마찬가지로 실행환경을 독립적으로 가져갈수 있다. 가볍기 때문에 쉽게 복제하거나 배포할수 있다 . 컨테이너를 여러 서버에 걸쳐 여러 개를 실행시키는데 체계적으로 관리하는 기술을 컨테이너 오케스트레이션 이라고 한다. 쿠버네티스를 통해 컨테이너의 배포 ,확장 및 스케줄링을 자동화 할수 있다. 2.1.1 컨테이너 오케스트레이션이란 ? 컨테이너 오케스트레이션 : 다수의 서버 위에서 컨테이너의 전반적인 라이프 사이클을 관리해주는 플랫폼 실행 및 배포 책임 이중화와 가..
1.1 도커 소개 도커는 가상실행 환경을 제공해주는 오픈소스 플랫폼이다. 도커에서는 가상 실행환경을 컨테이너라고 부른다. 도커의 장점 표준화 : 도커를 사용하면 프로세스의 실행을 표준화 시킬수 있다. 이식성: 프로그램이 어디서 어떻게 만들어졌는지 상관없이 도커 플랫폼 위에서 실행된다면 동일한 실행 환경으로 프로세스를 작동시킬수 있다. 가볍다: 도커는 실행되는 애플리케이션별로 커널을 공유해서 ,다른 가상화 제품에 비해 가볍다. 강한 보안: 컨테이너라는 고립된 환경에서 실행되므로 보안측명에서 유리 1.1.1 컨테이너와 가상머신 도커는 프로세스의 실행 환경을 가상화한다. 컨테이너와 가상머신은 리소스를 가상화하고 고립화 시키는 측면에서는 동일 가상머신은 기존의 서버에 하이퍼바이저를 설치하고, 그위에 가상 OS와..
배포 준비 도커를 사용한 배포 도커 이미지 배포 9.1 배포 준비 의존 라이브러리 관리 pip freeeze 9.2 도커를 사용한 배포 도커는 컨테이너화에 사용되는 인기있는 기술 , 컨테이너는 패키지, 코드 ,의존 라이브러리로 구성된 하나의 시스템으로 실행 환경에 의존하지 않는다. 도커는 로컬 개발 환경 뿐만 아니라 프로덕션 애플리케이션을 배포할때도 사용한다. 도커파일 작성 도커 파일은 도커 이미지를 빌드하기 위한 몇가지 명령 셋으로 구성된다. 빌드된 도커 이미지는 개인 또는 공개 레지스트리에 등록된후 aws나 구글 클라우드 같은 클라우드 서버에 배포된다. DockerFile FROM python:3.11 WORKDIR /app COPY requirements.txt /app/requirements.tx..
테스트는 애플리케이션이 정상적으로 실행되도록 보장하고 프로덕션에 배포하기 전에 이상 징후를 감지할수 있게 해준다. 8.1 pytest를 사용한 단위 테스트 단위 테스트는 애플리케이션의 개별 컴포넌트를 테스트 하는 절차로 .개별 컴포넌트의 기능을 검증하기 위해 수행된다. pytest를 통해 단위 테스트 수행 테스트 파일을 만들떄는 파일명 앞에 test_ 를 붙여서 해당 파일이 테스트 파일인지 확인시켜준다. 픽스처를 사용한 반복 제거 픽스처는 재사용할 수 있는 함수로, 테스트 함수에 필요한 데이터를 반환하기 위해 정의된다. pytest.fixture 데코레이션을 사용해 픽스처를 정의할수 있다. fixture 의 인수의 경우 module 과 session이 있다. module : 테스트 파일이 실행된 후 특정..
인증을 거치치 않은 사용자도 이벤트 플래너 애플리케이션을 사용해서 이벤트를 생성할수 있는 문제 인증: 개체가 전달한 인증 정보를 검증하는 것 허가: 객체가 특정 처리를 할수 있도록 권한을 주는 것 7.1 FastAPI 의 인증 방식 기본 HTTP 인증 사용자 인증 정보를 Authorization HTTP 헤더를 사용해 전송하는 방식 쿠키 데이터를 클라이언트 측에 저장할때 사용 FastAPI 애플리케이션도 쿠키를 사용해서 사용자 정보를 저장할수 있으며 서버는 이 정보를 추출해 인증 처리에 사용한다. bearer 토큰 인증 보안 토큰을 사용해 인증하는 방식 . 가장 많이 사용되는 토큰은 JWT 사용자 ID와 토큰 만료 기간으로 구성된 딕셔너리 형식이 일반적 의존성 주입 객체가 실행에 필요한 인스턴스 변수를 ..
6.1 SQLModel 설정 세션 코드와 데이터베이스 사이에서 이루어지는 처리를 관리하며 주로 특정 처리를 데이터베이스에 적용하기 위해 사용된다. session 클래스는 sql 엔진의 인스턴스를 인수로 사용한다. session 클래스의 메서드 add() :처리 대기 중인 데이터베이스 객체를 메모리에 추가한다. commit() :현재 세션에 있는 트랜잭션을 모두 정리한다. get() : 데이터베이스에서 단일 로우를 추출한다. 모델과 문서 ID를 인수로 사용한다 . 6.2 데이터베이스 생성 create_engine() 메서드는 데이터베이스 URL 을 인수로 사용한다. database_file ="database_db" engine = create_engine(database_file,echo=True) SQ..
애플리케이션 구조와 기능이 복잡해지면 애플리케이션을 적절하게 구조화 해야한다. 애플리케이션 라우트와 모델 구조화 플래너 API용 모델 구현 5.1 FastAPI 애플리케이션 구조화 routes 폴더 events.py : 이벤트 생성 ,변경 ,삭제 등의 처리를 위한 라우팅 users.py : 사용자 등록 및 로그인 처리를 위한 라우팅 model 폴더 events.py : 이벤트 처리용 모델을 정의 user.py : 사용자 처리용 모델을 정의 이벤트 플래너 애플리케이션 개발 등록된 사용자는 이벤트를 추가 ,변경삭제 가상환경 설정 python3 -m venv venv (venv) C:\\FastAPI-BOOK\\planner>pip install fastapi uvicorn "pydantic[email]" r..
API 보낸 다양한 형식의 데이터를 화면에 표시하는 프로세스다. Jinja 템플릿 사용 4.1 Jinja 중괄호는 사용해서 템플릿 파일의 일반적인 HTML ,텍스트 등을 표현식 및 구분과 구분한다. {%….%} : 구조를 제어하기 위한 명령을 지정할때 사용 {{todo.item}} : 식의 값을 전달할때 사용 필터 문자열 수정작업은 Jinja의 필터 기능을 사용해야 한다. 템플릿 상속 중복 배제 원칙에 근거한것 큰 규모의 웹 애플리케션을 개발할때 많은 도움이 된다 . 템플릿 상속은 기본 템플릿을 정의한 다음 이 템플릿을 자식 템플릿이 상속하거나 교체해서 사용할수 있게 한다. 4.2 FastAPI 에서 Jinja를 사용하는 방법 pip install jinja2 python-multipart 애플리케이션 ..